گزارش تغییرات¶
پایتون بعدی¶
تاریخ انتشار: XXXX-XX-XX
امنیت¶
gh-149698: بهروزرسانی libexpat بستهبندیشده به نسخهی ۲.۸.۱ برای رفع آسیبپذیری CVE 2026-45186.
gh-160499: Fix unbounded memory growth in
asyncioTLS connections when a peer stops reading but keeps sending records that make OpenSSL generate its own replies (such as TLS 1.2 renegotiation alerts). Reading from the peer is now paused when this output accumulates, instead of only when application data does.gh-160506: Fix
os.path.realpath()on Windows returning the wrong path for a broken relative symbolic link reached through a symbolic link to a directory. This allowedtarfileextraction with the'data'or'tar'filter to create a file outside the destination directory.gh-161323: On Windows, the
'tar'and'data'tarfileextraction filters now refuse member names and link targets that have a drive but are not absolute, such asC:foo, withAbsolutePathErrororAbsoluteLinkError. Such members could be extracted outside the destination directory. Fixes CVE 2026-107784.gh-160420: Fix
zoneinfo.ZoneInfoon Windows accepting keys in which a component after a/starts with a drive letter, such asAmerica/C:\file. Such a key could open a file outside thetzdatapackage; it now raisesValueError.gh-143008: اصلاح شرایط رقابت هنگام مقداردهی اولیهی مجدد یک شیء
io.TextIOWrapper.
هسته و توکارها (Core and Builtins)¶
gh-161288: Fix a crash in the perf trampoline (
-X perf) on builds with clang's-fsanitize=function, which-fsanitize=undefinedenables since clang 17.gh-126312: رفع فروپاشی حین زبالهروبی روی شیء فریزشده توسط
gc.freeze()در ساخت نخآزاد.gh-161229:
__lazy_import__()now treatsNonefor globals and locals the same as omitting them, matching its signature.gh-160773: Fix a crash in
str()of anOSErrorwhen formatting one of its attributes modifies the others.gh-159652: Fix a hang when an import fails with
RecursionErrorbecause the C stack is nearly exhausted: releasing the import locks could itself fail and leave the global import lock or a module lock held forever, so that later imports in other threads blocked indefinitely. The import system now raisesRecursionErrorbefore taking an import lock when there is not enough stack left to release it.gh-159449: Fix a free-threaded asyncio race leading to segfaults.
gh-159136: Setting
__name__,__qualname__,__doc__or__module__on a function no longer stops all threads in the free-threaded build. This fixes a large slowdown in multi-threaded code usingfunctools.wraps()since 3.14.7.gh-152631: Fix
ast.parse()ability to parse lazy imports with feature_version older than 3.15, now it properly raisesSyntaxError.gh-151060: Fix a crash or memory corruption in
sum()when summing afloatsubclass instance into a complex running total.
کتابخانه¶
gh-161414: Remove the backquote from the symbols listed by
help(), asking for help on it reported that no documentation was found.gh-161389: Fixes a crash in
decimal.Contextwhen passing invalid signaling dicts as flags and traps.gh-93821: Fix
asyncio.ProactorEventLoopservers that stopped accepting new connections on Windows when a client reset its connection before it was accepted (WinError 64,ERROR_NETNAME_DELETED). The listening socket is now kept open and the server continues to accept connections.gh-161076: Fix
asyncioleaving a half-created transport registered with the event loop and the server when settingTCP_NODELAYon a socket fails. Such a failure could makeasyncio.Server.wait_closed()hang and prevent new connections from being served. Errors fromsetsockopt(TCP_NODELAY)are now ignored.gh-161233: Fix unraisable
TypeErrorwhenNonewas passed as a timer tocProfile.Profile.gh-159894: ارتقای نسخهی pip بستهبندیشده در
ensurepipبه نسخهی 26.2.2.gh-161179: Fix the function names in the error messages of
os.spawnve(),os.preadv()andtkinter.Wm.wm_attributes().gh-161039: Fix the
pydocpager not detectingless706 and newer.gh-103791:
contextlib.suppressاکنون علاوه بر پشتیبانی اخیر ازExceptionGroup، از سرکوب استثناوهایی که به عنوان بخشی از یکBaseExceptionGroupبالا میآیند نیز پشتیبانی میکند.gh-160429: Fix
asyncio.ProactorEventLoopsocket transports leaving the socket open, andasyncio.Server.wait_closed()hanging, when the peer resets the connection while the transport is being closed.gh-53089:
urllib.request.HTTPDigestAuthHandlernow sendsuri="/"in the DigestAuthorizationheader for URLs with an empty path, such ashttp://example.com, matching the request-target sent byhttp.client. Previously it senturi="", which servers could reject. Patch by Senthil Kumaran.gh-109564: Fix a race in
asynciowhere closing a server after it accepted a connection, but before the connection's transport was created, reported anAssertionErrorto the exception handler. Such connections are now closed quietly.bpo-39503: کلاس
AbstractBasicAuthHandlerدر ماژولurllib.requestاکنون تمام سرآیندهای HTTP مربوط به WWW-Authenticate را تجزیه کرده و چندین چالش را به ازای هر سرآیند میپذیرد: از قلمرو نخستین چالش Basic استفاده کنید.gh-53852:
urllib.request.ProxyDigestAuthHandlernow raisesHTTPErrorwith status code 407 (Proxy Authentication Required) instead of 401 when proxy authentication fails.gh-89157: پیادهسازی پایتون خالص
datetime.date.fromisoformat()را به گونهای تغییر دهید که برای سازگاری با پیادهسازی C، فقط رشتههای ASCII را بپذیرد.gh-160781: Fix
io.BytesIOimplementation ofio.IOBase.truncate()rejecting sizes larger than2**31 - 1on Windows.gh-160781: Fix
io.StringIOimplementation ofio.IOBase.truncate()rejecting sizes larger than2**31 - 1on Windows.gh-153037: رفع مشکلی که در آن
ZstdFileهنگام پیمایش روی پروندهای که برای خواندن باز نشده است، به جایio.UnsupportedOperationخطایAttributeErrorایجاد میکند.gh-160427: Fix
bufferof a detachedio.TextIOWrapperraisingValueErrorinstead of returningNone.gh-107545: بهبود پیامهای خطایی که ممکن است توسط
setsockopt()بالا آورده شوند.gh-160561: Fix a descriptor leak in
socket.fromfd()when the socket constructor rejects its arguments. The duplicated descriptor was never closed.gh-60299: Fix
urllib.request.ProxyDigestAuthHandlerfailing to authenticate. It looked up credentials using the target request URL instead of the proxy's authority, so passwords registered viaadd_password()against the proxy never matched. Patch by Senthil Kumaran.gh-160314: Raise an error in
lzma.LZMAFile,lzma.decompress(),bz2.BZ2Fileandbz2.decompress()for a damaged.xzor bzip2 stream that follows another stream, instead of silently ignoring it and everything after it as trailing data.gh-159739: Fix the
hzcodec sometimes encoding~as a single~in text that mixes ASCII and Chinese characters, and the incrementaliso2022_*codecs mishandling an escape sequence split across calls or keeping the previous character set afterreset(). Also fix possible crashes in the CJK incremental and stream codecs when theirerrorsattribute or their class'scodecattribute is replaced while they are in use.gh-159739: Fix crashes in
io.TextIOWrapperandio.IncrementalNewlineDecoderwhen a callback changes the active codec or decoded buffer.io.StringIOnow raisesValueErrorif converting the size passed totruncate()closes the stream.gh-160310: Fix quadratic time complexity of
gzip.decompress(),bz2.decompress(),lzma.decompress()andcompression.zstd.decompress()on data consisting of many concatenated members.gh-160522: Fix the incremental encoders and stream writers of the stateful CJK codecs (
iso2022_*andhz) keeping a changed shift state after anencode()orwrite()call failed. The next call could omit the escape sequence, writing multibyte characters in ASCII mode.gh-160316: Fix
re.Pattern.match(),re.Pattern.prefixmatch(),re.Pattern.fullmatch()and thematch()andprefixmatch()methods of scanner objects returning an empty match, or reading past the end of the string, when pos is greater than endpos. They now returnNone, as documented.gh-160513: Fix
asyncio.loop.start_tls()andasyncio.StreamWriter.start_tls()not calling the protocol'sconnection_lost()when the connection is lost, the handshake times out or the call is cancelled during the TLS handshake.asyncio.StreamWriter.wait_closed()no longer waits forever after such a failure.gh-160297: Fix
tarfile.TarFile.extractall()andtarfile.TarFile.extract()changing the mode, modification time and owner of a file outside the destination directory when a hard link member is extracted as a copy of a symbolic link member, for example with the'tar'filter.gh-161086: Fix the
gzipcommand-line interface ignoringgzip --fastandgzip --bestwhen compressing files given as arguments.gh-161112: Fix
shutil.make_archive()adding the zip archive being created to itself when it is written inside the directory being archived or a symbolic link in that directory refers to it.gh-161094: Fix
zipfile.is_zipfile()raisingValueErrorinstead of returningFalsefor a file-like object, such asio.BytesIO, whose end of central directory record places the central directory before the start of the file.gh-161096: Fix
zoneinfo.ZoneInfo.from_file()accepting TZif data with a negative or oversized abbreviation block, which could use hundreds of times the file size in memory; it now raisesValueError. Abbreviation indexes above 127 now also give the correct time zone abbreviation.gh-161106: Fix
plistlib.dump()andplistlib.dumps()withFMT_BINARYholding on to memory proportional to the size of large arrays and dictionaries after the call returns.gh-161098: Fix
multiprocessing.shared_memory.ShareableListleaving its newly created shared memory block behind when a value cannot be stored, such as an integer outside the signed 64-bit range.gh-161108: Fix quadratic time complexity of
clear()andpopitem()onconfigparser.ConfigParserobjects and their section proxies. Clearing a section no longer fails part way withInterpolationErroron a value it removes.gh-161100: Fix
ipaddress.IPv6Interface.is_unspecifiedreturningFalsefor the IPv4-mapped address::ffff:0.0.0.0. It now gives the same result asipaddress.IPv6Address.is_unspecified.gh-161102: Fix the incremental decoder of the
idnacodec decoding some dots twice when its input starts with empty labels, for exampleb".example.com". Reading a run of dots throughio.TextIOWrapperno longer produces quadratically more text than the input holds.gh-160187: Fix the ISO-2022 decoders (
iso2022_jp,iso2022_krand related) accepting escape sequences that designate a character set to the wrong code element (G0, G1 or G2). Such sequences now raiseUnicodeDecodeErrorinstead of producing wrong text orRuntimeError.gh-160185: Fix
codecs.StreamWriter.reset()of the stateful CJK codecs (hzand theiso2022_*family) not writing the sequence that returns the output to ASCII.seek(0)ofcodecs.StreamWriter,codecs.StreamReaderWriterandcodecs.StreamRecodernow resets the writer before moving the stream position.gh-159875: Fix
AttributeErrorfrom the methods of anasyncioSSL transport, such aswrite()andset_protocol(), when the transport is closed after its connection was lost. This also affected the fallback ofloop.sendfile()over SSL when the peer went away mid-transfer. The SSL context is still released once the connection is lost.gh-159398: Fix the sampling profiler crashing when a string read from the target process contains code points above
U+10FFFF.gh-159620: رفع دستورات
python -m asyncio ps،pstreeو پشتههایprofiling.samplingآگاه از ناهمگامی که در تولیدگرهای ناهمگام متوقف میشوند. پچ توسط Timofei Ivankov.bpo-18108: تابع
shutil.chown()اکنون از آرگومانهای کلیدواژهای dir_fd و follow_symlinks پشتیبانی میکند.gh-155233: Fix
asyncio.Barrier.wait()returning duplicate indices when a waiting task is cancelled before the barrier is released.```gh-120244: رفع نشت حافظه در
re.sub()هنگامی که رشتهی جایگزین حاوی بازارجاعات است.gh-157928: Correctly detect and handle OSC sequences in PyREPL.
gh-157856: Fix
asyncio.as_completed()raisingRuntimeError("no running event loop") when the iterator is created outside of a running event loop and driven withloop.run_until_complete().gh-151126: رفع فروپاشی ناشی از تنظیمنشدن
MemoryErrorهنگام شکست در تخصیص حافظه، در زمان ارسال نمونههایctypes.Structureیاctypes.Unionبهصورت مقدار (by value) به توابع خارجی ctypes.gh-133934: بهبود پیام
.helpدر رابط خط فرمان، CLI ماژولsqlite3.bpo-41497: رفع خطای احتمالی UnicodeDecodeError در ماژول dis.
مستندات¶
gh-138277: Rearranged documentation search results to emphasize built-in types and functions. Patch by Adam Hartz.
آزمونها¶
gh-158975: Replace fixed sleeps used for synchronization in multiprocessing tests with bounded waits to avoid failures on slow or overloaded systems.
ساخت¶
gh-75929: Fix a
configureprobe that could omit functions such asos.fchdir()from builds using-Wall -Werror.gh-160704: Fix C11-C17 builds with old C library headers that do not define
static_assert, including glibc versions older than 2.16.
Windows¶
gh-159118: Fix a crash (
RPC_NT_INTERNAL_ERROR) and intermittent window class failures in_wmiunder high concurrency and load by initializing COM as multi-threaded (MTA) instead of apartment-threaded (STA).
رابط C API¶
gh-156939: رفع نحوهی مدیریت خطای تابع
PyBytesWriter_Format(): بازگرداندن نویسنده (writer) به وضعیت قبلی خود در صورت بروز خطا. وصله توسط Victor Stinner.gh-161185: Fix a strict aliasing issue in the
memcpy()implementation ofPy_SETREF,Py_XSETREFandPy_CLEARmacros. Patch by Nathan Goldbaum and Victor Stinner.
پایتون ۳.۵.۲ نهایی¶
تاریخ انتشار: ۲۰۲۶-۱۰-۲۱
امنیت¶
gh-160300: Fix
http.cookiejar.DefaultCookiePolicyaccepting and returning cookies with a negativeVersionattribute without checking their domain against the request host. Such cookies are now ignored.CVE 2026-114583, gh-160097: تابع
tarfile.tar_filter()اکنون اعضای پیوندی را که مسیرشان به خود پوشهی مقصد منتهی میشود، رد میکند، همانطور کهtarfile.data_filter()قبلاً این کار را میکرد.CVE 2026-115557, gh-160040:
sslnow rejects TLS certificate chains that contain any of a set of compromised eMudhra intermediate CA keys. This is an extraordinary measure and a last line of defense: removing trust is primarily the job of the platform root store, and the built-in denylist only blocks connections while that update has not yet reached the OS, a container image, or a bundled trust store in various Python packages. Entries are added to the denylist only under a very high threshold. The denylist matches on the public key (the SHA-256 digest of the RFC 5280SubjectPublicKeyInfo), so it also covers the cross-signed certificates that reuse one of the distrusted keys.
هسته و توکارها (Core and Builtins)¶
gh-160491: Fix the location reported for invalid escape sequences in f-strings and t-strings. The
SyntaxErrornow points at the literal part that contains the escape, instead of at the closing quote.gh-160268: رفع یک فروپاشی در
tokenizeهنگامی که یک علامت بستهی ناهمخوان پس از براکت بازکنندهی یک فیلد جایگزینی افاسترینگ یا تیاسترینگ میآید، مانندf'{]a'. این مورد اکنون همان خطای «ناهمخوان» (unmatched) را مانند پارسر ایجاد میکند.gh-106045: رفع کشف مسیر
venvهنگامی که برنامهی اجرایی پایه به مکانی خارج از محل نصبی که کلیدhomeدر پروندهیpyvenv.cfgبه آن اشاره دارد، منتهی میشود. کتابخانهی استاندارد اکنون ازhomeو ماژولهای توسعهای از محل نصب برنامهی اجرایی حلشده پیدا میشوند، به جای اینکه به پیشوند کامپایلشده برگردند.gh-160162: رفع یک فروپاشی در پلتفرمهای ۳۲ بیتی هنگام شیفت دادن به چپ یک
intبه اندازهی تعدادی نزدیک بهsys.maxsize * sys.int_info.bits_per_digit. خطایOverflowErrorاکنون مانند سایر تعدادهای بسیار بزرگ ایجاد میشود.gh-160179: رفع این مشکل که
bytearray.__init__()هنگام شکست خوردن روی یکlistیاtupleحاوی یک عدد صحیح که درrange(256)نیست، حافظهی مقداردهینشدهای را در شیء باقی میگذارد. شیء اکنون پس از فراخوانی ناموفق خالی است.gh-125017: رفع فروپاشی در برخی دسترسیها به
__annotations__در اشیاءstaticmethodوclassmethod.gh-159739: رفع یک رقابت در
list.__sizeof__()هنگامی که یک فهرست به طور همزمان در یک ساخت نخآزاد تغییر اندازه داده میشود.gh-159739: رفع یک نشت ارجاع هنگامی که مقدار یک مستعار نوع به صورت بازگشتی یا همزمان ارزیابی میشود.
gh-159739: رفع یک فروپاشی در ساختهای نخآزاد هنگامی که
codecs.unregister()به طور همزمان فراخوانی میشود.gh-159963: Fix a regression in Python 3.15.0 where threads importing submodules of packages for the first time could raise
_DeadlockErroror a spurious "partially initialized module"ImportError, or block one another, with no circular import involved.importlib.import_module()now returns the partially initialized module in a cross-thread circular import, as theimportstatement does, instead of raising_DeadlockError.gh-159739: رفع نشتهای ارجاع هنگامی که زبالهروبی نخآزاد به دلیل یک خطای تخصیص زودتر متوقف میشود.
gh-159739: جلوگیری از درونیسازی و جاودانهسازی زیرکلاسهای پیچیده توسط ساختهای نخآزاد در ثابتهای شیء کد.
gh-159739: رفع یک نشت ارجاع در عملیات دودویی، سهدویی و مقایسهای روی پراکسیهای ارجاع ضعیف هنگامی که یک عملوند دیگر یک پراکسی مرده است.
gh-159739: اجازه دادن به ساخت خطا برای آرگومانهای مستعار عام نامعتبر.
gh-159739: اجازه دادن به جمعآورنده زباله برای شکستن چرخههای ارجاع شامل دسترسیدهندهها یا نامهای ویژگی.
gh-159739: رفع یک فروپاشی در
warnings.warn()هنگامی کهskip_file_prefixesیک زیرکلاس tuple خالی است. انتقال خطاهای تخصیص هنگام ایجاد نام پروندهی جایگزین.gh-159431: رفع یک خطای ادعا (assertion) یا تبدیل شدن یک شیء نامیرا به فانی در نسخهی نخبندی آزاد، هنگامی که شیء ارسالشده به مکانیسم داخلی کاهشدهندهی شمارشگر ارجاع تأخیری (delayed decref)، نامیرا باشد یا پیش از پردازش این مکانیسم توسط جمعآوریکنندهی زباله، نامیرا شود.
gh-159285: رفع خرابی در بیلد دیباگ زمانی که کپی کردن یک
dictخالی باMemoryErrorمواجه میشود. وصله توسط Christian Aurich Zanettini Martins.gh-158803: رفع یک فروپاشی در
bytes.join()وbytearray.join()در ساخت نخآزاد زمانی که یک نخ دیگر همزمان فهرست در حال پیوند را تغییر میدهد. وصله توسط Christian Aurich Zanettini Martins.gh-159111: بهروزرسانی نسخهی mimalloc از ۲.۱.۲ به ۲.۵.۲. وصل توسط Donghee Na.
gh-154318: رفع فروپاشی هنگام هش کردن یک
tupleیاfrozendictبسیار تو در تو. اکنون به جای سرریز شدن پشتهی C، یکRecursionErrorبالا آورده میشود.gh-151818: رفع فروپاشی آزادسازی مضاعف (double-free) در
list.append()(دستور تخصصیCALL_LIST_APPEND) هنگامی که بزرگ کردن فهرست با خطایMemoryErrorمواجه میشود.
کتابخانه¶
gh-160549: Fix a crash when a
compression.zstd.ZstdCompressorthat uses worker threads and aZstdDictis deallocated, or the interpreter exits, while data passed tocompress()is still being compressed.gh-160535: Fix a crash in
compression.zstdwhen the garbage collector frees aZstdCompressorthat uses worker threads together with itsZstdDictbefore the compression of already submitted data has finished.gh-160520: Fix
asyncioSSL transports not applying ssl_shutdown_timeout when the peer has sent EOF but does not read the data still queued for it. Closing such a connection could wait indefinitely; it is now aborted withTimeoutErroronce the timeout expires.gh-160326: Raise
ValueErrorfor a NaN timeout inthreading.Condition.wait()and the blocking calls built on it, such asthreading.Event.wait(),threading.Semaphore.acquire()andqueue.Queue.get(), instead of returning at once or looping without ever timing out.gh-157639: برطرفکردن یک فروپاشی در
cProfileهنگامی که یک تایمر خارجی مجدداً وارد پروفایلگیر میشود. رویدادهای پروفایلگیری که هنگام اجرای تایمر خارجی ایجاد میشوند اکنون نادیده گرفته میشوند.gh-159739: Fix crashes in
xml.parsers.expatwhen a character data callback disables buffering or clears another handler during a flush, or when interning an attribute name changesordered_attributes.gh-160299: Fix
symtable.Symbol.is_referenced()for local and nonlocal symbols in function scopes when their only uses are in inlined comprehensions.gh-159739: رفع فروپاشی هنگامی که یک زیرکلاس ساختار
ctypesبه دلیل خطای تخصیص حافظه قابل ایجاد نیست.gh-159739: رفع پاکسازی حافظهی موقت (memo) در
pickle.Unpicklerبه طوری که unpickler بتواند برای رکوردهای مستقل دوباره استفاده شود.gh-160171: On the server side,
ssl.SSLSocket.get_unverified_chain()now returns the client's certificate when the session was resumed from a session ticket, instead of an empty list, and returns an empty list instead of raisingAttributeErrorwhen the client sent no certificate.gh-159739: Fix a possible crash in
abc.ABCMetainstance checks when a subclass-checking callback changes the instance’s class.gh-159739: رفع متد
truncateدرio.BytesIOهنگامی که تبدیل آرگومان اندازهی آن باعث بستهشدن جریان یا اکسپورت بافر آن میشود.gh-159739: رفع بازگرداندن مقدار کهنه توسط
contextvars.ContextVarپس از اینکه یک نهاییساز بازورودپذیر آن را در طول متدreset()تغییر میدهد.gh-127870: تشخیص فراخوانیهای بازкурسی (recursive) در مدیریت
_as_parameter_در ctypes. وصله توسط Victor Stinner.gh-159739: رفع فروپاشی احتمالی هنگامی که فهرستی از پارامترهای
sqlite3بهصورت همگام (concurrently) روی یک ساخت نخآزاد تغییر میکند.gh-159739: جلوگیری از فروپاشی هنگامی که یک نهاییساز زیرکلاس
threading.localپس از شکست سازنده، به ویژگیها دسترسی پیدا میکند.gh-159739: جلوگیری از فروپاشی هنگامی که یک نهاییساز زیرکلاس
queue.SimpleQueueپس از شکست سازنده، یک آیتم اضافه میکند.gh-100609: تابع
str()از یکzipfile.Pathکه پروندهی فشردهی زیرین آن نام پرونده ندارد (مانند یک مسیر ساخته شده ازio.BytesIO)، اکنون به جای بالا آوردنTypeError، آن نام پرونده را به شکل:zipfile:نمایش میدهد. ریشهی یک پروندهی فشرده نیز دیگر با یک اسلش پایانی نمایش داده نمیشود. هماهنگشده با zipp نسخهی ۳.۲۳.۱.gh-159690: رفع متوقف شدن دائمی چرخش در
logging.handlers.TimedRotatingFileHandlerپس از اینکه چرخشی با شکست مواجه شده یا پروندهی پشتیبان آن از قبل وجود داشته است؛ برای مثال در زمان تغییر ساعت تابستانی (DST).gh-159739: جلوگیری از رفتار نامشخص هنگامی که
struct.pack_into()یک آرایهی بایت (bytearray) را در خروجیهای همپوشان کپی میکند.gh-159739: رفع مدیریت خطای تخصیص حافظه در پیادهسازی جایگزین
getaddrinfo().gh-159739: رفع آزادسازی مضاعف (double free) در صورتی که مقداردهی اولیهی بازکنندهی پشتهی دوردست (remote unwinder) با کمبود حافظه مواجه شود.
gh-159739: رفع بازگرداندن بایتهای بیشتری توسط
io.IOBase.readline()نسبت به میزان درخواستشده، هنگامی که یک جریان ازpeek()پشتیبانی میکند و خوانشهای کوتاهی برمیگرداند.gh-159739: رفع مصرف بیسروصدای یک نویسهی غیر BMP توسط رمزگذارهای چندبایتی هنگام جستجوی یک نگاشت دو نویسهای.
gh-159739: رفع بررسیهای بافر خروجی با اختلاف یک واحد (off-by-one) در پیادهسازی جایگزین
getnameinfo().gh-159739: رفع چرخههای ارجاع شامل انواع پیمایشگرهای گرافیم و بخشهای ایجادشده توسط
unicodedata.iter_graphemes().gh-159706: رفع مشکل تنظیم
fold=0درzoneinfo.ZoneInfoپیادهسازیشده به پایتون خالص در تابعfromutc()برای زمانهای واقع در بازهی تاشدگی (fold) که توسط تنها گذار یک منطقهی زمانی با یک گذار واحد ایجاد شده است.gh-159714: رفع مشکل تفسیر قانون روز ژولینی
J59بهعنوان ۲۹ فوریه در سالهای کبیسه به جای ۲۸ فوریه توسطzoneinfo.ZoneInfo.gh-159304: Fix
AttributeErrorinemail.message.EmailMessage.get_body()when a nestedmultipartpart is malformed and its payload is a string.gh-158287: رفع باگی در
asyncioکه در آن متوقف کردن یک فرایند فرزند (مانند استفاده ازSIGSTOP) روی سیستمعامل macOS باعث مسدود شدن بیحساب حلقهی رویداد میشد.gh-130698: Fix PyREPL to convert
sys.ps1andsys.ps2to strings before use, and fall back to the default prompts if the conversion raises.gh-158126: افزایش سرعت
pickle.dumps()و ایجاد یکpickle.Picklerبا اجتناب از ایجاد یکAttributeErrorهنگام جستجوی ویژگیهای اختیاریreducer_overrideوdispatch_table.gh-157880: رفع مشکل
mailbox.Babylبرای نوشتن سرآیندهای قابلمشاهدهی یکmailbox.BabylMessageدر پروندهی صندوق پستی.gh-156784: کلاس
asyncio.ProactorEventLoopدیگر خطاهایConnectionResetErrorرا روی سوکتهای UDP بهصورت بیصدا نادیده نمیگیرد، که با عملکردasyncio.SelectorEventLoopسازگار است.gh-156078:
zipfile.ZipFile.mkdir()now raisesValueErrorwhen the archive is closed or when a writable member handle is open.gh-155833: اطمینان حاصل کنید که اشیای MD5 و SHA* پیش از آزادسازی وضعیت داخلی HACL* خود بهدرستی توسط زبالهروب (GC) ردیابینشده میشوند. وصلهای از Bénédikt Tran.
gh-155428: اطمینان حاصل کنید که
hmac.digest()وhmac.HMAC.digest()مقادیر یکسانی را هنگام استفاده از اندازهی بلوک درهمسازی کوچکتر از ۱۶ خروجی میدهند. وصلهای از Bénédikt Tran.gh-121267: بهبود کارایی
tarfileهنگام نوشتن پروندهها، از طریق ذخیرهسازی موقت (caching) نامهای کاربری و نامهای گروه.gh-153679:
zipimport.zipimporternow raiseszipimport.ZipImportErrorinstead ofUnicodeDecodeErrorfor a UTF-8-flagged file name that is not valid UTF-8. Patch by tonghuaroot.gh-153319: The
turtledemoviewer now reads each demo script as UTF-8 instead of the locale encoding.gh-127636: Fix
tarfile.TarFile.extract()to accept archive member names with a trailing forward slash, including those returned bytarfile.TarFile.getnames(). Contributed by Xiao Yuan.gh-149527: ماژول
multiprocessing: رفع مشکل ایجاد پروندههای سوکت موقت به دنبال gh-137335 (پیوند PR#148578 و بکپورتهای مربوطه). وصلهای از Bénédikt Tran.gh-146169:
xml.parsers.expat: raiseRuntimeErrorwhen an Expat handler callsparser.Parseorparser.ParseFileon the parser that called the handler. Patch by Bénédikt Tran.gh-140036: Avoid hanging in floor division of pure Python
decimal.Decimalinstances when the context precision is very large. Patch by Bénédikt Tran.
ساخت¶
gh-128883: Fix crashes with
-X perfand-X perf_jitin BOLT builds. The ELF perf trampoline templates now use read-only data sections.gh-160004: رفع مسیرهای موجود در پروندهی PEP 739 به نام
build-details.jsonکه توسطTools/build/generate-build-details.pyبا هر دو سویچ--relative-pathsو--config-file-pathتولید شده است. پیشتر، تمام مسیرها به جزbase_prefixاشتباه بودند و به پوشهای که اسکریپت از آن اجرا شده بود وابستگی داشتند.gh-159998: رفع مشکل
libpython.dynamicدر پروندهی PEP 739 به نامbuild-details.jsonبرای ساختهای چارچوب macOS و iOS. این مورد اکنون به جای مسیری ناموجود درlib/، به کتابخانهی چارچوب اشاره میکند.gh-144942: رفع مشکل کتابخانهی مشترک و ساختهای چارچوب در macOS که کتابخانههای موردنیاز ماژولهای توکار، مانند اشیای HACL* موردنیاز
_blake2هنگام ساخته شدن از طریقModules/Setup.localرا لینک نمیکردند.gh-159819: رفع نسخهی پوستهی python3-config (استفادهشده در تمام پلتفرمهای POSIX به جز macOS) زمانی که پیشوند نصب حاوی فاصله یا نویسههای خاص دیگر برای پوسته یا sed باشد: این ابزار یک
--prefixخالی و مسیرهای اشتباه--includes/--ldflagsرا چاپ میکرد در حالی که با موفقیت خارج میشد. این اسکریپت اکنون همچنین اگر نتواند پیشوند نصب خود را تعیین کند، با وضعیت ۱ خارج میشود.gh-157354: Fix the
--with-name-sanitizer=noand--without-name-sanitizerconfigure options enabling the sanitizer instead of disabling it.gh-155813: در macOS، گزینههای
LIBFFI_CFLAGSوLIBFFI_LIBSدیگر زمانی که SDK کتابخانهیlibffiرا فراهم میکند نادیده گرفته نمیشوند، بنابراینctypesمیتواند بار دیگر در برابر نسخهی متفاوتی ازlibffiساخته شود. وصلهای از Advit Arora.
رابط C API¶
gh-159739: جلوگیری از فروپاشی در صورتی که یک پایشگر زمینه در حالی پاکسازی شود که دیگر پایشگرهای زمینه در حال مطلع شدن هستند.
نسخه نهایی Python 3.15.1¶
تاریخ انتشار: ۲۰۲۶-۱۰-۲۱
امنیت¶
هسته و توکارها (Core and Builtins)¶
gh-159739: از بروز فروپاشی در صورت شکست تخصیص حافظه هنگام ایجاد یک پیمایشگر از کلاس
string.templatelib.Templateجلوگیری کنید.gh-159739: انتقال دادن خطاها در طول ساخت کلاس عام و جلوگیری از فروپاشی پس از جایگزینی ناموفق مستعار عام.
gh-159739: هنگامی که مقدار مطلق عرض قالببندی پویا به سبک printf بسیار بزرگ است،
OverflowErrorرا بالا بیاورید.gh-159739: رفع نشت ارجاع در
gc.get_objects()وgc.get_referrers()هنگامی که یک تخصیص داخلی در ساخت نخآزاد با شکست مواجه میشود.gh-159739: رفع نشت حافظه در طول راهاندازی مفسر هنگامی که یک پروندهی پیکربندی مسیر خالی یا بیش از حد بزرگ است، یا هنگامی که یک قلاب حسابرسی یک دستور را رد میکند.
gh-159739: جلوگیری از فروپاشی هنگامی که یک رشتهی پیکربندی مفسر نمیتواند به عنوان UTF-8 کدگذاری شود.
gh-159739: اگر تخصیص فرادادهی خطای اختیاری با شکست مواجه شود،
SyntaxErrorاصلی را حفظ کنید.gh-159739: جلوگیری از فروپاشی هنگامی که قالببندی یک عدد صحیح با نوع دادهی ارائه
cبا کمبود حافظه مواجه میشود.gh-159739: جلوگیری از فروپاشی هنگامی که نام پروندهی ماژول نمیتواند به عنوان UTF-8 کدگذاری شود.
gh-159603: در FreeBSD، تابع
pthread_attr_get_np()را برای به دست آوردن اندازهی پشته (و اندازهی نگهبان) نخ فعلی فراخوانی کنید. وصل توسط Victor Stinner.gh-130279: رفع باگی که در آن کامپایلر هندلر استثنای درستی را برای برخی از دستورات پرش تنظیم نمیکرد.
gh-159430: اگر جستجوی
__bytes__()هنگام انجام قالببندی با % برایbytesاستثنایی را بالا بیاورد، استثنای درست را گزارش کنید.gh-159320: افزودن تشخیص پویای اندازههای پشته در اندروید که امکان بازگشت عمیق امنتر را فراهم میکند.
gh-159288: رفع خرابی هنگام پیمایش زنجیرهی بسیار طولانی از جاینگهدارهای ایمپورت تنبل که توسط یک ایمپورت نقطهدار مستعار مانند
lazy import a.b.c as dایجاد شده است. از این پس استثنایRecursionErrorبالا آورده میشود.gh-159285: رفع خرابی در بیلد دیباگ زمانی که کپی کردن یک
dictخالی باMemoryErrorمواجه میشود. وصله توسط Christian Aurich Zanettini Martins.gh-159041: رفع استفاده پس از آزادسازی در دفترداری وظایف
asyncioهنگامی که یک نهاییساز در طول خاموش شدن نخ، یک وظیفه ایجاد میکند.gh-158973: قفل هشدارها را در فرزند پس از
os.fork()، پیش از پاکسازی وضعیتهای سایر نخها بازنشانی کنید تا از بروز بنبستها هنگامی که نهاییسازهای آنها هشدار صادر میکنند، جلوگیری شود. اگر نخ انشعابدهنده مالک قفل است، عمق بازگشتی آن را حفظ کنید.gh-158918: کاهش مصرف پشتهی C در
_PyModule_IsPossiblyShadowingکه میتوانست بهطور بالقوه باعث سرریز پشته در طول دسترسی به ویژگی ماژول هنگام بازگشت عمیق در بیلدهای بهشدت بهینهشده شود.gh-158803: رفع یک فروپاشی در
bytes.join()وbytearray.join()در ساخت نخآزاد زمانی که یک نخ دیگر همزمان فهرست در حال پیوند را تغییر میدهد. وصله توسط Christian Aurich Zanettini Martins.gh-158824: رفع فراخوانی
__getattr__()در سطح ماژول پیش از حل شدن ایمپورتهای تنبل خود ماژول، که به آن اجازه میداد آنها را پنهان کند.gh-158820: رفع یک فروپاشی هنگامی که یک واردسازی تنبل توسط یک نهاییساز در حال اجرا در زمان خاموش شدن مفسر اعلام یا حل میشود.
gh-158592: از تخصیص مجدد آرایه هنگام کوچک کردن یک
listکوچک صرفنظر کنید. وصلهای توسط Donghee Na.gh-158583: متدهای
bytes.fromhex()وbytearray.fromhex(): رفع خواندن حافظهی مقداردهینشده. وصله توسط Victor Stinner.gh-158197: رفع فروپاشیها و خطاهای ادعای ساخت دیباگ در ساخت نخآزاد هنگام پیمایش روی یک دیکشنری تقسیمشده در حالی که نخ دیگری در حال حذف ورودیها یا پاک کردن آن است. بهروزرسانیهای ترتیب درج را به صورت اتمی منتشر کنید تا خوانندگان نتوانند اندازهی افزایشیافته را پیش از مقداردهی اولیه شدن ورودی ترتیب مربوطه مشاهده کنند.
gh-158592: عبارت
del list[index]اکنون کوچک کردن آرایهی داخلی فهرست را فعال میکند.gh-158486: رفع محاسبهی نقاب PowerSort در
list.sort()برای فهرستهای بسیار بزرگ.gh-158121: رفع رویدادهای گمشدهی
INSTRUCTIONدرsys.monitoringهنگامی که یک کالبکLINEمقدارsys.monitoring.DISABLEرا برمیگرداند.gh-158219: رفع سازندهی
bytearray: اگر مقدار هش یک شیء bytes از پیش محاسبه شده باشد، از آن استفاده نکنید. وصله توسط Cody Maloney و Victor Stinner.gh-158072: رفع خرابی کامپایلر درجا (JIT) هنگامی که یک کلاس با آرگومانهای پیشفرض خود نمونهسازی میشود
gh-157468: رفع مشکل بهینهساز کامپایلر درجا (JIT) که نام توکار را حتی زمانی که تابع در حال اجرا از نگاشت متفاوتی برای
__builtins__(مانند نگاشت ایجادشده باvars(builtins).copy()) استفاده میکند، به یک مقدار ثابت گرفتهشده از دیکشنری توکارهای مفسر تبدیل (fold) میکند. بهینهساز اکنون تنها زمانی این تبدیل را انجام میدهد که توکارهای تابع متعلق به مفسر باشند، و مقدار ثابت تبدیلشده در زمان اجرا محافظت میشود تا تابع دیگری که از همان شیء کد اما با نگاشت توکارهای متفاوتی استفاده میکند، آن را به کار نگیرد.gh-157242: اگر
bytearray.resize()یاbytearray.take_bytes()با خطا مواجه شود، بهجای پاک کردنbytearray، آن را دستنخورده رها کنید. وصله توسط Victor Stinner.gh-156091: رفع خرابی هنگام کامپایل درکهای فهرست، مجموعه یا دیکشنری تو در تو و عمیق. اگر میزان تو در تو بودن از حد بلوک ایستای کامپایلر فراتر رود، اکنون یک استثنای
SyntaxErrorبالا آورده میشود.gh-106045: رفع کشف کتابخانهی استاندارد در محیطهای مجازی ایجاد شده از یک پیوند نمادین اجرایی پایتون که در خارج از نصب پایهی آن قرار دارد.
gh-156459: رفع پاکسازی خطا در
compiler_set_qualname. پیشتر این تابع در_PyCompile_EnterScopeو پس از ورود به محدوده فراخوانی میشد و در صورت بروز خطا، این کار معکوس نمیشد.gh-156371: رفع رویدادهای گمشدهی
PyRefTracer_DESTROYبرای شیءهای معوق سطل زباله (trashcan). وصله توسط Donghee Na.gh-156204: رفع خرابی در
PyErr_GivenExceptionMatches()هنگام ارزیابی تاپلهای استثنای بسیار تو در تو. بازگشتی اکنون محدود شده است و عبور از حد مجاز به عنوان یک استثنای غیرقابلپرتاب گزارش میشود.gh-155823: رفع باگ کامپایلر درجا (JIT) که در آن خروج جانبیِ رخداده هنگام اتمام یک پیمایشگر مجازی، یک مقدار کهنه را روی پشته باقی میگذاشت، به طوری که مفسر سطح یک با وضعیت خرابشده از سر گرفته میشد و عبارت
yield fromبه جای پایان طبیعی، استثنایAttributeErrorرا بالا میآورد.gh-155504: رفع خرابی زمانی که ایجاد وضعیت نخ پیش از مقداردهی اولیهی کامل وضعیت نخ با خطا مواجه میشود.
gh-155315: رفع ماژول
marshalبه طوری که یکfrozendictکه بیش از یک بار در دادههای سریالشده ارجاع داده شده است، به جای شکست در بارگذاری با استثنایValueError، به درستی رفتوبرگشت (round-trip) کند. وصله توسط tonghuaroot.gh-154937: رفع رقابت داده روی شناسههای دستهی نخها هنگامی که
_thread._shutdown()بهطور همزمان با راهاندازی نخهای غیردیمن در ساخت نخآزاد اجرا میشود.gh-152075: کاهش رقابت قفلها در طول تخصصیسازی بایتکد LOAD_GLOBAL تحت نخبندی آزاد.
gh-153578: برطرف کردن یک خطای نوشتن خارج از کران (out-of-bounds write) در متد
bytearray.extend()زمانی که آرایهی بایتی در حین دریافت متد__buffer__()آرگومان، مثلاً توسط یک نخ دیگر، تغییر اندازه میدهد. وصله توسط tonghuaroot.gh-151895: برطرف کردن یک فروپاشی در تابع
marshal.loads()زمانی که تخصیص حافظه هنگام بارگذاری یک دیکشنری با قابلیت ردیابی ارجاع با خطا مواجه شد؛ اکنون خطایMemoryErrorرا بالا میآورد.gh-151518: برطرف کردن یک مسئلهی عادلانهی stop-the-world در حالت نخآزاد (free-threaded) که میتواند باعث گرسنگی (starve) نخی شود که پس از تعلیق در حالت جداشده (detached)، دوباره متصل میشود.
gh-149816: برطرف کردن یک حالت رقابت (race condition) از نوع Use-After-Free در تابع
subtype_getweakref()در طول ایجاد و تخریب همزمان ارجاع ضعیف (weakref) در ساخت نخآزاد (free-threading).gh-149816: برطرف کردن حالتهای رقابت (race conditions) در تابع
invoke_gc_callbackهنگام پیمایشgc.callbacksدر حالت نخآزاد (free-threading).gh-69605: رفع درج نادرست تکمیلهای REPL هنگامی که در دستورات ایمپورت فاصله وجود داشت.
کتابخانه¶
gh-138641: نادیده گرفتن
pdb.set_trace()هنگامی که مستقیماً در اعلانpdbفراخوانی میشود.gh-159864: رفع فروپاشی در
syslog.openlog()تحت ساخت نخآزاد هنگامی کهsys.argvبه طور همزمان تغییر میکند.gh-159811: رفع فروپاشی در
hashlibهنگامی که روتین OpenSSL مورد استفاده توسطhash.update()یا سازندههای شیء هش روی دادههای بزرگتر از ۲۰۴۸ بایت با شکست مواجه میشود. وصل توسط Bénédikt Tran.gh-159811: رفع فروپاشی در
hmacهنگامی که روتین OpenSSL مورد استفاده توسطhmac.HMAC.update()یاhmac.new()روی دادههای بزرگتر از ۲۰۴۸ بایت با شکست مواجه میشود. وصل توسط Bénédikt Tran.gh-159786: رفع خطای مدیریت خطای رویهی HACL* استفادهشده توسط
hmac.new()وhmac.HMAC.update(). اگر حداکثر طول ورودی تابع هش زیرین تجاوز شود، اکنون خطایOverflowErrorدر تمام ساختها بالا آورده میشود، بهجای اینکه در ساختهای DEBUG دچار فروپاشی شود و در غیر این صورت بیصدا نادیده گرفته شود. صحت کد. از نظر واقعبینانه این اتفاق تنها در اندازههای غیرقابلباور رخ میدهد. پچ توسط Bénédikt Tran.gh-159739: رفع کپی کردن زیرکلاسهای
collections.dequeبا حداکثر طول زیاد.gh-159739: اجازه دادن به زبالهروبی چرخهای برای پسگرفتن رکوردهای گروه برگرداندهشده توسط
grp.gh-159739: رفع خواندن
io.BytesIOدر نماهای همپوشان از همان بافر.gh-159739: جلوگیری از فروپاشی هنگام شکست تخصیص حافظه در حین ایجاد پیمایشگر آیتمهای
collections.OrderedDict.gh-159739: جلوگیری از خواندن فراتر از پایان نام کدگذاری هنگامی که هندلر خطای
surrogatepassیک نام ناقص UTF-16 یا UTF-32 را دریافت میکند.gh-159739: رفع مقادیر اسکالر نادرست
ctypesپس از اینکهctypes.resize()شیء را بزرگتر میکند.gh-159739: رفع نشت حافظه هنگامی که نرمالسازی یونیکد نمیتواند بافر موقت خود را بزرگ کند.
gh-159739: رفع نشت منابع در
sslهنگامی که تبدیل گواهی یا راهاندازی ثبت کلید با خطا مواجه میشود.gh-149015: رفع جا ماندن نقاط شکست توسط
bdb.Bdb.clear_all_file_breaks()هنگامی که چندین نقطه شکست روی یک سطر تنظیم شدهاند.gh-159620: رفع دستورات
python -m asyncio ps،pstreeو پشتههایprofiling.samplingآگاه از ناهمگامی که در تولیدگرهای ناهمگام متوقف میشوند. پچ توسط Timofei Ivankov.gh-159458: رفع رقابت دادهای ThreadSanitizer روی نهانگاه ایستا در تابع
normalize_century()از ماژول datetime تحت ساخت نخآزاد.gh-159430: اگر جستجوی
__name__هنگام فراخوانیrepr()روی یکweakref.refباعث بروز استثنایی شود، استثنای درست گزارش میشود.gh-159225: جلوگیری از تغییر تاریخچهی readline توسط فراخوانیهای
inputدر PyREPL.gh-159044: بازیابی رفتار پیشین
http.client.HTTPConnection.set_tunnel()که در آن مقادیر سرآیند که رشته نیستند (مانندNone،intیا سایر اشیا) به جای ایجادAttributeErrorهنگام ارسال درخواست، باstrتبدیل میشوند.gh-159184: رفع خطایی که باعث میشد
marshal.dumps()برای یک مجموعه (set) یا frozenset حاوی چندین NaN پیچیده،MemoryErrorایجاد کند و همچنین نوشتن پروندهی.pycرا برای کد منبع حاوی چنین ثابتی غیرممکن میساخت.gh-159185: رفع یک فروپاشی در
marshal.dumps()وmarshal.dump()هنگامی که یک مجموعه در حین سریالسازی عناصرش تغییر میکند، برای مثال توسط متد__buffer__()یکی از عناصر آن. اکنونRuntimeErrorبالا آورده میشود.gh-159049: رفع چرخههای ارجاع در
asyncio.loop.create_connection()وasyncio.loop.start_tls()پس از یک دستدهی TLS ناموفق. پچ توسط Timofei Ivankov.gh-87720: رفع خطا در سیاستهای جدید
emailکه در آن تا کردن سرآیند در برخی موارد موفق به تشخیص نیاز به نقلقول مجدد متن به دست آمده از کلمات کدگذاریشده نشد.gh-158929: رفع فروپاشی هنگام فراخوانی
syslog.syslog()در حالی که یک زیرتفسیرگر در نخی دیگرsyslog.openlog()یاsyslog.closelog()را فراخوانی میکند.gh-158936:
dataclass()دیگر زمانی که یک حاشیهنویسی رشتهای نام یک واردسازی تنبل را که قابل حل نیست، با رفتار مربوط به حاشیهنویسیهای غیررشتهای مطابقت نمیدهد، با خطا مواجه نمیشود.gh-158893: تابع
os.strerror()را نخایمن کنید: در صورت موجود بودن از تابع بازورودپذیرstrerror_r()استفاده کنید. وصله توسط Victor Stinner.gh-158539: رفع جستجوی بخش زماناجرای مکاواس (macOS runtime) برای اشکالزدایی از راه دور هنگامی که اندازههای ناحیهی حافظهی مجازی با اندازههای فایل قطعهی Mach-O متفاوت است.
gh-156545: رفع اکسپورتهای عمیق نگاشت شعله (flamegraph) روی پلتفرمهایی با پشتههای C کوچک، با بازگشت به کدگذار JSON پایتون وقتی کدگذار C با کمبود فضای پشته مواجه میشود.
gh-158552: پیش از خواندن حافظهی هدف در حالت مسدودکنندهی پروفایلگیر نمونهبردار، منتظر بمانید تا تعلیق نخهای ویندوز به اتمام برسد. اگر انتظار برای تعلیق با شکست مواجه شد، هدف را از سر بگیرید.
gh-156321: رفع گزارشدهی استثنا توسط
asyncio.shield()از آیندهی (future) درونی از طریق هندلر استثنای حلقه، بلافاصله پس از تکمیل آن پس از لغو سپر (shield)، حتی زمانی که استثنا بعد از آن بازیابی میشود. این استثنا اکنون تنها در صورتی گزارش میشود که هرگز بازیابی نشود، درست مانند هر آیندهی (future) دیگری.gh-158539: رفع دور انداختن نمونهها توسط حالت استثنای
profiling.samplingبرای کدهایی که درون یک بلوکexceptدر یک تولیدگر یا همروال اجرا میشوند. دیباگر از راه دور اکنون به جای خواندن صرفexc_stateتعبیهشده، زنجیرهیtstate->exc_infoوprevious_itemآن را دنبال میکند که با استثنای گزارششده توسطsys.exception()مطابقت دارد.gh-158563: رفع
turtle.undo()پس ازturtle.teleport()و پس از وقوع استثنا درturtle.circle()،turtle.dot()یاturtle.write(). رفعturtle.stamp()،turtle.clearstamp()،turtle.clear()وturtle.reset()هنگامی که بافر لغو غیرفعال است.gh-158540: رفع افزوده نشدن پوشهی حاوی اسکریپت پروفایلبندیشده به
sys.pathدرprofiling.sampling، که مانع از ایمپورت کردن ماژولهای قرارگرفته در کنار آن توسط اسکریپت میشد. پوشهی اسکریپت اکنون اضافه میشود که با رفتارpython script.pyمطابقت دارد.gh-158522: رفع نمایش یک فریم واحد برای وظیفهای که همروال آن بازگشتی (recursive) است توسط
profiling.sampling. وصله توسط Timofei Ivankov.gh-158169: رفع مشکل تکرار شدن
unused_dataتوسطzlib.Decompress.unconsumed_tailپس از پایان جریان داده هنگامی که از max_length استفاده میشد.gh-158004: رفع
asyncio.as_completed()برای ادامه دادن بازگرداندن هر شیء انتظارپذیر پس از لغو شدن یک مرحله پیمایش معلق.gh-153888: رفع مشکل
unittest.mock.patch()باautospec،specیاspec_setهنگام استفاده با اشیاء واردشدهی تنبل (lazy-imported).gh-157672: رفع
tkinterدر macOS: ایجاد یک نمونهیTkدیگر هندلرهای پایتون مربوط به SIGINT، SIGHUP و SIGTERM را با هندلر Tk که فرایند را خارج میکند جایگزین نمیکند، بنابراین Ctrl-C دوبارهKeyboardInterruptرا بالا میآورد.gh-157621: رفع یک فروپاشی هنگامی که یک بازگشت به تماس (callback) ارجاع ضعیف به یک نمونهی
typing.ParamSpecArgsیاtyping.ParamSpecKwargsمتصل میشود.gh-69919:
code.InteractiveInterpreter.runsource()و REPL اکنون هرگونه استثنای ایجاد شده توسط کامپایل منبع، مانندMemoryErrorیاRecursionErrorبرای منبع با تو در تویی بسیار عمیق، به جای انتشار آن یا چاپ یک ردگیری از بخشهای داخلی REPL گزارش میدهند.gh-157451: رفع مشکل انتخاب شکل جمع در
gettextهنگامی که عبارتPlural-Formsعملگر یکعملوندی!را با یک عملگر دودویی ترکیب میکند، برای مثال!n + 1یا2 * !n. مورد دوم باعث بروزSyntaxErrorمیشد.gh-157406: رفع پیادهسازی پایتونی
xml.etree.ElementTree.XMLParser: متدdoctype()هدف اکنون برای یک اعلامیهی نوع سند بدون شناسه خارجی، مانند<!DOCTYPE html>، درست مانند پیادهسازی C فراخوانی میشود.gh-157364: رفع خطای استفاده پس از آزادساختن (use-after-free) در
io.TextIOWrapperهنگامی که فراخوانی به بافر زیرین بهطور برگشتی (reentrantly) آن را جدا میکند. وصلهشده توسط Shamil Abdulaev.gh-157242: کلاس
io.BytesIOدیگر در صورت شکستwrite()وtruncate()بسته نمیشود (MemoryError). وصله از Victor Stinner.gh-157325: رفع خطای خواندن خارج از محدوده (out-of-bounds) در رمزگشای افزایشی
hzهنگامی که ورودی با~پایان مییابد.gh-123018: رفع مشکلی که در آن
readline.write_history_file()وreadline.append_history_file()پروندهی تاریخچهای تولید میکردند کهreadline.read_history_file()نمیتوانست آن را بارگذاری کند، هنگامی که محدودیتی باreadline.set_history_length()تنظیم شده بود و پایتون با کتابخانهیlibeditساخته شده بود. این کار مشکلات NetBSD PR 60322 را دور میزند.gh-157146: ماژول
linecacheاکنون میتوانند کد منبع ماژولی را که از یک آرشیو zip رویsys.pathوارد شده است، زمانی که فقط نام پرونده داده میشود، بخواند؛ درست مانند کاری کهpdb،warningsوdoctestانجام میدهند.gh-157048: حفظ موقعیت و محتویات
io.BytesIOهنگامی کهBytesIO.__init__()به دلیل صادر شدن یک بافر با شکست مواجه میشود.gh-156961: رفع
tkinter.font.nametofont()و سازندهیtkinter.font.Fontبرای یک نام قلم که توسط Tcl به عنوان یک شیء Tcl برگردانده شده است، برای مثال توسطttk.Style.lookup().gh-156946: رفع یک فروپاشی در
curses.panelهنگامی که نهاییساز اشارهگر کاربر یک پنل در حال تخصیصزدایی پنل اجرا میشود. پنل اکنون پیش از آزاد شدن اشارهگر کاربر از پشتهی پنل خارج میشود.gh-156920: رفع مشکل
asyncioدر ویندوز: بستن یکDatagramTransportتحتProactorEventLoopدر حالی که دادههای نگارشی (datagram) همچنان در صف بودند، یا در حالی که یک عملیات نوشتن در حال انجام درست هنگام خالی شدن بافر توسطclose()با شکست مواجه شد، میتوانست دادههای درون صف را معلق نگه دارد و هرگز تابعconnection_lost()را فراخوانی نکند و در نتیجه بستن اتصال را بهطور نامحدود معلق نگه دارد.gh-156810: رفع یک فروپاشی با خطای
UnicodeEncodeErrorدر صادرات پشتهی فشردهشدهی پروفایلگیر نمونهبرداری (--collapsed) هنگامی که نام تابع یا نام پروندهی یک فریم نمونهبرداریشده حاوی کاراکترهای غیر اسکی (non-ASCII) یا نویسههای جایگزینگریز (surrogate-escaped) باشد. پروندهی خروجی اکنون به صورت UTF-8 نوشته میشود.gh-156797: رفع کلاس
xml.sax.saxutils.XMLGenerator: شناسه URI فضای نام اکنون در اعلامیهی فضای نام به صورت ایمنسازیشده (escaped) درمیآید. پیشتر URI حاوی نویسههای&،<یا علامت نقلقول، سندی را تولید میکرد که قابل تجزیه (parse) نبود.gh-83895: ماژول
xml.etree.ElementTreeاکنون در پیادهسازی C ورودیهای بزرگتر از ۲ گیگابایت را میپذیرد. دادهها به جای ایجاد خطایOverflowError، همانند کاری کهxml.parsers.expatاز پیش انجام میداد، به شکل تکهتکه به Expat فرستاده میشوند.gh-99064: رفع
xml.etree.ElementTree.parse()با یک پرونده متنی یا منبع دیگری از دادههایstrدر پیادهسازی C. کدگذاری اعلامشده در سند روی متن از پیش کدگشاییشده اعمال شد که منجر به متن بههمریخته (mojibake) شد. اکنون از آن صرفنظر میشود، درست مانند زمان تجزیه باXMLParser.feed()یاfromstring().gh-156713: رفع توابع
nturl2path.pathname2url()وnturl2path.url2pathname(): کدگذاری سامانه فایلبندی و هندلر خطا اکنون برای رمزگذاری درصدی (percent-encoding) و رمزگشایی استفاده میشوند، درست مانندurllib.request. پیشتر مسیرهای حاوی نویسههای جایگزین (surrogate) خطایUnicodeEncodeErrorایجاد میکردند.gh-156698: رفع انتقالدهندههای (transports) UDP در
asyncio.ProactorEventLoopبه طوری که خطای نوشتن دیگر یک پروتکل متوقفشده را معلق نگه ندارد: حلقهی نوشتن اکنون زمانی که دادهای در بافر باقی مانده باشد دوباره زمانبندی میشود و هنگامی که بافر تخلیه شد پروتکل از سر گرفته میشود.gh-156658: ماژولهای
xml.domوxml.etree.ElementTreeدیگر نویسههایی را که در XML فضای خالی نیستند (مانند U+00A0) به عنوان فضای خالی در نظر نمیگیرند. پیشتر ممکن بود آنها درindent()،canonicalize()باstrip_text=Trueو هنگام تجزیه با ویژگیwhitespace-in-element-contentغیرفعال، از دست بروند.gh-156568: تابع
zipapp.create_archive()اکنون هنگام کپی کردن یک zipapp که در آن هدف یک شیء شبهمسیر است، بیت قابلاجرا را به درستی روی آرشیو هدف تنظیم میکند.gh-156545: رفع صادرات نمودار شعلهای (flamegraph) پروفایلگیر نمونهبرداری به طوری که پروفایلگیری یک برنامهی بازگشتی عمیق دیگر با
RecursionErrorشکست نخورد و به جای آن نمودار شعلهای تولید کند. وصله از tonghuaroot.gh-156476: پیادهسازی خالص پایتونی متد
queue.SimpleQueue.get()اکنون وقتی block نادرست (false) است، timeout را نادیده میگیرد که با رفتار مستندشده و پیادهسازی C مطابقت دارد. این متد پیشترValueErrorایجاد میکرد.gh-156444: رفع تطبیق یک مجموعهنویسهی نفیشده (negated character set) در یک الگوی بایت کامپایلشده با هر دو پرچم
re.IGNORECASEوre.LOCALE. بستار بزرگ و کوچک (case closure) اکنون روی اعضای مجموعه اعمال میشود، به طوری که[^bc]دیگر باb'B'مطابقت پیدا نکند.gh-156180:
zlib.adler32_combine()وzlib.crc32_combine()اکنون اگر آرگومان len2 منفی باشد، به جای بازگرداندن مقادیر نامعتبر یا معلق ماندن نامحدود، استثنایValueErrorرا ایجاد میکنند.gh-156166:
ssl: اختصاص دادن ناموفق یا حذف ویژگی_msg_callbackدرssl.SSLContextدیگر فراخوانی بازگشتی (callback) فعلی را حذف نمیکند. حذف کردن آن اکنون به جایTypeError، خطایAttributeErrorرا پرتاب میکند.gh-156173: فراخوانی متد
zlib.Decompress.flush()روی دادههای فشردهنشدهی نامعتبر اکنون به جای نادیده گرفته شدن بیصدا، یک استثنایzlib.errorپرتاب میکند.gh-152817:
sqlite3: عدم اجازه برای حذف ویژگیrow_factoryیک نشانگر (cursor) به منظور جلوگیری از فروپاشی (crash) در یک پرسوجو.gh-156124: رفع یک فروپاشی در ساخت نخآزاد (free-threaded build) هنگام حذف ویژگی
contentsیک اشارهگرctypes.gh-156101: رفع مشکلی که در آن
sqlite3.Cursor.arraysizeاگر مقدار انتسابی خیلی بزرگ باشد، روی صفر تنظیم میشد. اگر انتساب ناموفق باشد، ویژگی اکنون بدون تغییر باقی میماند.gh-156100: رفع فروپاشیها در
sqlite3.Connectionهنگام حذف ویژگیautocommitیا اختصاص دادن مقداری عدد صحیح به آن که در long زبان C جا نمیشود. هر دو مورد اکنون یک استثنا پرتاب میکنند.gh-156099: رفع یک فروپاشی هنگام حذف ویژگی
keylog_filenameازssl.SSLContext. اکنون استثنایAttributeErrorرا ایجاد میکند.gh-156067: رفع مدیریت خطا در ماژول شتابدهندهی
zoneinfoهنگامی که یک اندیس گذار-1است یا متد__bool__یک رشتهی TZ خطا پرتاب میکند.gh-155997: رفع تابع
concurrent.interpreters.list_all(). این تابع در صورتی که یک مفسر در طول فراخوانی از بین میرفت (بهویژه توسط زبالهروبی که شیء دارندهی آخرین ارجاع به آن را نهاییسازی میکرد)، با شکست مواجه میشد.gh-155941: رفع تابع
asyncio.start_server()هنگامی که یک client_connected_cb تابع ساده خطا پرتاب میکند: خطا اکنون مانند حالت همروال (coroutine) گزارش میشود و انتقال (transport) بسته میشود، به جای اینکه اتصال برای همیشه باز بماند (که همچنین باعث میشدasyncio.Server.wait_closed()معلق بماند).gh-155843:
hmac: اطمینان حاصل کنید که اشیاء HMAC به درستی مقداردهی اولیه میشوند تا از فروپاشیهای نادر در زمان شکستهای تخصیص حافظه جلوگیری شود. وصله (patch) توسط Bénédikt Tran.gh-155835:
hashlib: رفع رقابتهای دادهای (data races) هنگام دسترسی بهdigest_sizeوblock_sizeروی اشیاء SHA-3. وصله توسط Bénédikt Tran.gh-155830:
_blake2: اطمینان حاصل کنید که اشیای BLAKE-2 قبل از اینکه توسط زبالهروب ردیابی شوند، بهدرستی مقداردهی اولیه میشوند. پچ توسط Bénédikt Tran.gh-155782:
ssl: جلوگیری از فروپاشی درgroup()برای اشیای بدون نشست در OpenSSL نسخه ۳.۲ و پس از آن. پچ توسط Bénédikt Tran.gh-155811: افزودن یک شمارندهی دنباله به آمارهای زبالهروب (GC) برای جلوگیری از بازگرداندن تصاویر لحظهای (snapshots) ناسازگار توسط
_remote_debuggingکه ناشی از خواندنهای غیراتمی است. وصله توسط Maurycy Pawłowski-Wieroński.gh-155717: روش (method) پیشفرض شروع در
multiprocessingهنگامی که پوشهی موقت قابل نوشتنی وجود ندارد (مانند یک سامانهی فایلبندی فقطخواندنی)، اکنون به جای"forkserver"برابر با "spawn" است. پیش از این، شروع یک فرایند در آنجا با یک خطایOSErrorبا شکست مواجه میشد. وصله توسط Bénédikt Tran.gh-155775: رفع یک رگرسیون در
imaplibکه در اصلاح مربوط به gh-63121 معرفی شده بود: تازهسازی قابلیتها پس از یکlogin()یاauthenticate()موفق، پاسخCAPABILITYرا مصرف میکرد، بنابراین دیگر نمیشد آن را باresponse()خواند.gh-113318: رفع فروپاشیها هنگام حذف ویژگیای که setter آن توسط Argument Clinic تولید شده و برای حذف آماده نشده است؛ از جمله
frame.f_trace_opcodesو ویژگیهایcontext،ownerوsessionمربوط به_ssl._SSLSocket. حذف چنین ویژگیای اکنون خطایAttributeErrorرا ایجاد میکند.gh-150449: رفع اسلایسهای
sqlite3.Blobبا یک گام منفی. خواندن یا نوشتن چنین اسلایسی استثنایSystemErrorرا ایجاد میکرد. اکنون استثنایValueErrorرا ایجاد میکند.gh-155336: رفع مدیریت خطا در
socket.gethostbyaddr()وsocket.gethostbyname_ex()هنگامی که تفکیک نام میزبان (hostname resolution) با شکست مواجه میشود.gh-155426: اطمینان حاصل کنید که جایگزین پایتون خالص
hmac.digest()کلیدهایی را که نهbytesو نهbytearrayهستند، رد میکند. پیشتر، بهجایTypeError، یک خطایAttributeErrorبالا آورده میشد. پچ توسط Bénédikt Tran.gh-102475: رفع تابع
os.path.realpath()در ویندوز: بخش حلنشدهی مسیر اکنون الحاق (append) میشود نه ترکیب (join)، بنابراین نام پروندهای که شبیه به یک درایو است (مانندspam:eggs) دیگر بخش حلشده را دور نمیاندازد. یک مسیر نسبی نسبت به درایو دیگر اکنون در برابر پوشهی ریشهی آن درایو حل میشود.gh-89760: رفع تابع
os.path.realpath()در ویندوز: پیشوند\\?\دیگر از مسیر GUID یک حجم (volume) حذف نمیشود، مشکلی که باعث نامعتبر شدن نتیجه میشد.gh-84419: رفع
os.stat()در ویندوز: نقاط و فضاهای خالی پایانی، که توسط سیستمعامل نادیده گرفته میشوند، دیگر هنگام حدس زدن دسترسیهای اجرا از روی پسوند پرونده در نظر گرفته نمیشوند.gh-155319: تابع
warnings.warn_explicit()اکنون خط منبع گرفته شده از بارگذار (loader) ماژولی را نمایش میدهد که متغیرهای سراسری آن به عنوان module_globals ارسال شدهاند. همچنین اگر lineno خارج از محدودهی منبع ماژول باشد، دیگر خطایIndexErrorپرتاب نمیکند.gh-123011: تابع
warnings.warn_explicit()هنگامی که با متغیرهای سراسری ماژول__main__فراخوانی میشود، دیگر یک اخطار کاذبDeprecationWarningصادر نمیکند و خطایImportErrorپرتاب نمیکند.gh-69370: دستور python -m inspect --details اگر مسیر ماژول حاوی کاراکترهایی باشد که در کدگذاری
sys.stdoutقابل کدگذاری نیستند، دیگر با خطایUnicodeEncodeErrorمتوقف نمیشود. اینگونه کاراکترها اکنون با بکاسلشها گریز (escape) داده میشوند.gh-69371: رفع
pydocبرای ماژولهایی که مسیرشان حاوی بایتهای غیرقابل کدگشایی است. تابعpydoc.writedoc()و سرور HTTP مربوط به pydoc دیگر با خطایUnicodeEncodeErrorمتوقف نمیشوند: نشانیوب (URL) پرونده اکنون با استفاده از کدگذاری سامانهی فایلبندی به درصد کدگذاری میشود و کاراکترهای غیرقابل کدگذاری در صفحهی HTML تولیدشده با بکاسلشها گریز داده میشوند.gh-154855: رفع مشکل برگرداندن تعداد نویسههای بسیار کمتر توسط
curses.window.instr()هنگامی که ماژولcursesدر برابر کتابخانهای از curses ساخته شده است که پایانه را در طول درخواستشده میشمارد، مانند نسخهی NetBSD.gh-154594: رفع
copy.deepcopy()به طوری که شیئی که کپی عمیق آنNoneاست، همچنان یادداشتسازی (memoized) شود. وصله توسط tonghuaroot.gh-154523: رفع رقابت دادهای (data-race) هنگام فراخوانی
io.TextIOBase.detach()در ساخت نخآزاد.gh-135683: کلاسهای
logging.FileHandlerوlogging.handlers.WatchedFileHandlerاکنون بهlogging.raiseExceptionsبرای خطاهایی که هنگام باز کردن پرونده رخ میدهند، مانند سایر خطاها در حین گزارشگیری، احترام میگذارند.gh-82535: کلاس
logging.handlers.SysLogHandlerدیگر در صورتی که نتوان نشانی را هنگام ایجاد هندلر حلوفصل (resolve) کرد، با خطا مواجه نمیشود. نشانی دوباره هنگام انتشار یک رکورد حلوفصل میشود.gh-153970: فراخوانی
str()روی یکsubprocess.CalledProcessErrorزمانی که ویژگیreturncodeآن یک عدد صحیح نیست، مانندNone، دیگر استثنایTypeErrorرا ایجاد نمیکند.gh-154194: رفع مشکل پروفایلگیر نمونهبرداری که هنگام شکست یک خواندن غیرمهلک، تمام نمونهها را رها میکرد؛ قابها اکنون هر فرادادهی قابلخواندنی را حفظ میکنند و نامهای طولانی تابع و پرونده بهجای آن کوتاه میشوند. وصله توسط Maurycy Pawłowski-Wieroński.
gh-153005: متدهای
concurrent.interpreters.Queue.get()وconcurrent.interpreters.Queue.put()اکنون مهلتtimeoutخود را ازtime.monotonic()بهجای ساعت دیواری (wall clock) محاسبه میکنند، بنابراین تنظیم ساعت سیستم در طول فراخوانی دیگر باعث انتظار بیش از حد یا کمتر از حد آنهاچ نمیشود.gh-154062: توقف نرمالسازی خطوط مبنای نمودار شعلهای تفاضلی (differential flamegraph) به مدت زمان پروفایل فعلی.
gh-81241: رفع
OSErrorهنگام ایمپورت کردنctypesاز یک مفسر پیوند خوردهی ایستا (statically linked).gh-153838: پرش از پروندههای غیرعادی در صادرکنندهی نقشهی حرارتی
profiling.samplingبهجای خواندن آنها بدون قید و شرط. وصله توسط tonghuaroot.gh-141276: رفع پیامهای تکراری
SyntaxWarningهنگام ایمپورت کردن ماژولهای منبع از آرشیوهای ZIP. متدzipimport.zipimporter.get_filename()و در نتیجهfind_spec()، دیگر ماژولهای منبع را کامپایل نمیکنند. خطایSyntaxErrorدر یک ماژول منبع فشردهشده اکنون هنگام اجرای ماژول بالا آورده میشود نه هنگام یافتن آن، که با رفتار بارگذارهای مبتنی بر سامانه فایلبندی مطابقت دارد.gh-153603: رفع فروپاشی در رمزگشاهای ISO-2022 هنگام رمزگشایی یک بایت پس از تنظیم تعیین مجموعهنویسههای ناشناخته از طریق متد
setstateرمزگشا. وصله توسط tonghuaroot.gh-153539: رفع یک فروپاشی در پیادهسازی C متد
io.TextIOWrapper.tell()زمانی که متدgetstateرمزگشا یک جستجوی بازورودپذیر (reentrant) را فعال میکند، یا وقتی رشتهی (thread) دیگری همزمان همان جریان را مکانیابی میکند. این وصله (patch) توسط tonghuaroot ارائه شده است.gh-152754: رفع یک فروپاشی هنگامی که همان پیمایشگر
os.scandir()به صورت همزمان از چندین نخ استفاده میشود. این متد دیگر دستهی پوشه را در حالی که نخ دیگری در حال خواندن از آن است آزاد نمیکند. اشتراکگذاری یک پیمایشگر بین نخها همچنان مشمول شرایط رقابتی است: مشخص نیست که هر نخ چه ورودیهایی را دریافت میکند.gh-153364: ساخت پیمایش قاب، همروال (coroutine) و انتظارساز وظیفه به صورت تکرارشونده و کراندار، و جلوگیری از توقفهای احتمالی و سرریزهای پشته. رفع بررسی وظیفهی asyncio هنگامی که مجموعههای منتظرمانده شامل ورودیهای حذفشده هستند. وصله توسط Maurycy Pawłowski-Wieroński.
gh-149816:
hashlib: رفع فروپاشی ناشی از شرایط رقابت هنگام جستجوی یک الگوریتم هش OpenSSL بر اساس نام برای نخستین بار. پچ توسط Bénédikt Tran.gh-151292: رفع مشکل
profiling.sampling --binaryکه پروندههای پروفایل غیرقابل خواندنی را باقی میگذاشت وقتی که قالب دودویی به حدکثر اندازه میرسید. حفظ نمونههای جمعآوریشده زمانی که نویسنده همچنان میتواند با ایمنی نهاییسازی کند. وصله توسط Maurycy Pawłowski-Wieroński.gh-152721: رفع زمان بازپخش درجهدوم در خواننده دودویی
profiling.samplingهنگامی که نمونههای کدگذاری شده با طول اجرای یک پروفایل، وضعیت نخ را متناوب میکنند.gh-151126: رفع فروپاشی ناشی از تنظیمنشدن
MemoryErrorهنگام شکست در تخصیص حافظه، در زمان ارسال نمونههایctypes.Structureیاctypes.Unionبهصورت مقدار (by value) به توابع خارجی ctypes.gh-152692: رفع بازگردانی رشتهای مانند
None.list.appendتوسطannotationlib.type_repr()برای متدهای توکار کراندار که ویژگی__module__آنها برابر باNoneاست. این تابع اکنون نام کامل را برمیگرداند، همانطور که از پیش برای سایر موارد توکار انجام میداد.gh-152490: رفع خطای
TypeErrorهنگام قالببندی یکSyntaxErrorکه باNotImplementedبه عنوان آرگومان آن بالا آورده شده است، که باعث خروج غیرمنتظره از REPL و راهاندازی مجدد پوستهی IDLE شد.gh-152373: رفع مشکل دستور
untilدرpdbکه وقتی نقطهی ایست (breakpoint) روی یک درک فهرستی (list comprehension) تنظیم شده بود، از روی آن رد نمیشد. وصله توسط tonghuaroot.gh-152204: رفع پذیرش بیصدای برخی رشتههای معیوب ISO 8601، مانند ارقام غیر ASCII یا وجود علامت در یک فیلد با عرض ثابت (برای نمونه
'2020+12'یا'20201212T0102٣٤') توسط پیادهسازیهای خالص پایتون متدهایdatetime.date.fromisoformat()،datetime.time.fromisoformat()وdatetime.datetime.fromisoformat(). اکنون هر فیلد، مطابق با پیادهسازی C، باید دقیقاً شامل N رقم ASCII باشد.gh-133998: رفع مشکل
tarfile.open()در حالت نوشتن جریانی (w|gz) که هنگام دریافت یک mtime خارج از محدوده فیلد زمانسنج ۳۲ بیتی سرآیند gzip، خطایstruct.errorرا ایجاد میکند. مقادیر خارج از محدوده اکنون به عنوان0ذخیره میشوند، که باgzipمطابقت دارد.gh-117807: رفع مقداردهی اولیهی
mimetypesاز پروندههای نگاشت MIME حاوی بایتهای نامعتبر UTF-8.gh-143008: اصلاح شرایط رقابت هنگام مقداردهی اولیهی مجدد یک شیء
io.TextIOWrapper.gh-145856: رفع
plistlib.dumps()وplistlib.dump()بهگونهای کهskipkeys=Trueهمراه باsort_keys=Trueبهدرستی کلیدهای غیررشتهای را هنگامی که دیکشنری شامل ترکیبی از کلیدهای رشتهای و غیررشتهای است، حذف کند. پیشتر مرتبسازی پیش از فیلتر اجرا میشد و خطایTypeErrorرا ایجاد میکرد.gh-143376:
concurrent.interpreters: رفع یک فروپاشی (crash) هنگامی که انتهای کانالهای بین مفسری داخلی شناسههای کانال نادرستی دارند. وصله توسط Bénédikt Tran.gh-146065: رفع یک فروپاشی (crash) در پیمایشگر (iterator) کلاس asyncio.Future هنگامی که تابع send() پس از throw() یا close() فراخوانی میشود.
gh-143008: رفع فروپاشی در
io.TextIOWrapperهنگامی که متد بازورودپذیرio.TextIOBase.detach()به شکل بازورودپذیر از بافر زیرین فراخوانی میشود.gh-129605: بهبود مدیریت استثنا (exception) هنگام محاسبهی پیشنهادها در traceback.py. این کار باگی را برطرف میکند که میتواند باعث خروج غیرمنتظرهی PyREPL شود.
gh-102967: یک باگ در
doctest._SpoofOut.truncate()باعث میشد وقتی هیچ اندازهای داده نشده بود، مقدار None بهStringIO.seek()ارسال شود. یک اصلاح ساده، فراخوانی مکانیابی را زمانی که هیچ اندازهای مشخص نشده است نادیده میگیرد تا بافر بتواند از موقعیت فعلی برش داده شود.gh-82039: متد
http.cookiejar.FileCookieJar.load()اکنون نخستین سطر امضای قالب را به شکل نسبت به بزرگی و کوچکی حروف بیتفاوت (case-insensitive) بررسی میکند. وصله توسط Ashley Harvey.gh-70758: ایجاد یک صفحهی نمایش جدید برای
turtleپس از بسته شدن صفحهی قبلی، دیگر روی نخستین فرمان لاکپشت خطایturtle.Terminatorرا پرتاب نمیکند.bpo-44012: ویژگی
explodedازipaddress.IPv6Addressوipaddress.IPv6Interfaceاکنون از آدرسهایی با شناسه محدوده (آدرسهای محلی-لینک) پشتیبانی میکند. پیشتر مورد اول استثنایAddressValueErrorرا پرتاب میکرد و مورد دوم شناسه محدوده را نادیده میگرفت.gh-83869: رفع مشکل خواندن بایگانی توسط
tarfileکه دارای عضو پراکندهی GNU نسخهی ۱.۰ بود و اندازهی آن در سرآیند توسعهیافتهی pax تنظیم شده بود. آفست سرآیند بعدی از روی آفست دادهها (که از قبل از نگاشت پراکنده عبور کرده است) و از روی اندازهی عضو (که میتواند اندازهی ظاهری پروندهی پراکنده باشد) محاسبه میشد. همهی اعضای بعدی غیرقابلدسترس میشدند.gh-61366: کلاس
http.cookiejar.MozillaCookieJarاکنون کوکیهای نشستی نوشتهشده توسط curl و Wget را که از0در فیلد زمان انقضا استفاده میکنند، میخواند. مشارکتکننده Jérémie Detrey.
مستندات¶
gh-142083: کد نوع
'w'در رشتهمستندarray.arrayمستندسازی شد، بهطوریکه همان کدهای نوع را مانندarray.typecodesو مستندات ماژولarrayفهرست میکند.gh-107689: اضافه کردن رشتههای مستند (docstrings) به ctypes انتزاعی.
آزمونها¶
gh-159293: حد بازگشتی پس از آزمون رقابت حد بازگشتی نخبندی آزاد بازیابی میشود تا از بروز خطا در آزمونهای بعدی که در همان فرایند اجرا میشوند، جلوگیری شود.
gh-159211: بستر آزمون iOS دیگر هنگامی که اجرای یک آزمون با شکست مواجه میشود، عیبیابیهای شبیهساز را جمعآوری نمیکند.
gh-157628: در regrtest، تنها زمانی یک آزمون را دارای نشتی در نظر بگیرید که تمام اجراهای آزمون حداقل یک توصیفگر پرونده را نشت دهند. برای مثال، به جای گزارش دادن نشتی، از دلتاهای «[0, 1, -1] file descriptors, sum=0» صرفنظر کنید. وصله توسط Victor Stinner.
gh-140550: فعالسازی آزمونهای محدود رابط برمجهنویسی (API) C روی نخبندی آزاد در test_cext و test_cppext: آزمون ماکروی
Py_TARGET_ABI3T. وصله توسط Victor Stinner.gh-75876: آزمونی که با
bigmemtest()تزئین شده است، اکنون اگر واقعاً حافظهای را که درخواست میکند تخصیص دهد (یعنی اگر از گزینهی-Mاستفاده شود)، در یک زیرفرایند اجرا میشود تا حافظهای که استفاده میکند و فضای آدرسی که قطعهقطعه کرده است، پس از پایان آزاد شوند. یک اجرای آزمایشی (dummy) در همان فرایند باقی میماند. دیگر نیازی به فرایند مجزای دیدهبان حافظه نیست: فرایند والد میزان مصرف حافظه توسط زیرفرایند را زیر نظر دارد.gh-155411: رفع مشکل
test.support.subTests()برای متدهای آزمون ناهمگام. آنها در یک تابع همگام پیچیده شده بودند که همروال (coroutine) را بدون انتظار کشیدن برای آن دور میانداخت، بنابراین آزمون بهصورت بیصدا اصلاً اجرا نمیشد.gh-132581: فهرست آزمونهایی که محیط اجرایی را تغییر داده بودند، اکنون شامل دلایلی است که به خاطر آنها محیط تغییریافته در نظر گرفته شده است، برای مثال یک استثنای غیرقابلپرتاب یا یک
sys.pathاصلاحشده. نتیجهی نهایی دیگر همان وضعیت را دو بار تکرار نمیکند (مانندENV CHANGED then ENV CHANGED).gh-155109: اضافه کردن
test.support.run_with_limited_c_stack()و استفاده از آن در آزمونهایی که پشتهی C را با تعداد مشخصی از فراخوانهای بازگشتی تمام میکنند، بهطوریکه نتیجهی آنها دیگر به اندازهی پشتهی C وابسته نباشد.
ساخت¶
gh-143632: رفع بررسیای که
PR_SET_VMA_ANON_NAMEرا روی musl libc غیرفعال میکند: این بررسی یک متغیر (variable) مقداردهینشده را آزمایش میکرد، بنابراین هرگز تأثیری نداشت و ساخت (build) ممکن بود با خطای بازتعریفstruct prctl_mm_mapبا شکست مواجه شود.gh-159759: رفع مسیر
libpython.staticدر PEP 739build-details.json، که به پروندهای اشاره میکرد که هنگام ساخت با--enable-sharedنصب نمیشود، و دیگر کتابخانهی ایستا را برای ساختهای چارچوب (framework) که چنین چیزی را نصب نمیکنند، فهرست نمیکند.gh-159440: رشتهی نسخهی گزارششده توسط
sys.versionهنگامی که CPython خارج از درخت (out-of-tree) از یک نسخهی پاک git ساخته میشود، دیگر پسوند ساختگی-dirtyرا ندارد: برچسب ساخت اکنون بهجای پوشهی ساخت، درخت منبع را بررسی میکند.gh-158683: اصلاح ورودی
Modules/Setupبرای ماژول_zstdبا افزودن پروندههای منبع مفقود.gh-157142: رفع پیوند
Programs/_freeze_moduleهنگامی که ماژولهای توسعهای به صورت توکار ساخته شدهاند (MODULE_BUILDTYPE=static) و ماژولهای آزمون فعال هستند:Modules/getpath_noop.cاکنون_Py_Get_Getpath_CodeObject()را تعریف میکند که_testinternalcapiاز آن استفاده میکند.gh-155911: رفع تشخیص curses هنگامی که یک کتابخانهی curses از پیش در
LIBSوجود دارد. وصله توسط Shamil Abdulaev.
Windows¶
gh-159880: رفع نشتی دستهی کلید (key handle) در
winreg.CreateKey()،winreg.CreateKeyEx()وwinreg.OpenKey()هنگامی که قلاب حسابرسی (audit hook)winreg.OpenKey/resultبا خطا مواجه میشود.gh-157906: اصلاح بررسی نادرست ماکروی معماری که مانع از پیشبارگذاری پردازنده (CPU prefetching) در جمعآور زبالهی نخآزاد روی نسخههای ۳۲ بیتی ویندوز میشد.
gh-157789: استفاده از گزینهی کامپایلر
-Ogدر صورت ساختهای رفع اشکال clang-cl روی ویندوز برای کاهش استفاده از پشته. وصله توسط Chris Eibl.gh-72353: خواندن از کنسول روی ویندوز اکنون در صورتی که خواندن با Ctrl+C لغو شده باشد ادامه مییابد، اما گرداننده (handler)
SIGINTاستثنایی پرتاب نکرد. پیشتر خواندن گویی در انتهای پرونده به پایان میرسید.gh-86427: اصلاح کدگذاری جریانهای استاندارد در حالت stdio قدیمی ویندوز (
PYTHONLEGACYWINDOWSSTDIO). این حالت اکنون صفحهکد کنسول است، درست مانند پایتون ۳.۷، نه صفحهکد ANSI.gh-87587:
os.device_encoding()در ویندوز اکنون کدپیج هر توصیفگر پروندهی کنسولی را برمیگرداند، نه فقط ۰، ۱ و ۲، و برای سایر دستگاههای نویسهای مانندNULمقدارNoneرا برمیگرداند. کدپیج UTF-8 اکنون بهجای"cp65001"به شکل"utf-8"گزارش میشود.
مکاواس¶
gh-159739: انتقال دادن (propagate) خطاهایی که هنگام تبدیل تنظیمات پراکسی (proxy) سیستم macOS رخ میدهند.
IDLE¶
gh-159517: رفع مشکل فهرست (list) تکمیل و راهنمای فراخوانی که تمرکز (focus) را در macOS با Tcl/Tk 9.1 میدزدند.
gh-56596: کاری کنید که میانبرهای صفحهکلید IDLE با حروف اسکی، هنگامی که Caps Lock روشن است کار کنند، حتی اگر تنها یکی از نسخههای حروف بزرگ یا کوچک تعریف شده باشد.
gh-64007: محیط IDLE دیگر رنگبندی سینتکس را روی متن واردشده برای
input()در پوسته اعمال نمیکند.gh-85560: رفع عدم توانایی IDLE در یافتن پرانتز بازکننده زمانی که یک سطر ادامهدار درون پرانتزها با کلمهی کلیدی
elseاز یک عبارت شرطی یا باyieldآغاز میشود.gh-75487: رفع ذخیرهسازی یک عدد ناقص هنگامی که یک ورودی اعداد صحیح در کادر محاورهای تنظیمات IDLE با کلید Backspace پاک میشود.
gh-74112: کلید ترکیبی Ctrl-C در پوستهی IDLE اکنون فراخوانیهای مسدودکننده (blocking) مانند
time.sleep()وsocket.recvرا متوقف میکند.gh-151471: رنگی کردن کلیدواژهی نرم
typeدر IDLE.gh-103089: دیگر هنگام گشودن پروندهای با سطرهای بسیار طولانی، IDLE متوقف (hang) نمیشود. تنها ۲۰۰۰ نویسهی نخست هر سطر رنگی میشوند.
gh-70331: هنگامی که پوشهی جاری حاوی پروندههایی با نامی مشابه ماژولهای کتابخانهی استاندارد که IDLE آنها را ایمپورت میکند (مانند
random.pyیاtkinter.py)، IDLE با دستورpython -m idlelibبا خطا در راهاندازی مواجه نمیشود و فرایند کاربر آن نیز با خطا در راهاندازی روبهرو نمیگردد.gh-93016: رفع مشکل تحلیل (parsing) آرگومانهای خط فرمان در محاورهی «Run... Customized» در IDLE روی ویندوز: بکاسلشها دیگر به عنوان نویسههای گریز (escape characters) در نظر گرفته نمیشوند. همچنین نمایش آرگومانهای پیشین در این محاوره اصلاح شد.
gh-69365: محاورههای جستجوی IDLE اکنون خطای عبارت باقاعده را به جای کادر پیام، در پایین محل ورود متن نمایش میدهند.
gh-105689: رفع مشکل راهنمای تماس (calltips)، تطبیق پرانتزها و تورفتگی خودکار در پوستهی (Shell) IDLE پس از خروجی حاوی نقلقولها یا پرانتزهای متوازننشده.
gh-60402: در IDLE، فشردن کلید Tab در رشتهای که ابتدای نام یک پرونده نیست، به جای باز کردن فهرست تکمیل، یک نویسهی تب درج میکند.
gh-68453: رفع مشکل اجرای IDLE با سوئیچ -s همراه با -c، -r یا -: فرمان یا اسکریپت اکنون پس از پروندهی راهاندازی، بدون کادر خطای و بدون راهاندازی مجدد پوسته اجرا میشود.
gh-69919: IDLE اکنون به جای متوقف کردن پوسته، هر گونه استثنای ایجادشده توسط کامپایل کردن سورس، مانند
MemoryErrorبرای سورسهای با تورفتگی بیش از حد عمیق را گزارش میدهد.gh-91398: حذف حاشیهی پیرامون نوار کناری پوستهی IDLE که با رنگ پسزمینهی پنجره رسم میشد و در تمهای تاریک خودنمایی میکرد.
gh-71136: رفع مشکل توقف (hang) پوستهی IDLE هنگامی که کدهای در حال اجرا تحت دیباگر استثنای
KeyboardInterruptرا ایجاد میکنند.gh-154511: یکپارچهسازی مدیریت چرخ ماوس IDLE در
idlelib.util. تابعwheel_eventازidlelib.treeبه آنجا منتقل شده و بهx11_buttons(که مشخص میکند آیا Tk چرخشهای چرخ ماوس را به عنوان رویدادهای<Button-4>/<Button-5>به ابزارک گزارش میدهد یا خیر) وbind_wheel(که هر رویدادی را که Tk بفرستد مقید میکند) میپیوندد.gh-156896: جلوگیری از حذف زیرماژولهای tkinter هنگام ایمپورت شدن idlelib.run.
gh-153480: رفع مشکل عدم راهاندازی IDLE هنگام باز کردن پروندهای که هنوز وجود ندارد. رفع یک ردگیری (traceback) هنگامی که پروندهای باز در ویرایشگر IDLE توسط برنامهی دیگری حذف میشود؛ IDLE اکنون میپرسد که آیا پنجره بسته شود، پرونده در جای دیگری ذخیره شود یا نادیده گرفته شود.
gh-66172: IDLE دیگر هنگام خراب بودن پروندهی پیکربندی کاربر، در راهاندازی شکست نمیخورد. پروندهی قابلتحلیلنشده با پسوند ".bad" تغییر نام مییابد، تنظیمات پیشفرض به جای آن استفاده میشوند و فهرستی از پروندههای آسیبدیده در قالب یک هشدار نمایش داده میشود.
gh-90304: جلوگیری از خطای راهاندازی IDLE زمانی که یک فونت عرض صفر را برای نویسهی
'0'گزارش میکند. چنین فونت معیوبی باعث بروز خطایZeroDivisionErrorمیشد؛ ویرایشگر اکنون به عرض پیکربندیشده بازمیگردد.gh-135511: رفع مشکل نمایش
NameErrorوAttributeErrorبا پیامهای چندسطری.
Tools/Demos¶
gh-158451:
python-gdb.pyاکنون قادر است یک رشتهی یونیکد نامعتبر را قالببندی کند: نویسههای نامعتبر را به صورت\Uhhhhhhhhبه جای ایجاد استثنا رندر کند. وصله توسط Victor Stinner.gh-156219: رفع خطای Argument Clinic در تولید کدی که یک آرگومان جایگاهی اختیاری را که ارسال نشده بود میخواند، اگر تابع دارای یک پارامتر
**kwdsباشد.gh-113318: رفع مشکل کلینیک آرگومان (Argument Clinic) برای
@getterو@setterدر یک بلوک شرطی پیشپردازنده. این ابزار با خطای داخلی مواجه میشد. کلینیک آرگومان اکنون همچنین دسترسیدهندههای (accessors) همان ویژگی با نامهای پایهی C متفاوت و همچنین یک دسترسیدهنده که دو بار تعریف شده باشد را رد میکند؛ مواردی که پیشتر به صورت صامت ورودیهای نامعتبر یا تکراری ازPyGetSetDefتولید میکردند.gh-155218: رفع تولید پرچمهای گروههای اختیاری با ترتیب متفاوت توسط Argument Clinic در پلتفرمهای ۳۲ بیتی و ۶۴ بیتی.
gh-155207: ابزار Argument Clinic اکنون از گزینههای
--dry-runو--diffپشتیبانی میکند. این گزینهها پروندههایی را که تغییر خواهند کرد فهرست میکنند، یا یک تفاوت (diff) یکپارچه از تغییرات را بدون تغییر دادن هیچ پروندهای در خروجی استاندارد مینویسند.gh-64502: رفع پشتیبانی Argument Clinic از پارامترهایی با یک مقدار پیشفرض که همراه با گروههای اختیاری استفاده میشوند. چنین پارامترهایی همیشه در کد تجزیهی تولیدشده الزامی بودند.
رابط C API¶
gh-159739: رفع یک فروپاشی (crash) در
_PyTuple_Resize()هنگام تغییر اندازه دادن یک چندتایی (tuple) غیرخالی به اندازهای منفی یا خیلی بزرگ. این تابع اکنون به ترتیبSystemErrorیاMemoryErrorرا بالا میآورد (raise میکند).gh-159739: تابع
PyInitConfig_SetStr()اکنون مقدار پیکربندیشدهی قبلی را آزاد میکند و اگر تبدیل مقدار جایگزین با شکست مواجه شود، آن را حفظ میکند.gh-159739: رفع نشتی ارجاع (reference) هنگامی که
_PyTuple_Resize()با شکست مواجه میشود.gh-149044: رفع ماکروی
PySlot_ENDبرای C++: مقداردهی اولیهی همهی اعضا برای جلوگیری از هشدارهای کامپایلر. وصله توسط ویکتور استینر (Victor Stinner).gh-158810: رفع ماکروی
Py_ARRAY_LENGTH()در C++: عدم استفاده از__builtin_types_compatible_p()در C++. اصلاحیه توسط ویکتور استینر (Victor Stinner).gh-158451: رفع خطای
_PyUnicodeWriter_WriteLatin1String()هنگامی که نوع بافر نویسنده UCS-2 یا UCS-4 است. اصلاحیه توسط ویکتور استینر (Victor Stinner).gh-157649: رفع ماکروهای
Py_CLEARوPy_SETREFدر C++: پیادهسازی آنها با استفاده ازautoبهجایdecltype(). استفاده ازdecltype()هنگام پاک کردن یا تنظیم یک آیتم آرایه، کد نامعتبری تولید میکرد. اصلاحیه توسط ویکتور استینر (Victor Stinner).gh-142217: افزودن آزمونها روی API زبان C مربوط به
_Py_Identifierکه مستند نشده و منسوخ است. اصلاحیه توسط ویکتور استینر (Victor Stinner).gh-157384: تابع
PyImport_CreateModuleFromInitfunc()اکنون زمینهی بسته را هنگام فراخوانی initfunc تنظیم میکند، به طوری که یک زیرماژول مقداردهی اولیهی تکفاز که فقط با آخرین جزء نامش ایجاد شده است، نام کامل را از مشخصات (spec) دریافت کند.gh-157242: رفع خطای
PyBytesWriter_Resize()برای مدیریت درست خطای تخصیص حافظه. نویسنده در صورت بروز خطا بدون تغییر باقی میماند، بهجای اینکه در یک حالت ناهمگن رها شود. اصلاحیه توسط ویکتور استینر (Victor Stinner).gh-156101: نتیجه را در صورت بروز خطا در
PyLong_AsInt32()،PyLong_AsUInt32()،PyLong_AsInt64()وPyLong_AsUInt64()تنظیم نکنید. در این حالت نتیجه را دستنخورده باقی بگذارید. وصله توسط Victor Stinner.
پایتون ۳.۱۵.۰ نهایی¶
Release date: 2026-10-09
هیچ تغییر جدیدی در نسخهی ۳.۱۵.۰ وجود ندارد.
نامزد انتشار ۳ نسخهی ۳.۱۵.۰ (Python 3.15.0 release candidate 3)¶
تاریخ انتشار: ۲۰۲۶-۱۰-۰۲
امنیت¶
gh-158446: رفع یک فروپاشی یا خروجی نادرست که ممکن بود هنگام قالببندی یک
floatیاcomplexبا دقتی نزدیک بهINT_MAXپلتفرم رخ دهد. تابعPyOS_double_to_string()اکنون برای هر دقتی در آن مقیاس، صرفنظر از نوع ارائه یا مقدار،ValueErrorایجاد میکند، درستهمانطور که پارسرهای رشتهی قالببندی از قبل برای دقتهای بالایINT_MAXانجام میدادند.gh-156793: ماژول
asyncio: متدهایloop.start_tls()وloop.create_connection()اکنون آرگومان server_hostname را اعتبارسنجی میکنند اگر یکssl.SSLContextدر حالی که check_hostname رویTrueتنظیم شده است، ارسال شود.gh-156793: متد
ssl.SSLContext.wrap_bio()اکنون آرگومانهای server_side، server_hostname و session خود را مشابهssl.SSLContext.wrap_socket()اعتبارسنجی میکند.بهویژه، یک زمینهی (context) فعال با
check_hostnameو بدون server_hostname ارسالشده بهwrap_bio()اکنون به جای تکمیل یک دستدهی (handshake) که زنجیرهی گواهی را بدون تأیید هویت همتاستی تأیید کرده بود، یک خطایValueErrorبالا میآورد، بدون هیچگونه نشانهای از اینکه بررسی رد شده است.gh-157265: در
tarfile، هنگامی که استخراج یک پیوند به استخراج یکی از اعضای آرشیو بازمیگردد، اگر تابع فیلتر وقتی با نام عضوی استخراجشده که با نام پیوند جایگزین شده است فراخوانی میشود مقدار None را برگرداند، آن عضو را نادیده بگیرید.gh-157953: بهروزرسانی libexpat بستهبندیشده به نسخهی ۲.۸.۵.
gh-157579: رفع یک حالت رقابت (race condition) در پاکسازی
tempfile.TemporaryDirectory. هنگام رفع خطاهای دسترسی به سیستم پرونده، پروندهها اکنون نسبت به توصیفگرهای پروندهی پوشهی باز حذف میشوند به جای اینکه مسیر آنها دوباره حل شود، بهطوریکه جایگزین کردن یک پوشه از درخت با یک پیوند نمادین دیگر نمیتواند باعث شود پاکسازی، پروندههای خارج از پوشهی موقت را حذف کند. این مسئله با CVE 2026-12345 برطرف میشود.gh-156293: رفع یک فروپاشی در
sslهنگامی که یکsni_callbackیک اتصال را بهSSLContextدیگری تغییر میدهد و زمینهای (context) که کالبک را حمل میکند دیگر توسط برنامه ارجاع داده نمیشود. سرورهایی که زمینهیsni_callbackخود را زنده نگه میدارند (حالت معمول هنگامی که سوکت شنود را پوشش میدهد یا روی شیء سرور ذخیره میشود) تحت تأثیر قرار نگرفتند. این مسئله با CVE 2026-19445 برطرف میشود.
هسته و توکارها (Core and Builtins)¶
gh-158140: حلوفصل زیرماژولهای خواهرِ ایمپورتشدهی تنبل بهطور مستقل، بهطوریکه دسترسی به یکی، دیگری را صرفاً به این دلیل که اعلام آن در آخر آمده است، ایمپورت نکند.
gh-158364: رفع فروپاشی هنگامی که
sys._current_frames()یاsys._current_exceptions()در حالی که مفسر دیگری در حال اجراست، فراخوانی میشود.gh-158254: پیمایشگرهای معکوس روی یک
dictو نماهای (views) آن اکنون مانند پیمایشگرهای رو به جلو، اگر کلیدهای دیکشنری در طول پیمایش تغییر کنند، به جای تولید ورودیها برای کلیدهای جدید، خطایRuntimeErrorایجاد میکنند.gh-157914: بازگردانی gh-146064. تغییر مرتبط PyMutex باعث افت عملکرد قابلتوجهی در برخی موارد شده بود.
gh-157838: ادغام تعداد ارجاعهای جانبی از طرف نخهایی که جدا شدهاند به جای منتظر ماندن برای اتصال مجدد آنها، در ساخت نخآزاد.
gh-157778: شمارهی سطر آکولاد بازشده را در
SyntaxErrorبرای یک فیلد جایگزینی افاسترینگ یا تیاسترینگِ بستهنشده، زمانی که یک نقلقول مطابق در سطری بعدی به عنوان شروع یک رشتهی پایاننیافته تفسیرشده است، لحاظ کنید.gh-157757: رفع مشکلی در خواندن تنبل
import a.b as cکه به جای ایمپورت کردن ماژولa.b، مقدارbرا ازaمیخواند. این دستور اکنون زیرماژول را مقید میکند و هنگامی که هیچ ماژولی پشت نام نباشد،ModuleNotFoundErrorرا بالا میآورد.gh-155695: نامهای حلشده اکنون به صورت سازگارتر از
sys.lazy_modulesحذف میشوند: ایمپورت تنبل یک ماژول ازپیشبارگذاریشده دیگر ثبت نمیشود، و مادیسازیlazy from pkg import attrاکنون دادهیpkg.attrرا دور میاندازد.gh-157378: رفع خطای
SyntaxError.offsetوSyntaxError.end_offsetبرای خطای «Non-UTF-8 code starting with ...» زمانی که یک نویسهی غیراسکی پیش از بایت نامعتبر در همان سطر قرار دارد. وصله توسط Shamil Abdulaev.gh-156762: رفع رفتار نامشخص در
operator.methodcaller: تابع جایگاهtp_clearآن به جایintمقدارvoidبرمیگرداند، بنابراین زبالهروب آن را از طریق یک نوع تابع ناسازگار فراخوانی میکرد. وصلهشده توسط Shamil Abdulaev.gh-157377: رفع تابع
gc.get_count()در ساخت نخآزاد که شمارنده تخصیص نخمحلیِ زمانبندیکنندهی زبالهروبی خودکار را بازنشانی میکرد. نخی که هنگام تخصیص آن را فراخوانی میکرد میتوانست مانع از جمعآوری زبالههای چرخشی شود.gh-157247: رفع خطای
sys.activate_stack_trampoline()که اجازه میداد در حین فعال بودن کامپایلر درجا (JIT) در مفسر اصلی، فعالسازی از یک زیرمفسر انجام شود.gh-156995: رفع اشتراکگذاری بافر
bytearrayبا شیءbytesتکبایتیِ دارای همان مقدار، بهطوری که نوشتن در bytearray آن شیءbytesرا تغییر میداد. این اتفاق باbytearray.take_bytes()زمانی که دقیقاً یک بایت باقی مانده بود، و در ساخت نخآزاد زمانی که یک bytearray از یک نخ دیگر به یک بایت کوچک شده بود، رخ میداد.gh-156910: رفع یک بنبست در ساخت نخبندی آزاد هنگام تنظیم
__abstractmethods__روی یک نوع در حالی که نخ دیگری قفل نوع را نگه داشته است.gh-156894: رفع موقعیت خطاهای نحوی که بازهای را پوشش میدهند، در صورتی که سطر شامل نویسههای غیر اسکی قبل از خطا باشد.
gh-155525: رفع توکنیسازی با زمان درجهدو (quadratic-time) از ماژولهای حاوی تعداد زیادی افاسترینگ یا تیاسترینگ.
gh-156689: رفع خواندن خارج از کران در
compile()وast.parse()هنگامی که یک شیء درخت نحوی انتزاعی (AST) باmode='func_type'ارسال میشود.gh-156114: رفع خرابی در ترامپولین perf زمانی که یک شیء کد دارای نام یا نام پروندهای است که نمیتواند به UTF-8 کدگذاری شود. وصلهشده توسط Shamil Abdulaev.
gh-156126: رفع خرابی هنگام ایمپورت کردن ماژولی که نام آن حاوی نویسههایی است که نمیتوانند به UTF-8 کدگذاری شوند (مانند جانشینهای تنها) در حالی که
-X importtimeفعال است.gh-155526: رفع خطای ساختگی
OverflowErrorبرایabs(nanj)در صورتی کهerrnoپیشتر توسط برخی فراخوانیهای کتابخانهای رویERANGEتنظیم شده باشد. وصله توسط Sergey B Kirpichev.gh-151464: استثنا کردن توکن نامعتبر
<>از خروجیtokenize. خطایSyntaxErrorبرای<>اکنون!=را پیشنهاد میدهد.gh-154719: فضای خالی انتهایی در یک عبارت درونیابی تیاسترینگ اکنون در
string.templatelib.Interpolation.expression، تا قبل از علامت}بستهشونده یا جداکنندههای تبدیل (!)، قالببندی (:)، یا دیباگ (=) حفظ میشود. ادامهسطرهای صریح به دنبال یک=دیباگ بخشی از متن دیباگ باقی میمانند و ازexpressionمستثنی میشوند.gh-152708: رفع عدم تقارن تولید درخت نحوی انتزاعی (AST) که در آن علامت مثبت یکعملوندی
+به طور ضمنی در عبارات تطبیق الگو حذف میشد، و برابری تجزیه با علامت منفی یکعملوندی-بازیابی شد.
کتابخانه¶
gh-157788: رفع خطای
python -m asyncio psدر فرایندی که وظیفهای با نامی طولانیتر از ۲۵۵ نویسه دارد.gh-157660: اصلاح خطاهای گزارشدهی یا شمارهسطرهای نادرست توسط
profiling.samplingدر ساختهای نخآزاد هنگامی که یک آرایهی بایتکد نخمحلی پس از کش شدن بزرگ میشود یا درایوهایی به آن اضافه میشود.gh-157639: برطرفکردن یک فروپاشی در
cProfileهنگامی که یک تایمر خارجی مجدداً وارد پروفایلگیر میشود. رویدادهای پروفایلگیری که هنگام اجرای تایمر خارجی ایجاد میشوند اکنون نادیده گرفته میشوند.gh-157335: رفع نوشتن خارج از کران (out-of-bounds write) در
mmap.mmap.__setitem__که ممکن بود زمانی رخ دهد که تبدیل کردن اندیس یا مقدار تخصیصیافته (از طریق__index__()برای یک آیتم تکی، یا از طریق پروتکل بافر برای یک اسلایس) شیء mmap را در طول تخصیص تغییر اندازه داده یا بسته باشد.gh-128509: توابع
marshal.load()وmarshal.loads()اکنون میتوانند تکنمونههای رشتهی ۱-بایتی را دریافت کنند. اصلاحیه از Victor Stinner.gh-157301: رفع معلق ماندن حلقه رویداد توسط
asyncio.Taskهنگامی که شروع مشتاقانه در ورود به زمینهی وظیفه شکست میخورد.gh-157213: رفع مشکلی در
asyncio.gather()که یالهای گراف await منسوخ را روی فرزندانی که بیشتر از آن عمر میکنند، باقی میگذاشت.gh-156002:
zipfileدوباره اعضا را از طریق یک واگشای شخص ثالث میخواند که با اصلاح پویا (monkey-patching) متد خصوصی_get_decompressor()برای بازگرداندن شیءای که تنها API قدیمی BZ2Decompressor را از پایتون ۳.۳ پیادهسازی میکند، نصب شده است. توجه داشته باشید که واگشاهای بدونneeds_inputوdecompress()دو آرگومانی در برابر CVE 2026-15310 آسیبپذیر هستند.gh-157159: پیام راهنمایی که توسط
python -m tabnannyهنگام داده نشدن هیچ آرگومانی چاپ میشود، اکنون بهجای پروندهی منبع،python -mرا پیشنهاد میکند.gh-157058: تابع
asyncio.wait_for()با یک مهلت زمانی غیرمثبت اکنون منتظررونده را در گراف فراخوانی ثبت میکند.gh-156933: اصلاح مقادیر بازگشتی عدد صحیح نادرست از کالبکهای
ctypesروی برخی از سکوها، مانند s390x.gh-156988: تابع
asyncio.print_call_graph()دیگر پشتهی فراخوانی را در یک مولد همگام (synchronous generator) قطع نمیکند.gh-156970: تنظیم کردنشتهی مستند
unittest.mock.Mock.return_value.gh-156924: متد
annotationlib.ForwardRef.evaluate()اکنون پراکسیهای واردسازی تنبل موجود در فضای نام را حل میکند. باFORWARDREF، یک واردسازی تنبل که در حل شدن شکست بخورد اکنون به جایlazy import proxyمنجر به یکForwardRefمیشود، و باVALUEاستثنای زیربنایی پروپاگیت میشود.gh-127057: اصلاح انتقالهای UDP مربوط به
asyncio.ProactorEventLoopبهطوریکه خطایConnectionResetErrorایجادشده توسطWSARecvFromدیگر حلقهی خواندن را متوقف نکند.gh-156512: رفع از دست رفتن دوگانهی اتصال در
asyncioهنگامی که تابعresume_writing()انتقالدهنده را میبندد.gh-155596: رفع مشکل تابعهای
pprint.pprint()وpprint.pformat()که در صورت داشتنexpand=Trueپارامتر width را برای مقادیر تو در تو رعایت نمیکردند. عرض پیشوند'key':هنگام تصمیمگیری دربارهی اینکه آیا یک مقدار در سطر فعلی جا میشود یا خیر، محاسبه نمیشد؛ بنابراین مقادیر تحت کلیدهای طولانی میتوانستند به جای باز شدن، از width سرریز کنند.gh-155433: رفع از دست رفتن لغو (cancellation) بیرونی پس از
cancel()درasyncio.TaskGroup.gh-155418: رفع توقف
asyncio.TaskGroupزمانی که یک وظیفهی ایجادشده توسطasyncio.eager_task_factory()گروه را قبل از معلق شدن لغو میکند.gh-155143: اصلاح نشتی وظیفهی فراخواننده از طریق گراف await و callbackها در
asyncio.shield()هنگامی که روی یک آینده که هرگز حل نمیشود فراخوانی میشود.gh-154470: رفع یک کاراکتر نادرست
^Jکه در انتهای هر سطر منبع توسط دستورlistدر ماژولpdbزمانی که خروجی رنگی میشود (برای مثال هنگام اتصال به یک فرایند در حال اجرا) چاپ میشد. اکنون سطر منبع پیش از رنگی شدن پاکسازی میشود، درست مانند کاری که دستورwhereاز پیش انجام میداد.gh-154335: پروفایلگیر
profiling.samplingاکنون به متغیرهایNO_COLOR،FORCE_COLORوPYTHON_COLORSاحترام میگذارد و هنگامی که در یک پایانه نوشته نمیشود، از خروجی رنگی جلوگیری میکند.gh-154090: ثبت حالت پروفایلگیری در پروفایلهای دودویی Tachyon و رد مقایسههای تفاضلی که حالتهای شناختهشدهی آنها مطابقت ندارند.
gh-152907: بازگرداندن پرچمهای خروجی پایانهی پختشده (cooked-mode) پیرامون فراخوانیهای بازگشتی
PyOS_InputHookدر REPL جدید (_pyrepl)، به طوری که خروجی نوشتهشده توسط یک قلاب ورودی (برای مثال حلقهی رویداد جعبهابزار رابط گرافیکی) دیگر باOPOSTغیرفعالشده منتشر نمیشود و کاراکترهای بازگشت به ابتدای سطر خود را حفظ میکند.gh-151179: رفع نشت توصیفگر پرونده در
_PidfdChildWatcherروی لینوکس: این دیدهبان دیگر زمانی کهwaitpid()با خطایی به غیر ازChildProcessErrorمواجه میشود، توصیفگر پروندهی فرایند را نشت نمیدهد.
مستندات¶
gh-57491: کاهش عمق فهرست مطالب در مستندات EPUB از سه سطح به دو سطح، که باعث کوتاهتر شدن و تسهیل ناوبری در کتابخوانهای الکترونیکی میشود.
آزمونها¶
gh-158051: بستهی آزمون iOS برای سازگاری با Xcode 27 بهروزرسانی شده است.
ساخت¶
gh-158010: بهروزرسانی اسکریپتهای ساخت اندروید و iOS برای استفاده از OpenSSL 3.5.9.
gh-157549: استفاده از
sysconf(_SC_PAGESIZE)به جایgetpagesize()درremote_debug.hتا_remote_debuggingروی سیستمعامل داروین با-Werror=implicit-function-declarationساخته شود.gh-152023: بهروزرسانی ساختهای اندروید به SQLite 3.53.4. علاوه بر این، توابع
median()وpercentile()فعال شدند.
Windows¶
gh-158010: بهروزرسانی ساختهای ویندوز برای استفاده از OpenSSL 3.5.9.
gh-157368: رفع نقص برشخوردگی
sys.versionدر نسخههای clang-cl 22 یا جدیدتر روی ویندوز. همچنین حالت ویندوز روی Arm را که در آن کامپایلر مایکروسافت به جای clang گزارش میشد، اصلاح میکند. ارسالشده توسط کریس ایبل (Chris Eibl).gh-157212: رفع مشکل کامپایل
_Py_ThreadId()روی ویندوز ARM64 با ابزارهای MinGW، جایی که تابع__getReg()در دسترس نیست. آدرس TEB اکنون مستقیماً ازx18خوانده میشود. ارسالشده توسط کریستین اوریچ (Christian Aurich).gh-152023: بهروزرسانی ساختهای ویندوز به SQLite 3.53.4. علاوه بر این، توابع
median()وpercentile()فعال شدند.
مکاواس¶
IDLE¶
gh-158067: رفع خطایی در محاورهی باز کردن پروندهی IDLE که وقتی از پوسته یا پنجرهی خروجی باز میشد، پروندههای متنی را پیش از پروندههای پایتون فهرست میکرد.
gh-75512: خروجیِ چاپشده از یک نخ در پوستهی IDLE در حین وارد کردن یک دستور، دیگر اعلان آن دستور را تصاحب نمیکند.
gh-89544: رفع قفل شدن IDLE پس از «راهاندازی مجدد پوسته» هنگام دریافت خروجی حجیم از فرایند کاربر.
gh-59568: رفع محاورههای «ذخیره با نام» (Save As) و «باز کردن» (Open) در IDLE برای پروندهای که نام آن با
~در ویندوز و X11 با نسخهی Tcl/Tk قدیمیتر از ۹ شروع میشود.gh-69004: آیتم Debugger در منوی Debug برنامهی IDLE اکنون مانند Stack Viewer در هنگام اجرای کد کاربر غیرفعال میشود.
gh-93966: برجستهسازی خطای نحوی در پوستهی IDLE اکنون با ورود دستور بعدی حذف میشود، نه فقط زمانی که خطای نحوی بعدی رخ دهد.
gh-75234: اصلاح ویرایش منابع راهنما و کلیدهای میانبر در محاورهی تنظیمات IDLE پس از انتخاب آنها با صفحه کلید.
gh-55646: رفع فروپاشی IDLE هنگام راهاندازی در صورتی که پیکربندی کاربر حاوی یک کلید میانبر نامعتبر باشد، مانند
<Alt-Key-up>به جای<Alt-Key-Up>. این میانبر نامعتبر اکنون با یک اخطار نادیده گرفته میشود.
رابط C API¶
gh-156939: اصلاح تابع
PyBytesWriter_FinishWithSize()تا هنگام استفاده از_PyBytesWriter_CreateByteArray()به جای بازگرداندن یک رشتهی بایت خالی، یک شیء بایتارِی (bytearray) خالی برگرداند. وصله توسط Victor Stinner.gh-156939: رفع نحوهی مدیریت خطای تابع
PyBytesWriter_Format(): بازگرداندن نویسنده (writer) به وضعیت قبلی خود در صورت بروز خطا. وصله توسط Victor Stinner.gh-140550: اصلاح ماکروی
PyABIInfo_VAR: حذف;اضافی. پیش از این، کدPyABIInfo_VAR(abi_info);دو;;اضافه میکرد که در C++03 غیرمجاز است. وصله توسط Victor Stinner.
نسخهی نامزد انتشار ۲ پایتون ۳.۱۵.۰¶
تاریخ انتشار: ۲۰۲۶-۰۹-۰۱
امنیت¶
gh-156723: بهروزرسانی کتابخانهی بستهبندیشدهی libexpat به نسخهی 2.8.4.
gh-156002: کراندار کردن میزان دادهای که ماژول
zipfileبه ازای هر بار خواندن برای اعضای فشردهشده با bzip2، LZMA یا Zstandard از حالت فشرده خارج میکند، که با محدودیت موجود برای deflate مطابقت دارد. یک عضو آرشیو کوچک قبلاً میتوانست حتی هنگام خواندن در قطعات کوچک، به تخصیص حافظهی بیکرانی منجر شود.gh-155999: رفع فیلترهای استخراج
tarوdataدر ماژولtarfileکه دایرکتوریهایی را خارج از مقصد برای اعضایی که نامشان از مقصد خارج شده و به آن بازمیگردد ایجاد میکردند، مانند../evil/../dest/sub/file. بررسی محدودسازی از مسیر حلشده استفاده میکرد، اما دایرکتوریهای میانی از نام ارائهشده ایجاد میشدند.gh-155292: تغییر ماژول
stringprepو کُدکencodings.idnaبه گونهای که ویژگیهای نقطهکد یونیکد را فراتر از موارد تعریفشده در RFC 3454 در نظر نگیرند.gh-155694: رفع CVE 2026-15806 با محدود کردن اعتبارنامههای
HTTPPasswordMgrبه طرحوارهی (scheme) URL، که از استفاده از اعتبارنامههای ذخیرهشده برای یک URL با پروتکل HTTPS برای یک URL مطابق با HTTP جلوگیری میکند، در حالی که URIهای بدون طرحواره همچنان با هر طرحوارهای مطابقت پیدا میکنند.
هسته و توکارها (Core and Builtins)¶
gh-155725: ماژول
tracemallocدیگر برای ردیابی تخصیصهای حافظه، GIL را بهدست نمیآورد و وضعیت نخ موقتی ایجاد نمیکند: فریمهای ردگیری اکنون بهجای شیءهای str پایتون، رشتههای سادهی UTF-8 را ذخیره میکنند و ردگیریها با استفاده از وضعیت نخ پایتون که از پیش با نخ فراخواننده مرتبط شده است (حتی اگر متصل نباشد) ثبت میشوند. نخهای فاقد وضعیت نخ پایتون، ردگیری را به شکل<unknown>ثبت میکنند.gh-148750: ماژول
encodingsدیگر فریزنشده نیست؛ این تغییر به دلیل مشکلاتی در ایمپورت کردن زیرماژولها هنگام استفاده از یک کتابخانهی استاندارد فشردهشده اعمال شده است.gh-155254: از ایجاد هشدار دربارهی گم شدن کتابخانهی استاندارد هنگام استفاده از پروندههای _pth جلوگیری کنید.
gh-155978: رفع یک نشت حافظه در ساخت نخآزاد هنگام تنظیم یا حذف یک متد ویژه (مانند
__repr__) روی کلاسی که زیرکلاسهای زیادی دارد.gh-155752: رفع یک خرابی هنگامی که آرگومان
types.GenericAliasپس از کش شدن پارامترهای نام مستعار، یک قلاب__typing_subst__به دست میآورد.gh-129752: در ساخت نخآزاد، وقتی بایتکد نخمحلی غیرفعال است (
-X tlbc=0)، شمارندههای تطبیقی را بهروزرسانی نکنید. وصلهای از Donghee Na.gh-155515: ردیابی پیمایشگرهای داخلی HAMT که پیمایش روی یک
contextvars.Contextرا پشتیبانی میکنند، با جمعآور زباله انجام شود. یک چرخهی ارجاع که از چنین پیمایشگری میگذشت هرگز جمعآوری نمیشد، که باعث نشت کل زمینهای میشد که روی آن پیمایش کرده بود.gh-155400: رفع یک بنبست در ساخت نخآزاد میان دو نخ که به یک متد ویژه از یک کلاس مقداردهی میکنند. در حالی که بهروزرسانیهای جایگاه نوع با متوقف شدن جهان اعمال میشد، فقط از آزاد شدن قفل نوع جلوگیری میشد؛ اگر نخ روی متوقفکنندهی جهان مسدود میشد، قفل متقابل دیکشنری نوع همچنان میتوانست به ترتیب نادرست آزاد شود و دوباره بهدست بیاید.
gh-155363: رفع یک نشت در فریزشده هنگام ایجاد وضعیت نخ که پس از رزرو شدن یک جایگاه داخلی QSBR برای آن ناموفق میشود. آن جایگاه هرگز بازیافته نمیشد، بنابراین آرایهی QSBR در اثر خطاهای مکرر بدون کران رشد میکرد.
gh-154701: رفع یک حلقهی بیپایان در JIT هنگامی که یک خروج جانبی
FOR_ITERیک اجراکننده را دوباره به خودش پیوند میدهد.gh-154196: بهبود پیامهای
AttributeErrorناشی از ایمپورتهای تنبل حلنشده. وصلهای از Bartosz Sławecki.gh-151377: رفع رقابتها در ساختهای نخآزاد هنگام بهروزرسانی جایگاههای نوع برای کلاسهای تازهایجادشده و هنگام حذف ورودیها از دیکشنری زیرکلاسهای یک نوع پایه.
gh-148817: مقادیر لفظی بزرگِ فهرست و مجموعه که به عنوان پیمایشپذیرِ یک حلقهی
forیا آزمونin/not inاستفاده میشوند، درون یکtupleیاfrozensetثابت ادغام شوند تا بهینهسازیِ انجامشده توسط بهینهساز درخت نحوی انتزاعی (AST) که هنگام انتقال ادغام ثابتها به CFG از دست رفته بود، بازیابی شود.gh-85260: تابع
compile()اکنون بهجای فروپاشی در ساخت اشکالزدایی، در صورت نامفهوم بودن فیلد شناسهی یک گره درخت نحوی انتزاعی (AST) (مانند نام یک تابع، یک کلاس، یک ماژول ایمپورتشده یا یک استثنای گرفتهشده) که"None"،"True"یا"False"باشد، یکValueErrorبالا میآورد.
کتابخانه¶
gh-156523: رفع مشکل ضبط نشدن وظیفهی در حال انتظار در گراف فراخوانی توسط
asyncio.as_completed().gh-156408: رفع مشکل بالا آمدن
AttributeErrorتوسطasyncio.print_call_graph()هنگامی که روی وظیفهای که از پیش پایان یافته است فراخوانی میشود.gh-156404: بازیابی سازگاری با پروندههای
.pthتولیدشده پیش از پایتون ۳.۱۵ در ماژولsite. متغیرfullnameدر فریمی که کد pth را اجرا میکند تزریق شود.gh-156353: رفع تجزیه در
configparserهنگام استفاده از فضای خالی در delimiters.gh-156112: ماژول
_ios_supportدیگر در ایمپورت کردن دچار خطا نمیشود هنگامی کهctypes.util.find_library()نمیتواند زماناجرای ObjC را از طریق نهانگاه مشترک dyld حل کند، همانطور که در iOS 13 چنین است. زماناجرا اکنون با نام بارگذاری میشود که dyld آن را مستقیماً در برابر نهانگاه حل میکند.gh-155974: رفع یک رگرسیون در پایتون ۳.۱۵: متدهای
addstr()،addnstr()،insstr()وinsnstr()هنگامی که نوشتن با شکست مواجه میشود، بهجای اعمالکرده نگه داشتن مقدار موقت attr، دوباره ویژگیهای پنجره را بازیابی میکنند.gh-155952: اصلاح امضاهای
sqlite3.Connection.execute()،warnings.warn()وlocale.setlocale()که بهجای مقادیر پیشفرض صحیح برای پارامترها، عبارت<unrepresentable>را نمایش میدادند.gh-155888: مشکل
asyncio.WriteTransport.writelines()را که وقتی آخرین تکه داده خالی بود باعث قفل شدن انتقال میشد، اصلاح میکند.gh-155869: برطرف کردن مشکل متد
reorganize()در ماژولdbm.dumbکه در ثبت آفستهای بهروزرسانیشدهی مقدار ناموفق بود و میتوانست پس از بازگشایی مجدد پایگاه داده باعث از دست رفتن دادهها شود.gh-155781: رفع یک فروپاشی احتمالی در ساختهای نخآزاد هنگامی که رجیستری مبدل
sqlite3بهطور همزمان در حالی که یک نشانگر نگاشت قالبریزی ردیف خود را میسازد، تغییر میکند.gh-155702: اصلاح منتسبسازی اسلایস
sqlite3.Blobبا گام. این باگ شیء بایتهای خواندهشده از بلاب را که برای یک بایت منفرد یک تکنمونهی نامیرا است اصلاح میکرد، بهطوریکه مقدار آن بایت در کل فرایند تغییر میکرد.gh-155468: ماژول
netrcرا طوری اصلاح کنید که توکنهای نقلقولشدهی خالی را از انتهای پرونده تشخیص دهد؛ بنابراین پروندههای خراب دیگر باعث نمیشود محتوای باقیمانده بدون سر و صدا نادیده گرفته شود.gh-155519: جلوگیری از رقابت دادهها در ساختهای نخآزاد هنگام خواندن و نوشتن متغیرهای زمینه از نخهای مختلف.
gh-155009: اصلاح
argparse.ArgumentParserبرای حفظ نام برنامه ازsys.argv[0]هنگامی که یک ماژول نامگذاریشده به عنوان برنامهی اصلی بدون جایگزینیsys.argv[0]اجرا میشود.gh-155063: نسخهی pip بستهبندیشده در ensurepip را به نسخهی 26.2.1 ارتقا میدهد.
gh-153711: روی سیستمعامل macOS، بررسیهای زمان اجرا (run-time) را پیرامون سیستمکالهای pipe2 (2) و dup3 (2)، علاوه بر بررسیهای موجود در زمان ساخت (build-time)، اضافه کنید. این بدان معناست که پایتون ساختهشده روی macOS ۲۷ (که این فراخوانیها در آن در دسترس هستند) میتواند روی macOS ۲۶ (که در آن نیستند) اجرا شود.
gh-154871: رفع یک فروپاشی در
asyncio.Task.get_context()هنگامی که روی یک وظیفهی مقداردهینشده فراخوانی میشود.gh-154568: اصلاح بارگذاری ناپوسته (unpickling) ماژول
arrayبرای مقادیر اعشاری ۱۶ بیتی با ترتیب بایت کوچکاندیان (little-endian).gh-154566: رفع مشکل متد
array.array.byteswap()که باعث خراب شدن دادهها در آرایههای'Zd'(ممیز شناور با دقت مضاعف مختلط) با بیش از یک عنصر میشد: حلقهی آیتم ۱۶ بایتی اشارهگر بافر را در هر پیمایش تنها ۸ بایت جلو میبرد، که باعث درهم ریختن عناصر پس از عنصر اول میشد.gh-154467: رفع مشکل اتصال از راه دور
pdb(python -m pdb -p PID) که وقتی فرایند هدف دارای یک ترمینال تعاملی بود، به جای(Pdb)یک اعلان خالی به کلاینت ارسال میکرد.gh-153772: تابع
isinstance()هنگام بررسی در برابر کلاسهایcollections.abcمانندMapping، در صورتی که نمونه دارای__class__نباشد، دیگر خطایAttributeErrorایجاد نمیکند. در این حالت، سازوکار کلاس پایه انتزاعی اکنون به نوع شیء بازمیگردد که با رفتار تابعisinstance()توکار مطابقت دارد.gh-154086: ذخیرهی تعداد نمونههای هر نخ در نمودارهای شعلهی Tachyon بهطوریکه فیلتر کردن یک نخ، عرض قابها و مجموعها را بهروزرسانی کند.
gh-154060: ذخیرهسازی مدتزمان اندازهگیریشده و نرخ نمونهبرداری در نمایههای دودویی (binary profiles) Tachyon تا در نمودارهای شعلهی بازپخششده (replayed flamegraphs) همچنان در دسترس بمانند.
gh-154085: جلوگیری از تکرار زمان خودی در نمودارهای شعلهی تفاضلی در سراسر گرههای سطر برای یک تابع.
gh-154088: شمارش و رندر کردن پشتههای حذفشده (elided) را توسط Tachyon در نمودارهای شعلهی تفاضلی به صورت سازگار انجام میدهد.
gh-154089: آمارهای کارایی نمونهبرداری غیرقابل دسترس را در نمودارهای شعلهی بازپخششدهی Tachyon نمایش ندهید.
gh-153158: حذف آرگومان width نادرست از
calendar.HTMLCalendar.formatmonthpage()که میتوانست سال را از سرتیتر حذف کند.gh-113329: رفع خطای
OSErrorکه هنگام تلاش برای اجرای آزمونهای مستند (doctests) روی اشیای کلاس در REPL رخ میداد. اصلاحیه از Sten Wessel.
ساخت¶
gh-156369: بهروزرسانی اسکریپتهای ساخت اندروید و iOS برای استفاده از OpenSSL 3.5.8.
gh-156115: ساختهای شبیهساز iOS اکنون به جای
-mios-version-minدستگاه، با-mios-simulator-version-minپیکربندی میشوند. پرچم دستگاه باعث میشد پیونددهنده کتابخانههای حلشده از SDK شبیهساز را رد کند، بنابراین تشخیص کتابخانه بهصورت بیصدا با شکست مواجه میشد.
Windows¶
gh-156369: بهروزرسانی ساختهای ویندوز برای استفاده از OpenSSL 3.5.8.
مکاواس¶
gh-156369: بهروزرسانی نصبکنندهی macOS برای استفاده از OpenSSL 3.5.8.
Tools/Demos¶
gh-154059: رفع واحدهای زمانی در راهنماهای ابزار گراف شعلهای Tachyon با در نظر گرفتن بازهی نمونهبرداری هنگام تبدیل نمونهها به میلیثانیه.
رابط C API¶
gh-131740: در ساخت نخآزاد، تابع
PyUnstable_GC_VisitObjects()اکنون از اشیای فریزشده (اشیایی که توسطgc.freeze()به نسل دائم منتقل شدهاند) نیز بازدید میکند که با رفتار ساخت پیشفرض مطابقت دارد.
Python 3.15.0 release candidate 1¶
Release date: 2026-08-04
امنیت¶
gh-152674: متدهای
xml.etree.ElementTree.Elementیعنیfindall()،iterfind()وfind()از رفتار درجهی دوم هنگام استفاده از محمولهای اندیس XPath ([1]،[last()]،[last()-N]) روی اسناد XML با تعداد زیادی فرزند همبرچسب جلوگیری میکنند.
هسته و توکارها (Core and Builtins)¶
gh-154902: رفع یک فروپاشی هنگامی که
__conditional_annotations__به یک شیء غیرمجموعه مجدداً انتساب داده میشود.gh-133931: رفع مسابقات دادهای هنگام تنظیم ویژگیهای اشیای تابع روی ساخت نخبندی آزاد.
gh-154775: هنگام تطبیق یک مقدار لفظی مختلط در دستورهای
case، علامت اضافی+(برای مثال1++1jیا1-+1j) دیگر مجاز نیست.gh-154709: رفع خطای دسترسی خارج از کران در پیمایشگرهای دیکشنری معکوس هنگامی که دیکشنری زیربنایی پس از ایجاد پیمایشگر پاکسازی و اصلاح میشود.
gh-154695: رفع خطای
AttributeErrorدرasyncio.Taskهنگامی که باeager_start=Trueو بدون آرگومان حلقه صریح ایجاد میشود.gh-153809: رفع فروپاشی مفسر هنگام آزادسازی حافظهی اشیای
asyncio.Taskدر ساختهای نخآزاد. مشارکت توسط Sergey Miryanov.gh-154275: رفع یک فروپاشی هنگام دریافت
__parameters__عمیقاً تودرتو از اشیایtypes.GenericAlias.gh-154014: رفع یک ادعای کامپایلر درجا (JIT) در طول خاموش شدن مفسر با مقداردهی اولیهی فیلدهای
vm_dataبرای اجراکنندگان سردی که از_Py_ExecutorInit()عبور میکنند.gh-153932: رفع مشکل امنیت نخ (thread safety) در متد
__reduce__ازenumerate.gh-153881: رفع رقابت (race) احتمالی دادهها هنگام فراخوانی
__getstate__()تحت ساخت نخآزاد.gh-153570: رفع یک خطای استفاده پس از آزادی (use-after-free) در
bytearray.take_bytes()وقتی که متد__index__()آرگومان، اندازهی آرایهی بایت را تغییر میدهد. وصله (patch) توسط tonghuaroot.gh-153419: رفع چندین فروپاشی (crash) و نشت ارجاع در
bytearrayکه ناشی از رد کردن متد__init__()و کدهای تنظیم وضعیت معیوب بود.gh-153236: انتقال دادن (propagate) استثناهای بالاآمده هنگام ایمپورت کردن زیرپودمانهای تنبل (lazy submodules) به جای گزارش دادن آنها به عنوان ویژگیهای گمشده.
gh-148874: نادیدهگرفتن وقفهها بلافاصله پس از فراخوانی متد
__enter__یک مدیر زمینه (context manager) در یک دستورwith. این کار تضمین میکند که متد__exit__همیشه در یک دستورwithفراخوانی شود.gh-150208: جلوگیری از نقلقول مضاعف مقادیر رشتهای از
pyconfig.hدر متغیرهایsysconfigdata.
کتابخانه¶
gh-155063: ارتقای نسخهی pip بستهبندیشده در ensurepip به نسخهی 26.2
gh-154936: اصلاح رمزگشای پایتون خالص
jsonبرای گزارش موقعیت صحیح نویسههای کنترل لفظی نامعتبر در رشتههای JSON.gh-154892: رفع یک باگ در شتابدهندهی C برای
zoneinfoکه در آن زیرکلاسهایdatetime.datetimeکه مقادیر-1را برایhour،minuteیاsecondبرمیگردانند، ممکن است به اشتباه یکSystemErrorایجاد کنند.gh-154848: شتابدهندهی C مربوط به
pickleاکنون مرزهای قاب (frame boundaries) را هنگام پیکلزدایی اعمال میکند، همانطور که پیادهسازی پایتون خالص از قبل انجام میداد. آرگومانی که مرز قاب را قطع کند، یا قابی که پیش از پایان یافتن قاب قبلی شروع شود، اکنون به جای خواندهشدن بیصدا در طول مرز،pickle.UnpicklingErrorایجاد میکند. این کار مانع از انحراف دادههای بارگذاریشده از جداسازی (disassembly)pickletoolsمربوط به همان پیکل میشود.gh-154885: تابع
os.get_terminal_size()اکنون پیش از فراخوانیioctl، مقدارisattyرا بررسی میکند که این امر سر و صدای گزارشها (log noise) را در اندروید کاهش میدهد.gh-109638: رفع زمان نمایی در
csv.Sniffer.sniff()برای نمونهای که حاوی نویسههای نقلقول زیادی است. یک نویسهی نقلقول دوتایی اکنون در فیلدی که حاوی جداکننده یا سرخط (line break) است نیز شناسایی میشود.gh-98820: رفع زمان درجهدوم در
csv.Sniffer.sniff()برای نمونهای که حاوی فیلدهای نقلقولشده است، بهویژه برای یک ستون تکی از فیلدهای نقلقولشده.gh-154738: رفع عدم انتقال تنظیمات به تعویق انداختن بازپارسی (reparse-deferral) به زیرتحلیلگر در
ExternalEntityParserCreate()که باعث میشدGetReparseDeferralEnabled()یک مقدار مقداردهینشده را برگرداند. وصله توسط tonghuaroot.gh-93251: رفع
UnicodeDecodeErrorدر توابعsocket(مانندgetaddrinfo()وgethostbyaddr()) هنگامی که پیام خطای محلیسازیشدهی کتابخانهی C از نوع UTF-8 نیست: رمزگشایی آن از طریق کدگذاری locale.gh-148468: رفع یک رگرسیون در
argparseکه در آن راهنمای آرگومان رنگی حاوی مشخصکنندههای قالب، اشیاء پروکسی شبیه به رشته را نمیپذیرفت.gh-142035: رفع شکستهشدن نادرست متن راهنمای
argparseهنگام فعال بودن رنگ.gh-135736: رفع
asyncio.TaskGroupبرای اینکه اگر یکGeneratorExitتوسط بدنهی گروه وظیفه ایجاد شده باشد و هیچکدام از وظایف درون گروه استثنایی ایجاد نکرده باشند، آن را در یکBaseExceptionGroupقرار ندهد.gh-154551: رفع بازگرداندن
Noneتوسطctypes.util.find_library()در localeهای غیر UTF-8.gh-79366: یک شرایط رقابت در
loggingبرطرف شد: اگر یک هندلر در حین انتشار یک رکورد حذف میشد، ممکن بود هندلرهای بعدیِ همان گزارشگیر نادیده گرفته شوند.gh-154189: یک استفادهی بالقوه از حافظهی آزادشده (use-after-free) هنگام فراخوانی
functools.partial()برطرف شد. اکنون، هنگام فراخوانی یک شیءpartial()، تابع ذخیرهشده، آرگومانهای جایگاهی و آرگومانهای کلیدواژهای در طول مدت زمان فراخوانی حفظ میشوند تا در صورت وقوع بازورودپذیری مشکلی پیش نیاید.gh-73458: تابع
logging.config.listen()اصلاح شد: اگر سرور نمیتواند راهاندازی شود (مثلاً اگر پورت نامعتبر است یا در حال استفاده است)، فراخوان را برای همیشه در انتظار رویدادreadyرها میکرد. همچنین اکنون اگر میزبان هیچ آدرس IPv4 ندارد (مثلاً اگرlocalhostفقط به::1نگاشت شده باشد)، به یک آدرس IPv6 نیز متصل میشود.gh-154460: رفع مشکل بازگرداندن شماره هفتهی نادرست ISO 8601 (
%V) توسطtime.strftime()وdatetime.datetime.strftime()در سیستمعامل OpenBSD.gh-154435: رفع مشکل
os.posix_fadvise()وos.posix_fallocate()در سیستمعامل DragonFly BSD: آنها استثنایOSErrorرا با یک کد خطای بیمعنی بالا میآوردند، زیرا این توابع مقدار -1 را برمیگردانند وerrnoرا در آنجا تنظیم میکنند.gh-154399: رفع مشکل فعالسازی
venvدر یک پوستهی غیرتعاملی csh: وقتی متغیرpromptتنظیم نشده باشد،activate.cshدیگر با خطا مواجهچ نمیشود.gh-154389: رفع مشکل
uuid.uuid1()روی OpenBSD: این تابع یک UUID نسخهی ۴ برمیگرداند، زیراuuid_create()روی این پلتفرم UUIDهای تصادفی تولید میکند.gh-154324: رفع مشکل
os.sendfile()روی illumos: این تابع دیگر زمانی که فراخوانی سیستمی زیرین بدون نوشتن هیچ دادهای با شکست مواجه شود، انتقال موفقیتآمیز را گزارشچ نمیکند.gh-154307: رفع مشکل
tempfile.TemporaryDirectory.cleanup()روی DragonFly BSD؛ جایی که حذف یک پرونده با پرچمUF_NOUNLINKبه جایEPERMبا خطایEISDIRمواجه میشد.gh-154291: اصلاح
socket.has_dualstack_ipv6()تا روی پلتفرمهایی مانند DragonFly BSD که تنظیمIPV6_V6ONLYروی 0 بیصدا هیچ اثری ندارد، مقدارFalseرا برگرداند.gh-154283: در سیستمعامل DragonFly BSD، تابع
threading.get_native_id()اکنون مقداری را برمیگرداند که در بین فرایندها یکتا است و با سایر پلتفرمها مطابقت دارد.gh-154258: رفع یک فروپاشی در
mmap.mmap.resize()روی NetBSD هنگام بزرگ کردن یک نگاشت ناشناس مشترک. متدresize()اکنون در این حالت استثنایValueErrorرا بالا میآورد، درست همان کاری که قبلاً روی لینوکس انجام میداد.gh-131565: تابع
ctypes.util.dllist()اکنون روی NetBSD کار میکند. این تابع در ماژول توسعهای_ctypesپیادهسازی شده است تاdl_iterate_phdr()تمام کتابخانههای مشترک بارگذاریشده را گزارش کند: روی NetBSD این تابع فقط گروه نگاشت پیوندِ شیء فراخواننده را گزارش میکند که هنگام فراخوانی از طریق ctypes آنها را مستثنی میکرد.gh-154225: رفع مشکل
os.openpty()روی Solaris و illumos: این تابع دیگر شبهپایانه را به عنوان پایانه کنترلکنندهی فرایند فراخواننده باقی نمیگذارد.gh-154227: رفع مشکل
os.posix_openpt()روی OpenBSD، جایی که پرچمO_CLOEXECرا رد میکرد.gh-145030: رفع ترابریهای پایپ نوشتن
asyncioبرای FIFOهای نامگذاریشده روی macOS و Solaris. دادههای خواندهنشدهی موجود در FIFO باعث میشدند ترابری، یک رویداد پایش را به اشتباه به عنوان قطع ارتباط خواننده تفسیر کند و ترابری را به نادرستی ببندد.gh-154176: رفع یک فروپاشی در
locale.strxfrm()روی DragonFly BSD که تابعwcsxfrm()آن از اندازهی صفر پشتیبانی نمیکند.gh-154836: رفع مشکلی که در آن
subprocess.Popen.wait()برای مقادیر بسیار بزرگ timeout مانندfloat('inf')استثنایTypeError(روی macOS و سایر سیستمعاملهای BSD) یاOverflowError(روی لینوکس) را بالا میآورد؛ این یک رگرسیون در نسخهی 3.15 در انتظار رویدادمحور جدید است. همچنین رفع مشکلی که در آنselect.kqueue.control()خطایOverflowErrorرا برای مهلتهای زمانی خارج از محدوده به عنوانTypeErrorماسک میکرد.gh-154053: رفع کامپایل ماژول
sslدر برابر LibreSSL، که توابعSSL_CTX_set1_sigalgs_list()وSSL_CTX_set1_client_sigalgs_list()را فراهم نمیکند. متدهایset_server_sigalgs()وset_client_sigalgs()از کلاسssl.SSLContextاکنون روی LibreSSL استثنایNotImplementedErrorرا بالا میآورند.gh-154001: رفع مشکلی که در آن
random.binomialvariate()هنگام صفر بودن مقدار بازگشتیrandom.random()، استثنایZeroDivisionErrorرا بالا میآورد.gh-153908: رفع رقابت دادهها هنگام فراخوانی
repr()رویitertools.countدر ساخت نخآزاد (free-threaded build).gh-153896: حذف آرگومانهای هشناپذیر تکراری در
typing.Literal.gh-153864: در یک ساخت پهن
curses، متدcurses.window.insch()اکنون یک بایت غیر اسکی را به عنوان نویسهای که در کدگذاری پنجره رمزگذاری میکند درج میکند، که مطابق باaddch()است و به جای نقطهکد آن عمل میکند.gh-153862: در یک ساخت پهن
curses، متدcurses.window.inch()اکنون بایت کدگذاریشده با locale یک نویسهی غیر اسکی را برمیگرداند که باinstr()مطابقت دارد، و نه بایت کمارزش نقطهکد آن را.gh-146011: رفع خطای heap-use-after-free در پیادهسازی C ماژول
decimalهنگام فراخوانیrepr()پس از حذفContext.gh-153761: رفع لغو متد
asyncio.loop.sock_accept()که باعث رها شدن یک اتصال معلق میشد.gh-127049: رفع یک حالت رقابت در
asyncioروی یونیکس که در آنasyncio.subprocess.Process.send_signal()،terminate()یاkill()میتوانستند به یک فرایند نامرتبط که روی PID فرزند ازپیشپایانیافته بازیافت شده بود سیگنال بفرستند، زمانی که از ThreadedChildWatcher استفاده میشود. وصل توسط کومار آدیتیا.gh-153404: کلاس
urllib.robotparser.RobotFileParserاکنون مقادیرCrawl-delayیاRequest-rateنوشتهشده با ارقام غیردهدهی (مانندU+00B2 SUPERSCRIPT TWO) را بهجای ایجاد خطایValueErrorو متوقف کردن تجزیهی کل پروندهیrobots.txt، بهشکلی بیصدا نادیده میگیرد.gh-153291: رفع رقابت دادهها در
readline.get_completer()وreadline.get_pre_input_hook()روی ساخت با نخبندی آزاد (free-threaded): متدهای getter قلاب ذخیرهشده را بدون بخش بحرانی که متدهای setter مربوطه حفظ میکنند، میخوانند.gh-153133: رفع نشت سوکت در
asyncio.loop.create_connection()هنگامی که امکان ایجاد ترانسپورت وجود ندارد.gh-152431: اصلاح
asyncio.StreamWriter.start_tls()برای همگام نگه داشتن ترانسپورت پیوندخوردهیStreamReaderبا ترانسپورت ارتقایافته.gh-151955: اجازه دادن به استفاده از انواع بیشتری در آرگومان
boundبرایtyping.ParamSpecوtyping.TypeVarTuple.gh-119710: رفع معلق ماندن متد زیرفرایند
asyncioیعنیwait()هنگامی که فرایند خارج شده است اما یکی از پایپهای آن توسط یک فرایند فرزند به ارث برده شده باز نگه داشته میشود (بنابراین پایپ هرگز به EOF نمیرسد). تابعwait()اکنون بهمحض خروج فرایند، صرفنظر از وضعیت پایپها، برمیگردد.gh-151022: رفع ردپاهای پشتهی
_remote_debuggingبرای اشیای کد دارای جداول سطرهای بزرگ.gh-149319: پوسته تعاملی پایتونِ
asyncioاکنون هنگامی که از-Eیا-Iاستفاده شود،PYTHONSTARTUPوPYTHON_BASIC_REPLرا نادیده میگیرد. وصلهای از Jonathan Dung.gh-148665: تابع socket.shutdown اکنون برای ساختهای Emscripten فعال است. با این حال، اگر رانتایم سیستمکال shutdown را پیادهسازی نکرده باشد، خطای "Function not implemented" را نشان خواهد داد.
gh-140326: اصلاح فضای نام REPL در
asyncioبه گونهای که ایمپورتهای نسبی دیگر نسبت به بستهیasyncioحل نشوند و__file__دیگر مقداردهی نشود.gh-103925: رفع متد
csv.Sniffer.sniff()برای نمونهای با پایاندهندههای سطر\r\nکه در آن یک فیلد نقلقولشده به سطر پایان میدهد: ممکن بود یک حرف به عنوان جداکننده تشخیص داده شود.
مستندات¶
آزمونها¶
gh-76595: افزودن آزمونهای API زبان C برای
PyCapsule_Import().gh-154211: افزودن
test.support.skip_if_huge_c_stack()و استفاده از آن برای پرش از آزمونهایی که اگر محدودیت پشته بسیار بزرگ باشد (مثلاً روی DragonFly BSD یا باulimit -s unlimited) پشتهی C را تخلیه میکنند.gh-154167: اجراکنندهی آزمون (regrtest) اکنون هندلر پیشفرض SIGINT را در صورتی که به عنوان نادیدهگرفتهشده به ارث رسیده باشد، بازیابی میکند؛ بنابراین دیگر بدنهی آزمون هنگام اجرا به عنوان یک کار پسزمینهی پوسته معلق نمیماند.
gh-154144: اصلاح ساخت ماژول
_testcapiروی NetBSD.gh-152548: افزودن دکوراتور
test.support.isolation.runInSubprocess()برای اجرای یک متد آزمون یا زیرکلاسTestCaseدر یک زیرفرآیند مفسر جدید، ایزولهشده از بقیهی اجرای آزمون.
ساخت¶
gh-154070: ساخت ماژول
cursesدر مقابل یک ncurses با قابلیت نویسهی پهن، حتی زمانی که به نامncurseswنامگذاری نشده باشد -- برای مثال pkgsrc ncurses روی NetBSD و illumos، یا ncurses سیستمی روی macOS. چنین کتابخانهای پیشتر یک نسخهی ساخت باریک تولید میکرد.gh-138800: اصلاح نام کتابخانه در python3.pc روی اندروید.
Windows¶
gh-124111: بهروزرسانی نسخههای ساخت ویندوز برای استفاده از Tcl/Tk 9.0.4.
Tools/Demos¶
gh-154580: اصلاح بالا آوردن استثنای
UnicodeEncodeErrorتوسطpython-gdb.pyهنگام چاپ زیبا (pretty-printing) یکstrغیر ASCII در یک locale که مجموعه نویسههای میزبان آن نمیتواند آن را رمزگذاری کند، مانند هر رشتهی غیر ASCII در locale مربوط به C.gh-152384: بستههای Pixi برای سیپایتون اکنون همگی در همان زیرپوشهی
Tools/pixi-packagesقابل دسترسی هستند، نه درTools/pixi-packages/{variant}مانند قبل. گونهها اکنون نه از طریق زیرپوشه بلکه از طریقflagsانتخاب میشوند؛ برای دستورالعملهای استفاده به https://pixi.prefix.dev/latest/concepts/package_specifications/#extras-and-flags مراجعه کنید. گونهیtsan-freethreadingبهtsan_freethreadingتغییر نام یافته است، در حالی که گونههایdefault،asanوfreethreadingنامهای قبلی خود را حفظ کردهاند.
رابط C API¶
gh-122931: اجازه دادن به ایمپورت کردن افزونههای C با ABI پایدار که شامل یک چندمعماری (multiarch tuple) در نام پروندهی خود هستند، مثلاً
foo.abi3-x86-64-linux-gnu.so.
Python 3.15.0 بتا ۴¶
تاریخ انتشار: ۲۰۲۶-۰۷-۱۸
امنیت¶
gh-153030: اصلاح پیچیدگی درجهدوم در تحلیل افزایشی سازههای طولانی پایانیابینشده (مانند تگها یا کامنتها) در
html.parser.HTMLParser، که میتوانست برای یک حملهی محرومیت از سرویس (DoS) سوءاستفاده شود.gh-152216: بهروزرسانی کتابخانهی بستهبندیشدهی libexpat به نسخهی 2.8.2.
gh-151987: متد
tarfile.TarFile.extract()اکنون فیلتر دادهشده را هنگامی که یک هدف پیوند را به عنوان یک جایگزین از آرشیو استخراج میکند، اعمال میکند.gh-151981: در
tarfile، مکانیابی یک جریان (stream) اکنون هنگام رسیدن به انتهای جریان متوقف میشود.gh-151558: اصلاح یک آسیبپذیری در فیلترهای استخراج
dataوtarدر ماژولtarfileکه در آن آرشیوهای دستساز میتوانستند یک پیوند نمادین (symlink) به بیرون از پوشهی مقصد ایجاد کنند. این یک دور زدن برای CVE 2025-4330 بود.gh-150743: ماژول
http.clientاکنون تعداد سطرهای تریلر پاسخ بخشبندیشدهای را که میخواند بهmax_response_headers(به طور پیشفرض ۱۰۰) و تعداد پاسخهای موقت (1xx) را که رد میکند به ۱۰۰ محدود میکند. یک سرور مخرب یا خراب قبلاً میتوانست خطوط تریلر یا پاسخهای100 Continueرا تا ابد جریان دهد و کلاینت را حتی زمانی که مهلت زمانی سوکت (socket timeout) در حال استفاده بود، معلق کند. گزارششده توسط@YLChen-007از طریق GHSA-w4q2-g22w-6fr4.gh-143927: نرمالسازی تمام پایانهی سطرها (CR، CRLF و LF) به LF+TAB هنگام نوشتن مقادیر چندسطری configparser.
هسته و توکارها (Core and Builtins)¶
gh-153298: اصلاح یک مسابقهی داده (data race) در مقداردهی اولیهی
__parameters__درtypes.GenericAliasروی نسخههای ساخت با قابلیت ریسمان آزاد (free-threading).gh-153205: رفع یک
SystemErrorاحتمالی در طول فراخوانیهای برداری (vector call) هنگامی که تخصیص حافظه با شکست مواجه میشود. اکنون به جای آن یکMemoryErrorبالا آورده میشود.gh-152682: رفع رفع ارجاع اشارهگر NULL در
compile()هنگامی که یک نام رزرو شده (مانند__classdict__) به عنوان نام پارامتر نوع استفاده میشود و تخصیص حافظه هنگام قالببندی پیام خطا با شکست مواجه میشود.gh-152635: رفع یک فروپاشی ناشی از کمبود حافظه هنگام ایجاد یک کانال
_interpchannels. اکنون یکMemoryErrorبه درستی بالا آورده میشود.gh-152405: هنگام انجام عملیات مقایسهی غنی (rich-compare) با انواعی غیر از کتابخانهی استاندارد، نگاشت داخلی
types.MappingProxyTypeرا آشکار نکنید. پیشتر، امکان تغییر دادن نگاشت داخلی یک پراکسی در آنجا وجود داشت. اکنون هنگام کار با انواع سفارشی، نه نمونهی اصلیdict، بلکه نسخهای از آن ارسال میشود.gh-152492: متد
updateازcollections.OrderedDictاکنون میتواندfrozendictرا به عنوان آرگومان بپذیرد.gh-152375: برطرف کردن رفتار نامشخص (undefined behaviour) هنگامی که یک کالبک در
sys.monitoringدر حین دنبال کردن یک شاخه یا حلقه توسط برنامه، استثنایی را بالا میآورد.gh-152235: به تعویق انداختن پیگیری GC برای
set.intersection()،set.difference()،set.symmetric_difference()،set.union()وset.__sub__. ارائهی وصله (Patch) از Donghee Na.gh-152235: به تعویق انداختن پیگیری GC برای یک
setیاfrozensetتا پایان ساخت آن از روی پیمایشپذیر. ارائهی وصله (Patch) از Donghee Na.gh-152228: برطرف کردن یک خطای ادعا (assertion failure) هنگامی که پایتون در حالت اشکالزدایی ساخته میشود و در
str.replace()تحت شرایط حافظهی محدود رخ داده است.gh-151722: متد
frozendict.fromkeys()اکنون فقط پس از کامل شدن مقداردهی اولیه دیکشنری،frozendictرا در جمعآوریکنندهی زباله پیگیری میکند. ارائهی وصله (Patch) از Donghee Na و Victor Stinner.gh-151763: رفع فروپاشی احتمالی هنگام آزادسازی
types.CodeType.gh-152020: در ساخت نخآزاد، تابع
asyncio.all_tasks()وقتی از نخی غیر از نخی که حلقه رویداد را اجرا میکند فراخوانی میشود، دیگر وظایف شروعشدهی مشتاق (eager-started) را گم نمیکند.gh-151763: رفع فروپاشی احتمالی در
compile()،exec()،eval()وast.parse()هنگامی که تخصیص حافظه با شکست مواجه میشود: پارسر یا کامپایلر ممکن است بدون تنظیم یک استثنا بازگردند.gh-151912: رفع فروپاشی در
type()هنگام انتخاب فراکلاسی که جایگاهtp_newآنNULLاست. اینگونه فراکلاسها اکنون بهجای ایجاد ارجاع به اشارهگر NULL با خطایTypeErrorرد میشوند.gh-151773: رفع فروپاشی در
contextvars.ContextVar.set()هنگامی که تخصیص حافظه با شکست مواجه میشود.gh-151672: رفع ناسازگاریای که در آن فراخوانی
__lazy_import__با یک رشتهیfromlistبهجای ماژول در حال وارد شدن، شیءtypes.LazyImportTypeرا برمیگرداند که به عضو نامبرده حل میشود.gh-151619: رفع مشکلی که در آن استفاده از فضاهای نام سراسری یا توکار غیرماژول (مانند دیکشنریهای ارسالشده به
exec()) میتواند باعث شود بارگذاریهای سراسری کششده، واردات تنبل حلنشده تولید کنند.gh-151126: جلوگیری از فروپاشی احتمالی هنگام اشتراکگذاری اشیای
memoryviewبین مفسرها به دلیل کمبود حافظه. اکنون این مورد بهدرستی یکMemoryErrorایجاد میکند.gh-151644: رفع رقابت دادهای در
sys.setdlopenflags()وsys.getdlopenflags()هنگامی که بهطور همزمان در ساخت نخآزاد فراخوانی میشوند. توابع زیرین_PyImport_GetDLOpenFlagsو_PyImport_SetDLOpenFlagsاکنون از عملیات بارگذاری/ذخیرهسازی اتمی استفاده میکنند.gh-151126: جلوگیری از فروپاشی احتمالی در
_winapi.cکه در آن حافظهی دستگاه تمام شده است. اکنون بهدرستی یکMemoryErrorایجاد میکند. وصله توسط Ivy Xu.gh-151029: در لینوکس، مشکلی را برطرف میکند که باعث میشد تابع
sys.remote_exec()نتواند حافظهی قابلنوشتن راه دور را هنگامی کهlibpythonروی دیسک جایگزین شده است پیدا کند.gh-150459: پیام خطای
SyntaxErrorرا برای عبارتfrom x lazy import yاصلاح میکند. ایجاد خطایSyntaxWarningبرایfrom . lazy import x(با وجود فاصله بین نقطهها و ماژولی با نامlazy).gh-150858: یک مشکل رقابت داده (data race) را هنگام تغییر همزمان
__qualname__یک نوع در ساختهای نخآزاد (free-threaded builds) برطرف میکند.gh-144774: مشکل رقابت داده در
BaseExceptionرا هنگامی که یک استثنا در حین تغییر (mutation) کپی میشود، برطرف میکند.gh-150411: مشکل رقابت داده را در ساخت نخآزاد (free-threaded build) هنگامی که تابع
gc.get_count()شمارش تخصیص نسل جوان را میخواند در حالی که نخ دیگری آن را بهروزرسانی میکند، برطرف میکند.gh-149689: گم شدن انتشار خطا در کمکیهای کنش پارسر (parser action helpers) هنگام شکست تخصیص حافظه را برطرف میکند. وصله توسط Thomas Kowalski.
gh-149162: یک بنبست احتمالی را در
PyUnicode_InternFromString()و سایر عملکردهای درونیسازی در ساخت نخآزاد هنگام فراخوانی از مقداردهندههای اولیهی محلی استاتیک C++ برطرف میکند.gh-148825: خطای ساخت را در صورت غیرفعال بودن تخصصیسازی برطرف میکند.
کتابخانه¶
gh-153695: هش کردن یک شیء
sqlite3.Rowکه حاوی یک مقدار هشناپذیر است، اکنون بهجایSystemErrorخطایTypeErrorرا پرتاب میکند. وصله توسط tonghuaroot.gh-153658: مشکل پرتاب خطای
sqlite3.OperationalErrorتوسط متدsqlite3.Connection.iterdump()را هنگامی که نام جدول شامل یک نقلقول تکی است، برطرف میکند. وصله توسط tonghuaroot.gh-85943: مشکل پرتاب خطای
BytesWarningتوسط توابعstructرا تحت گزینهی خط فرمان-bbهنگامی که یک قالبstrپس از یک قالبbytesمساوی (یا برعکس) استفاده میشود، برطرف میکند. نهانگاه قالب داخلی دیگر کلیدهایstrوbytesرا با هم ترکیب نمیکند.gh-151292: تعداد نمونهها را در قالب دودویی
profiling.samplingبه عنوان یک عدد صحیح ۶۴ بیتی ذخیره میکند که از عدد صحیح ۳۲ بیتی استفادهشدهی قبلی بزرگتر است. این تغییر باعث شکستن ضبطهای موجود میشود. نشستهای پروفایلگیری طولانی یا سنگین از نظر نخ دیگر به دلیلOverflowErrorبا شکست مواجه نخواهند شد. وصله توسط Maurycy Pawłowski-Wieroński.gh-153417: پیامهای خطای متدهای
imaplib.IMAP4.select()وimaplib.IMAP4.uid()دیگر تحت گزینهی-bbهنگامی که صندوق پستی یا آرگومان فرمان از نوعbytesاست، خطایBytesWarningتولید نمیکنند.gh-153406: تابع
email.utils.parsedate_to_datetime()اکنون وقتی سال تجزیهشده یا آفست منطقهی زمانی خارج از محدوده باشد، بهجایOverflowErrorخطایValueErrorرا پرتاب میکند که با رفتار مستندشدهی آن مطابقت دارد.gh-153333: متد
readprofileازtkinter.Tkاکنون اسکریپتهای پروفایل کاربر را با استفاده از کدگذاری اعلامشده در پرونده میخواند، نه کدگذاری locale.gh-153083: پیگیری GC یک شیء
array.arrayرا به انتهای ساخت آن به تعویق میاندازد. وصله توسط Donghee Na.gh-153292: مشکل رقابت داده در repr مربوط به
threading.RLockرا در ساخت نخآزاد برطرف میکند.gh-153293: مشکل حفظ آمارهای تجمیعشده و منسوخشدهی آپکد پس از بازنشانی آمارها توسط TUI پروفایلگر نمونهبرداری زنده را برطرف میکند.
gh-143990: یک
tkinter.font.Fontایجادشده از یک فونت نامگذاریشده، از جمله توسطcopy()، اکنون گزینههای پیکربندیشدهی خود را کپی میکند بهجای گزینههای حلشده توسط دستورfont actualدر Tcl، که این امر اندازهی مشخصشده برحسب پیکسل (یک اندازهی منفی) را حفظ میکند.gh-148286: رفتار تعریفنشده در
compression.zstd.ZstdDecompressor.unused_dataرا هنگامی که یک فریم کامل در یک فراخوانی واحد از حالت فشرده خارج (Decompress) میشود، برطرف میکند.gh-153210: برطرف کردن فروپاشی هنگام ایمپورت
arrayتحت فشار حافظه.gh-153200: برطرف کردن مشکلی که در آن تابع
math.isqrt()برای آرگومانهای کمتر از ۲ به توان ۶۴ (۲**۶۴) که نمونههایی از زیرکلاسintبا یک عملگر مقایسهای بازنویسیشده هستند، نتیجهی نادرستی برمیگرداند.gh-153068: اصلاح
cProfile.Profile.enable()تا دیگر خطاهایsys.monitoringرا بازنویسی نکند.gh-153062: رفع فروپاشی هنگام پیمایش همزمان پیمایشگر
itertools.tee()روی ساخت نخآزاد.gh-153056: رفع خطایی که در آن
string.Templateهنگامی که ویژگی pattern یک شیء عبارت باقاعده کامپایلشده است (که مستندات اجازه میدهند)، یک خطای ساختگیValueErrorایجاد میکند. در ساخت نخآزاد، این مورد به عنوان یک رقابت داده در اولین استفادهی همزمان نیز رخ میداد.gh-143921: محدود کردن بررسی نویسهی کنترلی در دستورات
imaplib: اکنون فقط نویسههای NUL، CR و LF رد میشوند. سایر نویسههای کنترلی در رشتههای نقلقولشده معتبر هستند و میتوانند در نامهای صندوق پستی ارائهشده توسط سرور ظاهر شوند، بنابراین اکنون پذیرفته شده و به صورت نقلقولشده ارسال میشوند.gh-153037: رفع مشکلی که در آن
ZstdFileهنگام پیمایش روی پروندهای که برای خواندن باز نشده است، به جایio.UnsupportedOperationخطایAttributeErrorایجاد میکند.gh-135661: اصلاح
html.parser.HTMLParser: یک کامنت خالیِ بهطور ناگهانی بستهشده (<!-->یا<!--->) دیگر تا یک-->بعدی در همان فراخوانیfeed()امتداد نمییابد.gh-152851: جلوگیری از فروپاشی هنگام شکست تخصیص حافظه در حین کپی کردن یک شیء
BLAKE-2s/2b. وصل توسط Bénédikt Tran.gh-54930: پاسخهای خطای
http.server.BaseHTTPRequestHandlerبه خطوط درخواست ناقص، اکنون شامل یک خط وضعیت و سرآیندها هستند و دیگر به سبک خام HTTP/0.9 ارسال نمیشوند. فقط یک درخواست معتبر HTTP/0.9 (یک خط درخواستGETدو کلمهای) اکنون پاسخی به سبک HTTP/0.9 دریافت میکند.gh-119592: رفع مشکلی در
concurrent.futures.ProcessPoolExecutorکه در آن کار ارسالشده برای همیشه معلق میماند اگر یک فرایند کارگر پس از رسیدن به حد max_tasks_per_child خود پس از فراخوانیshutdown()باwait=Falseخارج شود: اکنون یک کارگر جایگزین ایجاد میشود و کار باقیمانده مطابق مستندات اجرا میشود. اگر اجراکننده بدونshutdown()زبالهروبی شده باشد (gh-152967)، یا نتوان یک کارگر جایگزین را راهاندازی کرد، فیوچرزهای باقیمانده اکنون به جای هرگز حلنشدن، باBrokenProcessPoolبا شکست مواجه میشوند. خروج یک کارگر که باshutdown(wait=False)رقابت میکند نیز دیگر نمیتواند باعث فروپاشی نخ مدیریت اجراکننده شود.gh-150579: ماژول
concurrent.futuresاکنون به جای قلاب ماژول__getattr__، از ایمپورتهای تنبل برای زیرماژولهای اجراکنندهی خود استفاده میکند.gh-152951: جلوگیری از فروپاشی نادر در
collections.dequeهنگام فراخوانیextendدر شرایط فشار بالای حافظه.gh-150880: عادیسازی مسیرهای ویندوزی غیرتوسعهیافته قبل از الحاق وایلدکارد مورد استفاده توسط
os.listdir()وos.scandir()، که باعث میشود مسیرهای دارای فاصلهی پایانی به طور سازگار با سایر رابطهای برنامهنویسی کاربردی سامانه فایلبندی رفتار کنند.gh-152068: رفع خطایی که در آن یک سطر (بهویژه در macOS Terminal.app) در وسط یک کلیدواژه رنگی تقسیم میشد و باعث میشد دنباله بازنشانی رنگ ANSI (ESC0m) به درستی چاپ نشود و در نتیجه خروجی در جایی که نباید رنگی میشد، رنگی شود.
gh-152849: زمانسنجهای عددی اعشاری و صحیح خارج از محدوده اکنون خطای
OverflowErrorرا با همان پیام ایجاد میکنند. وصل توسط tonghuaroot.gh-152847: رد کردن یک قانون گذار گذار POSIX TZ با نویسههای غیرعددی در فیلد روزِ سال در پارسر
zoneinfoخالصپایتون. وصل توسط tonghuaroot.gh-152718: رفع تخصیص حافظهی بیکران در خوانندهی نمایهی دودویی
profiling.samplingهنگامی که یک پرونده رشتهها یا قابهای ورودی بیشتری نسبت به محتوای خود اعلام میکند.gh-108280: اتصال
imaplibبه سروری که خوشآمدگویی معتبر IMAP4 ارسال نمیکند (برای مثال یک سرور POP3 که به درگاه IMAP پاسخ میدهد) اکنون به جایimaplib.IMAP4.error: Noneخطایی را گزارش میکند که پاسخ سرور را نشان میدهد.gh-63121: ماژول
imaplibاکنون پس از یکlogin()یاauthenticate()موفق، فهرست قابلیتهای کششده را با استفاده از پاسخCAPABILITYارسالشده توسط سرور یا، در صورت عدم ارسال، با پرسوجوی آن بازنشانی میکند، به طوری که قابلیتهایی که تنها پس از احراز هویت در دسترس قرار میگیرند (مانندENABLEدر جیمیل) شناخته شوند. قابلیتهای اعلامشده در خوشآمدگویی سرور نیز اکنون استفاده میشوند و از یک دستور اضافیCAPABILITYجلوگیری میشود.gh-88574: ماژول
imaplibدیگر هنگامی که سرور یک سطر خالی ساختگی را پس از دادهی شمارششدهی یک مقدار لغوی (literal) ارسال میکند، با خطا مواجه نمیشود؛ از جمله پس از مقداری که به یک پاسخ خاتمه میدهد (مانند نام صندوق پستی که توسطLISTبازگردانده شده است). اینگونه سطرهای خالی اکنون بدون نادیدهگرفتن یا بلعیدن سطر بعدی، رد میشوند.gh-152502: شناسایی رابط ماوس ماژول
curses(getmouse()، ثابتهایBUTTON*و غیره) با استفاده از بررسی قابلیت تنظیم (configure capability probe) یا ماکروهای کتابخانهای به جای محدود کردن آن به ماکروهای خاص ncurses. این قابلیت اکنون با سایر پیادهسازیهای curses که آن را فراهم میکنند، مانند NetBSD curses و PDCurses (که دومی زیربنایwindows-cursesاست) نیز در دسترس است.gh-151842: رفع یک فروپاشی در
_interpreters.capture_exception()هنگامی کهMemoryErrorرخ میدهد. وصلهی ارائه شده توسط Amrutha Modela.gh-40038: ماژول
imaplibاکنون در صورت لزوم، مانند نام صندوقهای پستی حاوی فاصله، دوباره آرگومانهای دستور را نقلقول میکند. چنین نقلقولکردنی هنگامی که ماژول به پایتون ۳ پورت شد به طور ناخواسته غیرفعال شد و اکنون آرگومانها مطابق دستور زبان RFC 3501 نقلقول میشوند. برای سازگاری عقبگرد، آرگومانهایی که از پیش در نقلقولهای دوتایی قرار دارند بدون تغییر باقی میمانند، بنابراین کدهایی که خودشان آرگومانها را نقلقول میکنند به کار خود ادامه میدهند.gh-50966: رفع بازگشت نامحدود در ماژول
turtleهنگامی که یک هندلر رویداد ماوس که لاکپشت را حرکت میدهد، در حین ترسیم مجدد صفحه دوباره فراخوانی میشود، برای مثال باscreen.ondrag(turtle.goto). این مسئله پیشتر میتوانست باعث فروپاشی مفسر شود.gh-152569: اصلاح
asyncio.wait()که از طریق نمودار await در هنگام رقابت با یک آیندهنما (future) که هرگز حل نمیشود، وظایف در حال انتظار را نشت میداد. وظیفهی در حال انتظار اکنون پس از بازگشتwait()، حتی برای آیندهنماهای معلق، از مجموعهیawaited_byهر آیندهنما کنار گذاشته میشود.gh-110357: ایمپورت کردن ماژول
hashlibدیگر زمانی که یک الگوریتم هش که معمولاً تضمینشده است در رانتایم فعلی موجود نیست (برای مثال تحت پیکربندی OpenSSL FIPS یا یک ساخت با استفاده از--without-builtin-hashlib-hashes)، خطایی را در stderr ثبت نمیکند. کدهایی که در واقع از الگوریتم گمشده استفاده میکنند همچنان یک خطایValueErrorواضح دریافت میکنند.gh-152356: رفع توقف ناخواسته در دستور
profiling.sampling run --blockingروی ویندوز هنگامی که فرایند هدف خارج میشود. پروفایلگیر اکنون به جای ادامهی نمونهبرداری از فرایند خارجشده، پروفایلهای دودویی را نهایی میکند.gh-78335: بهروزرسانی رشتههای مستند کلاسهای ابزارک
tkinterوtkinter.ttkبرای فهرست کردن تمام گزینههای پشتیبانیشدهی ابزارک، از جمله گزینههای اضافه شده در Tk ۹.۰ و ۹.۱.tkinter.Menubuttonوtkinter.Messageپیشتر اصلاً هیچ فهرست گزینهای نداشتند.gh-151126: رفع دو فروپاشی در مقداردهی اولیه ماژولهای
tkinterوsocketتحت فشار حافظه. تنظیم خطای گمشدهیMemoryError.gh-133031: کلاس
curses.textpad.Textboxاکنون نویسههای غیر ASCII از یک کدگذاری locale ۸بیتی را وارد و بازخوانی میکند، به جای اینکه آنها را با یک ماسک ۷بیتی مخدوش کند.gh-71880: کلاس
curses.textpad.Textboxاکنون اجازه میدهد سلول پایین سمت راست پنجره ویرایش شود. نوشتن در آن باaddch()باعث حرکت نشانگر به فراتر از انتهای پنجره میشد که خطایی را ایجاد کرده و یک پنجرهی قابلپیمایش را اسکرول میکرد، بنابراین اکنون باinsch()نوشته میشود که نشانگر را در جای خود نگه میدارد.gh-83274: آزاد کردن یک برنامهی
tkinterاز نخی غیر از نخی که در آن ایجاد شده است، دیگر باعث فروپاشی مفسر نمیشود. در عوض، مفسر زیربنایی Tcl نشت میکند و یکRuntimeWarningگزارش میشود.gh-152305: رفع خطای
AttributeErrorدر پیادهسازی خالص پایتونیdatetime.time.strftime()برای دایرکتیوهای سال. وصلهی ارائه شده توسط tonghuaroot.gh-88758: متدهای
tkinter.Misc.focus_get()،focus_displayof()،focus_lastfor()وwinfo_containing()اکنون به جای ایجاد خطایKeyErrorهنگامی که ابزارک توسطtkinterایجاد نشده است (برای مثال یک منوی جداشده)، مقدارNoneرا برمیگردانند.gh-38464: متد
tkinter.Misc.nametowidget()اکنون نامهای خودکار تولید شدهی منوهای کلونشده (یک منو که به عنوان یک نوار منو یا یک منوی آبشاری استفاده میشود) را به ابزارک اصلی حل میکند.gh-152248: وادار کردن تجزیهکنندههای پایتون خالص و C در ماژول
zoneinfoبه اعتبارسنجی یکپارچهی مخففهای POSIX TZ، به طوری که مخففهای بدون نقلقول دارای نویسههای غیرحرفی و مخففهای خالی نقلقولشده را رد کنند. وصلهی ارائه شده توسط tonghuaroot.gh-80937: رفع نشتی حافظه در ماژول
tkinterهنگامی که یک دستور Tcl ایجاد شده باcreatecommandپیش از حذف مفسر به طور صریح حذف نمیشد. دستور دیگر مفسر را از طریق یک چرخهی ارجاع زنده نگه نمیدارد.gh-152246: رفع پذیرش قانون انتقال نامعتبر POSIX TZ با جداکنندهی غیرنقطهای توسط تجزیهکنندهی خالص پایتونی
zoneinfo. وصلهی ارائه شده توسط tonghuaroot.gh-151496: رفع دستور
profiling.sampling --geckoهمراه با--async-awareاز طریق تختسازی پشتههای وظایف ناهمگام پیش از تولید نمونههای Gecko. پارامتر--binaryاکنون--async-awareرا تا زمانی که فرمت دودویی از دادههای وظایف ناهمگام پشتیبانی کند، رد میکند.gh-139816: رفع یک توقف در
tkinterدر پایتون تعاملی که بدونreadlineساخته شده است. یک استثنا که در یک کالبک ایجاد میشود دیگر باعث متوقف شدن حلقه رویداد و انتظار برای فشردن کلید Enter توسط کاربر نمیشود؛ کالبکهای در صف انتظار اکنون تا زمانی که ورودی واقعاً روی stdin در دسترس باشد به کار خود ادامه میدهند.gh-139145: رفع یک حلقهی مشغول در
tkinterدر پایتون تعاملی. هنگامی که یک دستور Tcl که حلقهی رویداد خاص خود را اجرا میکند (مانندvwaitیاwait_variable()) فعال بود و ورودی روی stdin میرسید، حلقهی رویداد با ۱۰۰٪ مصرف پردازنده به چرخش ادامه میداد. هندلر پروندهی stdin اکنون به محض اینکه ورودی در دسترس باشد حذف میشود. بر اساس وصلهای از Michiel de Hoon.gh-152212: رفع این مشکل که پارسر خالص پایتون
zoneinfoیک رشتهی POSIX TZ را با یک اختصارstdاما بدون آفست میپذیرفت. این کار بر اساس استاندارد POSIX نامعتبر است و اکنون مطابق با شتابدهندهی C، یکValueErrorایجاد میکند. وصله از tonghuaroot.gh-152156: رفع احتمال فروپاشی در
concurrent.interpreters.create()در شرایط حافظهی محدود.gh-152157: پیادهسازیهای C برای
fromisoformat()وfromisoformat()اکنون جداکنندهی دهدهی را که قبل از مشخصکنندهی منطقهی زمانی با هیچ رقم اعشاری دنبال نشده باشد، نمیپذیرند.gh-151763: رفع فروپاشی در
_interpqueues.create()هنگامی کهMemoryErrorدر هنگام ایجاد صف رخ میدهد.gh-151669: در ویندوز، هنگام پر کردن آرشیوهای tar از محتوای سامانهی فایلبندی، برای تطابق با استاندارد قالب tar، بکاسلشها در مقصدهای پیوند نمادین با اسلش جایگزین میشوند.
gh-105895: افزودن
matchوcaseبه فهرست موضوعات پشتیبانیشده توسطhelp().gh-151378: رفع یک باگ در جمعآوریکنندهی دودویی در Tachyon که هنگام پروفایلگیری از نخی که در حالت خواب باقی مانده بود، باعث رشد کنترلنشدهی حافظه میشد. وصله از Maurycy Pawłowski-Wieroński.
gh-152079: رفع مشکل متد
datetime.datetime.fromisoformat()در پیادهسازی C که بخش زیر ثانیهی یک آفست UTC را که بخش ثانیهی کامل آن صفر است حذف میکرد، به طوری که با پیادهسازی خالص پایتون مطابقت داشته باشد.gh-152052: شتابدهندهی C مربوط به
jsonاکنون به درستی یک رشتهی خاتمهنیافته را برای یک گریز\uXXXXدر انتهای ورودی گزارش میکند.gh-152060: رفع مشکل متد
datetime.datetime.fromisoformat()که در پیادهسازی خالص پایتون برای برخی رشتههای نامعتبر به جایValueErrorخطایAssertionErrorایجاد میکرد، تا با پیادهسازی C مطابقت داشته باشد.gh-127802: متدهای منسوخشدهی کلاس
tkinter.Variableیعنیtrace_variable()،trace()،trace_vdelete()وtrace_vinfo()اکنون برای حذف در پایتون ۳.۱۷ برنامهریزی شدهاند.gh-126219: رفع فروپاشی در
tkinter.Tkهنگامی که className شامل یک نویسهی غیر BMP است و tkinter با Tcl/Tk 8.x ساخته شده است. چنین نامی اکنون با یکValueErrorرد میشود.gh-86165: اصلاح
imaplib.Time2Internaldate()برای استفاده از آفست منطقهی زمانی محلی برای مقادیرtime.struct_timeکه در آنهاtm_gmtoffرویNoneتنظیم شده است، همانطور که توسطdatetime.datetime.timetuple()برگردانده میشود. مشارکت از Xiao Yuan.gh-151814: رفع رشد کنترلنشدهی حافظه در
io.TextIOWrapperهنگام نوشتن مکرر یک رشتهی خالی.gh-151596: افزودن آرگومان جایگاهی گمشدهی
sizeبه پیادهسازی خالص پایتون ازio.TextIOBase.readline().gh-151640: رفع رقابت دادهای در
io.BytesIOدر ساختهای نخآزاد هنگامی که خواندن یا نگاه کردن کل بافر، یاgetvalue()، بافر داخلی را با نوشتنهای همزمان به اشتراک میگذارند.gh-151613: رفع روش دیگری که در آن نهانگاه فریم پروفایلگیر Tachyon میتوانست ردپاهای پشتهی ترکیبی ناممکنی را هنگام استفادهی مجدد از آدرسهای
_PyInterpreterFrameتولید کند، که این کار با اعتبارسنجی لنگرهای فریم نهانگاهشده با یک شمارندهی دنباله انجام شد.gh-148660: رفع فروپاشی در
collections.OrderedDict.copy()هنگامی که متد__eq__یک کلید یا متد زیرکلاس، دیکشنری را در طول عملیات کپی کردن تغییر دهد. اکنون مانند حالت پیمایش، خطایRuntimeErrorایجاد میکند.gh-151497: باز کردن یک آرشیو
tarfileدیگر سعی نمیکند هنگام درخواست یک عضو دستکاریشده یا ناقص با سرآیند توسعهیافتهی بسیار بزرگ (یک نام/پیوند طولانی GNU یا یک سرآیند pax)، یک بافر بسیار بزرگ را از پیش تخصیص دهد. سرآیند توسعهیافته اکنون در تکههای محدود خوانده میشود، بنابراین فیلد اندازهی آن دیگر نمیتواند باعث اتمام حافظه شود.gh-151416: اصلاح یک فروپاشی در
os.spawnv()وos.spawnve()هنگامی که متد__fspath__()یک آیتم argv فهرست argv را در طول تبدیل آرگومان تغییر میدهد. خطاهای تبدیل آرگومانos.spawnv()به غیر ازTypeError، مانندValueErrorبرای یک تهی تعبیهشده، دیگر با یکTypeErrorعام جایگزین نمیشوند.gh-150994: قابل حل کردن حاشیهنویسیهای نوع در ماژول خصوصی
_colorize.gh-150583: تنظیم درست سطح فشردهسازی پیشفرض در
compression.zstdهنگام ارسال یک دیکشنری پردازششده در طول فشردهسازی.gh-150641: رفع باگی که در آن
typing.evaluate_forward_ref()با قالبSTRINGمیتوانست نامهای داخلی مورد استفاده توسط ماشینهی حاشیهنویسی را نشت دهد.gh-149816: رفع یک وضعیت بالقوه استفاده پس از آزادزدایی در
pickle.dumps()در حالت نخآزاد هنگام سریالسازی فهرستها.gh-47005: اصلاح
urllib.request.AbstractHTTPHandler.do_open()برای دادن اولویت به سرآیندهای معمولی تنظیمشده از طریقadd_header()بر سرآیندهای هدایتنشده، که باget_header()وheader_items()سازگار است.gh-140729: رفع خطای انبارش (pickling) در ماژول
cProfileهنگام پروفایلگیری از اسکریپتی که ازmultiprocessing.Processبا متدهای شروعspawnوforkserverاستفاده میکند.gh-115634: رفع یک بنبست در
concurrent.futures.ProcessPoolExecutorهنگام استفاده ازmax_tasks_per_childکه از زمان معرفی این ویژگی در پایتون ۳.۱۱ وجود داشته است. این اجراکننده پس از خروج یک فرایند کارگر پس از رسیدن به حد تعیینشدهی وظایف، متوقف کردن زمانبندی وظایف در صف مانده شد. بر اساس اصلاحیهای که توسط تبریز محمد (Tabrez Mohammed) پیشنهاد شده است.gh-79638: عدم اجازه به هرگونه دسترسی در
urllib.robotparserاگر پروندهیrobots.txtبه دلیل خطاهای سرور یا شبکه غیرقابل دسترسی باشد.gh-105708: پذیرش پیشوند V بزرگ در آدرسهای IPvFuture در
urllib.parse.urlsplit().
آزمونها¶
gh-151626: اصلاح چندین آزمون در
test.test_inspect،test.test_import،test.test_importlib،test.test_py_compileوtest.test_compileallکه وقتی مجموعهآزمون با تنظیمPYTHONPYCACHEPREFIXاجرا میشد، با شکست مواجه میشدند. این آزمونها اکنون پیشوند pycache را در جایی که طرحبندی پیشفرض بایتکد__pycache__را فرض میکنند، خنثی میکنند.gh-151096: رفع مشکل شکست خوردن
test_embedوقتی سیپایتون با یک پیشوند اجرایی تفکیکشده (--exec-prefixمتفاوت از--prefix) پیکربندی میشود.
ساخت¶
gh-126877: اصلاح بررسی configure برای Tcl/Tk که در صورت گم شدن کتابخانهها ممکن بود بهاشتباه با کامپایلرهای بهینهساز موفق شود.
gh-153438: بهروزرسانی ابزارها و مستندات ساخت و نصب ویندوز برای استفاده از URL فعلی جهت دانلود
nuget.exe.gh-152870: رفع خطای کامپایل در افزونهی C ماژول
decimal(_decimal) هنگامی که باEXTRA_FUNCTIONALITYساخته میشود. تابعContext.apply()کمکی داخلی_applyرا با استفاده از امضای پیش از Argument-Clinic خود فراخوانی کرد؛ این فراخوانی اکنون از طریق تابع تولیدشدهی_implانجام میشود.gh-152769: فعالسازی ترامپولین perf profiler روی Alpine Linux با کتابخانهی musl C در
x86_64وaarch64. ترامپولین وابستگی به معماری دارد و به کتابخانهی C وابسته نیست، بنابراین همان ترامپولین مونتاژی که برای glibc استفاده میشود برای musl نیز مجدداً استفاده میشود.gh-152502: ماژول
cursesاکنونset_escdelay()،set_tabsize()و متغیرهایESCDELAYوTABSIZEرا با پروبهای قابلیت configure به جای ماکروی اختصاصی ncurses یعنیNCURSES_EXT_FUNCSشناسایی میکند، بنابراین هنگام ساخت در برابر سایر پیادهسازیهای curses مانند NetBSD curses که آنها را فراهم میکنند، در معرض دید قرار میگیرند.
Windows¶
مکاواس¶
IDLE¶
gh-82183: هنگامی که پوسته در حال اجرای کد است، استفاده از «Run... Customized» در حالی که گزینهی «Restart shell» انتخاب نشده باشد، اکنون به جای راهاندازی مجدد پوسته، گزارش میدهد که پوسته در حال اجرا است.
gh-83653: خالی کردن یک ورودی عدد صحیح در محاورهی تنظیمات IDLE، مانند «Auto squeeze min lines»، دیگر یک رشتهی خالی را به عنوان مقدار پیکربندی نامعتبر ذخیره نمیکند.
gh-65339: ذخیرهسازی پوستهی IDLE یا یک پنجرهی خروجی اکنون بهطور پیشفرض از پسوند
.txtاستفاده میکند و پروندههای متنی را پیش از پروندههای پایتون فهرست میکند، زیرا محتوای آنها سورس پایتون نیست.gh-80504: فیلد «In files:» در محاورهی Find in Files در IDLE اکنون همیشه شامل یک مسیر پوشهی کامل است، حتی برای یک ویرایشگر ذخیرهنشده یا پوسته. این مورد در خروجی grep نشان میدهد که کدام پوشه جستجو شده است.
gh-134300: پوشهی
idlelibرا به مسیر فرایند کاربر IDLE اضافه نکنید. کد کاربر که در IDLE اجرا میشود دیگر نمیتواند زیرماژولهایidlelibرا به عنوان ماژولهای سطح بالا ایمپورت کند، مانندimport help.gh-89360: رفع یک خرابی نادر در ویرایشگر IDLE هنگامی که پنجرهی تکمیل بسته میشود: حذف یک کلید میانبر برای دنبالهای که به رویداد مجازی متصل نیست، اکنون به جای ایجاد یک خطای
ValueErrorنادیده گرفته میشود.gh-71956: رفع گزینهی Replace All در محاورهی Replace ویرایشگر IDLE هنگامی که جهت جستجو «Up» و گزینهی «Wrap around» خاموش است: این قابلیت اکنون تمام موارد تطبیقیافته در بالای موقعیت فعلی را جایگزین میکند، نه فقط اولین مورد را.
gh-152728: انتقال توابع run.fix_scaling، editor.fixwordbreaks (به عنوان fix_word_breaks) و pyshell.fix_x11_paste به idlelib.util.
gh-66331: ویژگی پنجرهی
WM_CLASSدر پنجرههای IDLE را روی سیستم X11 رویIdleتنظیم کنید، تا مدیران پنجره به جای استفاده از مقدار پیشفرضToplevel، آنها را به درستی گروهبندی و برچسبگذاری کنند.gh-85320: IDLE اکنون پروندههای پیکربندی و پروندهی نقطههای توقف خود را با استفاده از UTF-8 به جای کدگذاری locale میخواند و مینویسد. این کار مانع از خراب شدن دادههای غیر اسکی (مانند مسیرهای غیر اسکی) میشود و پروندهها را بین محیطهای مختلف قابلحمل میسازد.
رابط C API¶
gh-152132: تابع
Py_RunMain()را اصلاح کنید تا هنگام اجرای یک اسکریپت، یک دستور یا REPL، به جای فراخوانیPy_Exit()، یک کد خروج برگرداند. وصله توسط Victor Stinner.gh-145633: توابع
PyFloat_Pack8()وPyFloat_Unpack*دیگر تضمینی برای موفقیت همیشگی در سیپایتون ندارند.gh-153300: تابع
PyConfig_Set()اکنون متغیرهای پیکربندی سراسری را نیز تنظیم میکند. برای مثال، دستورPyConfig_Set("inspect", value)اکنون متغیرPy_InspectFlagرا نیز تنظیم میکند. وصله توسط Victor Stinner.
پایتون ۳.۱۵.۰ بتا ۳¶
تاریخ انتشار: ۲۰۲۶-۰۶-۲۳
امنیت¶
gh-151544: پروندهی
Modules/Setup.localدیگر به عنوان نشانی برای کشف اینکه آیا پایتون در یک درخت سورس در حال اجرا است استفاده نمیشود، زیرا ممکن است بر نصبهای واقعی تأثیر بگذارد. پروندهیpybuilddir.txtاکنون تنها نشانگر اجرای پایتون در یک درخت سورس است.gh-151159: بهروزرسانی نصبکنندهی macOS برای استفاده از OpenSSL 3.5.7.
gh-151159: بهروزرسانی نصبکنندههای اندروید و iOS برای استفاده از OpenSSL 3.5.7.
gh-150599: رفع سرریز بافر پشتهی احتمالی در ماژول
bz2هنگامی که یک شیءbz2.BZ2Decompressorپس از یک خطای واگشایی دوباره استفاده میشود. واگشا پس از اینکه libbz2 گزارشی از خطا دهد، دیگر غیرقابلاستفاده میشود.gh-149835: تابع
shutil.move()اکنون هنگام بررسی اینکه آیا مقصد درون پوشهی منبع قرار دارد یا خیر، پیوندهای نمادین را از طریقos.path.realpath()حل میکند تا از دور زدن مبتنی بر پیوند نمادین آن محافظ جلوگیری شود.
هسته و توکارها (Core and Builtins)¶
gh-151905: رفع خطای مدیریت OOM در
PyFrame_GetBack()به منظور انتقال دادن استثناها به جای پنهان کردن آنها به عنوان None.gh-151722: به تعویق انداختن پیگیری GC برای
frozendictتا پایان ساخت. وصله توسط Donghee Na.gh-151546: رفع بررسی حد پشته در صورتی که پایتون به musl (مانند Alpine Linux) پیوند داده شده باشد. استفاده از اندازهی پشتهی تعیینشده توسط پیونددهنده برای محاسبهی حدود پشته. وصله توسط Victor Stinner.
gh-151510: رفع فروپاشی در
__lazy_import__()هنگامی که بدون آرگومان صریحglobalsو بدون قاب فعلی پایتون فراخوانی شود.gh-151461: رفع اجرای مستقیم پروندههای دارای کدگذاریهای منبع نامعتبر برای گزارش دادن خطای جستجو یا کدگشایی کُدک زیرین به جای پیام عام
SyntaxError: encoding problem. وصله توسط Bartosz Sławecki.gh-151218: توابع
PyConfig_Set()وsys.set_int_max_str_digits()اکنونsys.flagsرا جایگزین میکنند (یک شیء جدید ایجاد میکنند)، به جای اینکهsys.flagsرا در جا تغییر دهند. وصل توسط ویکتور استینر.gh-151297: رفع رفع ارجاع اشارهگر نامعتبر که ممکن است هنگام فراخوانی
PyObject_Realloc()با یک اشارهگر NULL در ساختهای نخآزاد یا با تنظیمPYTHONMALLOCرویmimallocرخ دهد.gh-151253: اگر
import encodings(اولین ایمپورت) در راهاندازی پایتون با شکست مواجه شود، پیکربندی مسیر پایتون را برونریزی کنید تا به کاربران در اشکالزدایی پیکربندیشان کمک کند. وصله توسط Victor Stinner.gh-151238: رفع فروپاشی هنگام کامپایل کردن یک افاسترینگ یا تیاسترینگ الحاقشده در صورتی که خطایی هنگام پردازش یکی از بخشهای آن رخ دهد.
gh-151112: رفع فروپاشی در کامپایلر که ممکن است هنگام اتمام حافظه رخ دهد.
gh-151126: رفع فروپاشی، زمانی که هیچ حافظهای روی دستگاه باقی نمانده باشد، که در این موارد رخ داده است: کامپایل کد، ماژول
_interpchannels، تابع_winapi.CreateProcess().اکنون این مکانها خطاهای مناسب
MemoryErrorرا بالا میآورند.gh-150902: اعمال بهینهسازی موجود PyCriticalSection (قفل متقابل منفرد) روی PyCriticalSection2: جلوگیری از به دست آوردن همان قفلهایی که CS فعلی قبلاً به دست آورده است.
gh-151065: رفع نشت حافظه هنگام استفاده از تخصیصدهندهی حافظه mimalloc.
gh-150988: رفع نشت ارجاع در
OSErrorهنگامی که ویژگیها قبل ازsuper().__init__()تنظیم میشوند.gh-150723: رفع زمانسنجهای jitdump ابزار perf در macOS. رویدادها با استفاده از
CLOCK_MONOTONICزمانسنجی میشدند، اما پروفایلگیرهای macOS نمونههای خود را باmach_absolute_time()زمانسنجی میکنند. این عدم تطابق مانع از همراستا شدن نگاشتهای کد JIT با نمونهها شد، بنابراین هیچ قاب پایتونی نتوانست حل شود.gh-150723: رفع شناسهی نامعتبر نخهای jitdump در macOS. فیلد
thread_idرکوردJR_CODE_LOADبه عنوان یک مقدار ۶۴ بیتی به جای مقدار ۳۲ بیتی مورد نیاز قالب jitdump نوشته شده بود، که هر فیلد بعدی را جابهجا کرد و مانع از حل قابهای پایتون توسط پروفایلگیرها شد.gh-150700: رفع یک
SystemErrorهنگام کامپایل کردن یک درک محدودهی کلاس (class-scope comprehension) حاوی یکlambdaکه به__class__،__classdict__یا__conditional_annotations__ارجاع میدهد. وصله توسط Bartosz Sławecki.gh-150633: رفع پذیرش نامهای ماژول دارای بایتهای تهی تعبیهشده توسط واردکنندهی فریزشده (frozen importer)، که باعث میشد نهانگاه
sys.modulesرا دور بزند و شیءهای ماژول تکراری ایجاد کند.gh-148613: رفع یک رقابت (data race) در ساخت نخآزاد (free-threaded build) بین
gc.set_threshold()و زمانبندی زبالهروبی در طول تخصیص شیء (object).gh-150207: رفع یک فروپاشی (crash) هنگامی که تخصیص حافظه در طول مقداردهی اولیه توکنساز (tokenizer) با خطا مواجه میشود. اکنون بهجای آن، یک
MemoryErrorمناسب بالا آورده میشود.gh-149805: رفع خطای
SystemErrorهنگام کامپایل کردن حاشیهنویسی (annotation) کلاس__classdict__. این مشکل توسط OSS-Fuzz در #512907042 پیدا شد.gh-149321: عدم پشتیبانی از
noneبه عنوان حالت (mode) ایمپورت تنبل.
کتابخانه¶
gh-75666: رفع نشت ارجاع (reference leak) در
tkinter: دستورات Tcl ایجاد شده برای کالبکهای رویداد (event callbacks)، اکنون هنگام جایگزینی یا لغو یک اتصال (binding) حذف میشوند.gh-151770: اصلاح متد
datetime.datetime.fromisoformat()به طوری که برای ماه خارج از محدوده همراه با زمان24:00به جایAssertionErrorخطایValueErrorرا ایجاد کند.gh-151665: تابع
inspect.signature()اکنون روی ارزیابهای تنبلِ مستعارهای نوع (type aliases) و پارامترهای نوع (type parameters) بهرانجام کار میکند و دیگر خطایValueErrorصادر نمیکند.gh-151695: رفع خطای استفاده پس از آزادسازی (use-after-free) در ماژول
curses. کدگذاری (encoding) صفحهی اولیه که توسطcurses.unctrl()وcurses.ungetch()برای کدگذاری نویسههای غیر اسکی (non-ASCII) استفاده میشود، اکنون به جای یک اشارهگر قرضگرفتهشده به یک شیء پنجره که ممکن است پاکسازی شود، به عنوان یک نسخهی خصوصی نگه داشته میشود.gh-151436: رفع ردپاهای پشتهی مایل در پروفایلگیر (profiler) Tachyon هنگام فعال بودن نهانگاه (caching) و زمان پروفایلگیری از تولیدگرها (generators) و همروالها (coroutines)، با بهروزرسانی
tstate->last_profiled_frameدر هر محل حذف قاب (frame). این مسئله منجر به حذف کامل برخی از فراخوانندگان شد. وصله (patch) توسط Maurycy Pawłowski-Wieroński.gh-151426: رفع ردپاهای پشته غیرممکن (تقاطع فراخوانندگان و فراخوانشوندگان، موارد یتیم و خطوط نادرست) در پروفایلگیر (profiler) Tachyon هنگام نهانگاهسازی قابها (frames)، با گرفتن تصویر لحظهای (snapshot) از تکههای پشته پیش از پیمایش زنجیرهی قاب در صورت عدم حضور در نهانگاه (cache miss). وصله توسط Maurycy Pawłowski-Wieroński.
gh-151403: رفع یک فروپاشی (crash) در
subprocess.Popen(و_posixsubprocess.fork_exec) زمانی که متد__fspath__()مربوط به یک آیتمargvبهطور همزمان دنبالهیargsدر حال تبدیل را تغییر میدهد.gh-151390: رنگی کردن
matchدر REPL وقتی پس از آن یک عملگر (operator) یکعملوندی (unary)+یا-میآید. وصله (patch) توسط Bartosz Sławecki.gh-151126: رفع فروپاشی در اثر تنظیمنشدن
MemoryErrorهنگام شکست تخصیص حافظه درctypes.get_errno().gh-151337: جلوگیری از نشت حافظهی احتمالی در
tkinter.cروی ویندوز.gh-151126: رفع یک فروپاشی هنگامی که خطای
MemoryErrorدرos._path_splitroot()به درستی تنظیم نشده بود.gh-149671: بازیابی سازگاری با پروندههای
-nspkg.pthمربوط به setuptools در ماژولsite. تزریق متغیرsitedirدر قاب (frame) که کد pth را اجرا میکند. وصله توسط Victor Stinner.gh-151295: رفع یک فروپاشی (استفاده پس از آزادسازی) در
bytes.join()وbytearray.join()که ممکن است رخ دهد اگر متد__buffer__()یک آیتم، دنبالهی در حال الحاق را به طور همزمان تغییر دهد. این تغییر اکنون به عنوان یکRuntimeErrorگزارش میشود.gh-109940: رفع فعالسازی
venvدر ویندوز داخلcmd.exeبه منظور احترام بهVIRTUAL_ENV_DISABLE_PROMPT.gh-150771: رفع پیامهای
emailایجاد شده با مجموعه نویسههایshift_jisیاeuc-jp. متدset_content()اکنون بار (payload) را با استفاده از مجموعه نویسههای خروجی (iso-2022-jp) ذخیره میکند؛ بنابراین چاپ کردن پیام دیگر خطایUnicodeEncodeErrorصادر نمیکند.gh-151039: رفع یک فروپاشی هنگامی که انواع (types) ایستا در
datetimeبیشتر از ماژول_datetimeعمر میکنند.gh-151021: اصلاح
mmap.mmap.find()وrfind()به گونهای که هنگام جستوجو برای یک زیردنبالهی خالی با موقعیت شروعی فراتر از انتهای نگاشت، مقدار-1را برگردانند.gh-62825: کدگذاریهای "KS_C_5601-1987"، "KS X 1001" و غیره اکنون به جای "EUC-KR"، نامهای مستعاری برای "CP949" هستند.
gh-150913: اصلاح انتساب اسلایس در
sqlite3.Blobبه طوری که به ترتیب برای عدم تطابقهای نوع و اندازه، خطاهایTypeErrorوIndexErrorرا بالا بیاورد، حتی زمانی که اسلایس هدف خالی است.gh-143008: اصلاح شرایط رقابت هنگام مقداردهی اولیهی مجدد یک شیء
io.TextIOWrapper.gh-150662: اصلاح جمعآورندهی
--geckoدرprofiling.samplingکه تمام نمونهها را در حافظه نگه میداشت. این جمعآورنده اکنون دادههای نمونه و نشانگر را در پروندههای موقت مینویسد و دوباره آنها را میخواند و در نهایت پروندهی خروجی را در انتها میسازد. وصله توسط پابلو گالیندو (Pablo Galindo) و موریسی پاوْوفسکی-ویروئنسکی (Maurycy Pawłowski-Wieroński).gh-150750: اصلاح یک شرط رقابت در
collections.deque.index()با استفاده از رشتهسازی آزاد (free-threading).gh-148932: اصلاح
profiling.samplingدر محیطهای مجازی ویندوز برای حل کردن شناسه فرایند (PID) واقعی پایتون از یک شیم (shim) محیط مجازی.gh-149816: اصلاح شرط رقابت در
ssl.SSLContext.sni_callbackgh-53144: بستهی
emailاکنون از تمام نامهای مستعار کُدکهای پایتون پشتیبانی میکند و از نامهای MIME/IANA برای تمام مجموعههای نویسهی ثبتشده در IANA استفاده میکند.gh-149891: افزودن پشتیبانی از نامهای مستعار کدگذاری بیشتر که به طور رسمی در IANA ثبت شدهاند.
gh-149473: فراخوانی
os.environ.clear()اکنون رویداد حسابرسیos._clearenvرا صادر میکند. وصله توسط ویکتور استینر (Victor Stinner).gh-148954: اصلاح آسیبپذیری تزریق XML در
xmlrpc.client.dumps()که در آن مقادیرmethodnameپیش از درونیابی در بدنهی XML به طور ایمن پردازش (escape) نمیشدند.gh-143988: اصلاح خرابیها در
socket.socket.sendmsg()وsocket.socket.recvmsg_into()که ممکن است در صورت تغییر همزمان دنبالههای بافر رخ دهند.gh-120665: اصلاح مشکلی که در آن بارگذارهای
unittestزیرکلاسهای مشتقشده ازunittest.TestCaseرا که کلاسهای پایه انتزاعی نیز هستند (و نمیتوان آنها را نمونهسازی کرد) بارگذاری و نمونهسازی میکردند.gh-91099: متد
imaplib.IMAP4.login()اکنون به جایbytes، استثناهایی را باstrبالا میآورد. وصله توسط فلوریان بست (Florian Best).gh-101267: هنگامی که یک فرایند کارگر به طور غیرمنتظره خاتمه مییابد،
concurrent.futures.ProcessPoolExecutorاکنون به جای به اشتراک گذاشتن یک نمونهی واحد در میان همه، یک استثنای جداگانهیBrokenProcessPoolرا روی هر آیندهی (future) معلق تنظیم میکند. اشتراکگذاری یک استثنا باعث ایجاد ردگیریهای معیوب میشد: هر فراخوانیFuture.result()همان شیء را دوباره بالا میآورد و کپی دیگری از ردگیری را به آن اضافه میکرد.
مستندات¶
gh-86726: گسترش چشمگیر مستندات
tkinterبرای پوشش کامل API عمومی بسته و زیرماژولهای آن. توضیحات به جای Tcl/Tk بیشتر بر اساس پایتون جهتدهی شدهاند، همراه با انواع دادهی بازگشتی اصلاحشده و اطلاعاتversionadded/versionchanged.gh-150319: انواع دادهی عام (generic) کتابخانهی استاندارد و داخلی اکنون معنای پارامترهای نوع خود را مستند میکنند.
gh-109503: اصلاح مستندات
shutil.move()در مورد نحوهی استفاده ازos.rename()، از آنجا که ممکن است جابهجایی غیراتمی حتی اگر پروندهها روی یک سامانه فایلبندی باشند استفاده شود. وصله توسط فانگ لی (Fang Li)
آزمونها¶
gh-151130: افزودن آزمونهای بیشتر برای C API مربوط به
PyWeakref_*.gh-150966: از پایاندهی زودهنگام اهداف آزمون پروفایلگیر زنده که با خطا مواجه شدهاند جلوگیری کنید، که این امر ادعاهای موجود در stderr را در بیلدباتهای ASAN ناپایدار میکرد.
gh-148853: رفع خرابی آزمونها در FreeBSD در تابع in_systemd_nspawn_sync_suppressed() از test.support به دلیل پوشهی غیرقابلخواندن /run.
ساخت¶
gh-151163: بهروزرسانی ساخت اندروید برای شامل شدن نسخهی ۳.۵۳.۲ SQLite.
Windows¶
مکاواس¶
gh-151163: بهروزرسانی نصبکنندهی macOS برای شامل شدن نسخهی ۳.۵۳.۲ SQLite.
IDLE¶
bpo-6699: در صورت بازنویسی شدن پرونده هنگام ذخیرهسازی، به کاربر هشدار دهید.
رابط C API¶
gh-141510: افزودن
frozendictبه مسیرهای سریعPyMapping_GetOptionalItem()،PyMapping_Keys()،PyMapping_Values()وPyMapping_Items().gh-123619: تابع
PyUnstable_Object_EnableDeferredRefcount()اکنون اگر شیء توسط جمعآوریکنندهی زباله ردیابی نشود (یعنی اگرgc.is_tracked()نادرست باشد) مقدار0را برمیگرداند. وصله توسط Victor Stinner.gh-149044: بهبود پیام خطا هنگام مشخص کردن کلاسهای پایهی غیرنوعی در
Py_tp_bases،Py_tp_baseو آرگومان bases درPyType_FromMetaclass()و سایر توابعPyType_From*.gh-150907: رفع پروندهی سرآیند
dynamic_annotations.hهنگام ساخت با C++ و Valgrind: افزودن محدودهیextern "C++" scopeبرای الگو (template) در C++. وصله توسط Victor Stinner.
نسخهی بتا ۲ پایتون ۳.۱۵.۰¶
تاریخ انتشار: ۲۰۲۶-۰۶-۰۲
امنیت¶
gh-149698: بهروزرسانی libexpat بستهبندیشده به نسخهی ۲.۸.۱ برای رفع آسیبپذیری CVE 2026-45186.
gh-87451: تابع مستندنشدهی
ftpcpدر ماژولftplibدیگر به طور پیشفرض به مقدار نشانی IPv4 بازگرداندهشده از سرور مبدأ در پاسخ به دستورPASVاعتماد نمیکند، و با این کار رفع مشکل CVE 2021-4189 تکمیل میشود. همانندftplib.FTP، رفتار قبلی را میتوان با تنظیم ویژگی (attribute)trust_server_pasv_ipv4_addressروی نمونهیftplib.FTPمبدأ بهTrueدوباره فعال کرد. با تشکر از Qi Deng در Aurascape AI برای گزارش این مورد.gh-149474: رفع مشکل نویسندهی دودویی (binary writer) در
profiling.samplingکه هنگام ایجاد پروندهی خروجی، حسابرسی (PEP 578) را فعال نمیکرد. نویسنده و خواننده اکنون هر شیء شبهمسیر را میپذیرند. وصله توسط Maurycy Pawłowski-Wieroński.gh-149486: تابع
tarfile.data_filter()اکنون اهداف پیوند را با استفاده از همان مقدار نرمالشدهای که روی دیسک نوشته میشود اعتبارسنجی میکند، جداکنندههای پایانی را هنگام حل پوشهی پیوند نمادین از نام عضو حذف میکند، و اعضای پیوندی که جایگزین خود پوشهی مقصد میشوند را رد میکند. این کار چندین روش دورزدن مسیرگذر (path-traversal) مربوط به فیلتر استخراجdataرا میبندد.gh-149079: رفع یک انکار سرویس بالقوه در
unicodedata.normalize(). مرحلهی مرتبسازی کانونیکال در نرمالسازی یونیکد از یک مرتبسازی درجی با زمان درجه دوم برای مرتبسازی مجدد نویسههای ترکیبی استفاده میکرد که میتوانست با ورودی دستکاریشده حاوی تعداد زیادی نویسهی ترکیبی در ترتیبی غیرکانونیکال مورد سوءاستفاده قرار گیرد. این روش با یک مرتبسازی شمایشی با زمان خطی برای اجراهای طولانی جایگزین شد.gh-149018: بهبود حفاظت در برابر حملات سیل هش XML در
xml.parsers.expatوxml.etree.ElementTreeزمانی که پایتون با libExpat 2.8.0 یا نسخههای بعد از آن کامپایلشده است.
هسته و توکارها (Core and Builtins)¶
gh-150374: رفع رهاسازی مضاعف قفل ایمپورت هنگام خطاهای تحقق ایمپورت تنبل (lazy import).
gh-149156: رفع فروپاشی (crash) مقطعی پس از
os.fork()هنگامی که پروفایلگیری ترامپولین perf فعال است و فرزند از طریق قابهای (frames) ترامپولین به ارثرسیده از فرایند والد بازمیگردد.gh-149449: رفع فروپاشی (crash) از نوع استفاده پس از آزادسازی (use-after-free) هنگامی که ماژول
unicodedataازsys.modulesحذف شده و بین فراخوانیهایی که کاراکترهای گریز\N{...}را رمزگشایی میکنند یا از هندلر خطای کُدکnamereplaceاستفاده میکنند، زبالهروبی (garbage collection) شود.gh-150107:
asyncio: متدهای حلقه رویدادsendfile()وsock_sendfile()اکنون اگر file دارای متدseek()باشد، حتی اگر offset برابر با0(مقدار پیشفرض) باشد،file.seek(offset)را فراخوانی میکنند.gh-150146: رفع فروپاشی (crash) در جایگزینی متغیر نوع (type variable) پیچیده.
from typing import TypeVar; memoryview[TypeVar("")][*typing.Mapping[..., ...]]قبلاً به دلیل نبود بررسیNULLروی فراخوانی تابع C مربوط به_unpack_argsبا خطا مواجه میشد.gh-148587: ویژگی
sys.lazy_modulesاکنون به جای دیکشنری، یک مجموعه (set) است، همانطور که ابتدا در PEP 810 مشخص شده بود.gh-150042: رفع نشت ارجاع (refleak) در queue.SimpleQueue.put در صورت شکست تخصیص حافظه.
gh-149590: رفع فروپاشی (crash) هنگام ایمپورت شدن بیش از یکبار faulthandler.
gh-149816: رفع یک مشکل شرایط رقابت (race condition) در
_PyBytes_FromListدر حالت چندنخی آزاد (free-threading mode).gh-149816: رفع یک شرایط رقابت (race condition) در
memoryviewبا قابلیت چندنخی آزاد (free-threading).gh-149807: رفع
hash(frozendict): محاسبهی صحیح هش هر جفت(key, value). وصله (patch) توسط Victor Stinner.gh-149738:
sqlite3: عدم اجازه برای حذف ویژگیهایrow_factoryوtext_factoryیک اتصال به منظور جلوگیری از فروپاشی (crash) در یک پرسوجو.gh-139808: افزودن محافظتهای شاخه برای AArch64 (BTI/PAC) در کد اسمبلی مورد استفادهی
-X perf_jit(یکپارچهسازی با پروفایلگیر perf لینوکس).gh-149676: رفع هش
frozendict | frozendict.gh-148829: اشیاء
sentinelاکنون از یک آرگومانrepr=پشتیبانی میکنند و ویژگی__module__آنها قابل نوشتن است.gh-149642: اجازه دادن به ایمپورتها درون فراخوانیهای
exec()در توابع تحتPYTHON_LAZY_IMPORTS=all.gh-144957: رفع ایمپورتهای تنبل
fromبرای ویژگیهای ماژول که توسط__getattr__در سطح ماژول فراهم شدهاند.gh-149459: رفع فروپاشی (crash) در بهینهساز کامپایلر درجا (JIT) هنگامی که یک نگهبان (guard) تخصصیشدهی
LOAD_SPECIALپس از درج ورودی پشتهی مصنوعیNULL، بهینهسازیزدایی (deoptimized) شد.gh-148450: رفع
abc.register()به طوری که برچسبهای نسخهی نوع (type version tags) را برای کلاسهای ثبتشده نامعتبر کند.
کتابخانه¶
gh-150685: بهروزرسانی pip همراه به نسخهی 26.1.2
gh-150228: کلاس جدید
site.StartupStateبه فراخوانها اجازه میدهد تا پیش از اجرای هرگونه کد راهاندازی، فایلهای پیکربندی راهاندازی PEP 829 را در چندین پوشهی site بهطور دستهای پردازش کنند؛ این کار با متدهای عمومیaddsitedir()،addusersitepackages()،addsitepackages()وprocess()انجام میشود. امضای تابعsite.addsitedir()نسبت به پایتون 3.14 تغییری نکرده است. آرگومانdefer_processing_start_filesو تابعprocess_startup_files()که پیشتر در چرخهی 3.15 اضافه شده بودند، حذف شدند؛ بهجای آنها از کلاسsite.StartupStateاستفاده کنید.gh-150406: رفع یک فروپاشی احتمالی در هنگام مقداردهی اولیه ماژول
socketزمانی که سیستم روی پلتفرمهای بدونgethostbynameبازورودپذیر با کمبود حافظه مواجه میشود.gh-150372:
readline: رفع فروپاشی احتمالی در طول تکمیل تب (tab completion) که به دلیل خطای کمبود حافظه در طول مقداردهی اولیهی ماژول ایجاد میشود.gh-150157: رفع فروپاشی در ساختهای نخآزاد (free-threaded) که هنگام ترشیکردن (pickle) اشیاء نامی فاقد ویژگی
__module__در حالی کهsys.modulesبهطور همزمان در حال تغییر است، رخ میدهد.gh-150175: رفع شرایط رقابت (race condition) در
unittest.mock.ThreadingMockکه در آن فراخوانیهای همزمان ممکن است به دلیل نبود قفل در_increment_mock_call، افزایههایcall_countو سایر ویژگیها را از دست بدهند.gh-84353: حفظ نامپروندههای با کدگذاری غیر UTF-8 هنگام الحاق به یک
zipfile.ZipFile. پیشتر، نامهای غیر ASCII ذخیرهشده در یک کدگذاری قدیمی (بدون تنظیم بیت پرچم UTF-8) ممکن بود هنگام بازنویسی فهرست مرکزی مخدوش شوند: آنها به عنوان cp437 رمزگشایی شده و سپس به عنوان UTF-8 مجدداً ذخیره میشدند.gh-149189: بازگردانی تغییرات پیشفرضهای
pprint. وصلهای از Hugo van Kemenade.gh-149995: بهروزرسانی رشتههای مستند (docstrings) مختلف در
typing.gh-88726: بستهی
emailاکنون از نامهای استاندارد مجموعهنویسههای MIME یعنی «gb2312» و «big5» به جای نامهای غیر استاندارد «eucgb2312_cn» و «big5_tw» استفاده میکند.gh-149571: رفع پیادهسازی C برای متد
xml.etree.ElementTree.Element.itertext(): این متد دیگر برای کامنتها و دستورالعملهای پردازش، متنی تولید نمیکند.gh-149921: رفع نشتیهای ارجاع در مسیرهای خطای ماژولهای توسعهای
_interpchannelsو_interpqueues.gh-142349: افزودن
lazyبه فهرست موضوعات پشتیبانیشده توسطhelp().gh-149819: رفع رگرسیون در
site.addsitedir()که در آن فایلهای.pthدیگر در زیرفرایندهای پایتون پردازش نمیشدند. این اتفاق به این دلیل رخ داد کهsite.main()متغیرknown_pathsرا با ورودیهای به ارثرسیده از فرایند والد مقداردهی اولیه کرد و باعث شدaddsitedirپردازش فایلهای.pthرا نادیده بگیرد.gh-149816: رفع شرایط رقابت (race condition) در متد
_random.Random.__init__در حالت نخآزاد (free-threading).gh-149801: افزودن نامها و نامهای مستعار ثبتشده در IANA که دارای صفرهای پیشفرض قبل از عدد هستند (مانند IBM00858، CP00858، IBM01140، CP01140) برای کدکهای مربوطه.
gh-149718: ادغام فریمهای پشتهی یکسان متوالی در Tachyon، به طوری که جمعکنندههای تجمیعی (pstats، collapsed، flamegraph، gecko) یک جمعآوری دریافت میکنند. نرخ نمونهبرداری ۳ برابر بهبود مییابد و نرخ خطا و نرخ ازدسترفتگی ۷۰ درصد کاهش مییابد. وصلهای از Maurycy Pawłowski-Wieroński.
gh-149701: رفع کد بازگشتی نادرست از Lib/venv/bin/activate در صورت غیرفعال بودن درهمسازی (hashing)
gh-149504: رفع
site.addsitedir()برای اجازه دادن به فراخوانیهای بازورودپذیر از درون فایلهای راهاندازی. پیشتر، یک فایل.pthحاوی یک سطرimportکهsite.addsitedir()را فراخوانی میکرد (یا یک نقطهی ورودی.startکه همین کار را انجام میداد) میتوانست در حین مقداردهی اولیهی سایت با خطایRuntimeError: dictionary changed size during iterationدچار فروپاشی شود و ابزارهایی مانندuv run --withرا مختل کند.gh-149584: رفع سربار بیش از حد در پروفایلگیر Tachyon هنگام بازرسی یک فرایند راه دور با اجتناب از اسکنهای مکرر نهانگاه صفحهی راه دور، دستهبندی خواندنهای پیشبینیشدهی راه دور و استفادهی مجدد از اشیاء نتیجهی پروفایلگیر کششده. وصلهای از Pablo Galindo و Maurycy Pawłowski-Wieroński.
gh-139489: تابع
xml.is_valid_text()را بهxml.__all__اضافه کنید.gh-149614: رفع یک رگرسیون که توانایی ایجاد کپی عمیق از نمونههای
argparse.ArgumentParserرا مختل کرده بود.gh-112821: در REPL، تکمیل خودکار ممکن است کد دلخواهی را در getter یک توصیفگر اجرا کند. اگر آن getter یک استثنا ایجاد کند، تکمیل خودکار در ارائه هرگونه گزینه برای کل شیء شکست میخورد. تکمیل خودکار اکنون برای این اشیاء به شکلی که انتظار میرود کار میکند.
gh-149534: رفع ادغام
collections.defaultdictوfrozendict.gh-149388: همتوان کردن بستن
asyncio.windows_utils.PipeHandle.gh-149489: رفع سریالسازی
ElementTreeبه HTML. محتوای کامنتها، دستورات پردازش و المانهای "xmp"، "iframe"، "noembed"، "noframes" و "plaintext" دیگر فرار (escape) داده نمیشوند. المان "plaintext" دیگر تگ پایانی ندارد. افزودن پشتیبانی از ویژگیهای خالی (با مقدارNone).gh-149056: رفع عدم انتقال آرگومان array_hook توسط
json.load()بهjson.loads(). وصله توسط توماس کووال스키 (Thomas Kowalski).gh-149046: ماژول
io: رفع سریالسازیio.StringIO: دیگر متدstr(obj)روی زیرکلاسهایstrفراخوانی نمیشود. وصله توسط توماس کووال스키 (Thomas Kowalski).gh-148441: ماژول
xml.parsers.expat: جلوگیری از فروپاشی درCharacterDataHandler()هنگامی که اندازه دادههای نویسه ازاندازهی بافرپارسر تجاوز میکند.gh-146452: رفع خطای قطعی حافظه (segfault) در ماژول
pickleهنگام پیکل کردن یک دیکشنری که به طور همزمان توسط یک نخ دیگر در ساخت نخآزاد تغییر یافته است.gh-86533: تابع
os.makedirs()و متدpathlib.Path.mkdir()اکنون دارای یک پارامتر parent_mode برای تعیین حالت دایرکتوریهای میانی به هنگام ایجاد دایرکتوریهای والد هستند. این امکان را فراهم میکند که رفتارos.makedirs()با پایتون ۳.۶ و نسخههای قبلی مطابقت داشته باشد.gh-134261: zip: در ساختهای قابل بازتولید، ZipFile هنگام نوشتن تاریخزمانهای پرونده برای جلوگیری از سرریز رو به پایین (underflow)، به جای زمان محلی از UTC استفاده میکند.
gh-133998: رفع استثنای
struct.errorهنگام ایجاد یک پرونده باgzip.GzipFileیا فشردهسازی دادهها باgzip.compress()در صورتی که زمان سیستم خارج از بازهی 00:00:00 UTC، اول ژانویه ۱۹۷۰ تا 06:28:15 UTC، هفتم فوریه ۲۱۰۶ باشد، یا آرگومان mtime که به طور صریح ارسال شده است خارج از بازهی0تا2**32-1باشد.gh-128110: رفع باگ در تجزیه سرآیندهای آدرس ماژول
emailکه میتواند هنگام استفاده از یک سیاست ایمیل مدرن، منجر به وجود فضاهای اضافی در متن رمزگشاییشده شود. فضای خالی بین جفت کلمات کدگذاریشدهی RFC 2047 مجاور، طبق بخش 6.2 (و مطابق با تجزیه موجود سرآیندهای ساختاریافته مانند Subject) اکنون نادیده گرفته میشود.gh-107398: رفع استثنای حالت جریان (stream mode) ماژول
tarfileهنگام پردازش پرونده با فیلد اضافی gzip.gh-121109: رفع مشکل کارایی ماژول
tarfileهنگام خواندن آرشیوها در حالت جریانی (streaming mode) (به عنوان مثالr|*).bpo-45509: سرآیندهای Gzip اکنون از نظر خراب بودن فیلدهای NAME، COMMENT و HCRC بررسی میشوند.
آزمونها¶
gh-150387: رفع توقف ناخواسته در
test.test_profiling.test_sampling_profiler.test_live_collector_ui.TestLiveModeErrors.test_run_failed_script_liveروی باتهای ساخت (buildbots) کند. این آزمون اکنون همیشه یک کلیدqنهایی را در صف قرار میدهد تا حلقهی رابط کاربری متنی (TUI) زنده حتی زمانی که پروفایلگیر نمونههای کافی برای ورود به حلقهی ورودی پس از اتمام جمعآوری میکند، خارج شود.gh-149776: رفع test_socket در هسته لینوکس ۷.۱ و جدیدتر: اگر آزمونهای UDP Lite پشتیبانی نمیشوند، از آنها رد شوید. وصله توسط ویکتور استینر (Victor Stinner).
ساخت¶
gh-148294: اصلاح استفاده از
AC_PATH_TOOLدرconfigure.acبرای اجازه دادن به پیدا شدن یک کامپایلر C++ رویPATH.gh-148260: در لینوکس هنگامی که پایتون به کتابخانهی C کتابخانهی musl لینک شده است، به جای مقدار پیشفرض musl که ۱۲۸ کیبایت است، از اندازهی پشتهی نخ حداقل ۱ مگابایت استفاده کنید. پچ توسط Victor Stinner.
Windows¶
gh-149786: خطایابندههای محیط مجازی را در ساختهای نخآزاد ویندوز اصلاح میکند.
gh-124111: ساختهای ویندوز برای استفاده از Tcl/Tk 9.0.3 بهروزرسانی شدند.
gh-138489: توزیعهای ویندوز اکنون شامل یک پروندهی
build-details.jsonهستند (نگاه کنید به PEP 739). نصبکنندهی قدیمی آن را نصب نمیکند، اما سایر توزیعها از python.org و تمام پیکربندیهای ازپیشتعیینشده در اسکریپتPC\layoutشامل آن خواهند بود.gh-149029: بهروزرسانی نصبکنندهی ویندوز برای عرضه به همراه SQLite 3.53.1.
مکاواس¶
gh-150644: هنگامی که گزارشگیری سیستم فعال است (با
config.use_system_logger)، پیامها اکنون به عنوان عمومی برچسبگذاری میشوند. این امر به گزارشگیر سیستم macOS 26 اجازه میدهد تا پیامها را بدون پیکربندی خاصی مشاهده کند.gh-149029: بهروزرسانی نصبکنندهی macOS برای عرضه به همراه نسخهی SQLite 3.53.1.
Tools/Demos¶
gh-150258: بهروزرسانی راهنمای ابزار (tooltip) روی نمودار شعلهی Tachyon برای نمایش درصدهای مطلق و نسبی.
رابط C API¶
gh-149725: افزودن
PySentinel_CheckExact()برای آزمونهای نوعsentinelدقیق به منظور همراهی باPySentinel_Check()موجود.gh-145235: توابع
PyDict_AddWatcher()،PyDict_ClearWatcher()،PyDict_Watch()وPyDict_Unwatch()را در ساخت نخبندی آزاد نخایمن ساخت.
Python 3.15.0 beta 1¶
Release date: 2026-05-07
امنیت¶
gh-149254: بهروزرسانی نصبکنندهی اندروید و iOS برای استفاده از OpenSSL 3.5.6.
gh-149017: بهروزرسانی libexpat بستهبندیشده به نسخهی 2.8.0.
gh-148252: رفع جدول رشته و بررسیهای کران رکورد نمونه در
_remote_debuggingهنگام کدگشایی ورودیهای خاص.pybدر ساختهای ۳۲ بیتی. پچ توسط Maurycy Pawłowski-Wieroński.gh-90309: کدگذاری Base64 مقادیر هنگام تعبیهی کوکیها در جاوا اسکریپت با استفاده از متد
http.cookies.BaseCookie.js_output()برای جلوگیری از تزریق و فرار (escaping).gh-148808: افزودن بررسی کران بافر هنگام استفاده از پارامتر
nbytesباasyncio.AbstractEventLoop.sock_recvfrom_into(). فقط برای ویندوز وasyncio.ProactorEventLoopمرتبط است.gh-148395: رفع یک اشارهگر ورودی معلق در
lzma.LZMADecompressor،bz2.BZ2Decompressorوzlib._ZlibDecompressorداخلی هنگامی که تخصیص حافظه باMemoryErrorبا شکست مواجه میشود؛ این امر میتواند به یک فراخوانی بعدیdecompress()اجازه دهد تا از طریق یک اشارهگر کهنه به بافر آزادشدهی فراخواننده بخواند یا بنویسد.gh-148252: رفع محاسبهی عمق پشته در
_remote_debuggingهنگام کدگشایی ورودیهای خاص.pybدر ساختهای ۳۲ بیتی. مسئلهی اصلی توسط Tristan Madani (@TristanInSec در GitHub) شناسایی و تشخیص داده شد.gh-148178: مقاومسازی
_remote_debuggingبا اعتبارسنجی جداول آفست دیباگ راه دور قبل از استفاده از آنها برای تعیین اندازهی خواندن حافظه یا تفسیر پوستههای راه دور.gh-148169: یک دور زدن (bypass) در ماژول
webbrowserبه نشانیهای وب با پیشوند%actionاجازه میداد از بررسی ایمنی پیشوند خط تیره عبور کنند.gh-146581: رفع آسیبپذیری در
shutil.unpack_archive()برای پروندههای ZIP در سیستمعامل ویندوز؛ این آسیبپذیری اجازه میداد اگر وصل (patch) موجود در آرشیو حاوی پیشوند درایو ویندوز باشد، پروندهها در خارج از درخت مقصد نوشته شوند. اکنون اینگونه مسیرهای نامعتبر نادیده گرفته خواهند شد. پروندههایی که حاوی نام «..» هستند (مانند «foo..bar») دیگر نادیده گرفته نمیشوند.gh-137586: رفع آسیبپذیری تزریق PATH در ماژول
webbrowserروی مکاواس (macOS) که در آنosascriptبدون مسیر مطلق فراخوانی میشد. کلاس جدیدMacOSمستقیماً از/usr/bin/openاستفاده میکند و وابستگی بهosascriptرا بهطور کامل از بین میبرد.gh-146333: رفع پسگرد درجه دوم (quadratic backtracking) در عبارتهای باالقوهی تجزیهی گزینههای
configparser.RawConfigParser(یعنیOPTCREوOPTCRE_NV). یک سطر پیکربندی دستساز با تعداد زیادی نویسهی فاصله میتواند باعث مصرف بیش از حد CPU شود.gh-146211: رد کردن نویسههای CR/LF در سرآیندهای درخواست تونل برای متد HTTPConnection.set_tunnel().
هسته و توکارها (Core and Builtins)¶
gh-148940: واگردانی به تعویق انداختن زبالهروبی بر اساس اندازهی فرایند (gh-133464). مسئلهی کارایی که این تغییر آن را حل میکند، توسط gh-142562 نیز برطرف شده است. این رویکرد این مشکل را دارد که اندازهی فرایند از دید سیستمعامل (بهعنوان مثال اندازهی مقیم یا RSS) بلافاصله پس از آزادسازی زبالههای چرخهای کاهش نمییابد؛ زیرا mimalloc بازگرداندن حافظه به سیستمعامل را به تعویق میاندازد. این تغییر فقط برای GC با نخآزاد (free-threaded) اعمال میشود.
gh-149243: بررسی محدودیتهای بازگشتی (recursion limits) در آپکد
CALL_ALLOC_AND_ENTER_INIT.gh-126910: افزودن پشتیبانی برای باز کردن پیچیدگی قابهای کامپایلر درجا (JIT) با استفاده از backtrace گنو. وصل (patch) توسط Diego Russo و Pablo Galindo
gh-149171: اجازه دادن به انتساب ویژگی
__module__برای نمونههایtyping.TypeAliasType.gh-149122: رفع فروپاشی (crash) در فراخوانیهای بهینهسازیشده به
all()،any()،tuple()،list()وset()با یک آرگومان عبارت تولیدگر ناهمگام (برای مثالtuple(await x for x in y)). این فراخوانیها اکنون به جای فروپاشی، به درستیTypeErrorرا بالا میآورند (raise میکنند).gh-149049: رفع سرریز رو به پایین پشته (stack underflow) برای
BINARY_OPدر سطح ۲.gh-83065: رفع یک بنبست (deadlock) که ممکن بود زمانی رخ دهد که یک نخ در حال ایمپورت کردن یک زیرماژول است (برای مثال
import pkg.sub.mod) در حالی که نخ دیگری در حال ایمپورت کردن یکی از بستههای والد آن است (برای مثالimport pkg.sub) و فایل__init__.pyآن والد خود زیرماژول را ایمپورت میکند. سیستم ایمپورت اکنون قفلهای ماژول را به ترتیب سلسلهمراتبی (والد قبل از فرزند) بهدست میآورد تا دو نخ بهجای بالا آوردن خطای_DeadlockError، به صورت سریالی اجرا شوند.gh-113956: رفع یک مسابقه داده (data race) در
sys.intern()در نسخهی ساخت نخآزاد (free-threaded) هنگام درونیسازی (interning) یک رشته که متعلق به نخ دیگری است. هنگامی که ایمنسازی رشتهی اصلی امکانپذیر نباشد، یک کپی درونیسازیشده متعلق به نخ فعلی جایگزین آن میشود.gh-148850: رفع مثبت کاذب ضدعفونیکنندهی حافظه (memory sanitizer) در
os.getrandom().gh-148820: رفع یک رقابت (race) در
_PyRawMutexروی ساخت نخآزاد (free-threaded) که در آن مقدار بازگشتیPy_PARK_INTRاز_PySemaphore_Waitمیتوانست به منتظرنده (waiter) اجازه دهد سمافور خود را قبل از تکمیل_PySemaphore_Wakeupنخ بازکننده قفل نابود کند و باعث خطای مهلکReleaseSemaphoreشود.gh-148829: افزودن
sentinelکه PEP 661 را پیادهسازی میکند. پیشنهاد بهبود پایتون (PEP) توسط Tal Einat؛ وصل (patch) توسط Jelle Zijlstra.gh-146270: رفع باگ سازگاری ترتیبی (sequential consistency) در
structmember.c.gh-148766: راهنمای مفسر (مانند
python --help) اکنون رنگی شده است. وصل (patch) توسط Hugo van Kemenade.gh-148571: رفع فروپاشی (crash) در بهینهساز کامپایلر درجا (JIT) هنگامی که خانوادههای آپکد تخصصیشده، طرحبندیهای عملوند ثبتشدهی ناسازگار را به ارث برده بودند.
gh-148653: منع کردن
marshallingشیءهای کُد بازگشتی، و شیءهایsliceوfrozendictکه نمیتوانند به درستی بارگذاری مجدد شوند.gh-142516: انتقال رو به جلوی جمعآورنده زباله چرخهی نسلی به ساخت پیشفرض ۳.۱۵، جایگزین کردن جمعآورنده افزایشی و در عین حال دستنخورده نگه داشتن جمعآورندهی نخآزاد.
gh-146462: افزودن آفستهای
PyTypeObject.tp_basicsize،PyTypeObject.tp_dictoffsetوPyHeapTypeObject.ht_cached_keysبه_Py_DebugOffsetsبرای پشتیبانی از ابزارهای دروننگری دیکشنری فقط خواندنی مستقل از نسخه.gh-145239: عملگر جمع یکعملوندی اکنون در الگوهای لفظی
matchپذیرفته میشود و از پشتیبانی موجود برای تفریق یکعملوندی تقلید میکند. وصلهای از Bartosz Sławecki.gh-148515: رفع باگ در بهینهساز کامپایلر درجا (JIT) هنگام خواندن عملوندها برای ریزعملیاتها (uops) با چند نهانگاه.
gh-148390: رفع یک رفتار تعریفنشده در
memoryviewهنگام استفاده از قالب بولی بومی (?) درcast(). پیشتر، روی برخی سکوهای رایج، فراخوانیmemoryview(b).cast("?").tolist()به اشتباه به جای[True]مقدار[False]را برای هر بایت زوج b برمیگرداند. وصلهای از Bénédikt Tran.gh-148418: رفع نشت ارجاع احتمالی در یک جریان مارشالکردن معیوب
TYPE_CODE.gh-148393: رفع مسابقههای دادهای بین
PyDict_Watch()/PyDict_Unwatch()و جهش همزمان دیکشنری در ساخت نخآزاد.gh-148398: رفع باگ در بهینهساز کامپایلر درجا (JIT) که در آن بارگذاریهای ویژگی کلاس پس از جهش نوع نامعتبر نمیشدند.
gh-146527: افزودن یک کلاس
GCMonitorبا متدget_gc_statsبه ماژول_remote_debuggingبرای امکان خواندن آمارهای GC از یک فرآیند پایتون خارجی بدون نیاز به قابلیت کاملRemoteUnwinder. وصلهای از Sergey Miryanov و Pablo Galindo.gh-148284: رفع مصرف بالای پشته در حلقهی مفسر پایتون در Clang 22 با تنظیم محدودیتهای تابع برای درونخطیسازی (inlining) هنگام ساخت با پرشهای محاسبهشده (computed gotos).
gh-148037: حذف بخش بحرانی از
PyCode_Addr2Line()در نخکشی آزاد.gh-115802: بهبود تولید کد کامپایلر درجا (JIT) روی لینوکس AArch64 با کاهش فراخوانی غیرمستقیم به نمادهای خارجی. وصلهای از Diego Russo.
gh-148189: اصلاح شمارش کمتر از حد بایتها در فهرستهای آزاد مخصوص نوع که توسط sys._debugmallocstats() گزارش شده است. برای انواعی که در جمعآوری زباله چرخهای شرکت میکنند، دو اشارهگر استفادهشده توسط GC گم شده بودند.
gh-148222: رفع پشتیبانی از vectorcall در
types.GenericAliasزمانی که نوع زیرین از پروتکل vectorcall پشتیبانی نمیکند. رفع نشتهای احتمالی درtypes.GenericAliasوtypes.UnionTypeدر صورت بروز خطای حافظه.gh-148208: رفع نشت عمق بازگشت در
PyObject_Print()gh-95004: مفسر متخصصساز اکنون برای
enum.Enumمتخصص میشود که عملکرد و مقیاسپذیری را در نخکشی آزاد بهبود میبخشد. وصلهای از Kumar Aditya.gh-149202: فعالسازی پیشفرض اشارهگرهای قاب برای ساختهای CPython سازگار با GCC، از جمله
-mno-omit-leaf-frame-pointer،-marmروی ARM سیودوبیتی و/یا-mbackchainروی سکوهای s390x در صورت پشتیبانی کامپایلر، بهطوریکه پروفایلگیرها و اشکالزداها بتوانند قابهای مفسر بومی را با اطمینان بیشتری باز کنند. کاربران میتوانند--without-frame-pointersرا به./configureبدهند تا انصراف دهند.gh-148014: پذیرش نام تابع در گزینهی خط فرمان
-X presiteو متغیر محیطیPYTHON_PRESITE. وصلهای از Victor Stinner.gh-147998: رفع نشت حافظه در فراخوانیهای کمکی مفسر بهطوریکه پاکسازی هنگامی که یک عملیات در مرزهای مفسر میافتد کار کند. وصلهای از Maurycy Pawłowski-Wieroński.
gh-146455: رفع رگرسیون زمان کامپایل O(N²) در تا کردن ثابتها پس از انتقال آن از درخت نحوی انتزاعی (AST) به بهینهساز CFG.
gh-146306: بهینهسازی تقسیم اعشاری حقیقی (float true division) در بهینهساز لایهی ۲ با تغییر درجا (inplace mutation) برای عملوندهای با ارجاع یکتا.
gh-142186: رویدادهای سراسری
sys.monitoringاکنون میتوانند بر اساس هر شیء کد (code object) فعال یا غیرفعال شوند. بازگرداندنDISABLEاز یک کالبک، رویداد را برای کل شیء کد (برای ابزار فعلی) غیرفعال میکند.gh-126910: افزودن پشتیبانی از باز کردن قابهای (frames) کامپایلر درجا (JIT) با استفاده از GDB. وصله توسط Diego Russo و Pablo Galindo.
gh-146031: رابط برنامهنویسی (API) ناپایدار _PyInterpreterState_SetEvalFrameFunc دارای یک تابع همراه _PyInterpreterState_SetEvalFrameAllowSpecialization است تا مشخص کند آیا باید به تخصصیسازی اجازه داده شود یا خیر. هنگامی که این گزینه روی ۱ تنظیم میشود، تخصصیساز فرازهای پایتون -> پایتون را به آپکدهای تخصصی تبدیل میکند که حلقهی مفسر جایگزین میتواند انتخاب کند به آنها احترام بگذارد و ارسال درونخطی (inlined dispatch) را انجام دهد.
gh-145278: ماژول
encodingsاکنون تا حدی فریزشده است که شامل زیرماژولهایaliasesوutf_8میشود.ماژول
linecacheاکنون فریزشده است.gh-134584: بهینهسازی و حذف شمارش ارجاع اضافی برای
MAKE_FUNCTIONدر کامپایلر درجا (JIT).gh-143886: مرتبسازی مجدد حاشیهنویسیهای تابع به طوری که آرگومانهای فقط-جایگاهی قبل از سایر آرگومانها بازگردانده شوند. این کار نحوهی ثبت توابع با آرگومانهای فقط-جایگاهی را توسط
functools.singledispatch()اصلاح میکند.gh-98894: بازیابی پروبهای DTrace/SystemTap مربوط به
function__entryوfunction__returnکه از نسخهی ۳.۱۱ پایتون خراب شده بودند.gh-116021: پشتیبانی از ایجاد نمونههای گرههای درخت نحوی انتزاعی (AST) انتزاعی از ماژول
astمنسوخ شده است و برنامهریزی شده است تا در پایتون ۳.۲۰ حذف شود. وصله توسط Brian Schubert.gh-137814: رفع ویژگی
__qualname__توابع__annotate__روی توابع.gh-137600:
ast: سازندههای گرههای درخت نحوی انتزاعی (AST) اکنون زمانی که یک آرگومان ضروری حذف شود یا یک آرگومان کلیدواژهای که به فیلدی روی گره AST نگاشت نمیشود ارسال شود، یکTypeErrorبالا میآورند. این موارد قبلاً از نسخهی ۳.۱۳ پایتون یکDeprecationWarningبالا میآوردند. وصله توسط Brian Schubert.gh-137293: رفع خطای
SystemErrorهنگام جستجوی پروندههای ELF درsys.remote_exec().gh-135357: افزودن پشتیبانی از
socket.SO_PASSRIGHTSروی لینوکس.gh-134690: ویژگی
codeobject.co_lnotabازtypes.CodeTypeکه در PEP 626 از نسخهی ۳.۱۲ پایتون منسوخ شده بود، حذف شد.gh-100239: تخصصیسازی
BINARY_OPبرای الحاق فهرستها و تاپلها، و انتشار نوع نتیجه از طریق_BINARY_OP_EXTENDدر بهینهساز لایهی ۲ به طوری که نگهبانهای نوع پیگیریکننده بتوانند حذف شوند.
کتابخانه¶
gh-148823: به تعویق انداختن ایمپورت
_colorizeدرargparseتا زمانی که برای رنگی کردن خروجی مورد نیاز باشد.gh-141560: افزودن یک پارامتر annotation_format به
inspect.getfullargspec().gh-139489: افزودن تابع
xml.is_valid_text()که امکان بررسی این را فراهم میکند که آیا میتوان از یک رشته در سند XML استفاده کرد یا خیر.gh-142389: افزودن علامتهای نقلقول معکوس (backticks) به راهنمای argparse کتابخانهی استاندارد برای نمایش با رنگ. وصله توسط Hugo van Kemenade.
gh-149377: بهروزرسانی بستهی همراه pip به نسخهی 26.1.1
gh-142389: افزودن پشتیبانی از نشانهگذاری بکتیک در متن راهنمای گزینهی
argparseبرای برجستهسازی کد درونخطی هنگامی که خروجی رنگی فعال است. وصله توسط Hugo van Kemenade.gh-148675: حذف قالبهای
FوDازarrayوmemoryview. وصله توسط Victor Stinner.gh-149342: رفع مشکل نوشتن دودویی در
_remote_debuggingبه طوری که نمونهبرداری از یک نخ که پشتهی فریم پایتون آن خالی است (برای مثال هنگام فراخوانی C یا میانسیستمعامل) دیگر خطایRuntimeError("Invalid stack encoding type")را ایجاد نمیکند، و همچنین به طوری کهBinaryWriter.total_samplesپس ازfinalize()یا خروج مدیر زمینه شامل نمونههای پاکشده از بافر RLE میشود. وصله توسط Maurycy Pawłowski-Wieroński.gh-149010: ماژول CLI مربوط به
inspectاکنون در صورت مشخص شدن--detailsاطلاعات موجود تا حد امکان را برای ماژولهای غیرسورس گزارش میکند و در صورت حذف--detailsبه جای ردگیری (traceback)، یک پیام خطا ارائه میدهد. همچنین زمانی که مکان هدف دادهشده، مکان تعریفکنندهی هدف نباشد و زمانی که هدف دادهشده به جای یک تعریف کلاس یا تابع، یک مقدار داده باشد، اطلاعات بهتری گزارش میکند.gh-146609: استفاده از
argparseبرای راهنمای رنگیtimeitدر رابط خط فرمان (CLI). وصله توسط Hugo van Kemenade.gh-142389: افزودن بکتیکها برای رنگ به توضیحات راهنمای regrtest و pdb. وصله توسط Hugo van Kemenade.
gh-144384: ایمپورت تنبل
_colorize. وصله توسط Hugo van Kemenade.gh-149321: رفع چرخههای ایمپورت که با اجرای ماژولهای کتابخانهی استاندارد با
-X lazy_imports=noneپدیدار شده بودند.gh-145378: تولید رنگهای سازگار برای دستورات
pdbدر REPL ماژولpdb.gh-149296: افزودن زیردستور
dumpبهprofiling.samplingکه یک تصویر لحظهای (snapshot) به سبک ردگیری (traceback) از پشتهی پایتون یک فرایند در حال اجرا را چاپ میکند، شامل وضعیت هر نخ، برجستهسازی سطر منبع، نامهای آپکد (opcode) بایتکد اختیاری، و بازسازی وظیفهی (task) آگاه از ناهمگامی. وصله توسط Pablo Galindo.gh-143231: یک ویژگی (attribute) module به
warnings.WarningMessageاضافه شده است.gh-148675:
ctypes: تغییر_type_درc_float_complex،c_double_complexوc_longdouble_complexازF،DوGبهZf،ZdوZgبرای سازگاری با numpy. وصله توسط Victor Stinner.gh-148675: نوع
array.typecodesازstrبهtupleتغییر یافت تا از کدهای نوع بلندتر از ۱ نویسه (ZfوZd) پشتیبانی کند. وصله توسط Victor Stinner.gh-149221: گرفتن خطای نادر دامنهی ریاضی برای
random.binomialvariate().gh-149231: در
tomllib، تعداد بخشها در کلیدهای TOML اکنون محدود شده است.gh-143231: توابع
unittest.TestCase.assertWarns()وunittest.TestCase.assertWarnsRegex()دیگر اخطارهایی را که با دستهبندی یا عبارت منظم مشخصشده مطابقت ندارند، نادیده نمیگیرند. مدیران زمینهی تو در تو اکنون پشتیبانی میشوند.gh-149214: رفع خوانش نادرست رشتههای یونیکد غیر اسکی (Latin-1، BMP و غیر BMP) از یک فرایند راه دور در
_remote_debugging. نام پروندهها و نام توابع حاوی نویسههای غیر اسکی اکنون بهدرستی در ردگیریهای پشته، پروفایلگیر (profiler) نمونهبرداری، و دروننگری (introspection) وظیفهیasyncioگزارش میشوند.gh-149189: ماژول
pprintاکنون از مقادیر پیشفرض مدرن استفاده میکند:indent=4وwidth=88، و خروجی پیشفرضcompact=Falseاکنون مشابهjson.dumps()با چاپ زیبا قالببندی میشود، به طوری که پرانتزها و براکتهای بازشونده با یک سرخط (newline) و محتویات با یک سطح تورفتگی دنبال میشوند. پارامتر expand که در نسخهی 3.15.0a8 اضافه شده بود، حذف شده است؛compact=False(پیشفرض) اکنون چیدمانexpand=Trueسابق را تولید میکند. وصله توسط Hugo van Kemenade.gh-149173: رفع بررسی معکوس متغیر محیطی
PYTHON_BASIC_REPLدرpdb._pyrepl_available.gh-149117: اصلاح
runpy.run_module()وrunpy.run_path()برای تنظیم کردن ویژگیnameروی خطایImportErrorکه آنها را بالا میاندازد.gh-149148:
ensurepip: ارتقای نسخهی بستهبندیشدهی pip به ۲۶.۱. این نسخه آسیبپذیری CVE 2026-3219 را اصلاح میکند. وصل توسط Victor Stinner.gh-149009: اعتبارسنجی اینکه پروفایلهای دودویی
profiling.samplingجفتهای یکتای (نخ، مفسر) بیشتری از آنچه در سرآیند اعلام شده است ندارند. وصل توسط Maurycy Pawłowski-Wieroński.gh-148292:
ssl: بهروزرسانیssl.SSLSocketوssl.SSLObjectبرای OpenSSL ۴. این کلاسها اکنون به خاطر میسپارند که آیا یکssl.SSLEOFErrorدریافت میکنند یا خیر. در این صورت، فراخوانیهای متعاقبread()،sendfile()،write()وdo_handshake()خطایssl.SSLEOFErrorرا بدون فراخوانی تابع زیرین OpenSSL بالا میاندازند. به همین دلیل،ssl.SSLSocketدر EOF روی تمام نسخههای OpenSSL به یک شکل رفتار میکند. وصل توسط Victor Stinner.gh-149085: افزودن یک آرگومان کلیدواژهای max_threads به
faulthandler.dump_traceback()،faulthandler.dump_traceback_later()،faulthandler.enable()وfaulthandler.register().gh-148641: تابع
pkgutil.resolve_name()یک آرگومان اختیاری و فقط-کلیدواژهای جدید به نامstrictدریافت میکند. مقدار پیشفرض برای حفظ سازگاری عقبگرد برابر باFalseاست.gh-148093: اصلاح خواندن خارج از کران یک بایت در
binascii.a2b_uu(). به جای خواندن فراتر از انتهای بافر، خطایbinascii.Errorرا بالا بیندازید.gh-149083: توابع
dataclasses.MISSINGوdataclasses.KW_ONLYاکنون نمونههایی ازsentinelهستند.gh-148914: اصلاح یادسپاری (memoization) شیء درونباندهی
PickleBufferدر پیادهسازی پایتون برایpickle. پیش از این، اشیای یکسانPickleBufferهویت خود را حفظ نمیکردند و شیءPickleBufferخالی و قابلنوشتن، یک شیء bytearray خالی را به جایb''یادسپاری میکرد، بنابراین ارجاعات بعدی بهb''به عنوان یک شیء bytearray خالی بارگذاری میشدند (unpickled).gh-149026: افزودن رنگ به خروجی رابط خط فرمان
pickletools. وصل توسط Hugo van Kemenade.gh-148991: افزودن رنگ به خروجی رابط خط فرمان
tokenize. وصل توسط Hugo van Kemenade.gh-138907: پشتیبانی از RFC 9309 در
urllib.robotparser.gh-148981: افزودن پارامتر color به
ast.dump().gh-148849: منسوخ کردن
http.cookies.Morsel.js_output()وhttp.cookies.BaseCookie.js_output()که در پایتون ۳.۱۹ حذف خواهند شد. به جای آنها ازhttp.cookies.Morsel.output()یاhttp.cookies.BaseCookie.output()استفاده کنید.gh-146311: افزودن یک پارامتر فقط-کلیدواژهای canonical به رمزگشاهای base32، base64، base85، ascii85 و Z85 در
base64وbinascii. وقتی مقدار درست باشد، رمزگذاریهای دارای بیتهای پُرکنندهی غیرصفر (base32/64) یا رمزگذاریهای غیرکانونیکال (base85/ascii85) رد میشوند. گروههای پایانی تکنویسه درbinascii.a2b_ascii85()وbinascii.a2b_base85()اکنون همیشه به عنوان تخلفات رمزگذاری رد میشوند، صرفنظر از مقدار canonical؛ پیش از این آنها به طور صامت نادیده گرفته میشدند و هیچ بایت خروجیای تولید نمیکردند.gh-148947: اصلاح فروپاشی در
@dataclasses.dataclassبا تنظیمslots=Trueکه وقتی یک تابع یافتشده درون کلاس دارای یک سلول خالی__class__بود، رخ میداد.gh-148680: اشیای
ForwardRefکه حاوی نامهای داخلی برای نمایش اشیای شناختهشده هستند، اکنون هنگام ارزیابی به عنوان رشته، به جای نام داخلی__annotationlib_name_x__، مقدارtype_reprشیء شناختهشده را نشان میدهند.gh-124397: ماژول threading ابزارهایی را برای پشتیبانی از دسترسی همزمان پیمایشگر اضافه کرده است:
threading.serialize_iterator،threading.synchronized_iterator()وthreading.concurrent_tee().gh-148801:
xml.etree.ElementTree: اصلاح فروپاشی درElement.__deepcopy__روی درختهای عمیقاً تودرتو.gh-148735:
xml.etree.ElementTree: اصلاح استفاده پس از آزاد شدن (use-after-free) درElement.findtextزمانی که درخت عنصر طی جستجو به طور همزمان تغییر میکند.gh-148740: اصلاح استفاده از رابط خط فرمان
uuidبرای پشتیبانی از ارائهی یک فضای نام سفارشی برای uuid3 و uuid5.gh-148688:
bz2,compression.zstd,lzma,zlib: رفع خطای آزادسازی مضاعف (double free) در زمان شکست تخصیص حافظه. وصله توسط Victor Stinner.gh-148675:
array,struct: افزودن پشتیبانی از قالبهایZdوZfبرای اعداد ممیز شناور با دقت مضاعفِ مختلط (double complex) و عدد اعشاریِ مختلط (float complex). وصله توسط Victor Stinner.gh-148651: رفع نشتی ارجاع در
compression.zstd.ZstdDecompressorهنگامی که یک کلید گزینهی نامعتبر ارسال میشود.gh-148641: PEP 829 (پروندههای پیکربندی راهاندازی بسته) قالب جدید
<name>.startرا به موازات پروندههای<name>.pthپیادهسازی میکند تا جایگزین سطرهایimportدر مورد دوم شود.gh-148639: پیادهسازی PEP 800 و افزودن دکوراتور
@typing.disjoint_base. وصله توسط Jelle Zijlstra.gh-148615: اصلاح
pdbبرای پذیرش جداکنندهی استاندارد گزینهها (-- end of options separator). گزارششده توسط haampie. وصله توسط Shrey Naithani.gh-146553: رفع حلقهی بینهایت در
typing.get_type_hints()هنگامی که__wrapped__یک چرخه تشکیل میدهد. وصله توسط Shamil Abdulaev.gh-148599: بهروزرسانی پیامهای خطای WSA در ماژول
socketبرای مطابقت با مستندات رسمی.gh-148508: یک خطای زمانی متناوب هنگام اجرای آزمونهای SSL روی iOS برطرف شد.
gh-144881: ابزارهای اشکالزدایی
asyncio(دستوراتpython -m asyncio psوpstree) اکنون بهطور خودکار روی خطاهای گذرا که ممکن است هنگام اتصال به یک فرایند تحت تفویض/واگذاری فعال نخ رخ دهند، مجدداً تلاش میکنند. تعداد تلاش مجدد را میتوان با پرچم--retriesکنترل کرد. وصله توسط Bartosz Sławecki.gh-148518: اگر ایمیلی حاوی یک سرآیند نشانی که با یک نقلقول دوتایی باز پایان مییافت با سیاستی غیر از
compat32تجزیه میشد، دسترسی به ویژگیusernameصندوق پستی که از طریق آن شیء سرآیند قابل دسترسی است منجر به یکIndexErrorمیشد. اکنون این متد بهدرستی یک رشتهی خالی را به عنوان نتیجه برمیگرداند.gh-148464: افزودن ویژگیهای گمشدهی
__ctype_le/be__برایc_float_complexوc_double_complex. وصله توسط Sergey B Kirpichev.gh-148370:
configparser: جلوگیری از رفتار درجه دوم (quadratic behavior) وقتی که پس از ناتوانی پارسر در تجزیه چندین سطر، خطایParsingErrorبالا آورده میشود. وصله توسط Bénédikt Tran.gh-121190: دستور
importlib.resources.files()اکنون وقتی مشخصه ماژول None باشد (همانطور که در برخی از ماژولهای__main__یافت میشود) یک پیام خطای معنادارتر تولید میکند.gh-127012: دستور
importlib.abc.Traversable.read_textاکنون پارامترerrorsرا میپذیرد/درخواست میکند.gh-137855: بهبود زمان ایمپورت ماژول
dataclassesبا ایمپورت تنبل (lazy importing) ماژولهایreوcopy.gh-148352: افزودن رنگهای بیشتر به خروجی رابط خط فرمان
calendar. وصله توسط Hugo van Kemenade.gh-148254: استفاده از شکل مفرد «sec» به جای «secs» در خروجی پرجزئیات
timeitبرای سازگاری با سایر واحدهای زمانی.gh-130472: یکپارچهسازی fancycompleter با تکمیلهای ایمپورت.
gh-148241: ماژول
json: اصلاح سریالسازی: دیگر تابعstr(obj)روی زیرکلاسهایstrفراخوانی نمیشود. وصله توسط Victor Stinner.gh-148225: فرمان
replayدر ماژولprofiling.samplingاکنون پروندههای پروفایل غیردودویی را با خطای روشنی رد میکند که توضیح میدهد بازپخش فقط پروندههای ایجادشده با--binaryرا میپذیرد.gh-148192: بخش
email.generator.Generator._make_boundaryممکن بود در صورت برابر نبودن linesep با n نتواند رشتهی مرز تکراری را تشخیص دهد. اکنون اگر linesep برابر با rn نیز باشد، رشتههای مرز را به درستی تشخیص میدهد.gh-148207: کلاس
typing.TypeVarTupleاکنون پارامترهایbound،covariant،contravariantوinfer_varianceرا میپذیرد و با رابطtyping.TypeVarوtyping.ParamSpecسازگار شده است.gh-148100: توابع
re.match()وre.Pattern.match()به نفعre.prefixmatch()وre.Pattern.prefixmatch()از رده خارج شدند (نرم). وصله توسط Hugo van Kemenade.gh-147991: بهبود زمان ایمپورت ماژول
tomllib(تا ۱۰ برابر سریعتر). وصله توسط Victor Stinner.gh-147957: تضمین میکند که متد
collections.UserDict.popitem()بهجای ترتیب دلخواه، عناصر را به همان ترتیب دیکشنری بستهبندیشده حذف کند.gh-146256: ماژول
profiling.samplingاکنون از قالب خروجی JSONL از طریق--jsonlپشتیبانی میکند. هر اجرا یک پروندهی JSON تفکیکشده با خط جدید تولید میکند که توسط ابزارها، اسکریپتها و مصرفکنندگان برنامهنویسی قابل تجزیه به صورت ترتیبی است. وصله توسط Maurycy Pawłowski-Wieroński.gh-146609: افزودن رنگ به خروجی رابط خط فرمان
timeit. وصله توسط Hugo van Kemenade.gh-146563: ماژول
xml.parsers.expat: افزودن یک یادداشت استثنا هنگامی که مقدار بازگشتی یک هندلر سفارشی Expat به درستی تفسیر نمیشود. وصله توسط Bénédikt Tran.gh-137586: افزودن
MacOSبهwebbrowserبرای مکاواس، که بهجای ارسال AppleScript بهosascript، نشانیهای وب را از طریق/usr/bin/openباز میکند. منسوخ کردنMacOSXOSAScriptبه نفعMacOS.gh-146406: پیشنهادهای متد میانزبانی اکنون برای
AttributeErrorروی انواع توکار و زیرکلاسهای آنها نمایش داده میشوند. برای مثال،[].push()پیشنهادappendمیدهد،(1,2).append(3)استفاده از یکlistرا پیشنهاد میکند،None.keys()انتظار برای یکdictرا پیشنهاد میکند و1.0.__or__استفاده از یکintرا پیشنهاد میکند.gh-146313: رفع یک بنبست در ردیاب منابع ماژول
multiprocessingکه در آن فرایند والد ممکن بود طی خاموش شدن مفسر درos.waitpid()به صورت نامحدود معلق بماند، اگر فرزندی که از طریقos.fork()ایجاد شده بود هنوز پایپ ردیاب منابع را باز نگه داشته بود.gh-146292: افزودن رنگ به گزارشهای
BaseHTTPRequestHandler، همانطور که توسط رابط خط فرمانhttp.serverاستفاده میشود. وصله توسط Hugo van Kemenade.gh-145917: افزودن انواع MIME برای قالبهای TTC و Haptics به
mimetypes. (مشارکت از Charlie Lin در gh-145918.)gh-145846: رفع نشت حافظه در
_lsprofهنگامی کهclear()در طول پروفایلگیری فعال با فرایندهای تو در تو فراخوانی میشود. تابعclearEntries()اکنون بهجای آزادسازی فقط زمینهی بالایی، کل فهرست پیوندیcurrentProfilerContextرا پیمایش میکند.gh-145831: رفع مشکل
email.quoprimime.decode()که هنگامeol='\r\n'یک\rسرگردان باقی میگذاشت، با حذف کامل رشتهی eol بهجای یک نویسه.gh-145378: استفاده از
PyREPLبه عنوان کنسول ورودی پیشفرض برایpdbgh-145244: رفع خطای استفاده پس از آزادسازی (use-after-free) در رمزگذار
jsonهنگامی که یک کالبکdefaultدیکشنری در حال سریالسازی را تغییر میدهد.gh-117716: رفع مشکل نوشتن تکههای
dataبا اندازهی فرد درwaveاز طریق الحاق بایت پرکنندهی RIFF مورد نیاز و تصحیح فیلد اندازهی تکهی RIFF بر اساس آن.gh-145200:
hashlib: رفع یک نشت حافظه هنگام تخصیص یا مقداردهی اولیههی زمینهی OpenSSL HMAC که با خطا مواجه میشود.gh-145056: افزودن پشتیبانی از
frozendictدرdataclasses.asdict()وdataclasses.astuple().gh-145105: رفع فروپاشی در خوانندهی
csvهنگام پیمایش با یک پیمایشگر درونبازگشتی کهnext()را روی همان خواننده از درون__next__فراخوانی میکند.gh-130750: بازیابی نقلقول گزینهها در پیامهای خطای
argparseبرای بهبود وضوح و سازگاری با مستندات.gh-137855: کاهش زمان ایمپورت ماژول
dataclassesبه میزان حدود ۲۰ درصد.gh-70647: متد
strptime()اکنون زمانی که رشتهی قالب حاوی%dبدون دایرکتیو سال باشد، یکValueErrorبالا میآورد. استفاده از%eبدون سال اکنون یکDeprecationWarningصادر میکند.gh-105936: تلاش برای تغییر صفات غیرزمینهی
dataclassesدر حالتی که هر دو مقدار frozen و slots برابر باTrueباشند، اکنون بهجایTypeErrorخطایFrozenInstanceErrorرا بالا میآورد. زیرکلاسهای غیردیتاکلاس آنها اکنون میتوانند آزادانه صفات غیرزمینهی خود را تغییر دهند و کلاس اصلی بدون جایگاه (non-slotted) میتواند جمعآوری زباله شود.gh-142831: رفع فروپاشی در ماژول
jsonکه در آن اگر شیء در حال سریالسازی در طول فرآیند سریالسازی تغییر کند، ممکن است خطای استفاده پس از آزادسازی (use-after-free) رخ دهد.gh-108411: آرگومانهای متد
typing.IOوtyping.BinaryIOاکنون فقطجایگاهی (positional-only) هستند.gh-130273: رفع خروجی رنگی ردگیری (traceback) با نویسههای یونیکد.
gh-142307:
imaplib: منسوخ کردن پشتیبانی ازIMAP4.file. این ویژگی هرگز قرار نبود بخشی از رابط عمومی باشد و تغییر مقدار آن ممکن است منجر به بستهنشدن پروندهها یا مشکلات همگامسازی دیگر با سوکت زیرین شود. وصله توسط Bénédikt Tran.gh-141449: بهبود آزمونها و مستندات برای فراخوانیپذیرهای غیرتابعی به عنوان توابع حاشیهنویسی.
gh-140287: پوستهی تعاملی
asyncioاکنون هنگام اجرای اسکریپتهایPYTHONSTARTUPاستثناها را مدیریت میکند. وصله توسط Bartosz Sławecki.gh-139489: افزودن تابع
xml.is_valid_name()که امکان بررسی این را میدهد که آیا یک رشته میتواند به عنوان نام عنصر یا ویژگی در XML استفاده شود یا خیر.gh-75707: افزودن آرگومان اختیاری
mtimeبه تابعtarfile.open()، برای تنظیم فیلد سرآیندmtimeدر آرشیوهای.tar.gz.gh-125862: دکوراتورهای
contextlib.contextmanager()وcontextlib.asynccontextmanager()اکنون با تولیدگرها، توابع همروال، و تولیدگرهای ناهمگام به درستی کار میکنند وقتی که موارد قابلفراخوانی بستهبندیشده به عنوان دکوراتور استفاده میشوند.gh-135528:
http.cookiejar: افزودن "tv"، "or"، "nom"، "sch" و "web" به فهرست پیشفرض دامنههای سطح دوم کد کشور پشتیبانیشده.gh-135056: افزودن گزینهی خط فرمان
-Hیا--headerبه python -m http.server. مشارکتکننده: Anton I. Sipos.gh-134551: افزودن پشتیبانی از تیاسترینگها به توابع pprint
gh-133956: رفع باگی که در آن
@dataclassنمیتوانست فیلدهایClassVarرا شناسایی کند اگرClassVarاز ماژولی غیر ازtypingدوباره صادر (re-exported) شده بود.gh-132631: رفع خطای "I/O operation on closed file" هنگام تجزیهی پروندههای JSON Lines با استفاده از
JSON CLI.gh-108951:
asyncio: افزودن متدTaskGroup.cancelکه وظایف ناقص را لغو کرده و گروه را بدون بالا آوردنasyncio.CancelledErrorخارج میکند.gh-123853: بهروزرسانی جدول شناسههای کد زبان ویندوز (LCIDs) مورد استفادهی
locale.getdefaultlocale()در ویندوز به نسخهی پروتکل ۱۶.۰ (۲۰۲۴-۰۴-۲۳).gh-122476: ماژول
emailدیگر بهطور نادرست از کدگذاری RFC 2047 برای یک صندوق پستی با نویسههای غیر اسکی در بخش محلی (local-part) استفاده نمیکند. تحت سیاستی که ویژگیutf8آن رویFalseتنظیم شده باشد، تلاش برای سریالسازی چنین پیامی اکنون یکHeaderWriteErrorایجاد خواهد کرد. هیچ کدگذاری ۷بیتی معتبری برای بخش محلی بینالمللیشده وجود ندارد. ازemail.policy.SMTPUTF8(یا سیاست دیگری باutf8=True) استفاده کنید تا بخش محلی بهعنوان نویسههای یونیکد بهدرستی عبور داده شود.gh-83938: ماژول
emailدیگر بهطور نادرست از کدگذاری RFC 2047 برای یک صندوق پستی با نویسههای غیر اسکی در دامنه استفاده نمیکند. تحت سیاستی که ویژگیutf8آن رویFalseتنظیم شده باشد، تلاش برای سریالسازی چنین پیامی اکنون یکHeaderWriteErrorایجاد خواهد کرد. یا یک کدگذاری IDNA مناسب برای تبدیل دامنه به اسکی پیش از سریالسازی اعمال کنید، یا ازemail.policy.SMTPUTF8(یا سیاست دیگری باutf8=True) استفاده کنید تا نام دامنه بینالمللیشده بهعنوان نویسههای یونیکد بهدرستی عبور داده شود.gh-81074: ماژول
emailدیگر آدرسهای ایمیل دارای نویسههای غیر اسکی را هنگام تجزیهی یک رشتهی یونیکد یا در پارامترaddr_specتابعemail.headerregistry.Addressبهعنوان نقص در نظر نمیگیرد. RFC 5322 چنین آدرسهایی را مجاز میداند و آنها پیشتر نیز هنگام تجزیهی بایتها و در پارامترusernameشیء Address پشتیبانی میشدند.کلاس مستندنشدهی
email.errors.NonASCIILocalPartDefectدیگر استفاده نمیشود و باید منسوخ در نظر گرفته شود.gh-70039: رفع باگی که در آن تابع
smtplib.SMTP.starttls()ممکن بود در صورت فراخوانی صریح متدsmtplib.SMTP.connect()بهجای فراخوانی ضمنی، با شکست مواجه شود.gh-113471: امکان تعیین نوع محتوای پیشفرض توسط
http.serverهنگام سرو کردن پروندههایی با پسوند ناشناخته یا مفقود.gh-83281:
email: بهبود مدیریت زبالههای پایانی (trailing garbage) در فهرستهای آدرس برای جلوگیری از پرتاب خطای AttributeError در موارد خاص و مرزی.gh-96894: عدم غیرفعال کردن دستور echo برای دستورات بعدی در فعالسازهای دستهای (
activate.batوdeactivate.bat) ماژولvenv.
مستندات¶
gh-148663: مستندسازی این موضوع که
calendar.IllegalMonthErrorاز پایتون ۳.۱۲ به بعد، زیرکلاسی از هر دو خطایValueErrorوIndexErrorاست.gh-146646: مستندسازی این که توابع
glob.glob()،glob.iglob()و متدهایpathlib.Path.glob()وpathlib.Path.rglob()استثناهایOSErrorبرخاسته از پیمایش سامانه فایلبندی را بهطور بیصدا سرکوب میکنند.
آزمونها¶
ساخت¶
gh-149353: جلوگیری از بازسازیهای غیرضروری مرتبط با کامپایلر درجا (JIT) طی دستور
make installپس از ساختهای مبتنی بر--enable-optimizations.gh-149351: جلوگیری از ایجاد نامهای نصب چارچوب معیوب احتمالی در مکاواس هنگامی که DESTDIR در طول ساختها مشخص شده است.
gh-149252: بهروزرسانی به WASI SDK 33.
gh-148690: ساختهای نخآزاد ویندوز اکنون خروجی را در یک مسیر پیشفرض متفاوت با نامپروندههای پیشفرض تولید میکنند؛ برای مثال،
PCbuild/amd64t/python.exeبهجایPCbuild/amd64/python3.15t.exe. اسکریپتPC/layoutبرای تضمین سازگاری طرحبندیهای تولیدشده بهروزرسانی شده است.gh-146475: جلوگیری از استفاده از Apple Clang برای ساخت کامپایلر درجا (JIT) از آنجا که بدون ابزارهای لازم LLVM عرضه میشود.
gh-148644: خطاهای حین کارِ آموزش PGO روی ویندوز دیگر نادیده گرفته نمیشوند و کد بازگشت غیرصفر باعث شکست ساخت خواهد شد.
gh-148535: دیگر از پرچم
gcc -fprofile-update=atomicروی i686 استفاده نشود. این پرچم برای رفع یک خطای داخلی تصادفی در GCC طی ساخت PGO (gh-145801) که ناشی از خرابی دادههای پروفایل (پروندههای .gcda) بود، اضافه شده بود. مشکل این است که ساخت PGO را روی i686 بسیار کندتر میکند (تا ۴۷ برابر کندتر). از آنجا که خطای داخلی GCC تاکنون روی i686 مشاهده نشده است، دیگر از-fprofile-update=atomicروی i686 استفاده نکنید. وصله توسط Victor Stinner.gh-148483: از
Py_GCC_ATTRIBUTE(unused)برای برچسب stop_tracing استفاده کنید.gh-148474: کامپایل
Python/pystrhex.cبا نسخههای قدیمیتر clang اصلاح شد.gh-146445: ابزارهای ساخت اندروید به پوشهی Platforms منتقل شدهاند.
gh-146264: با پیوند دادن وابستگیهای HACL به عنوان کتابخانههای ایستا هنگامی که
MODULE_BUILDTYPE=staticاست، ساخت ماژولهای ایستا روی اهداف غیر WASI اصلاح شد تا از خطاهای نماد تکراری_Py_LibHacl_*در زمان پیوند جلوگیری شود.gh-138451: امکان استفاده از مسیر سفارشی LLVM با استفاده از
LLVM_TOOLS_INSTALL_DIRدر طول ساخت کامپایلر درجا (JIT) فراهم شد.gh-133312: افزودن یک گزینهی جدید
./configureبه نام--enable-static-libpython-for-interpreterکه وقتی با--enable-sharedاستفاده میشود، به ساخت کتابخانهی مشترک ادامه میدهد اما از آن برای مفسر استفاده نمیکند. در عوض، libpython به صورت ایستا به مفسر پیوند داده میشود، گویی از--enable-sharedاستفاده نشده است. این امکان را به شما میدهد که یک بار ساخت را انجام دهید و یک باینری مفسر پایتون به دست آورید که از کتابخانهی مشترک استفاده نمیکند اما در عین حال یک کتابخانهی مشترک برای استفادهی برنامههای دیگر نیز دریافت کنید.
Windows¶
gh-149254: نسخهی بستهبندیشدهی OpenSSL به ۳.۵.۶ بهروزرسانی شد.
gh-148690: ساختهای غیر آزاد از رشته (Non-freethreaded) روی ویندوز اکنون از پسوندهای پیوند داده شده به
python3t.dllپشتیبانی میکنند و در نصبهای معمولی، نسخهای از آن کتابخانه را که به زمان اجرای غیر آزاد از رشته ارجاع میدهد، شامل خواهند شد.gh-146458: پیگیری نادرست ارتفاع و عرض REPL هنگام تغییر اندازهی پنجرهی کنسول روی ویندوز اصلاح شد.
مکاواس¶
IDLE¶
gh-94523: تشخیص پرونده در صورت تغییر روی دیسک محلی و نمایش اعلان برای درخواست تازهسازی. وصله توسط Shixian Li.
gh-139551: پشتیبانی از رندر کردن
BaseExceptionGroupدر IDLE.gh-89520: پیکربندی افزونهی IDLE طوری تنظیم شد که پروندههای پیکربندی کاربر را بررسی کند و به افزونههای نصبشده توسط کاربر اجازه دهد تنظیمات و کلیدهای میانبر تعریفشده در ~/.idlerc را داشته باشند.
رابط C API¶
gh-149225: تابع
PyCriticalSectionو توابع مرتبط به ABI پایدار اضافه شدند.gh-149216: فراخوانیهای بازگشتی
PyType_WatchCallbackکه از طریقPyType_AddWatcher()ثبت شدهاند، اکنون هنگامی که یک نوع هیپِ تحت نظر تخصیصزدایی میشود نیز فراخوانی میشوند. پیشتر، ناظران نوع تنها از تغییرات مطلع میشدند که میتوانست هنگام آزادسازی یک نوع و استفادهی مجدد از آدرس آن، باعث ایجاد ارجاعات منسوخ شود.gh-149044: پیادهسازی PEP 820: سیستم جایگاه یکپارچه برای API زبان C.
gh-148267: استفاده از
Py_LIMITED_APIروی یک ساخت نخآزاد (free-threaded build) غیر ویندوزی دیگر به یکPy_GIL_DISABLEDاضافی نیاز ندارد.gh-145559: تغییر نام
_Py_DumpTracebackو_Py_DumpTracebackThreadsبهPyUnstable_DumpTraceback()وPyUnstable_DumpTracebackThreads().gh-146636: پیادهسازی PEP 803 --
abi3t: رابط دودویی کاربردی (ABI) پایدار برای ساختهای نخآزاد.gh-146302: تابع
Py_IsInitialized()دیگر تا پیش از تکمیل کامل مقداردهی اولیه، از جمله ایمپورت ماژولsite، مقدار درست را برنمیگرداند. پرچمهای زمان اجرای زیرین اکنون از عملیات اتمی استفاده میکنند.gh-146063: افزودن تابع
PyObject_CallFinalizerFromDealloc()به API محدود C. وصله توسط Victor Stinner.gh-145921: افزودن توابعی که استفاده از آنها در هندلرهای
tp_traverseتضمینشده امن است:PyObject_GetTypeData_DuringGC()،PyObject_GetItemData_DuringGC()،PyType_GetModuleState_DuringGC()،PyModule_GetState_DuringGC()،PyModule_GetToken_DuringGC()،PyType_GetBaseByToken_DuringGC()،PyType_GetModule_DuringGC()،PyType_GetModuleByToken_DuringGC().
پایتون ۳.۱۵.۰ آلفا ۸¶
تاریخ انتشار: ۲۰۲۶-۰۴-۰۷
امنیت¶
gh-145986:
xml.parsers.expat: رفع یک فروپاشی ناشی از بازگشت C بیحسابوکتاب هنگام تبدیل مدلهای محتوای XML با تو در تویی عمیق توسطElementDeclHandler(). این مسئله مربوط به CVE 2026-4224 است.gh-145599: رد کردن نویسههای کنترلی در
update()وjs_output()کلاسhttp.cookies.Morsel. این مسئله مربوط به CVE 2026-3644 است.gh-143930: رد کردن خط توبهگذاریهای پیشتاز (leading dashes) در URLهای ارسالشده به
webbrowser.open().
هسته و توکارها (Core and Builtins)¶
gh-148157: رفع یک فروپاشی بعید هنگام تجزیه کامنتهای نوع نامعتبر برای پارامترهای تابع. کشفشده توسط OSS Fuzz در #492782951.
gh-100239: انتقال اطلاعات نوع نتیجه و یکتا بودن از طریق
_BINARY_OP_EXTENDدر بهینهساز لایه ۲، که امکان حذف نگهبانان نوع پاییندستی و انتخاب عملیات اعشاری درونجا را فراهم میکند.gh-148144: مقداردهی اولیه
_PyInterpreterFrame.visitedهنگام کپی کردن قابهای مفسر بهطوریکه GC تدریجی بایت مقداردهینشدهای را از کپیهای تولیدگر و شیء قاب نخواند.gh-148072: ذخیرهسازی
pickle.dumpsوpickle.loadsبه ازای هر مفسر در چارچوب XIData، که از جستوجوهای مکرر ماژول در هر انتقال دادهی بینمفسری جلوگیری میکند. این کار عملکردInterpreterPoolExecutorرا برای انواع تغییرپذیر (مانندlistوdict) بین ۱.۷x تا ۳.۳x سریعتر میکند.gh-148110: اصلاح
sys.set_lazy_imports_filter()بهطوریکه ایمپورتهای تنبل نسبی، نام ماژول ایمپورتشدهی حلشده را به کالبک فیلتر ارسال کنند. وصله توسط Pablo Galindo.gh-148083: اعمال تا شدن ثابت (constant-fold) روی
_CONTAINS_OP_SETبرایfrozenset. وصله توسط Donghee Na.gh-144319: رفع باگی که میتوانست باعث شود برنامههایی با الگوهای تخصیص خاص، در صورت کامپایل شدن با پشتیبانی از Huge Pages، از طریق Huge Pages دچار نشت حافظه شوند. وصله توسط Pablo Galindo
gh-147985: امکان تلاش برای جستوجوی بدون قفل در
PySet_Contains()، مشابهset.__contains__(). این کار از بهدست آوردن قفل متقابل شیء مجموعه در حالت عادی جلوگیری میکند.gh-147856: اجازه دادن به آرگومان count متد
bytes.replace()تا به عنوان کلیدواژه استفاده شود.gh-146615: رفع یک فروپاشی در
__get__()برای توصیفگرهای METH_METHOD هنگامی که یک شیء نامعتبر (غیر از نوع دادهی شیء) به عنوان آرگومان دوم ارسال میشود. توسط استیون سان (Steven Sun).gh-146306: بهینهسازی محاسبات اعداد صحیح فشرده در کامپایلر درجا (JIT) با تغییر درجای عملوندهای دارای ارجاع یکتا، که از تخصیص یک شیء صحیح جدید جلوگیری میکند. بنچمارک
spectral_normدر کتابخانهی pyperformance را حدود ۱۰ درصد سریعتر میکند.gh-146587: رفع مشکل تخصیص جایگاه نوع داده در صورت وجود چندین جایگاه برای یک نام در پیادهسازی شیء نوع داده. توسط کومار آدیتیا (Kumar Aditya).
gh-126910: تنظیم اشارهگرهای قاب در کد کامپایلر درجا (JIT) برای
aarch64-unknown-linux-gnu، که به بیشتر پروفایلگیرها و اشکالزدای بومی اجازه میدهد پشته را باز کنند. توسط دیگو روسو (Diego Russo)gh-146388: اضافه کردن بررسی تهی (null) برای مدیریت زمانی که بهینهساز کامپایلر درجا (JIT) هنگام روبهرو شدن با تناقضها در
make_bottomبا کمبود فضا مواجه میشود.gh-146308: رفع چندین مشکل مدیریت استثنا در ماژول
_remote_debuggingشامل آزاد کردن مضاعف در کش کردن شیء کد، نشت حافظه هنگام شکست در تخصیص، بررسیهای مفقود استثنا در رمزگشایی varint قالب دودویی، نشتهای ارجاع در مسیرهای خطا در پردازش زنجیرهی قاب، و گزارش خطای ناسازگار وضعیت نخ در پلتفرمهای مختلف. توسط پابلو گالیندو (Pablo Galindo).gh-146306: بهینهسازی محاسبات اعداد اعشاری در کامپایلر درجا (JIT) با تغییر درجای عملوندهای دارای ارجاع یکتا، که از تخصیص یک شیء اعشاری جدید جلوگیری میکند. بنچمارک
nbodyدر کتابخانهی pyperformance را حدود ۱۹ درصد سریعتر میکند.gh-146128: رفع باگی که میتوانست باعث خراب شدن جزئی مقادیر ثابت در کد کامپایلر درجا (JIT) پلتفرم AArch64 شود. این مسئله تئوری است و تاکنون در مفسرهای دستکارینشدهی پایتون مشاهده نشده است.
gh-146250: رفع نشت حافظه در
SyntaxErrorهنگام مقداردهی اولیهی مجدد آن.gh-146245: رفع نشت ارجاع در
socketهنگامی که قلابهای حسابرسی استثناهایی را درsocket.getaddrinfo()وsocket.sendto()ایجاد میکنند.gh-146151: کلاس
memoryviewاکنون از انواع C شامل float complex و double complex پشتیبانی میکند: نویسههای قالببندی'F'و'D'به ترتیب. توسط سرگی بی. کیرپیچف (Sergey B Kirpichev).gh-146196: رفع رفتار نامشخص احتمالی (Undefined Behavior) در
PyUnicodeWriter_WriteASCII()با اضافه کردن بررسی طول صفر. توسط شامل عبدالایف (Shamil Abdulaev).gh-146227: رفع نوع دادهی اشتباه در
_Py_atomic_load_uint16در بخش پشتیبان اتمیکهای C11 (pyatomic_std.h)، که به جای بارگذاری اتمی ۱۶ بیتی از بارگذاری ۳۲ بیتی استفاده میکرد. توسط محمد زهیب پیدا شد.gh-146205: رفع باگی که در آن
select.epoll.close()،select.kqueue.close()وselect.devpoll.close()خطاها را بهصورت صامت نادیده میگرفتند.gh-146199: مقایسهی اشیاء کد اکنون خطاها را بهدرستی مدیریت میکند.
gh-145667: حذف دستور
GET_ITER_YIELD_FROMو اصلاحSENDجهت جفت شدن باGET_ITERهنگام کامپایل کردن عبارتهایyield from.gh-146192: افزودن پشتیبانی از Base32 به
binasciiو بهبود کارایی مبدلهای Base32 درbase64. توسط جیمز سئو (James Seo).gh-135871: بهبود مقیاسپذیری چندنخی PyMutex در سناریوهای با رقابت پایین با بارگذاری مجدد وضعیت داخلی قفل، بدون کند کردن سناریوهای با رقابت بالا.
gh-146096: رفع خطای قطعهبندی (segmentation fault) هنگام فراخوانی تابع repr برای BaseExceptionGroup با آرگومانهای تاپل خالی یا با اندازهی ۱.
gh-146056: رفع تابع
repr()برای فهرستها و تاپلهای حاویNULL.gh-145059: ویژگی
sys.lazy_modulesاصلاح شد تا ماژولهای تنبل (lazy) بدون زیرماژولها را نیز شامل شود. وصلهای از Bartosz Sławecki.gh-146041: با جلوگیری از قفل سراسری مفسر هنگامی که رشته قبلاً درونیسازیشده و جاودانه شده است، گلوگاه مقیاسپذیری چندنخی (free-threading) در
sys.intern()وPyObject_SetAttr()برطرف شد.gh-145990: بخشهای
python --help-envاکنون بر اساس نام متغیر محیطی مرتب میشوند.gh-145990: دستور
python --help-xoptionsاکنون بر اساس نام گزینهی-Xمرتب میشود.gh-145876: خطاهای
AttributeErrorوKeyErrorکه در طول بازکردن بسته دیکشنری ({**mymapping}یاfunc(**mymapping)) درkeys()یا__getitem__()رخ میدهند، دیگر توسطTypeErrorپنهان نمیشوند.gh-127958: پشتیبانی از ردیابی از نقاط ورود تابع در کامپایلر درجا (JIT) اضافه شد. وصلهای از Ken Jin.
gh-145376: پیگیری زبالهروب (GC) در
structseq.__replace__()اصلاح شد.gh-145792: دسترسی خارج از کران هنگام فراخوانی faulthandler در نسخهای از سیپایتون (CPython) که بدون پشتیبانی از VLAها کامپایلشده است، اصلاح شد.
gh-142183: از یک حالت پاتولوژیک که در آن فراخوانیهای مکرر در یک عمق پشتهی خاص میتوانستند بهطور چشمگیری کندتر باشند، جلوگیری شد.
gh-145779: با جلوگیری از فراخوانی توصیفگر
__get__، مقیاسپذیری فراخوانیهایclassmethod()وstaticmethod()در ساخت نخآزاد بهبود یافت.gh-145783: یک فروپاشی بعید در پارسر هنگامی که خطاهای خاصی به اشتباه منتشر نمیشدند، اصلاح شد. توسط OSS Fuzz در #491369109 پیدا شد.
gh-145685: با جلوگیری از رقابت بر سر قفل داخلی نوع، مقیاسپذیری جستجوی ویژگیهای نوع در ساخت نخآزاد بهبود یافت.
gh-145713: متد
bytearray.resize()با استفاده از یک بخش بحرانی و فراخوانی گونهی دارای قفل تابع تغییر اندازه، در ساخت نخآزاد به صورت نخایمن درآمد.gh-145036: در ساخت نخآزاد، شرایط رقابت هنگام فراخوانی
__sizeof__()روی یکlistاصلاح شد.gh-134584: شمارش ارجاع اضافی برای
MATCH_CLASSدر کامپایلر درجا (JIT) حذف شد.gh-69605: ماژول
math.integerبه تکمیل خودکار ایمپورتها در REPL اضافه شد.gh-131798: بهینهسازی
_ITER_CHECK_RANGEو_ITER_CHECK_LISTدر کامپایلر درجا (JIT)gh-143414: پیگیری به بهینهساز کامپایلر درجا (JIT) اضافه شد تا مشخص شود آیا یک ارجاع به طور انحصاری متعلق به یک جا است یا به اشتراک گذاشته شده است
gh-143636: فروپاشی هنگام فراخوانی
SimpleNamespace.__replace__()روی نمونههای غیرفضای نامی اصلاح شد. وصلهای از Bénédikt Tran.gh-126910: اشارهگرهای قاب در کد کامپایلر درجا (JIT) در
x86_64-unknown-linux-gnuتنظیم شدند، که به بیشتر پروفایلگیرها و دیباگرهای بومی اجازه میدهد از میان آنها باز شوند.gh-140594: رفع یک خطای خواندن خارج از کران (out of bounds) زمانی که یک نویسهی NUL واحد از ورودی استاندارد خوانده میشود. وصله توسط Shamil Abdulaev.
gh-140870: افزودن پشتیبانی از صفتهای ماژول در تکمیل خودکار REPL برای ایمپورتها.
کتابخانه¶
gh-144503: رفع یک رگرسیون ایجادشده در نسخههای ۳.۱۴.۳ و ۳.۱۳.۱۲ که در آن روش شروع
forkserverدر ماژولmultiprocessingبا خطایBrokenPipeErrorمواجه میشد، هنگامی که فرایند والد دارای یکsys.argvبسیار بزرگ بود. آرگومانهای argv اکنون بهجای قرارگیری در رشتهی دستور-c، به عنوان آرگومانهای خط فرمان جداگانه به forkserver ارسال میشوند که این کار از محدودیت طول به ازای هر آرگومان در سیستمعامل جلوگیری میکند.gh-148153: تابع
base64.b32encode()اکنون برای مقدار map01 با طول نامعتبر، بهجایAssertionErrorهمیشهValueErrorبالا میآورد.gh-73613: افزودن پارامتر padded در عملکردهای مرتبط با کُدکهای Base32 و Base64 در ماژولهای
binasciiوbase64. در توابع کدگذاری این پارامتر کنترل میکند که آیا نویسهی پُرکننده میتواند در خروجی اضافه شود یا خیر، و در توابع کدگشایی کنترل میکند که آیا پُرکننده در ورودی الزامی است یا خیر. پُرکردن ورودی دیگر بهطور پیشفرض درbase64.urlsafe_b64decode()الزامی نیست.gh-146613: ماژول
itertools: رفع یک فروپاشی درitertools.groupby()هنگامی که پیمایشگر گروهبند بهطور همزمان تغییر داده میشود.gh-147944: بازهی مجاز برای آرگومان bytes_per_sep در متدهای
bytes.hex()،bytearray.hex()،memoryview.hex()و تابعbinascii.b2a_hex()اکنون افزایش یافته است؛ بنابراین ارسالsys.maxsizeو-sys.maxsizeاکنون معتبر است.gh-146080: ماژول
ssl: رفع یک فروپاشی هنگامی که یک کالبک SNI تلاش میکند از شیء SSLای استفاده کند که از پیش زبالهروبی (garbage-collected) شده است. اصلاحیه از Bénédikt Tran.gh-146556: رفع قفل شدن نامحدود تابع
annotationlib.get_annotations()هنگامی که با پارامترeval_str=Trueروی یک شیء فراخوانیپذیر فراخوانی میشود که دارای یک زنجیرهی حلقوی__wrapped__است (مانندf.__wrapped__ = f). تشخیص چرخه با استفاده از مجموعهی بازدیدشدهی مبتنی بر شناسه، اکنون پیمایش را متوقف کرده و به مقادیر سراسری یافتشده تاکنون بازمیگردد که رویکرد تابعinspect.unwrap()را بازتاب میدهد.gh-146090:
sqlite3: رفع یک فروپاشی هنگامی کهsqlite3.Connection.create_collation()با خطای SQLITE_BUSY شکست میخورد. وصله توسط Bénédikt Tran.gh-146090: ماژول
sqlite3: بالا آوردن درستMemoryErrorبهجایSystemErrorهنگامی که تخصیص حافظه برای یک کالبک زمینهای با شکست مواجه میشود. اصلاحیه از Bénédikt Tran.gh-146507: تبدیل متد
get_write_buffer_size()مربوط به انتقال جریان درasyncio.SelectorEventLoop()به مرتبهی زمانی (O(1 با نگهداری یک شمارندهی بایت در حال اجرا بهجای پیمایش بافر در هر فراخوانی.gh-145056: رفع ادغام
collections.OrderedDictوfrozendict.gh-145056: افزودن پشتیبانی برای ادغام
collections.UserDictوfrozendict.gh-145633: رفع
struct.pack('f', float): استفاده ازPyFloat_Pack4()برای بالا آوردنOverflowError. اصلاحیه از Sergey B Kirpichev و Victor Stinner.gh-146440: ماژول
json: افزودن پارامتر array_hook به توابعload()وloads(): امکان استفاده از یک کالبک برای انواع آرایهی لفظی JSON جهت سفارشیسازی فهرستهای پایتون در شیء رمزگشاییشدهی حاصل. ارسال ترکیبfrozendictبه پارامتر object_pairs_hook وtupleبهarray_hook، ساختار پایتون تغییرناپذیر عمیقاً تودرویی را تولید خواهد کرد که دادههای JSON را نمایش میدهد.gh-146431: افزودن پارامتر wrapcol به توابع ماژول
base64شاملb16encode()،b32encode()،b32hexencode()،b85encode()وz85encode()، و توابع ماژولbinasciiشاملb2a_base32()وb2a_base85(). افزودن پارامتر ignorechars به توابع ماژولbase64شاملb16decode()،b32decode()،b32hexdecode()،b85decode()وz85decode()، و توابع ماژولbinasciiشاملa2b_hex()،unhexlify()،a2b_base32()وa2b_base85().gh-146310: ماژول
ensurepipدیگر به دنبال بستههای چرخ (wheel) با الگویpip-*.whlدر پوشهی جاری نمیگردد.gh-141510: پشتیبانی از
frozendictدر ماژولplistlib، فقط برای سریالسازی. اصلاحیه از Hugo van Kemenade.gh-146238: پشتیبانی از اعداد اعشاری نیمدقت (کد نوع
'e'در ماژولstruct) در ماژولarray. اصلاحیه از Sergey B Kirpichev.gh-140947: اصلاح مدیریت نادرست contextvars در وظیفههای سرور ایجاد شده توسط
asyncio. توسط کومار آدیتیا (Kumar Aditya).gh-146151: پشتیبانی از انواع دادهی C به نامهای float complex و double complex در ماژول
array: به ترتیب نویسههای قالببندی'F'و'D'. اصلاحیه توسط Sergey B Kirpichev.gh-143387: در importlib.metadata، هنگامی که یک پروندهی توزیع خراب است و هیچ پروندهی فرادادهای وجود ندارد، فراخوانیهای
Distribution.metadata()(شامل فراخوانیهای ضمنی از سایر ویژگیها مانند.nameو.requires) اکنون یک استثنایMetadataNotFoundرا بالا خواهند آورد. این امر به فراخوانندگان اجازه میدهد تا بین فرادادهی گمشده و یک فرادادهی ناقص (خالی) تمایز قائل شوند. پیشتر، اگر پرونده گم شده بود، یکPackageMetadataخالی بازگردانده میشد و از وجود یک پروندهی خالی قابل تشخیص نبود.gh-146228: اشیاء FastPath کششده در importlib.metadata اکنون هنگام انشعاب پاکسازی میشوند تا از ارجاعات خراب به پروندههای زیپ در طول انشعاب جلوگیری شود.
gh-146171: پیشنهادهای تویدرتو برای
AttributeErrorاکنون شامل ویژگیهای متکیبر ویژگی (property-backed) روی اشیاء تویدرتو بدون اجرای getter ویژگی میشوند.gh-145410: در ویندوز،
sysconfig.get_platform()اکنون پلتفرم را به جای تجزیهی رشتهیsys.versionاز ماژول_sysconfigدریافت میکند. اصلاحیه توسط Victor Stinner.gh-146091: رفع باگی در
termios.tcsetwinsize()که در آن ارسال یک دنباله که در__getitem__یک استثنا بالا میآورد، به جای انتشار استثنای اصلی، باعث ایجاد یکSystemErrorمیشد.gh-146076:
zoneinfo: رفع خرابیها (crashes) هنگام حذف_weak_cacheاز یک زیرکلاسzoneinfo.ZoneInfo.gh-123471: ایمنسازی پیمایش همزمان روی
itertools.zip_longestتحت رشتهسازی آزاد (free-threading).gh-146075: خطاهای هنگام فراخوانی
functools.partial()با یک کلیدواژهی نادرست ساختاریافته، دیگر باعث فروپاشی مفسر نخواهند شد.gh-146054: محدود کردن اندازهی نهانگاه
encodings.search_function(). کشفشده توسط OSS Fuzz در #493449985.gh-146004: تمام گزینههای
-Xاز خط فرمان پایتون اکنون به فرایندهای فرزندی که توسطmultiprocessingایجاد میشوند، منتقل میشوند، و نه فقط یک زیرمجموعه که به صورت سختکدشده تعریف شده باشد. این کار رفتار را بین روشهای شروع پیشفرض «spawn» و «forkserver» و روش شروع قدیمی «fork» سازگار میکند. گزینههایی که پیشتر منتقل نمیشدند عبارتند از: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_contextوwarn_default_encoding.gh-145980: افزودن پارامتر alphabet در
b2a_base64()،a2b_base64()،b2a_base85()وa2b_base85()و تعدادی از ثابتهای*_ALPHABETدر ماژولbinascii. حذفb2a_z85()وa2b_z85().gh-145968: رفع ترجمه در
base64.b64decode()هنگامی که altchars با نویسههای استاندارد همپوشانی دارد.gh-145966: استثناوهای غیر از
AttributeErrorکه هنگام جستجوی ویژگی گویش (dialect attribute) درcsvبالا میروند، دیگر به طور بیصدا سرکوب نمیشوند.gh-145883:
zoneinfo: رفع خواندنهای سرریز بافر هیپ از دادههای ناسازگار TZif. کشفشده توسط OSS Fuzz، مسائل #492245058 و #492230068.gh-145850: تغییر برخی جزئیات پیادهسازی در
struct.Struct: فراخوانی آن با رشتهی قالب غیر اسکی اکنون به جایUnicodeEncodeErrorیکValueErrorبالا میآورد، فراخوانی آن با قالب بایتهای غیر اسکی اکنون به جایstruct.errorیکValueErrorبالا میآورد، و دریافت ویژگیformatاز شیء مقداردهینشده اکنون به جایRuntimeErrorیکAttributeErrorبالا میآورد.gh-123720: asyncio: رفع پسرفت (regression) در خاموشسازی
asyncio.Server.serve_forever(). از نسخهی 3.12 به بعد، لغوserve_forever()ممکن بود در انتظار برای یک هندلر مسدودشده روی عملیات خواندن از کلاینتی که هرگز بسته نشده است متوقف بماند (که عملاً برای توقف به دو وقفه نیاز داشت)؛ دنبالهی خاموشسازی اکنون تضمین میکند که جریانهای کلاینت بسته شوند تاserve_forever()به سرعت خارج شود و هندلرها EOF را مشاهده کنند.gh-138122: ماژول
profiling.samplingاکنون از مصورسازی نمودار شعلهی تفاضلی (differential flamegraph) از طریق--diff-flamegraphبرای مقایسهی دو اجرای پروفایلگیری پشتیبانی میکند. توابع به رنگهای قرمز (پسرفتها)، آبی (بهبودها)، خاکستری (خنثی) یا بنفش (جدید) درمیآیند. پشتههای حذفشده، مسیرهای کدی را نشان میدهند که بین اجراها ناپدید شدهاند.gh-145754: درخواست امضا در طی ماک autospec با قالب حاشیهنویسی
FORWARDREF. این کار از بروز خطاهای رانتایم زمانی که یک حاشیهنویسی از نامی استفاده میکند که در رانتایم تعریف نشده است، جلوگیری میکند.gh-145750: جلوگیری از رفتار تعریفنشده ناشی از سرریز عدد صحیح علامتدار هنگام تجزیهی رشتههای قالب در ماژول
struct. یافتهشده توسط OSS Fuzz در #488466741.gh-145719: افزودن نوع MIME به نام
application/efiبهmimetypes.gh-145717: افزودن چند نوع MIME مختص مایکروسافت.
gh-145703:
asyncio: اطمینان حاصل کنید کهloop.call_atوloop.call_laterرویدادهای زمانبندیشده را در زمان مناسب (زمانی که وضوح ساعت خیلی کوچک میشود) فراخوانی کنند.gh-145697: افزودن
application/sqlوapplication/vnd.sqlite3بهmimetypes.gh-145492: رفع بازگشتی بینهایت در
__repr__کلاسcollections.defaultdictهنگامی که یکdefaultdictخودش را شامل میشود. بر اساس تحلیل KowalskiThomas در gh-145492.gh-145650: افزودن پشتیبانی از
__repr__()بهlogging.Formatterوlogging.Filterکه به ترتیب رشتهی قالب و نام فیلتر را نمایش میدهند.gh-145587: رفع یک رگرسیون عملکردی در
multiprocessing.connection.waitروی ویندوز که باعث ایجاد حلقههای مشغول بینهایت هنگام فراخوانی بدون هیچ شیء میشد. این تابع اکنون به درستی کنترل را به سیستمعامل بازمیگرداند تا منابع پردازنده حفظ شوند. وصله توسط Shrey Naithanigh-145616: تشخیص صحیح sysconfig ABI اندروید روی ARM ۳۲ بیتی اندروید روی کرنل ARM ۶۴ بیتی
gh-145546: رفع
unittest.util.sorted_list_difference()برای حذف عناصر تکراری باقیمانده زمانی که یک فهرست ورودی قبل از فهرست دیگر تمام میشود.gh-145446: اکنون
functoolsدر ساخت نخآزاد هنگام استفاده از کلیدواژهها درfunctools.partial()ایمنتر است.gh-145264: رمزگشای Base64 (ببینید
binascii.a2b_base64()،base64.b64decode()، غیره) دیگر دادههای اضافی را پس از اولین چهارتایی پدشده در حالت غیرسختگیرانه (پیشفرض) نادیده نمیگیرد. در عوض، مطابق با RFC 4648، بخش ۳.۳، اکنون نویسهی پد، یعنی "=" را در صورتی که قبل از پایان دادههای رمزگذاریشده حضور داشته باشد، نادیده میگیرد.gh-145035: امکان حذف کتابخانهی داخلی
_pyreplبا از دست رفتن محدود قابلیتها را فراهم میکند. این امر امکان حذف کامل REPL مدرن را فراهم میکند که یک پیکربندی پشتیبانینشده است، اما همچنان برای برخی توزیعها مطلوب است.gh-144270: پارامتر tag در
xml.etree.ElementTree.Elementو پارامترهای parent و tag درxml.etree.ElementTree.SubElement()را به صورت مختص جایگاه (positional-only) درآورد که با رفتار شتابدهندهی C مطابقت دارد.gh-144984: رفع فروپاشی در
xml.parsers.expat.xmlparser.ExternalEntityParserCreate()هنگامی که یک تخصیص با شکست مواجه میشود. مسیرهای خطا میتوانندhandlersبا مقادیر NULL را dereference کنند و شمارندهی ارجاع پارسر والد را دو بار کاهش دهند.gh-144975: تابع
wave.Wave_write.setframerate()اکنون نرخ فریم را پس از گرد کردن به یک عدد صحیح اعتبارسنجی میکند و از پذیرش مقادیری مانند0.5و ایجاد خطاهای گیجکننده در آینده جلوگیری میکند. وصله توسط Michiel Beijen.gh-140715: افزودن پشتیبانی از
%nو%tبهstrptime().gh-144259: رفع نمایش نامتناسب محتوای جایگذاریشدهی چندخطی طولانی در REPL.
gh-140814: تابع
multiprocessing.freeze_support()دیگر متد شروع پیشفرض را به عنوان یک اثر جانبی تنظیم نمیکند، که قبلاً باعث میشد فراخوانی بعدیmultiprocessing.set_start_method()خطایRuntimeErrorرا ایجاد کند.gh-123471: ایمنسازی پیمایش همزمان روی
itertools.accumulateدر حالتِ نخکشی آزاد (free-threading).gh-143715: فراخوانی
Struct.__new__()بدون آرگومانهای لازم اکنون منسوخ شده است. فراخوانی متد__init__()روی شیءهای مقداردهی اولیهشدهیStructمنسوخ است.gh-142763: رفع یک وضعیت رقابت (race condition) بین ایجاد
zoneinfo.ZoneInfoوzoneinfo.ZoneInfo.clear_cache()که میتواند باعث بروز خطایKeyErrorشود.gh-141707: هنگام تجزیهی نامهای طولانی یا سرآیندهای پیوند GNU، نوع دادهی
tarfile.TarInfoرا ازAREGTYPEبهDIRTYPEتغییر ندهید.gh-138577: تابع
getpass.getpass()با یکecho_charغیرخالی، اکنون میانبرهای صفحهکلید از جمله Ctrl+A/E (حرکت نشانگر)، Ctrl+K/U (حذف سطر)، Ctrl+W (پاک کردن کلمه) و Ctrl+V (نویسهی لفظی بعدی) را با خواندن تنظیمات نویسهی کنترلی پایانه (terminal) و پردازش مناسب آنها در حالت غیرکانونیکال (non-canonical) مدیریت میکند. بستهی اصلاحی (patch) از Sanyam Khurana.gh-140049: تابع
traceback.format_exception_only()اکنون یادداشتهای استثنا را رنگی میکند.gh-139933: بهبود پیشنهادهای
AttributeErrorبرای کلاسهایی با متد__dir__()سفارشی که فهرستی از مقادیر غیرقابلمرتبهسازی برمیگرداند. بستهی اصلاحی (patch) از Bénédikt Tran.gh-139633: بررسی امنیتی ماژول
netrcاکنون به جای هر ورودی، یک بار در هر بار تجزیه (parse) اجرا میشود.gh-130472: افزودن fancycompleter و فعالسازی پیشفرض آن هنگام استفاده از pyrepl. این کار تکمیل خودکار زبانه (tab completion) رنگی را فراهم میکند.
gh-112632: افزودن یک آرگومان کلیدواژهای expand برای
pprint.pprint()،pprint.pformat()وpprint.pp()از طریق ارسال تمامی kwargs وpprint.PrettyPrinter. مشارکت از Stefan Todoran و Semyon Moroz.gh-66419: آرگومان اختیاری با nargs برابر با
argparse.REMAINDERاکنون تمامی آرگومانهای باقیمانده از جمله'--'را مصرف میکند.gh-60729: افزودن پشتیبانی از پروندههای صوتی موجی با ممیز شناور در ماژول
wave.bpo-36461: قابل تنظیم کردن زمان هدفِ
timeit.Timer.autorange()و افزودن گزینهی--target-timeبه رابط خط فرمان ماژولtimeit.
مستندات¶
آزمونها¶
gh-144418: حافظهی رم شبیهساز محیط آزمون اندروید (Android testbed) از ۲ گیگابایت به ۴ گیگابایت افزایش یافته است.
gh-146202: رفع وضعیت رقابت در regrtest: اطمینان حاصل کنید که پوشهی موقت در فرایند کارگر (worker process) ایجاد میشود. پیش از این، temp_cwd() میتوانست روی ویندوز شکست بخورد اگر پوشهی «build» ایجاد نشده بود. بستهی اصلاحی (patch) از Victor Stinner.
ساخت¶
gh-146541: محیط آزمون اندروید اکنون میتواند برای اهداف ARM سیودوبیتی و x86 ساخته شود.
gh-146498: اسکریپت ساخت XCframework در iOS اکنون تضمین میکند که libpython در محتوای برنامهی نصبشده گنجانده نشود، و در شناسایی محتوای دودویی کتابخانهی استاندارد که نیازمند پردازش است، استوارتر عمل میکند.
gh-146450: اسکریپت ساخت اندروید برای بهبود همارزی با سایر اسکریپتهای ساخت سکو اصلاح شد.
gh-146446: هدف پاکسازی (clean target) مربوط به اسکریپت ساخت XCframework در Apple/iOS اکنون هنگام هدف قرار دادن یک معماری منفرد، انتخابیتر عمل میکند.
gh-146444: اسکریپت ساخت Apple/iOS به پوشهی Platforms منتقل شده است.
gh-146210: رفع مشکل ساخت استنسیلهای jit روی ویندوز هنگامی که مفسر با نسخهی متفاوتی از clang ساخته میشود. وصلهای از Chris Eibl.
gh-145844: بهروزرسانی به WASI SDK 32.
gh-145801: هنگامی که ساخت پایتون با استفاده از GCC و PGO بهینهسازی میشود، از گزینهی
-fprofile-update=atomicاستفاده کنید تا هنگام بهروزرسانی اطلاعات پروفایل، از عملیات اتمی استفاده شود. این گزینه خطر خراب شدن پروندههای دادهای gcov (.gcda) را که میتوانند باعث خرابیهای تصادفی GCC شوند، کاهش میدهد. وصلهای از Victor Stinner.gh-138850: افزودن
--disable-epollبهconfiguregh-145633: حذف پشتیبانی از پلتفرمهای قدیمی ARM (بردهای ARMv4L و ARMv5L OABI)، که از بازنمایی مختلط-اندیان (mixed-endian) برای ممیزهای شناور با دقت مضاعف استفاده میکردند. وصلهای از Sergey B Kirpichev.
gh-85277: رفع مشکل ساخت بدون
stropts.hیا باstropts.hخالی
Windows¶
gh-140131: رفع موقعیت نشانگر REPL روی ویندوز زمانی که سطر پیشنهاد تکمیل ماژول به عرض کنسول میرسد.
مکاواس¶
gh-137586: فراخوانی osascript با مسیر مطلق در
webbrowserوturtledemo.
Tools/Demos¶
gh-135953: شناسایی صحیح نخ اصلی در جمعآورندهی پروفایلگیر Gecko با استفاده از پرچم وضعیت از وضعیت مفسر به جای تکیه بر
threading.main_thread()در فرایند جمعآورنده.gh-145976: حذف
Misc/indent.pro، یک پروندهی پیکربندی برای indent(1) در GNU.gh-145976: حذف
Misc/vgrindefsوMisc/Porting.
رابط C API¶
gh-146636: جایگاه
Py_mod_abiاکنون برای ماژولهای ایجادشده از آرایهی جایگاهها (با استفاده ازPyModule_FromSlotsAndSpec()یا قلاب اکسپورتPyModExport_*) الزامی است.gh-146175: ماکروهای زیر منسوخ نرم هستند:
Py_ALIGNED،PY_FORMAT_SIZE_T،Py_LL،Py_ULL،PY_LONG_LONG،PY_LLONG_MIN،PY_LLONG_MAX،PY_ULLONG_MAX،PY_INT32_T،PY_UINT32_T،PY_INT64_T،PY_UINT64_T،PY_SIZE_MAX،Py_UNICODE_SIZE،Py_VA_COPY.ماکروی
Py_UNICODE_WIDEکه قرار بود حذف شود، به جای آن منسوخ نرم شد.gh-146143: تابع
PyUnicodeWriter_WriteUCS4()اکنون یک اشارهگر به یک بافر ثابت ازPy_UCS4را میپذیرد.gh-146056: تابع
PyUnicodeWriter_WriteRepr()اکنون از آرگومانNULLپشتیبانی میکند.gh-145010: استفاده از گزینههای جایگزین گویش GCC برای اسمبلی درونخطی در
object.hبهطوریکه سرآیندهای پایتون با-masm=intelبه درستی کامپایل شوند.
Python 3.15.0 alpha 7¶
تاریخ انتشار: ۲۰۲۶-۰۳-۱۰
Windows¶
gh-145731: رفع برچسب زمانی منفی در طول زمان صرفهجویی در نور روز (DST) در ویندوز. وصله توسط Hugo van Kemenade.
gh-145307: بارگذاری ماژول
psapi.dllرا تا زمان استفاده از آن توسطctypes.util.dllist()به تعویق میاندازد.gh-144551: بهروزرسانی نسخهی بستهبندیشدهی OpenSSL به ۳.۵.۵.
آزمونها¶
gh-144741: رفع
test_frame_pointer_unwindهنگامی که پایتون با--enable-sharedساخته میشود. همچنین طبقهبندی قابهای libpython به عنوان"python". وصله توسط Victor Stinner.gh-144739: هنگامی که پایتون با expat سیستمی قدیمیتر از ۲.۷.۲ کامپایلشده باشد اما آزمونها با expat جدیدتر اجرا شوند، باز هم
test.test_pyexpat.MemoryProtectionTestنادیده گرفته میشود.
امنیت¶
gh-145506: رفع CVE 2026-2297 با اطمینان از اینکه
SourcelessFileLoaderهنگام باز کردن پروندههای.pycازio.open_code()استفاده میکند.gh-144370: عدم اجازه استفاده از نویسههای کنترلی در وضعیت در
wsgiref.handlersبرای جلوگیری از تزریق سرآیند HTTP. وصله توسط Benedikt Johannes.
کتابخانه¶
gh-145623: رفع فروپاشی در
structهنگام فراخوانیrepr()یا__sizeof__()روی یک شیء مقداردهینشدهیstruct.Structکه از طریقStruct.__new__()و بدون فراخوانی__init__()ایجاد شده است.gh-145551: رفع InvalidStateError هنگام لغو فرایند ایجاد شده توسط
asyncio.create_subprocess_exec()یاasyncio.create_subprocess_shell(). وصله توسط Daan De Meyer.gh-141510: ماژول
marshalاکنون از اشیاءfrozendictپشتیبانی میکند. نسخهی فرمت مارشالکردن به ۶ افزایش یافت. وصله توسط Victor Stinner.gh-145417:
venv: جلوگیری از حفظ نادرست زمینهی SELinux هنگام کپی کردن اسکریپتActivate.ps1. این اسکریپت زمینهی امنیتی SELinux را از پوشهی قالب سیستم به ارث برده بود، نه از پوشهی پروژهی مقصد.gh-145335: توابع
os.listdir(-1)وos.scandir(-1)اکنون به جای فهرست کردن پوشهی جاری، باOSError(errno.EBADF)با خطا مواجه میشوند. تابعos.listxattr(-1)اکنون به جای فهرست کردن ویژگیهای توسعهیافتهی پوشهی جاری، باOSError(errno.EBADF)با خطا مواجه میشود. وصله توسط Victor Stinner.gh-145376: رفع آزاد شدن مضاعف حافظه و ارجاع به اشارهگر تهی در سناریوهای خطای غیرمعمول در ماژولهای
hashlibوhmac.gh-145301:
hmac: رفع فروپاشی هنگامی که مقداردهی اولیه ماژول توسعهای زیرین C با شکست مواجه میشود.gh-145301:
hashlib: رفع فروپاشی هنگامی که مقداردهی اولیه ماژول توسعهای زیرین C با شکست مواجه میشود.gh-76007: ویژگی
versionاز ماژولtarfileمنسوخ شده است و قرار است در پایتون ۳.۲۰ حذف شود.gh-145158: اجتناب از رفتار نامشخص ناشی از سرریز عدد صحیح علامتدار هنگام تجزیه رشتههای قالب در ماژول
struct.gh-123853: سازگاری با ویندوز ۹۵ برای
locale.getdefaultlocale()حذف شد.gh-66802: اضافه کردن تابع
unicodedata.block()برای بازگرداندن Unicode block یک نویسه.gh-145033: افزودن
typing.TypeFormکه PEP 747 را پیادهسازی میکند. وصله توسط Jelle Zijlstra.gh-141510:
dataclasses.field(): اگر پارامتر metadata برابر باNoneباشد، بهجایMappingProxyType()یکdictخالی، از یکfrozendictخالی استفاده کنید. وصله توسط Victor Stinner.gh-145006: افزودن راهنماییهای
ModuleNotFoundErrorهنگامی که ماژولی برای یک ABI متفاوت وجود دارد.gh-141510: ویژگی
ParameterizedMIMEHeader.paramsدر ماژولemail.headerregistryاکنون بهجایtypes.MappingProxyTypeیکfrozendictاست. وصله توسط Victor Stinner.gh-134872: افزودن پیشنهادهای نام ایمپورت معتبر روی
ModuleNotFoundError.gh-88091: رفع تابع
unicodedata.decomposition()برای نویسههای هانگول.gh-144986: رفع نشت حافظه در
atexit.register(). وصله توسط Shamil Abdulaev.gh-144777: رفع رقابتهای دادهای در
io.IncrementalNewlineDecoderدر ساخت نخآزاد.gh-144809: اتمیک کردن کپی
collections.dequeدر ساخت نخآزاد.gh-141510: ماژول
copyاکنون از نوع دادهیfrozendictپشتیبانی میکند. وصله توسط Pieter Eendebak بر اساس کار Victor Stinner.gh-141510: ماژول
jsonاکنون از نوع دادهیfrozendictپشتیبانی میکند. وصله توسط Victor Stinner.gh-144835: افزودن توضیحات مفقودشده برای برخی پارامترها در
glob.glob()وglob.iglob().gh-144833: رفع خطای استفاده پس از آزادسازی (use-after-free) در ماژول
sslهنگامی که تابعSSL_new()درnewPySSLSocket()مقدار NULL برمیگرداند. این خطا پس از آزاد شدن شیء، از طریق یک اشارهگر معلق گزارش شد.gh-140715: افزودن پشتیبانی از
'%D'بهstrptime().gh-144782: اصلاح
argparse.ArgumentParserبه شکلی که قابلیتpickleableداشته باشد.gh-144763: اصلاح یک شرایط رقابت در ماژول
tracemalloc: این ماژول دیگر وضعیت نخ متصل را برای بهدست آوردن قفل داخلی خود جدا نمیکند. وصله توسط Victor Stinner.gh-142224: تابع
unicodedata.bidirectional()اکنون کلاس پیشفرض صحیح دوطرفه (bidi) را برای نقطهکدهای تخصیصنیافته برمیگرداند.gh-144156: رفع تا شدن سرآیندها توسط کتابخانهی
emailهنگامی که از کلمات کدگذاریشدهی RFC 2047 استفاده میشود. اکنون فضای خالی بهدرستی حفظ شده و همچنین بین کلمات کدگذاریشدهی مجاور بهدرستی اضافه میشود. ویژگی دوم توسط اصلاح gh-92081 خراب شده بود که بیشتر خرابیهای قبلی در حفظ فضای خالی را اصلاح کرده بود.gh-66305: رفع خطای توقف پاسخ (hang) در ویندوز درون ماژول
tempfileهنگام تلاش برای ایجاد یک پرونده یا زیرپوشهی موقت در یک پوشهی غیرقابلنوشتن.gh-144615: متدهایی که مستقیماً با
@functools.singledispatchmethodدکوریت شدهاند، اکنون هنگام فراخوانی پس از دسترسی به عنوان ویژگیهای کلاس، روی آرگومان دوم دیسپچ میکنند. وصلهای از Bartosz Sławecki.gh-144321: نحو تابعی برای ایجاد کلاسهای
typing.NamedTupleاکنون از ارسال هر پیمایشپذیر از فیلدها و نوعها پشتیبانی میکند. پیشتر، تنها از دنبالهها پشتیبانی میشد.gh-144475: فراخوانی
repr()رویfunctools.partial()اکنون زمانی که ویژگیهای داخلی شیء partial در حین تولید نمایش رشتهای جایگزین میشوند، ایمنتر است.gh-144285: پیشنهادهای ویژگی در ردگیریهای
AttributeErrorاکنون به شکل متفاوتی قالببندی میشوند تا درک آنها آسانتر شود، برای نمونه:Did you mean '.datetime.now' instead of '.now'. مشارکت از Bartosz Sławecki.gh-144316: رفع فروپاشی در
_remote_debuggingکه باعث میشدtest_external_inspectionبه طور متناوب با خطا مواجه شود. وصلهای از Taegyun Kim.gh-143637: یک فروپاشی در socket.sendmsg() برطرف شد که ممکن بود در صورت جهش مجدد داده جانبی (ancillary data) در حین تجزیهی آرگومان رخ دهد.
gh-140652: رفع فروپاشی در
_interpchannels.list_all()پس از بستن یک کانال.gh-143698: به آرگومانهای scheduler و setpgroup اجازه داده میشود هنگام فراخوانی
os.posix_spawn()یاos.posix_spawnp()صراحتاًNoneباشند. وصلهای از Bénédikt Tran.gh-143698: وقتی scheduler در
os.posix_spawn()یاos.posix_spawnp()از نوع تاپل (tuple) نباشد، به جایSystemErrorخطایTypeErrorبالا آورده میشود. وصلهای از Bénédikt Tran.gh-142516:
ssl: رفع نشت ارجاع در اشیایssl.SSLContext. وصلهای از Bénédikt Tran.gh-85809: پشتیبانی از شیء شبهمسیر برای
shutil.make_archive()اضافه شد.gh-143304: اصلاح
ctypes.CDLLبرای احترام به پارامترhandleدر سیستمهای POSIX.gh-142781:
zoneinfo: رفع یک فروپاشی هنگام نمونهسازی شیءهایZoneInfoکه نهانگاه درونکلاسی آنها ناسازگار است.gh-142787: رفع خطای شکست ادعا در زیرنویس بلاب
sqlite3هنگام اسلایس کردن با شاخصهایی که منجر به یک اسلایس خالی میشوند.gh-142352: اصلاح
asyncio.StreamWriter.start_tls()برای انتقال دادههای بافرشده ازStreamReaderبه لایهی TLS، که از از دست رفتن دادهها هنگام ارتقای یک اتصال به TLS در وسط جریان جلوگیری میکند (برای نمونه، هنگام پیادهسازی پشتیبانی از پروتکل PROXY).gh-139899: متدهای
importlib.abc.MetaPathFinder.discover()وimportlib.abc.PathEntryFinder.discover()معرفی شدند تا امکان کشف نام ماژول و زیرماژول بدون فرض استفاده از ایمپورتهای مبتنی بر سامانهی فایلبندی سنتی فراهم شود.gh-137335: از بین بردن هرگونه احتمال تداخل نام برای پایپهای نامگذاریشده در
multiprocessingوasyncioروی ویندوز، هرچند که بسیار کوچک باشد.gh-135883: رفع مشکل پوستهی تعاملی
sqlite3در interactive shell که هنگام پیمایش تاریخچه، بخشی از دستورات قبلی را نگه میداشت.gh-124748: بهبود پیام خطای
TypeErrorزمانی کهweakref.WeakKeyDictionary.update()با پارامترهای فقط-کلیدواژه استفاده میشود.gh-80667: پشتیبانی از نامهای ایدهنگاشتهای تانگوت (Tangut Ideographs) در
unicodedataاضافه شد.bpo-42353: ماژول
reتابع جدیدی به نامre.prefixmatch()را به عنوان شکل صریحی از آنچه تاکنون همیشه به عنوانre.match()شناخته میشد، اضافه میکند. کلاسre.Patternنیز به همین ترتیب متدre.Pattern.prefixmatch()را دریافت میکند.چرا؟ صریح بودن بهتر از ضمنی بودن است. سایر زبانهای پرکاربرد همگی از اصطلاح «match» برای مفهومی استفاده میکنند که پایتون برای آن از اصطلاح «search» استفاده میکند. نام بدون پسوند «match» در پایتون به دلیل عدم سازگاری با سایر بخشهای صنعت نرمافزار، مکرراً مایه سردرگمی و بروز اشکالات کدنویسی شده است.
ما قصد نداریم نام قدیمیتر
matchرا منسوخ و حذف کنیم.bpo-40243: رفع مشکل
unicodedata.ucd_3_2_0.numeric()برای مقادیر غیردهدهی.bpo-40212: فعالسازی مجدد
os.posix_fallocate()وos.posix_fadvise()روی سیستمعامل AIX.bpo-3405: افزودن پشتیبانی از دادههای کاربر رویدادهای مجازی Tk و جزئیات رویدادهای
Enter،Leave،FocusIn،FocusOutوConfigureRequestبه ماژولtkinter.bpo-32234: نمونههای
mailbox.Mailboxاکنون میتوانند به عنوان یک مدیر زمینه استفاده شوند. صندوق پستی در ورود به زمینه قفل شده و در خروج از زمینه باز و بسته میشود.
مستندات¶
gh-145450: مستندسازی متدهای getter عمومی و جاافتادهی
wave.Wave_write.gh-110937: مستندسازی بقیه API عمومی کامل
importlib.metadata.Distribution. همچنین افزودن کلاس (که از پیش مستند شده است)PackagePathبه__all__.gh-136246: پیوند جدید «Improve this page» در نوار کناری سمت چپ مستندات در دسترس است که پیوندهایی را برای ایجاد مسائل (issues) گیتهاب، پستهای انجمن گفتگو، یا درخواستهای کش (pull requests) ارائه میدهد.
هسته و توکارها (Core and Builtins)¶
gh-145701: رفع خطای
SystemErrorهنگامی که__classdict__یا__conditional_annotations__در یک عبارت درکشوندهی درونخطی در محدودهی کلاس قرار دارد. این مورد توسط OSS Fuzz در #491105000 پیدا شد.gh-145615: رفع یک نشتی حافظه در ساخت نخآزاد که در آن صفحات mimalloc ممکن بود تا زمان خروج نخ مالک، به طور دائم غیرقابل بازیابی بمانند.
gh-116738: ایمنسازی در برابر نخ
mmap.mmap.set_name()در ساخت نخبندی آزاد.gh-145566: در ساخت نخبندی آزاد، مکث توقف جهان (stop-the-world pause) را هنگام تخصیص مجدد
__class__روی یک شیء تازه ایجاد شده، رد کنید.gh-143055: رفع خرابی در تجزیهکنندهی درخت نحوی انتزاعی (AST) هنگام تجزیه باز کردن بستهی درکشوندهی دیکشنری. پیدا شده توسط OSS Fuzz در #489790200.
gh-145335: رفع خرابی در
os.pathconf()هنگامی که با آرگومان مسیر-1فراخوانی میشود.gh-145376: رفع نشتیهای ارجاع در سناریوهای خطای مختلف و غیرمعمول.
gh-145234: رفع یک خطای
SystemErrorدر پارسر هنگامی که یک کوکی کدگذاری (برای مثال، UTF-7) به کاراکترهای بازگشت به ابتدای سطر (\r) کدگشایی میشود. خطوط جدید اکنون پس از کدگشایی در توکنساز رشته نرمالسازی میشوند.وصله توسط Pablo Galindo.
gh-145275: گزینههای
-X pathconfig_warningsوPYTHON_PATHCONFIG_WARNINGSاضافه شدند که به شما اجازه میدهند هشدارهای مقداردهی اولیهی مسیر جستجوی ماژول sys.path را غیرفعال کنید.gh-145273: یک هشدار اکنون در طول مقداردهی اولیهی مسیر جستجوی ماژول sys.path نمایش داده میشود اگر نتواند یک کتابخانهی استاندارد معتبر پیدا کند.
gh-145241: خطای پارسر را برای مواقعی که اقلام
withبا یک کامای انتهایی دنبال میشوند (برای مثال،with item,:) تخصصی کرد، که پیامSyntaxErrorواضحتری را بالا میآورد. وصلهای از Pablo Galindo و Bartosz Sławecki.gh-130555: رفع مشکل استفاده پس از آزادسازی (use-after-free) در
dict.clear()زمانی که مقادیر دیکشنری در داخل یک شیء تعبیهشدهاند و یک تخریبگر (destructor) باعث تغییرات همزمان مجدد (re-entrant mutation) دیکشنری میشود.gh-145197: رفع فروپاشی رد کامپایلر درجا (JIT) هنگام ثبت تابع از قاب تولیدگر پاکشده.
gh-145187: رفع خطای ادعای کامپایلر هنگامی که یک کران پارامتر نوع حاوی یک عبارت نامعتبر در یک بلوک شرطی است.
gh-145142: رفع فروپاشی در ساخت نخآزاد (free-threaded build) هنگامی که آرگومان دیکشنری به
str.maketrans()به شکل همزمان تغییر میکند.gh-145118: متد
str.maketrans()اکنونfrozendictرا میپذیرد.gh-144015: افزایش سرعت عملیات
bytes.hex()،bytearray.hex()،binascii.hexlify()وhashlib.hexdigest()با استفاده از SIMD روی x86-64، ARM64 و ARM32 با NEON هنگام ساخت با کامپایلرهای gcc (نسخهی ۱۲ یا بالاتر) یا clang (نسخهی ۳ یا بالاتر). حدود ۱.۱ تا ۳ برابر سریعتر برای ورودیهای متداول ۱۶ تا ۶۴ بایتی مانند خلاصهپیامهای هگز hashlib و تا ۸ برابر سریعتر برای دادههای بزرگتر.gh-145118: تابع
type()اکنونfrozendictرا به عنوان آرگومان میپذیرد.gh-145064: رفع خطای ادعای بهینهساز کامپایلر درجا (JIT) در طول خروج جانبی
CALL_ALLOC_AND_ENTER_INIT.gh-145055: توابع
exec()وeval()اکنونfrozendictرا برای globals میپذیرند. وصله توسط ویکتور استینر (Victor Stinner).gh-145058: رفع فروپاشی هنگام ارسال یک آرگومان غیررشتهای به
__lazy_import__()، با بالا آوردن یکTypeErrorبه جای آن.gh-144995: بهینهسازی مقایسهی
memoryview: یکmemoryviewبا خودش برابر است، نیازی به مقایسهی مقادیر نیست. وصله توسط ویکتور استینر (Victor Stinner).gh-141510: بهروزرسانی متخصصساز برای پشتیبانی از frozendict. وصله توسط دونگهی نا (Donghee Na).
gh-141510: بهینهسازی
frozendict.fromkeys()برای جلوگیری از عملیات ایمنی نخ غیرضروری در موارد frozendict. وصله توسط دونگهی نا (Donghee Na).gh-100239: افزایش سرعت
BINARY_OP_EXTENDبرای اعداد اعشاری دقیق و اعداد صحیح با اندازهی متوسط تا ۱۵ درصد. وصله توسط کریس ایبل (Chris Eibl).gh-144914: استفاده از
mimallocبرای تخصیصهای حافظهی خام مانند از طریقPyMem_RawMalloc()برای عملکرد بهتر در ساختهای نخآزاد. وصله توسط کومار آدیتیا (Kumar Aditya).gh-144872: رفع سرریز بافر هیپ در پارسر که توسط OSS-Fuzz پیدا شد.
gh-144766: رفع فروپاشی در فرایند فرزند انشعاب (fork) هنگامی که پشتیبانی از perf فعال است.
gh-144759: رفع رفتار نامشخص در تحلیلگر کلامی (lexer) هنگامی که اشارهگرهای
startوmulti_line_startدر_PyLexer_remember_fstring_buffers()و_PyLexer_restore_fstring_buffers()مقادیرNULLهستند. محاسبات ریاضی اشارهگرNULL(یعنیNULL - valid_pointer) اکنون با بررسیهای صریحNULLمحافظت میشوند.gh-141510: افزودن نوع
frozendictتوکار. اصلاحیه از Victor Stinner.gh-144681: رفع خطای ادعای کامپایلر درجا (JIT) هنگامی که یک شاخهی شرطی به همان مقصدی میپرد که مسیر عبور پیشفرض (fallthrough) است.
gh-143300: افزودن تابع
PyUnstable_SetImmortal()در API زبان C برای علامتگذاری اشیا به عنوان نامیرا.gh-144702: شفافسازی پیام خطای صادرشده هنگام استفاده از الگوی کلاس برای تطبیق روی یک شیء غیرکلاس.
gh-144569: بهینهسازی
BINARY_SLICEبرای فهرست، تاپل و یونیکد با اجتناب از ایجاد شیء موقتslice.gh-144438: همترازسازی آرایهی وضعیت نخ QSBR با مرز خط نهانگاه ۶۴ بایتی برای جلوگیری از اشتراک کاذب در ساخت نخآزاد.
gh-142349: پیادهسازی PEP 810. اصلاحیه از Pablo Galindo و Dino Viehland.
gh-141226: منسوخ کردن پشتیبانی PEP 456 برای ارائهی یک تعریف خارجی از طرحوارهی هش کردن رشته. حذف آن برای پایتون نسخهی ۳.۱۹ برنامهریزی شده است. اصلاحیه از Bénédikt Tran.
gh-138912: بهبود کارایی
MATCH_CLASSتا ۵۲ درصد در برخی موارد خاص. اصلاحیه از Marc Mueller.gh-130327: رفع پاکسازی نادرست
__dict__یک شیء در صورت بازنویسی در زمان اجرا (runtime).gh-80667: مقادیر لفظی با استفاده از نحو گریز
\N{name}اکنون میتوانند نگارههای CJK و هجای Hangul را با استفاده از نامهای حساس به بزرگ و کوچک بودن حروف (case-insensitive) بسازند.
رابط C API¶
gh-142417: بازیابی تابع خصوصی و موقت
_Py_InitializeMain()که در پایتون ۳.۱۴ حذف شده بود. اصلاحیه از Victor Stinner.gh-144748: تابع
PyErr_CheckSignals()اکنون استثنای زمانبندیشده توسطPyThreadState_SetAsyncExc()را (در صورت وجود) پرتاب میکند.gh-144981: توابع
PyUnstable_Code_SetExtra()،PyUnstable_Code_GetExtra()وPyUnstable_Eval_RequestCodeExtraIndex()را در ساخت نخبندی آزاد به شکل نخایمن (thread-safe) درآورد.gh-141510: توابع زیر را برای نوع جدید
frozendictاضافه کنید:توسط Victor Stinner وصل شد.
gh-121617: پروندهی
Python.hاکنون همچنین<string.h>را در نسخهی ۳.۱۱ و جدیدترِ API C محدود (limited C API) برای اصلاح کلاندستورPy_CLEARکه ازmemcpy()استفاده میکند، شامل میشود. توسط Victor Stinner وصل شد.gh-144175: توابع
PyArg_ParseArray()وPyArg_ParseArrayAndKeywords()را برای تجزیه کردن آرگومانهای توابع با استفاده از قرارداد فراخوانیMETH_FASTCALLاضافه کنید. توسط Victor Stinner وصل شد.
ساخت¶
gh-144533: استفاده از
--argv0ابزار wasmtime برای کشف خودکار sysconfig در نسخههای ساخت WASIgh-145110: رفع اهداف «Clean» و «CLeanAll» در صورت ساختهای PGO روی ویندوز. توسط Chris Eibl وصل شد.
gh-144679: هنگام ساخت با Visual Studio 2026 (نسخهی ۱۸)، بهطور پیشفرض از PlatformToolSet v145 استفاده کنید. توسط Chris Eibl وصل شد.
gh-144675: بهروزرسانی به WASI SDK 30.
gh-136677: معرفی پرچمهای پیونددهندهی مختص فایل اجرایی به
./configure.
پایتون ۳.۱۵.۰ آلفا ۶¶
تاریخ انتشار: ۲۰۲۶-۰۲-۱۱
مکاواس¶
Windows¶
gh-80620: پشتیبانی از مهر زمانی منفی در
time.gmtime()،time.localtime()و توابع مختلفdatetime.
آزمونها¶
gh-144415: محیط آزمون اندروید اکنون بین پیامهای stdout/stderr که توسط یک کاراکتر خط جدید فعال شدهاند و آنهایی که با فراخوانی دستی
flushفعال شدهاند، تمایز قائل میشود. این کار گزارشگیری نشانگرهای پیشرفت و محتوای مشابه را اصلاح میکند.gh-65784: اضافه کردن پشتیبانی از منبع پارامتردار
wantobjectsدر regrtests، که اجازه میدهد آزمونهای Tkinter با مقدار مشخصشدهیtkinter.wantobjectsاجرا شوند، برای مثال-u wantobjects=0.
امنیت¶
gh-144125: ماژول
BytesGeneratorاکنون از سریز (نوشتن) سرآیندهایی که بهطور ناامن تا یا تفکیک شدهاند خودداری میکند؛ نگاه کنید بهverify_generated_headers. (مشارکتکنندگان: Bas Bloemsaat و Petr Viktorin در gh-121650).gh-143935: رفع یک باگ در تا کردن کامنتها هنگام تختسازی یک پیام ایمیل با استفاده از یک خطمشی ایمیل مدرن. کامنتهایی که از دنبالهی بسیار طولانی از نویسههای غیرقابلتا شدن تشکیل شدهاند، میتوانند باعث شکستن اجباری خط شوند که فاصلهی پیشروی لازم را در خط ادامه حذف میکند و باعث میشود بقیهی کامنت بهعنوان یک فیلد سرآیند جدید تفسیر شود. این امر تزریق سرآیند را با ورودیهای با دقت ساختهشده فعال کرد.
gh-143925: رد کردن نویسههای کنترلی در انواع رسانهی URL در
data:.gh-143923: رد کردن نویسههای کنترلی در دستورات POP3.
gh-143921: رد کردن نویسههای کنترلی در دستورات IMAP.
gh-143919: رد کردن نویسههای کنترلی در فیلدها و مقادیر
http.cookies.Morsel.gh-143916: رد کردن نویسههای کنترلی C0 در فیلدها، مقادیر و پارامترهای wsgiref.headers.Headers.
کتابخانه¶
gh-144538: ارتقای نسخهی pip بستهبندیشده در ensurepip به نسخهی 26.0.1
gh-144493: بهبود پیام خطای استثنا در
_overlapped.BindLocal()که هنگام فراخوانیasyncio.loop.sock_connect()روی یکasyncio.ProactorEventLoopبا یک سوکت دارای خانوادهآدرس نامعتبر ایجاد میشود.gh-144386: افزودن پشتیبانی از توصیفگرهای دلخواه
__enter__()،__exit__()،__aenter__()و__aexit__()درcontextlib.ExitStackوcontextlib.AsyncExitStack، جهت سازگاری با دستوراتwithوasync with.gh-123471: ایمنسازی پیمایش همزمان روی
itertools.combinations_with_replacementوitertools.permutationsدر حالت ریسمانآزاد (free-threading).gh-74453: منسوخ کردن
os.path.commonprefix()به نفعos.path.commonpath()برای پیشوندهای بخشهای مسیر.تابع
os.path.commonprefix()به دلیل داشتن نام و ماژول گمراهکننده در حال منسوخ شدن است. استفاده از این تابع برای پیشوندهای مسیر ایمن نیست، با وجود اینکه در ماژولی مربوط به دستکاری مسیر قرار دارد، به این معنا که با استفاده از این تابع به راحتی میتوان آسیبپذیریهای پیمایش مسیر را به طور تصادفی وارد برنامههای پایتون کرد.gh-144380: بهبود عملکرد پیمایش سطر
io.BufferedReaderبه میزان حدود ۴۹٪ (~49%).gh-144363: بهروزرسانی کتابخانهی بستهبندیشدهی libexpat به نسخهی 2.7.4
gh-140824: هنگامی که
faulthandlerفهرست ماژولهای توسعهی شخص ثالث را برونریزی میکند، زیرماژولهای بستههای کتابخانهی استاندارد را نادیده بگیر. وصله توسط Victor Stinner.gh-144206: بهبود پیامهای خطا برای سرریز بافر در
fcntl.fcntl()وfcntl.ioctl().gh-144264: افزایش سرعت کدگشایی Base64 دادههای حاوی نویسههای نادیدهگرفتهشده (هم در حالت غیرسختگیرانه و هم با آرگومان صریح ignorechars). این کار اکنون برای دادههای چندسطری Base64 تا ۲ برابر سریعتر است.
gh-144249: افزودن زمینهی نام پرونده به استثناهای
OSErrorایجادشده توسطssl.SSLContext.load_cert_chain()، که به کاربران اجازه میدهد زمینهی بیشتری داشته باشند.gh-132888: رفع استفادهی نادرست از
ctypes.GetLastError()و افزودن بررسیهای خطای گمشده برای فراخوانیهای Windows API در_pyrepl.windows_console.gh-144217: ماژول
mimetypes: افزودن پشتیبانی از پروندههای DICOM (برای تصویربرداری پزشکی) با نوع MIME رسمیapplication/dicom. وصله توسط Benedikt Johannes.gh-144212: نوع MIME
image/jxlاکنون توسطmimetypesپشتیبانی میشود.gh-143594: افزودن متدهای
symtable.Function.get_cells()وsymtable.Symbol.is_cell().gh-144169: رفع سه فروپاشی هنگامی که آرگومانهای کلیدواژهای غیررشتهای به شیءها در ماژول
astداده میشوند.gh-144128: رفع یک فروپاشی در
array.array.fromlist()هنگامی که متد__index__()یک عنصر، فهرست ورودی را در طول تبدیل تغییر میدهد.gh-144100: رفع یک فروپاشی در ctypes هنگام استفاده از نوع منسوخ
POINTER(str)درargtypes. بهجای متوقف کردن برنامه، ctypes اکنون وقتی نوع هدف اشارهگر حلنشده است، یک استثنای مناسب در پایتون پرتاب میکند.gh-143658:
importlib.metadata: استفاده ازstr.lower()وstr.replace()برای بهبود بیشتر کاراییimportlib.metadata.Prepared.normalize(). وصله توسط Hugo van Kemenade و Henry Schreiner.gh-144050: اصلاح
stat.filemode()در پیادهسازی خالص پایتون برای جلوگیری از دستهبندی اشتباه مقادیر نامعتبر حالت به عنوان دستگاههای بلوکی.gh-83069:
subprocess.Popen.wait(): هنگامی کهtimeoutبرابر باNoneنیست، یک مکانیزم کارآمد مبتنی بر رویداد اکنون در صورت امکان، منتظر خاتمه فرایند میشود. لینوکس نسخهی ۵.۳ یا بالاتر ازos.pidfd_open()+select.poll()استفاده میکند. مکاواس و سایر مشتقات BSD ازselect.kqueue()+KQ_FILTER_PROC+KQ_NOTE_EXITاستفاده میکنند. ویندوز به استفاده ازWaitForSingleObjectادامه میدهد (بدون تغییر). اگر هیچیک از این مکانیزمها در دسترس نباشد، تابع به حلقهی سنتی مشغول (فراخوانی غیرمسدودکننده و توقفهای کوتاه) بازمیگردد. وصله توسط Giampaolo Rodola.gh-144030: پیادهسازی پایتون از
functools.lru_cache()با پیادهسازی پیشفرض C از این جهت متفاوت بود که بررسی نمیکرد آیا آرگومان آن فراخوانیپذیر است یا خیر. این تناقض اکنون برطرف شده است و هر دو یکTypeErrorپرتاب میکنند.gh-144001: پارامتر ignorechars در
binascii.a2b_base64()وbase64.b64decode()اضافه شد.gh-144023: اصلاح اعتبارسنجی توصیفگر پرونده ۰ در توابع posix هنگامی که با پارامتر follow_symlinks استفاده میشود.
gh-143999: رفع مشکلی که در آن
inspect.getgeneratorstate()وinspect.getcoroutinestate()ممکن بود برای تولیدگرهای پیچیدهشده توسطtypes.coroutine()در وضعیت معلق با خطا مواجه شوند.gh-143952: اصلاح ابزارهای اشکالزدایی
asyncioبرای کار با API جدید اشکالزدایی راه دور. وصله توسط Bartosz Sławecki.gh-143904: تابع
struct.pack_into()اکنون به جای IndexError برای آرگومان offset بسیار بزرگ، OverflowError پرتاب میکند.gh-143897: حذف متدهای
isxidstart()وisxidcontinue()ازunicodedata.ucd_3_2_0. آنها اکنون فقط به عنوانunicodedata.isxidstart()وunicodedata.isxidcontinue()در معرض دید قرار دارند.gh-143831: شیءهای
annotationlib.ForwardRefاکنون هنگام ایجاد از محدودههای حاشیهنویسی با بستارها، هشپذیر هستند. پیش از این، هش کردن چنین شیءهایی یک استثنا پرتاب میکرد. وصله توسط Bartosz Sławecki.gh-143874: رفع یک باگ در
pdbکه در آن نتایج عبارت به کلاینت راه دور ارسال نمیشد.gh-143754: افزودن متدهای جدید ابزارک
tkinterیعنیpack_content()،place_content()وgrid_content()که نامهای جایگزین برای متدهای قدیمی*_slaves()هستند.gh-143756: رفع مشکلات احتمالی مربوط به امنیت نخ در ماژول
ssl.gh-132604: پیش از این، کلاسهای
Protocolکه با@runtime_checkableآراسته نشده بودند، اما از کلاسProtocolدیگری ارثبری کرده بودند که این دکوراتور را داشت، میتوانستند در بررسیهایisinstance()وissubclass()استفاده شوند. این رفتار اکنون منسوخ شده است و چنین بررسیهایی در پایتون ۳.۲۰ یکTypeErrorپرتاب خواهند کرد. وصله توسط Bartosz Sławecki.gh-143543: رفع یک فروپاشی در itertools.groupby که ممکن است زمانی رخ دهد که یک متد
__eq__()تعریفشده توسط کاربر، حین مقایسهی کلید، دوباره وارد پیمایشگر شود.gh-143689: رفع پاکسازی وضعیت
io.BufferedReader.read1()هنگام شکست در تخصیص بافر.gh-143602: رفع یک مشکل ناسازگاری در
write()که منجر به بازنویسی غیرمنتظرهی بافر از طریق رفع تکرار در اکسپورتهای بافر میشود.gh-142434: استفاده از
ppoll()در صورت موجود بودن درselect.poll()برای داشتن وضوح مهلت زمانی معادل ۱ نانوثانیه، به جای وضوح ۱ میلیثانیه. وصله توسط ویکتور استینر (Victor Stinner).gh-140557: بافرهای
array.arrayاکنون هنگام خالی بودن همان همترازی را دارند که هنگام تخصیص دارند. بافرهای همترازنشده همچنان میتوانند با برشزدن ایجاد شوند.gh-143423: رفع تشخیص ساخت نخآزاد در پروفایلگیر نمونهبردار هنگامی که Py_GIL_DISABLED روی ۰ تنظیم شده است.
gh-101178: افزودن پشتیبانی از Ascii85، Base85 و Z85 به
binasciiو بهبود کارایی مبدلهای base-85 درbase64.gh-142966: رفع بهروزرسانی نشدن رشتهی قالب توسط
ctypes.POINTER.set_type()برای مطابقت با نوع.gh-142555:
array: رفع یک فروپاشی درa[i] = vهنگامی که تبدیل i به یک اندیس از طریقi.__index__یاi.__float__آرایه را تغییر میدهد.gh-142438: رفع ساختهای _decimal پیکربندیشده با EXTRA_FUNCTIONALITY از طریق اصلاح پوشش Context.apply برای ارسال آرگومان درست.
gh-141860: افزودن پارامتر فقط کلیدواژهی
on_errorبهmultiprocessing.set_forkserver_preload()برای کنترل نحوهی مدیریت خطاهای ایمپورت در طول پیشبارگذاری ماژول. مقادیر پذیرفتهشده عبارتند از'ignore'(پیشفرض، بیصدا)،'warn'(صدورImportWarning)، یا'fail'(ایجاد استثنا). مشارکتکنندگان: نیک نیومن (Nick Neumann) و گریگوری پی. اسمیت (Gregory P. Smith).gh-125346: پذیرش نویسههای
+و/با الفبای جایگزین درbase64.b64decode()وbase64.urlsafe_b64decode()اکنون منسوخ شده است. در نسخههای آیندهی پایتون، آنها در حالت سختگیرانه خطا خواهند بود و در حالت غیرسختگیرانه نادیده گرفته میشوند.gh-140715: افزودن پشتیبانی از
'%F'بهstrptime().gh-67041: افزودن پارامتر missing_as_none به توابع
urlparse()،urlsplit()وurldefrag(). افزودن پارامتر keep_empty به توابعurlunparse()وurlunsplit(). این کار اجازه میدهد بین اجزای URI خالی و تعریفنشده تمایز قائل شوید و اجزای خالی را حفظ کنید.gh-77188: ماژول
pickleاکنون به درستی متدهای خصوصی ناممنگلشده را مدیریت میکند.
IDLE¶
gh-143774: توضیح بهتر عملکرد Format / Format Paragraph.
هسته و توکارها (Core and Builtins)¶
gh-134584: بهینهسازی و حذف شمارش ارجاع در
_BINARY_OP_SUBSCR_LIST_SLICEgh-144563: رفع تداخل پروفایلگیر Tachyon با
ctypesو سایر ماژولهایی که کتابخانهی مشترک پایتون را (در صورت وجود) در یک نگاشت مستقل بارگذاری میکنند؛ زیرا این امر باعث سردرگمی مکانیسمی میشد که اطلاعات دودویی را بارگذاری میکند. وصله توسط پابلو گالیندو (Pablo Galindo)gh-144601: رفع فروپاشی هنگام ایمپورت کردن ماژولی که تابع
PyInitآن یک استثنا از یک مفسر فرعی (subinterpreter) ایجاد میکند.gh-144549: رفع ساخت مفسر فراخوانی تهی (tail calling) روی Visual Studio 2026 با قابلیت نخآزاد.
gh-144513: رفع بنبست احتمالی هنگام استفاده از بخشهای بحرانی در طول مکثهای stop-the-world در ساخت نخآزاد.
gh-131798: بهینهسازی
_GUARD_TOS_SLICEدر کامپایلر درجا (JIT).gh-144330: انتقال مقداردهی اولیهی
classmethodوstaticmethodاز تابع__init__()به__new__(). اصلاحیه از Victor Stinner.gh-144446: رفع رقابتهای دادهای در ساخت نخآزاد هنگام خواندن ویژگیهای شیء قاب در حالی که نخ دیگری در حال اجرای قاب است.
gh-120321: افزودن ویژگیهای
gi_state،cr_stateوag_stateبه تولیدگرها، همروالها و تولیدگرهای ناهمگام که وضعیت فعلی را به شکل یک رشته (مانندGEN_RUNNING) برمیگردانند. توابع ماژولinspectیعنیgetgeneratorstate()،getcoroutinestate()وgetasyncgenstate()اکنون این ویژگیها را بهطور مستقیم برمیگردانند.gh-141563: رفع امنیت نخ
PyDateTime_IMPORT.gh-144280: رفع یک باگ در کامپایلر درجا (JIT) که در آن نماد محمول مقدار درستی (truthiness) نداشت.
gh-140550: در
PyModuleDef.m_slots، به جایگاههایی که اطلاعات موجود درPyModuleDefرا تکرار میکنند، اجازه دهید.gh-139103: بهبود مقیاسپذیری ایجاد نمونه از
namedtuple()در ساخت نخآزاد.gh-144307: جلوگیری از نشت ارجاع در تخریب ماژول هنگام پایانیسازی مفسر.
gh-144319: افزودن پشتیبانی از صفحات بزرگ (huge pages) برای تخصیصدهندهی pymalloc. اصلاحیه از Pablo Galindo.
gh-120321: ایمنسازی
gi_yieldfromدر برابر نخها در ساخت نخآزاد با استفاده از یک قفل سبکوزن روی وضعیت قاب.gh-144194: رفع مدیریت خطا در راهاندازی perf jitdump هنگام شکست تخصیص حافظه.
gh-143962: پیشنهاد نام برای نامهای هنجارنشده (not normalized)، اکنون نام هنجارشده یا نزدیکترین نام به نام هنجارشده را پیشنهاد میدهد. اگر نام پیشنهادی اسکی (ASCII) نباشد، بازنمایی اسکی آن را نیز شامل میشود.
gh-144157: متد
bytes.translate()اکنون به کامپایلر اجازه میدهد حلقهی خود را برای افزایش سرعت ۲ برابری در حالت رایج مشخصنشدن حذفها، بهصورت مفیدتری باز کند (unroll).gh-144068: رفع نشت حافظه در ردیاب کامپایلر درجا (JIT)، و اطمینان از اینکه وضعیت ردیاب JIT هنگام پاکسازی نخهای دِیمِن در جریان خاموش شدن مفسر آزاد میشود.
gh-144012: بررسی اینکه آیا نتیجه در آپکد
BINARY_OP_EXTENTبرابر باNULLاست یا خیر.gh-144007: حذف شمارش ارجاع اضافی در کامپایلر درجا (JIT) برای
BINARY_OP.gh-144005: حذف شمارش ارجاع اضافی از
BINARY_OP_EXTEND.gh-143939: رفع خطای اشتباه «cannot reuse already awaited coroutine» که ممکن بود هنگام اجرای یک تولیدگر در طی فرآیند پاکسازی قاب یک همروال رخ دهد.
gh-141805: رفع فروپاشی در
setوقتی اشیایی با هش یکسان، پس از حذف عنصری با هش یکسان و در حالی که مجموعه همچنان حاوی عناصر با هش یکسان است، بهطور همزمان به مجموعه اضافه میشوند.gh-143670: رفع یک فروپاشی در تابع
ga_repr_items_list.gh-143650: برطرف کردن شرایط رقابت (race condition) در
importlibکه در آن یک نخ ممکن است هنگامی که عملیات ایمپورت نخ دیگری با خطا مواجه میشود، یک ارجاع ماژول کهنه دریافت کند.gh-143569: عبارتهای تولیدگر در نسخهی ۳.۱۵ اکنون زمانی که شیء پیمایشپذیر از پیمایش پشتیبانی نمیکند، با رفتار مستندشده مطابقت دارند. این رفتار با نسخهی ۳.۱۴ و نسخههای قبلی سازگار است.
gh-143192: بهبود کارایی عملیات بیتی روی اعداد صحیح چندرقمی.
gh-132657: اگر در حال تخصصیسازی به
LOAD_GLOBAL_MODULEیاLOAD_ATTR_MODULEهستیم، در صورتی که شیء متعلق به نخ دیگری باشد، سعی کنید شمارش ارجاعِ معوق را برای مقدار فعال کنید. این مورد فقط برای ساخت نخآزاد اعمال میشود و باید مقیاسپذیری برنامههای چندنخی را بهبود بخشد. توجه داشته باشید که وقتی شمارش ارجاعِ معوق فعال است، شیء به جایPy_DECREF()توسط زبالهروب (GC) آزاد خواهد شد.gh-143055: پیادهسازی PEP 798 (بازکردن بسته در درکها). وصله توسط Adam Hartz.
gh-142037: بهبود پیامهای خطا برای قالببندی به سبک printf. برای خطاها در رشتهی قالب، همیشه موقعیت شروع واحد قالب را لحاظ کنید. برای خطاهای مربوط به آرگومانهای قالببندیشده، همیشه شماره یا نام آرگومان را درج کنید. خطاهای مشخصتری صادر کنید و اطلاعات بیشتری (نوع و تعداد آرگومانها، محتملترین دلایل بروز خطا) را در بر بگیرید.
gh-140557: بافرهای
bytearrayاکنون هنگام خالی بودن، همان ترازبندی (alignment) زمان تخصیص را دارند. بافرهای ترازنشده همچنان از طریق برشزدن (slicing) قابل ایجاد هستند.gh-140232: اشیاء Frozenset با عناصر تغییرناپذیر دیگر توسط زبالهروب ردیابی نمیشوند.
gh-115231: راهاندازی صفت
__module__برای متدهای ایستای توکار. وصله توسط Sergey B Kirpichev.
رابط C API¶
gh-143869: توابع
PyLong_GetNativeLayout()،PyLongLayout،PyLongExport،PyLong_Export()،PyLong_FreeExport()،PyLongWriter،PyLongWriter_Create()،PyLongWriter_Finish()وPyLongWriter_Discard()به API محدود اضافه شدند.gh-141070: تغییر نام
PyUnstable_Object_Dump()بهPyObject_Dump().
ساخت¶
gh-140421: غیرفعال کردن ترامپولین perf در نسخههای قدیمیتر macOS که امکان ساخت آن وجود ندارد.
gh-144309: ساخت پایتون با POSIX 2024 به جای POSIX 2008. وصله توسط Victor Stinner.
gh-144278: امکان تعریف پیشپردازندههای
_PY_IMPL_NAMEو_PY_IMPL_CACHE_TAGرا برای بازنویسیsys.implementationدر زمان ساخت فراهم میکند. تعاریف هنگام تنظیم روی یک رشتهی لفظی باید شامل نقلقول باشند. تنظیم برچسب نهانگاه رویNULLباعث غیرفعال شدن کامل ایجاد و استفاده خودکار از پروندههای.pycمیشود.gh-143960: افزودن پشتیبانی از OpenSSL 3.6، حذف نسخهی منسوخ ۳.۲. وصله توسط Hugo van Kemenade.
gh-143941: انتقال پروندههای مربوط به WASI به
Platforms/WASI. در این میان، یک پروندهیTools/wasm/wasi/__main__.pyمنسوخشده برای سازگاری با نسخههای قبلی باقی گذاشته شد.gh-143842: با تبدیل جدول COLORS بهینهساز به حالت ایستا، از تداخل ساختهای ایستا با curses جلوگیری کنید.
پایتون ۳.۱۵.۰ آلفا ۵¶
تاریخ انتشار: ۱۴-۰۱-۲۰۲۶
Windows¶
Tools/Demos¶
gh-142095: دستور 'py-bt' در gdb را بهگونهای تنظیم کنید که در صورت امکان، از قاب (frame) موجود در وضعیت محلی نخ (thread local state) استفاده کند. وصله توسط Sam Gross و Victor Stinner.
آزمونها¶
کتابخانه¶
gh-143706: فاکورکسرور
multiprocessingرا اصلاح کنید تاsys.argvپیش از پیشبارگذاری__main__به درستی تنظیم شود. پیش از این،sys.argvدر طول ایمپورت ماژول اصلی در فرایندهای فرزند فاکورکسرور خالی بود. این مسئله یک رگرسیون (regression) معرفیشده در نسخههای ۳.۱۳.۸ و ۳.۱۴.۱ را برطرف میکند. ریشهی مشکل توسط Aaron Wieczorek کشف شد، آزمون توسط Thomas Watson ارائه شد، سپاس!gh-143638: برای پیادهسازی C، فراخوانیهای بازورودپذیر (reentrant) متدهای
pickle.Picklerوpickle.Unpicklerرا ممنوع کنید. پیش از این، این کار میتوانست باعث فروپاشی (crash) یا خرابی دادهها شود، اکنون فراخوانیهای همزمان متدهای یک شیء واحد باعث ایجادRuntimeErrorمیشوند.gh-143658:
importlib.metadata: استفاده ازstr.translate()برای بهبود کاراییimportlib.metadata.Prepared.normalize(). وصله توسط Hugo van Kemenade و Henry Schreiner.gh-78724: هنگامی که کاربر تلاش میکند متدها را روی اشیاء
Structنیمهمقداردهیشده (برای مثال ایجاد شده توسطStruct.__new__(Struct)) فراخوانی کند، خطایRuntimeErrorایجاد کنید. وصله توسط Sergey B Kirpichev.gh-143196: رفع خرابی هنگام فراخوانی شیء کدگذار داخلی (encoder object) بازگردانده شده توسط تابع مستندنشدهی
json.encoder.c_make_encoder()با آرگومان دوم (_current_indent_level) غیرصفر.gh-143191: تابع
_thread.stack_size()اکنون اگر اندازهی پشته خیلی کوچک باشد،ValueErrorپرتاب میکند. وصله توسط Victor Stinner.gh-143547: اصلاح
sys.unraisablehook()هنگامی که قلاب (hook) یک استثنا ایجاد میکند وsys.unraisablehook()را تغییر میدهد: نگهداشتن یک ارجاع قوی به قلاب قدیمی. وصله توسط Victor Stinner.gh-139686: برگرداندن تغییرات 0a97941245f1dda6d838f9aaf0512104e5253929 و 57db12514ac686f0a752ec8fe1c08b6daa0c6219 که importlib.reload را برای ماژولهای تنبل (lazy modules) به یک عملیات بیاثر (no-op) تبدیل کرده بودند؛ این تغییرات باعث خرابی در Buildbot شده بودند.
gh-143517: تابع
annotationlib.get_annotations()هنگام ارزیابی یک حاشیهنویسی رشتهایشدهی ستارهدار که با یک یا چند نویسهی فاصله و به دنبال آن یک*آغاز میشود، دیگر خطایSyntaxErrorایجاد نمیکند. وصله توسط Bartosz Sławecki.gh-143474: افزودن ثابت
os.RWF_ATOMICبرای لینوکس ۶.۱۱ به بعد.gh-143445: افزایش سرعت
copy.deepcopy()به میزان ۱.۰۴ برابر.gh-143378: رفع خرابیهای ناشی از استفاده پس از آزادسازی (use-after-free) وقتی یک شیء
BytesIOدر طولwrite()یاwritelines()به طور همزمان تغییر میکند.gh-143368: رفع حلقهی تلاش مجدد بیپایان در حالت مسدودکنندهی
profiling.samplingهنگامی که نخها (threads) به دلیل خطایEPERMقابل تصاحب نیستند. اینگونه نخها اکنون به جای ایجاد پیامهای خطای مکرر، نادیده گرفته میشوند. وصله توسط Pablo Galindo.gh-143346: اصلاح پیچش (wrapping) نادرست دادههای Base64 در
plistlib._PlistWriterهنگامی که تورفتگی شامل ترکیبی از نویسههای تب (tab) و فاصله است.gh-143310:
tkinter: رفع یک فروپاشی هنگامی که یکlistپایتون در طول تبدیل به یک شیء Tcl (برای مثال، هنگام تنظیم یک متغیر Tcl) تغییر داده میشود. وصله توسط Bénédikt Tran.gh-143309: رفع یک فروپاشی در
os.execve()روی پلتفرمهای غیر ویندوزی هنگامی که یک نگاشت محیطی سفارشی داده میشود که سپس در طول تجزیه تغییر میکند. وصله توسط Bénédikt Tran.gh-143308:
pickle: رفع فروپاشیهای استفاده پس از آزادزدایی (use-after-free) هنگامی که یکPickleBufferبهطور همزمان توسط یک فراخوانی بازگشتی (callback) بافر سفارشی در طول پیکلسازی (pickling) تغییر میکند. وصله توسط Bénédikt Tran و Aaron Wieczorek.gh-142939: بهینهسازیهای عملکردی برای
difflib.get_close_matches()gh-124951: پیادهسازی base64 پشت
binascii،base64و کُدکهای مرتبط برای معماریهای مدرن پردازندههای خط لولهای (pipelined) بهینهسازی شده است و اکنون در تمام پلتفرمها ۲ تا ۳ برابر سریعتر اجرا میشود.gh-143237: رفع پشتیبانی از پایپهای نامگذاریشده در هندلرهای چرخان
logging.gh-143249: رفع نشت احتمالی بافر در ورودی/خروجی همپوشان (overlapped I/O) ویندوز هنگام مدیریت خطا.
gh-143241:
zoneinfo: رفع حلقه بینهایت درZoneInfo.from_fileهنگام تجزیه یک پرونده TZif ناسازگار (malformed). وصله توسط Fatih Celik.gh-142830:
sqlite3: رفع فروپاشیهای استفاده پس از آزادزدایی (use-after-free) هنگامی که فراخوانیهای بازگشتی (callbacks) اتصال در طول اجرای یک فراخوانی بازگشتی تغییر داده میشوند. وصله توسط Bénédikt Tran.gh-143200:
xml.etree.ElementTree: رفع فروپاشیهای استفاده پس از آزادزدایی (use-after-free) در متدهای__getitem__()و__setitem__()ازElementهنگامی که عنصر بهطور همزمان تغییر میکند. وصله توسط Bénédikt Tran.gh-143214: افزودن پارامتر wrapcol در
binascii.b2a_base64()وbase64.b64encode().gh-142195: بهروزرسانی منطق ارزیابی مهلت زمانی (timeout) در
subprocessبرای سازگاری با محیطهای قطعی مانند Shadow که در آنها زمان دقیقاً مطابق درخواست حرکت میکند.gh-140739: رفع چندین فروپاشی به دلیل خواندن حافظه نامعتبر در پروفایلگیر (profiler) نمونهبرداری جدید Tachyon. وصله توسط Pablo Galindo.
gh-142164: رفع پیام خطای سرریز فیلد بیتی (bitfield) در ctypes برای گزارش دقیق افست و محاسبه اندازه.
gh-143145: رفع نشت ارجاع احتمالی در ctypes هنگام ساخت نتایج با چند پارامتر خروجی در هنگام خطا.
gh-143103: افزودن پشتیبانی از پُرکننده (padding) به
base64.z85encode()از طریق پارامترpad.gh-130796: لغو وضعیت منسوخ (Undeprecate) تابع
locale.getdefaultlocale(). وصله توسط Victor Stinner.gh-74902: افزودن تابع
iter_graphemes()در ماژولunicodedataبرای پیمایش کردن روی خوشههای گرافمی مطابق با قوانین تعریفشده در Unicode Standard Annex #29, "Unicode Text Segmentation". افزودن توابعgrapheme_cluster_break()،indic_conjunct_break()وextended_pictographic()برای دریافت ویژگیهای نویسه که مربوط به الگوریتم بالا هستند.gh-143004: رفع احتمال استفاده پس از آزادزدایی (use-after-free) در
collections.Counter.update()هنگامی که کد کاربر Counter را در طول بهروزرسانی تغییر میدهد.gh-140648: پوسته تعاملی پایتون (
asyncioREPL) اکنون به پرچم-I(حالت ایزوله) احترام میگذارد. پیش از این، حتی اگر این پرچم تنظیم شده بود،PYTHONSTARTUPرا بارگذاری و اجرا میکرد. مشارکت توسط Bartosz Sławecki.gh-142991: رفع عملیات سوکت مانند ()recvfrom و ()sendto برای سوکت divert(4) در FreeBSD.
gh-116738: ایمنسازی ویژگیها در
lzmaدر ساخت نخبندی آزاد.gh-142950: رفع رگرسیون در
argparseکه در آن مشخصکنندههای قالب در رشتههای راهنما خطایValueErrorرا ایجاد میکردند.gh-142881: رفع فراخوانی همزمان و بازورودپذیر
atexit.unregister().gh-142615: رفع فروپاشیهای احتمالی هنگام مقداردهی اولیه به
asyncio.Taskیاasyncio.Futureبه صورت چندباره. این کلاسها اکنون فقط یک بار میتوانستند مقداردهی اولیه شوند و هر تلاش بعدی برای مقداردهی اولیه یک RuntimeError ایجاد خواهد کرد. وصله توسط Kumar Aditya.gh-142517: سیاستهای
emailغیرcompat32اکنون بهدرستی کلماتی را که حاوی بایتهایی هستند و نمیتوانند در مجموعه نویسه مشخصشدهشان رمزگشایی شوند، بازتا (refold) میکنند. پیش از این، این امر در طول تا کردن منجر به یک استثنای کدگذاری میشد.gh-138122: رابط کاربری متنی زنده (TUI) پروفایلگیر Tachyon اکنون با سیستم پوستهبندی آزمایشی
_colorizeیکپارچه شده است. کاربران میتوانند رنگها را از طریق_colorize.set_theme()شخصیسازی کنند (API آزمایشی، در معرض تغییر). یک پوستهLiveProfilerLightبرای پسزمینههای روشن ترمینال فراهم شده است. وصله توسط Pablo Galindo.gh-142306: بهبود خطاها برای
Element.remove.gh-63016: افزودن یک پارامتر
flagsبهmmap.mmap.flush()برای کنترل رفتار همگامسازی.gh-139262: برخی از کلیدها ممکن است در
PyREPLجدید در ویندوز بلعیده شوند، به ویژه هنگامی که به همراه کلید ALT استفاده شوند. رفع توسط Chris Eibl.gh-138897: بهبود نمایش
license/copyright/creditsدر REPL: اکنون از یک صفحهبان (pager) استفاده میکند.gh-135852: افزودن
_winapi.RegisterEventSource()،_winapi.DeregisterEventSource()و_winapi.ReportEvent(). استفاده از این توابع درNTEventLogHandlerبرای جایگزینیpywin32.gh-109263: شروع یک فرایند از زمینهی spawn در
multiprocessingدیگر متد شروع را به طور سراسری تنظیم نمیکند.gh-132715: پس از وقوع یک خطا، از نوشتن اشیاء در طول مارشالینگ صرفنظر کنید.
مستندات¶
gh-140806: افزودن مستندات برای
enum.bin().
هسته و توکارها (Core and Builtins)¶
gh-134584: حذف شمارش ارقام تکراری از
_CONTAINS_OP،_CONTAINS_OP_SETو_CONTAINS_OP_DICT.gh-143604: رفع یک مسئلهی شمارش ارجاع در ردیاب کامپایلر درجا (JIT) که در آن اجراکنندهی فعلی ممکن بود در طول ردیابی زودتر از موعد آزاد شود.
gh-143469: فعالسازی تخصصیسازی
LOAD_ATTR_MODULEحتی اگر__getattr__()در ماژول تعریف شده باشد.gh-134584: حذف شمارش ارقام تکراری از
TO_BOOL_STR.gh-143377: رفع یک فروپاشی در
_interpreters.capture_exception()زمانی که استثنا به شکل نادرستی قالببندی شده باشد. وصله توسط Bénédikt Tran.gh-139757: افزودن
BINARY_OP_SUBSCR_USTR_INTبرای تخصصیسازی خواندن یک نویسهی اسکی از هر رشتهای. نوشته شده توسط Chris Eibl.gh-141504: جداسازی اکتشافات ردیابی و بهینهسازی در یک شیء واحد. نوشته شده توسط Donghee Na.
gh-142982: تخصصیسازی دستور
CALL_FUNCTION_EXبرای موارد فراخوانیپذیر پایتون و غیرپایتون.gh-136924: حالت راهنمای تعاملی در REPL دیگر ورودی متن را به اشتباه به عنوان کد پایتون هایلایت نمیکند. مشارکت توسط Olga Matoula.
gh-139757: رفع تخصصیسازی ناخواستهی بایتکد برای رشتههای غیر اسکی. نوشته شده توسط Donghee Na، Ken Jin و Chris Eibl.
gh-143361: افزودن
PY_VECTORCALL_ARGUMENTS_OFFSETبه_Py_CallBuiltinClass_StackRefStealبرای جلوگیری از تخصیصهای اضافیgh-131798: بهینهساز کامپایلر درجا (JIT) اکنون دستورات تولیدگر بیشتری را درک میکند.
gh-134584: حذف شمارش ارجاع اضافی از
_LOAD_ATTR_SLOT.gh-143189: رفع فروپاشی هنگام درج کلیدی که
strنیست در یک دیکشنری جدول تقسیمشده، زمانی که کلید با کلید موجودی در جدول تقسیمشده مطابقت دارد اما مقداری متناظر در دیکشنری ندارد.gh-143228: رفع خطای استفاده پس از آزادسازی (use-after-free) در ترامپولین perf هنگام تغییر وضعیت پروفایلگیری در حین اجرای نخها یا در طول نهاییسازی مفسر با نخهای دِیمِن فعال. این اصلاح از شمارش ارجاع استفاده میکند تا اطمینان حاصل شود که ترامپولینها تا زمانی که هر شیء کدی همچنان بتواند به آنها ارجاع دهد، آزاد نمیشوند. نوشته شده توسط Pablo Galindo
gh-142664: رفع فروپاشی ناشی از استفاده پس از آزادسازی در
memoryview.__hash__زمانی که متد__hash__شیء ارجاعدادهشده، آن شیء یا نما را تغییر دهد. نوشته شده توسط Bénédikt Tran.gh-142557: رفع فروپاشی ناشی از استفاده پس از آزادسازی در bytearray.__mod__ زمانی که
bytearrayدر طول قالببندی آرگومانهای سبک%تغییر میکند. نوشته شده توسط Bénédikt Tran.gh-143195: رفع فروپاشیهای ناشی از استفاده پس از آزادسازی در
bytearray.hex()وmemoryview.hex()زمانی که متد__len__()جداکننده، شیء اصلی را تغییر میدهد. نوشته شده توسط Bénédikt Tran.gh-143183: رفع باگ در کامپایلر درجا (JIT) هنگام مواجهه با جریان کنترل یا عملیات پشتیبانینشده.
gh-142975: رفع فروپاشی پس از لغو انجماد تمام اشیاء ردیابیشده توسط جمعآوریکنندهی زباله در ساخت نخبندی آزاد.
gh-143135: تنظیم
sys.flags.inspectروی1هنگامی که مقدارPYTHONINSPECTبرابر با0است. پیش از این، در این حالت روی0تنظیم میشد.gh-143123: محافظت از کامپایلر درجا (JIT) در برابر ردیابی بازگشتی.
gh-143092: رفع فروپاشی در کامپایلر درجا (JIT) هنگام مواجهه با کدهایی به سبک
list.append(x).gh-143003: رفع سرریز بافر خالی مشترک در
bytearray.extend()زمانی که متد__length_hint__()مقدار 0 را برای یک پیمایشگر غیرخالی برمیگرداند.gh-143006: رفع خطای احتمالی شرط (assertion) هنگام مقایسهی اعداد اعشاری
floatو صحیحintمنفی با تعداد بیتهای یکسان در بخش صحیح.gh-116738: رفع امنیت نخ در
contextvars.Context.run().gh-142829: رفع فروپاشی از نوع use-after-free در مقایسهی
contextvars.Contextهنگامی که یک متد سفارشی__eq__زمینه را از طریقset()تغییر میدهد.gh-142863: تولید بایتکد بهینهشده هنگام فراخوانی
listیاsetبا عبارت تولیدگر.gh-41779: امکان تعریف هر نوع __slots__ برای کلاسی که از
tupleمشتق شده است (از جمله کلاسهای ایجادشده توسطcollections.namedtuple()).gh-69605: رفع موارد خاص پیرامون ماژولهای ازپیش ایمپورتشده در تکمیل خودکار ایمپورتها در REPL.
gh-138568: تنظیم تابع توکار
help()بهگونهای که ورودیهای خالی در حالت تعاملی نادیده گرفته شوند.gh-131798: حذف بررسی کران هنگام اندیسگذاری روی تاپلها با یک اندیس ثابت.
gh-134584: حذف شمارش ارجاع اضافی از
_CALL_TYPE_1. وصله توسط Tomas Roungh-132108: افزایش سرعت
int.from_bytes()هنگامی که شیء ارسالشده از buffer protocol، مانندbytearrayپشتیبانی میکند، به میزان حدود ۱.۲ برابر.gh-128334: قابل زیرنویس کردن (subscriptable) کردن کلاس
sliceدر زمان اجرای برنامه برای سازگاری با پیادهسازی تایپینگ.
رابط C API¶
gh-141671: ماکروی
PyMODINIT_FUNC(و ماکروی جدیدPyMODEXPORT_FUNC) اکنون یک اعلان پیوند (__declspec(dllexport)) را در ویندوز اضافه میکند.
پایتون ۳.۱۵.۰ آلفا ۴¶
تاریخ انتشار: ۲۰۲۶-۰۱-۱۳
آزمونها¶
gh-142836: سازگاری با سولاریس در
test_pdb.test_script_target_anonymous_pipe.
کتابخانه¶
gh-122431: اصلاح پیام خطا در
readline.append_history_file()به طوری که اعلام کندnelementsباید غیرمنفی باشد و نه مثبت.gh-143046: رابط
asyncioREPL دیگر پیامهای حق چاپ (copyright) و نسخه را در حالت بیصدا (-q) چاپ نمیکند. وصله توسط Bartosz Sławecki.gh-80744: رفع مشکلی که در آن
pdbپروندهی.pdbrcرا در صورت راهاندازی از پوشهی خانگی دو بار میخواندgh-138122: افزودن حالت مسدودکننده به Tachyon برای ردگیری دقیق پشته در برنامههایی با تولیدگرهای زیاد یا پشتههای فراخوانی با تغییر سریع. وصله توسط Pablo Galindo.
gh-143010: رفع باگی در
mailboxکه در آن زمانبندی دقیق یک رویداد خارجی میتواند منجر به این شود که کتابخانه به جای ایجاد یک پروندهی جدید، یک پروندهی موجود را باز کند.gh-112127: رفع احتمال استفاده پس از رهاسازی (use-after-free) در
atexit.unregister()هنگامی که تابع کالبک در طول مقایسه لغو ثبت میشود.gh-138122: رفع ردگیریهای پشتهی ناقص در نهانگاه قاب پروفایلگیر Tachyon هنگام پروفایلگیری کد با تولیدگرهای عمیقاً تو در تو. نهانگاه قاب اکنون بررسی میکند که ردگیریهای پشته قبل از نهانگاهسازی به قاب پایه برسند، که این کار از بروز نمودارهای شعلهی خراب جلوگیری میکند. وصله توسط Pablo Galindo.
gh-142834: تغییر دستور
commandsدر ماژولpdbبهگونهای که بهجای روبهرو شدن با خطا هنگام حذف شدن تازهترین نقطهی ایست ایجادشده، از آخرین نقطهی ایست دردسترس استفاده کند.gh-142783: رفع مشکل استفاده پس از آزادسازی در zoneinfo با _weak_cache توصیفگر. یک توصیفگر به عنوان _weak_cache میتواند باعث فروپاشیهایی در طول ایجاد شیء شود. این اصلاح شمارش صحیح ارقام را برای شیءهای ارائهشده توسط توصیفگر تضمین میکند.
gh-76007: منسوخ کردن
VERSIONاز ماژولxml.etree.ElementTreeوversionاز ماژولهایxml.sax.expatreaderوxml.sax.handler. وصله توسط Hugo van Kemenade.gh-142784: پوستهی تعاملی پایتون در ماژول
asyncioاکنون در پایان نشست تعاملی، حلقه را بهدرستی میبندد. پیشتر این مورد میتوانست باعث بروز اخطارهای غیرمنتظره شود. مشارکت از Bartosz Sławecki.gh-138122: افزودن قالب خروجی دودویی به ماژول
profiling.samplingبرای ذخیرهسازی فشردهی دادههای پروفایلگیری. گزینهی جدید--binaryنمونهها را در پروندهای ثبت میکند که میتوان آنها را با استفاده از دستورreplayبه قالبهای دیگر تبدیل کرد. وصله توسط Pablo Galindogh-142495: کلاس
collections.defaultdictاکنون هنگام درج مقادیر پیشفرض ازdefault_factory، متد__setitem__()را اولویت قرار میدهد. این کار از شرایط مسابقهای جلوگیری میکند که در آن مقدار پیشفرض، مقداری را که پیش از بازگشتdefault_factoryتنظیم شده است بازنویسی میکند.gh-142654: نمایش پیام خطای واضحتر هنگام استفاده از
profiling.samplingروی یک PID ناشناخته.gh-142560: رفع مشکل استفاده پس از آزادسازی در متدهای جستجوی کلاس
bytearray(متدهایfind()،count()،index()،rindex()وrfind()) با نشانهگذاری حافظه به عنوان صادرشده که باعث میشود تلاشهای تخصیص مجدد، خطایBufferErrorرا ایجاد کنند. برایcontains()،split()وrsplit()، پروتکل بافر (buffer protocol) برای این منظور استفاده میشود.gh-142419: افزودن متد
mmap.mmap.set_name()برای حاشیهنویسی کردن یک نگاشت حافظهی ناشناس در صورت پشتیبانی هستهی لینوکس ازPR_SET_VMA_ANON_NAME(لینوکس ۵.۱۷ یا جدیدتر). وصله توسط Donghee Na.gh-139971: ماژول
pydoc: اطمینان حاصل کنید که پیوند به مستندات آنلاین یک ماژول کتابخانهی استاندارد درست است.gh-124098: رفع مشکلی که در آن متدهای موجود در هندلرها که فاقد نام پروتکل بودند اما با یک متد هندلر پایهی معتبر (مانند
_open()یاerror()) مطابقت داشتند، بهاشتباه به هندلرهای کلاسurllib.request.OpenerDirectorاضافه میشدند. مشارکت از Andrea Mattei.gh-136282: افزودن پشتیبانی از
UNNAMED_SECTIONهنگام ایجاد یک بخش از طریق دسترسی پروتکل نگاشت
هسته و توکارها (Core and Builtins)¶
gh-143057: جلوگیری از قفلگذاری در توابع
PyTraceMalloc_Track()وPyTraceMalloc_Untrack()هنگامی که ماژولtracemallocفعال نیست.gh-139109: افزودن پایانهی گمشده در برخی موارد هنگام ردیابی در کامپایلر درجا (JIT) جدید.
gh-142961: رفع خطای حافظه (segfault) در کامپایلر درجا (JIT) هنگام تا کردن ثابتِ
len(tuple).gh-142776: رفع نشت توصیفگر پرونده در import.c
gh-139757: رفع مشکل ساخت استنسیلهای کامپایلر درجا (JIT) روی ساختهای نخآزاد.
gh-129068: ایمنسازی در برابر نخ در پیمایش همزمان روی یک پیمایشگر بازهی یکسان در ساخت نخبندی آزاد.
gh-142543: رفع سرریز پشته در پیکربندیهای ساخت کامپایلر درجا (JIT) با Clang همراه با LTO کامل.
gh-142448: برطرفسازی باگی هنگام استفاده از پایش (monitoring) با کامپایلر درجا (JIT).
gh-142766: پاکسازی قاب (frame) یک تولیدگر (generator) هنگام فراخوانی
generator.close().gh-134584: حذف شمارش ارجاع اضافی از
_LOAD_ATTR_INSTANCE_VALUE.gh-134584: حذف شمارش ارجاع اضافی از
_STORE_ATTR_WITH_HINT.gh-142476: برطرفسازی نشتی حافظه در بهینهساز آزمایشی سطح ۲ (Tier 2) هنگام ایجاد اجراکنندهها (executors). ثبت وصله توسط Shamil Abdulaev.
gh-100964: برطرفسازی چرخه ارجاع در قابهای (frames) تولیدگرهای (generators) تمامشده. ثبت وصله توسط Savannah Ostrowski.
gh-139922: امکان ساخت سیپایتون (CPython) با مفسر فراخوانی انتها (tail calling interpreter) روی ویژوال استودیوی ۲۰۲۶ MSVC. این کار باعث بهبود کارایی نسبت به مفسر قبلی برای MSVC میشود. ثبت وصله توسط Ken Jin، Brandt Bucher و Chris Eibl. با کمک تیم MSVC از جمله Hulon Jenkins.
Python 3.15.0 alpha 3¶
Release date: 2025-12-16
Tools/Demos¶
gh-141692: هر اسلایس (slice) از یک XCframework در iOS اکنون شامل یک پوشهی
libاست که حاوی یک پیوند نمادین (symlink) به کتابخانهی پویای libpython است. این امر به ماژولهای دودویی (binary modules) اجازه میدهد تا به جای پیوندسازی چارچوب (Framework linking)، با استفاده از پیوندسازی کتابخانهی پویا برای iOS کامپایل شوند.
آزمونها¶
امنیت¶
gh-142145: حذف رفتار مربعی در پاکسازی نهانگاه (cache) شناسهی گره در
xml.minidom.gh-42400: برطرفسازی سرریز بافر در
_Py_wrealpath()برای مسیرهایی که ازMAXPATHLENبایت تجاوز میکنند، با استفاده از تخصیص حافظهی پویا به جای بافر با اندازهی ثابت. ثبت وصله توسط Shamil Abdulaev.gh-119451: برطرفسازی یک آسیبپذیری بالقوه در انکار سرویس حافظه در ماژول
http.client. هنگام اتصال به یک سرور مخرب، این امر میتواند باعث تخصیص مقدار دلخواهی از حافظه شود. این موضوع میتوانست به بروز علائمی از جملهMemoryError، صفحهبندی (swapping)، کشته شدن فرایندها یا ظروف (containers) به دلیل کمبود حافظه (OOM)، یا حتی از کار افتادن سیستم (system crashes) منجر شود.gh-119342: برطرفسازی یک آسیبپذیری بالقوه در انکار سرویس حافظه در ماژول
plistlib. هنگام خواندن پروندهی Plist دریافتی از یک منبع نامطمئن، این امر میتواند باعث تخصیص مقدار دلخواهی از حافظه شود. این موضوع میتوانست به بروز علائمی از جملهMemoryError، صفحهبندی (swapping)، کشته شدن فرایندها یا ظروف (containers) به دلیل کمبود حافظه (OOM)، یا حتی از کار افتادن سیستم (system crashes) منجر شود.
کتابخانه¶
gh-142754: افزودن ویژگی ownerDocument به عناصر (elements) و ویژگیهای (attributes) ماژول
xml.dom.minidomکه با نمونهسازی مستقیم کلاسElementیاAttrایجاد شدهاند. توجه داشته باشید که این روش ایجاد گرهها پشتیبانی نمیشود؛ و به جای آن باید از توابع سازنده مانندxml.dom.Document.documentElement()استفاده شود.gh-142594: برطرفسازی خرابی (crash) در
TextIOWrapper.close()زمانی که ویژگیclosedبافر زیرین، تابعdetach()را فراخوانی میکند.gh-76007: منسوخ کردن
__version__ازctypes. ثبت وصله توسط Hugo van Kemenade.gh-76007: منسوخ کردن
__version__ازwsgiref.simple_server. ثبت وصله توسط Hugo van Kemenade.gh-142651:
unittest.mock: رفع یک مسئلهی امنیت نخ که در آنMock.call_countممکن است وقتی ماک به طور همزمان از چندین نخ فراخوانی میشود، مقادیر نادرستی را برگرداند.gh-76007: منسوخ کردن
__version__ازhttp.server. وصله توسط Hugo van Kemenade.gh-138122: افزودن پرچم
--subprocessesبه رابط خط فرمان، CLIprofiling.samplingبرای پروفایلگیری خودکار زیرفرایندهای ایجاد شده توسط هدف. هنگامی که فعال است، پروفایلگیر، زیرفرایندهای جدید پایتون را زیر نظر میگیرد و هر کدام را به طور جداگانه پروفایلگیری میکند و نتایج را در پروندههای خروجی جداگانه مینویسد. این کار برای پروفایلگیری برنامههایی که ازmultiprocessing،ProcessPoolExecutorیا سایر روشهای موازیسازی مبتنی بر زیرفرایند استفاده میکنند، مفید است. وصله توسط Pablo Galindo.gh-142595: افزودن بررسی نوع داده در طول مقداردهی اولیه ماژول
decimalبرای جلوگیری از فروپاشی در صورت خرابی کتابخانهی استاندارد. وصله توسط Sergey B Kirpichev.gh-142556: رفع فروپاشی هنگامی که یک وظیفه در طول نهاییسازی در
asyncioدوباره ثبت میشود. وصله توسط Kumar Aditya.gh-138122: افزودن
--mode=exceptionبه پروفایلگیر نمونهبرداری برای گرفتن نمونهها فقط از نخهای دارای استثنای فعال، که برای تحلیل سربار مدیریت استثنا مفید است. وصله توسط Pablo Galindo.gh-142539:
traceback: رفع مکان نشانکها درSyntaxErrors هنگامی که منبع شامل نویسههای پهن است.gh-123241: جلوگیری از عملیات شمارش ارجاع در زبالهروبی شیءهای
ctypes.gh-142451:
hmac: کپی کردن درست ویژگیهایHMACبرای شیءهایی که از طریقHMAC.copy()کپی شدهاند. وصله توسط Bénédikt Tran.gh-138122: ابزار پروفایلگیر شعلهگراف
profiling.samplingاکنون از نمای شعلهگراف معکوس که تمامی گرههای برگ را تجمیع میکند، پشتیبانی میکند. در یک شعلهگراف استاندارد، اگر یک تابع داغ از چندین مکان فراخوانی شود، چندین بار به عنوان گرههای برگ مجزا ظاهر میشود. در شعلهگراف معکوس، تمامی رویدادهای همان تابع برگ در یک گره تجمیعشدهی واحد در ریشه ادغام میشوند و میزان داغ بودن کلی آن تابع را در یک مکان نشان میدهند. فرزندان هر گره تجمیعشده نمایانگر فراخوانندگان آن هستند و شناسایی اینکه کدام توابع بیشترین زمان پردازنده را مصرف میکنند و از کجا فراخوانی میشوند را آسانتر میسازد.gh-112527: متن راهنما برای گزینههای الزامی در
argparseدیگر با " (default: None)" گسترش نمییابد.gh-142438: رفع نشت احتمالی GIL در _PySSL_keylog_callback.
gh-138122: افزودن پروفایلگیری دستورالعمل در سطح بایتکد به پروفایلگیر نمونهبرداری از طریق پرچم جدید
--opcodes. هنگامی که فعال است، پروفایلگیر میگیرد که کدام آپکد بایتکد در هر نمونه در حال اجرا است، از جمله تخصیصهای تطبیقی Python 3.11+، و این دادهها را در قالبهای خروجی نقشه حرارتی، نمودار شعلهای، گکو و زنده تجسم میکند. وصله توسط Pablo Galindogh-142389: افزودن پشتیبانی از نشانهگذاری علامت نقلقول معکوس در توضیحات
argparseو متن epilog برای برجسته کردن کد درونخطی هنگامی که خروجی رنگی فعال است.gh-142346: رفع قالببندی استفاده برای گروههای متقابلاً انحصاری در
argparseزمانی که پیش از آنها آرگومانهای جایگاهی قرار دارند یا توسط سایر آرگومانهای اختیاری دنبال میشوند یا با آنها ترکیب میشوند.gh-142374: رفع محاسبهی درصد تجمعی برای توابع بازگشتی در پروفایلگیر نمونهبرداری جدید. هنگام پروفایلگیری توابع بازگشتی، آمارهای تجمعی (cumul%, cumtime) میتوانستند از ۱۰۰٪ تجاوز کنند زیرا هر قاب بازگشتی در یک پشته به طور جداگانه شمارش میشد. به عنوان مثال، تابعی که در هر نمونه ۵۰۰ بار بازگشت میکند، ۵۰۰۰۰٪ حضور تجمعی را نشان میدهد. این رفع اشکال، مکانها را در هر نمونه حذف تکرار میکند تا آمارهای تجمعی به درستی «درصد نمونههایی که در آنها این تابع روی پشته بوده است» را نشان دهند. وصله توسط Pablo Galindo.
gh-142315: برنامه Pdb اکنون میتواند اسکریپتها را از پایپهای ناشناس مورد استفاده در جایگزینی فرایند اجرا کند. وصله توسط Bartosz Sławecki.
gh-64532: راهنمای زیرپارسر اکنون شامل آرگومانهای اختیاری الزامی از پارسر والد در نحوه استفاده است، و روشنتر میکند که چه آرگومانهایی برای اجرای یک زیردستور مورد نیاز است. وصله توسط Savannah Ostrowski.
gh-142207: رفع: profiling.sampling ممکن است باعث ایجاد شرط
!(has_gil && gil_requested)شودgh-142332: رفع قالببندی استفاده برای آرگومانهای جایگاهی در گروههای متقابلاً انحصاری در
argparse. درargparse.gh-142282: رفع مشکل
winreg.QueryValueEx()برای جلوگیری از خواندن تصادفی بافر زباله در شرایط رقابت (race condition).gh-142318: رفع مشکل تایپ
'q'در راهنمای پروفایلگیر تعاملی (interactive) تاکیون که باعث خروج از پروفایلگیر میشد.gh-75949: رفع مشکل
argparseبرای حفظ جداکنندههای|در گروههای متقابلاً انحصاری هنگامی که سطر راهنما به دلیل طولانی بودن میشکند.gh-142267: بهبود کارایی
argparseاز طریق ذخیرهسازی در حافظهی پنهان (caching) قالببند (formatter) استفادهشده برای اعتبارسنجی آرگومان.gh-139862: حذف پارامتر
colorاز سازندهیargparse.HelpFormatter. رنگبندی توسطArgumentParserکنترل میشود.gh-68552: نقایص
MisplacedEnvelopeHeaderDefectوMissing header nameاکنون بهدرستی به متدhandle_defectازpolicyدرFeedParserارسال میشوند.gh-142206: ردیاب منابع در ماژول
multiprocessingاکنون میتواند پیامهای نسخههای قدیمیتر خود را درک کند. این کار از بروز مشکلات هنگام ارتقای پایتون در حال اجرا جلوگیری میکند. (توجه داشته باشید که چنین ارتقاهای درونبرنامهای آزمایش نمیشوند.)gh-142214: رفع دو رگرسیون در
dataclassesدر پایتون ۳.۱۴.۱ مرتبط با حاشیهنویسیها (annotations).اگر از
slots=Trueاستفاده شود و متد__init__دارای ویژگی__annotate__نباشد (احتمالاً به این دلیل که ازinit=Falseاستفاده شده است)، دیگر هیچ استثنایی پرتاب نمیشود.اگر حاشیهنویسیها روی متد
__init__درخواست شوند و یکی از فیلدها در حاشیهنویسیهای کلاس وجود نداشته باشد، دیگر هیچ استثنایی پرتاب نمیشود. این اتفاق ممکن است در سناریوهای پویای خاصی رخ دهد.
اصلاحیه از Jelle Zijlstra.
gh-142203: حذف پارامتر debug_override از
importlib.util.cache_from_source()که از نسخهی ۳.۵ پایتون منسوخ شده بود.gh-138122: ماژول
_remote_debuggingاکنون ذخیرهسازی قابها (frame caching) را در کلاسRemoteUnwinderپیادهسازی میکند تا خواندن حافظه هنگام پروفایلگیری فرایندهای از راه دور کاهش یابد. هنگامی کهcache_frames=Trueباشد، بخشهای تغییرنیافتهی پشتهی فراخوانی از نمونههای قبلی دوباره استفاده میشوند، که به طور قابل توجهی کارایی پروفایلگیری را برای پشتههای فراخوانی عمیق بهبود میبخشد.gh-116738: رفع رقابت دادهها در
cmathهنگام مقداردهی اولیهی جدولهای مثلثاتی با زیرمترجمها (subinterpreters).gh-141982: اجازه دادن به
pdbبرای تنظیم نقاط توقف روی توابع ناهمگام با نامهای توابع.gh-74389: هنگامی که ورودی استاندارد (stdin) مورد استفاده توسط یک نمونهی
subprocess.Popenبسته میشود، این مورد اکنون درsubprocess.Popen.communicate()به جای باقی گذاشتن کلاس در وضعیتی ناهمگون، نادیده گرفته میشود.gh-87512: رفع نحوهی مدیریت مهلت زمانی (timeout) در
subprocess.Popen.communicate()روی ویندوز هنگام نوشتن ورودیهای بزرگ. پیش از این، مهلت زمانی در طول نوشتن ورودی استاندارد نادیده گرفته میشد و باعث میشد اگر فرایند فرزند ورودی را به سرعت مصرف نکند، متد به طور نامحدود مسدود شود. نوشتن ورودی استاندارد اکنون در یک نخ پسزمینه انجام میشود که به اعمال درست مهلت زمانی اجازه میدهد.gh-141939: افزودن رنگ به تمام مقادیر درونپیشانیشده در راهنمای
argparse، مانند%(default)sیا%(choices)s. اصلاحیه از Alex Prengère.gh-141473: هنگامی که
subprocess.Popen.communicate()با input و timeout فراخوانی میشود و برای بار دوم پس از یک استثنایTimeoutExpiredو قبل از پایان یافتن فرایند فراخوانی میشود، نباید دیگر معلق بماند.gh-141999: اجازه دادن درست به
KeyboardInterruptبرای متوقف کردن فرایند هنگام استفاده ازprofiling.sampling.gh-142006: رفع یک باگ در الگوریتم تا کردن
email.policy.defaultکه به اشتباه باعث ایجاد یک نویسهی خط جدید مضاعف میشد، زمانی که یک سطر دقیقاً در max_line_length به پایان میرسید و پس از آن یک توکن غیرقابل تا شدن قرار داشت.gh-141968: حذف کپی داده از کامپایل
reمربوط به عبارتهای باقاعده با مجموعه نویسههای بزرگ با استفاده ازbytearray.take_bytes().gh-141968: حذف کپی داده از
encode()وencode()درencodings.idnaبا استفاده ازbytearray.take_bytes().gh-141968: حذف کپی داده از کدگذاری
punycodeدرcodecsبا استفاده ازbytearray.take_bytes().gh-141968: حذف کپی داده از
wave.Wave_read.readframes()وwave.Wave_write.writeframes()با استفاده ازbytearray.take_bytes().gh-141968: حذف کپی داده از
base64.b32decode()وbase64.b32encode()با استفاده ازbytearray.take_bytes().gh-59000: رفع وضوح نقطهشکست
pdbبرای متدهای کلاس زمانی که ماژول تعریفکنندهی کلاس وارد (import) نشده است.gh-116738: رفع مسئلهی امنیت نخ با اشیاء اسکنر
reدر ساختهای نخآزاد.gh-138122: پروفایلگیر شعلهنمودار
profiling.samplingاکنون آمار وضعیت نخ را نمایش میدهد که درصد زمانی را که نخها صرف نگه داشتن GIL، اجرا بدون GIL، انتظار برای GIL و انجام زبالهروبی میکنند، نشان میدهد. این آمار به شناسایی رقابت روی GIL و الگوهای رفتار نخ کمک میکند. هنگام فیلتر کردن بر اساس نخ، نمایشگر معیارهای هر نخ را نشان میدهد.gh-141781: رفع مسئلهای که در آن انتساب pdb.line_prefix در صورت انتساب پس از وارد شدن ماژول نادیده گرفته میشد.
gh-141863: بهروزرسانی جریانها برای استفاده از
bytearray.take_bytes()جهت بهبود عملکرد بیش از ۱۰ درصدی در بنچمارک asyncio_tcp در pyperformance.gh-141817: افزودن ثابت
socket.IPV6_HDRINCL.gh-105836: رفع مشکلی که در آن
asyncio.run_coroutine_threadsafe()وظیفهی زیرین لغو شدهی asyncio را به صورت در حال اجرا باقی میگذاشت.gh-141570: پشتیبانی از شیء شبهپرونده که در تشخیص رنگ (
_colorize.can_colorize()) خطایOSErrorرا ازfileno()بالا میآورد (raise). این اتفاق میتواند زمانی رخ دهد کهsys.stdoutتغییر مسیر داده شده باشد.gh-141679: افزودن رنگ به مقادیر پیشفرض در راهنمای
argparse. اصلاحیه از Hugo van Kemenade.gh-141686: شکستن چرخههای ارجاع ایجاد شده توسط هر فراخوانی به
json.dump()یاjson.JSONEncoder.iterencode().gh-141659: رفع خطاهای توصیفگر پروندهی نامعتبر از
_posixsubprocessروی AIX.gh-141645: افزودن یک حالت جدید
--liveبه پروفایلگیر tachyon در ماژولprofiling.sampling. این حالت شامل یک رابط کاربری متنی (TUI) زنده است که همزمان با اجرای برنامهی هدف، آمار پروفایلگیری را به صورت لحظهای نمایش میدهد، مشابهtop. اصلاحیه از Pablo Galindogh-141615: بررسی
stdinبه جایstdoutبرایuse_rawinputدرpdb.gh-69113: اصلاح
doctestبرای گزارش صحیح شمارهسطرها برای تستهای داک (doctests) در دیکشنری__test__هنگامی که به شکل رشتههای سهنقلقولی قالببندی شدهاند، با یافتن سطرهای یکتا در رشته و تطبیق آنها در پروندهی مبدأ.gh-141600: اصلاح تشخیص نسخهی musl در Void Linux.
gh-48752: افزودن تابع
readline.get_pre_input_hook()برای بازیابی قلاب پیش-ورودی فعلی. این کار به برنامهها اجازه میدهد تا قلاب را بدون بازنویسی تنظیمات کاربر، ذخیره و بازیابی کنند. وصلهای از Sanyam Khurana.gh-141565: افزودن پروفایلگیری آگاه از ناهمگامی (async-aware) به پروفایلگیر نمونهبرداری Tachyon. این پروفایلگیر اکنون سلسلهمراتب وظایف ناهمگام را در نمودارهای شعلهای (flamegraphs) بازسازی و نمایش میدهد، که خروجی را برای کاربران کاربردیتر میکند. وصلهای از Savannah Ostrowski و Pablo Galindo Salgado.
gh-60107: حذف یک کپی از
io.RawIOBase.read(). اگر کلاس ورودی/خروجی زیرین مرجعی به حافظهی تغییرپذیر نگه دارد، یکBufferErrorایجاد کنید.gh-116738: ایمنسازی ماژول csv در برابر نخها در ساخت نخبندی آزاد.
gh-140911:
collections: اطمینان حاصل کنید که متدهایUserString.rindex()وUserString.index()نمونههایcollections.UserStringرا به عنوان آرگومان sub میپذیرند.gh-140875: اصلاح نحوهی مدیریت ارجاعات نویسهی بستهنشده (نامگذاریشده و عددی) که پس از پایان پرونده در
html.parser.HTMLParserباconvert_charrefs=Falseمیآیند.gh-140677: افزودن حالت تجسم نگاشت حرارتی (heatmap) به پروفایلگیر نمونهبرداری Tachyon. قالب خروجی جدید
--heatmapنمای سطر به سطری را فراهم میکند که شدت اجرای کد را با نمونههای رنگی، آمارهای درونخطی (inline) و ناوبری تعاملی گراف فراخوانی بین فراخوانندهها و فراخواندهشوندگان نشان میدهد.gh-139946: تمایز بین stdout و stderr هنگام رنگی کردن خروجی در ماژول argparse.
gh-76007:
pydoc: اصلاح ایجاد هشدارDeprecationWarningهنگام تولید مستندات برای ماژولهای کتابخانهی استاندارد.gh-138697: اصلاح استنتاج dest از یک گزینهی طولانی با یک خط تیره در
argparse. اگر یک گزینهی کوتاه و یک گزینهی طولانی با یک خط تیره بهadd_argument()ارسال شود، dest اکنون از گزینهی طولانی با یک خط تیره استنتاج میشود.gh-138525: افزودن پشتیبانی از گزینههای طولانی با یک خط تیره و نویسههای پیشوند جایگزین در
argparse.BooleanOptionalAction.gh-79986: افزودن تجزیه برای سرآیندهای
ReferencesوIn-Reply-Toبه کتابخانهیemailکه محتوای سرآیند را به عنوان فهرستهایی از توکنهای شناسهی پیام تجزیه میکند. این کار از تا خوردن (folded) نادرست آنها جلوگیری میکند.gh-135559: پرچم: اجرای
dir()روی شمارشکنندهیFlagاکنون اعضای غیرکانونیکال (یعنی مستعارها) را نمایش میدهد.gh-134453: اصلاح مدیریت آرگومان
input=درsubprocess.Popen.communicate()برای نمونههایmemoryviewکه روی پلتفرمهای POSIX به شکل بایت نبودند. این نمونهها اکنون به جای قطع کردن (truncating) ورودی، بهدرستی به یک نمای به شکل بایت تبدیل نوع (cast) میشوند. پلتفرمهای ویندوز این باگ را نداشتند.gh-127930: افزودن
__all__بهtkinter.simpledialog.gh-115952: اصلاح انکار سرویس احتمالی حافظه در ماژول
pickle. هنگام خواندن دادههای pickle شدهی دریافتی از منبعی نامطمئن، ممکن است باعث تخصیص مقدار نامحدودی از حافظه شود، حتی اگر کد مجاز به اجرا با بازنویسی متدfind_class()محدود شده باشد. این امر میتوانست منجر به بروز نشانههایی از جملهMemoryError، جابجایی صفحات حافظه (swapping)، کشته شدن فرایندها یا کانتینرها به دلیل کمبود حافظه (OOM) یا حتی خرابی سیستم شود.bpo-40350: اصلاح پشتیبانی از بستههای فضای نام در
modulefinder.
مستندات¶
gh-141994:
xml.sax.handler: مستنداتxml.sax.handler.feature_external_gesرا وادار کنید تا در مورد خطرات باز کردن درها به روی حملات موجودیت خارجی XML هشدار دهد. وصلهای از Sebastian Pipping.
هسته و توکارها (Core and Builtins)¶
gh-134584: حذف شمارش ارجاع اضافی از
_STORE_ATTR_INSTANCE_VALUE.gh-142718: کامپایلر درجا (JIT): رفع خطای حافظه (segfault) ناشی از عدم تخلیهی پشته به حافظه در خروجهای جانبی.
gh-142737: ردگیریها حتی در صورت از دست رفتن
io.open()در حالت جایگزین نمایش داده خواهند شد. پیش از این، این موضوع باعث فروپاشی مفسر میشد. وصله توسط Bartosz Sławecki.gh-116738: ویژگیها در
bz2را در ساخت نخبندی آزاد به صورت نخایمن درآورید.gh-134584: حذف شمارش ارجاع اضافی از
_CALL_LIST_APPEND.gh-142554: رفع فروپاشی در
divmod()هنگامی که_pylong.int_divmod()دقیقا یک تاپل با طول دو برنمیگرداند. وصله توسط Bénédikt Tran.gh-142531: رفع افت عملکرد زبالهروبی در حالت نخآزاد. اگر تعداد زیادی تاپل ردیابینشده وجود داشته باشد، زبالهروبی بیش از حد اجرا میشود که منجر به عملکرد ضعیفی خواهد شد. راهحل این است که تاپلهای ردیابینشده در شمارش اشیای «عمر طولانی» گنجانده شوند. تعداد اشیای فریزشده نیز اکنون لحاظ میشود زیرا زبالهروبی نخآزاد باید آنها را نیز اسکن کند.
gh-142402: رفع شمارش ارجاع زمانی که بخشهای لفظی مجاور در طول ساخت
string.templatelib.Templateادغام میشوند، که از نشت شیء رشتهی جابهجاشده جلوگیری میکند.gh-116738: ویژگیها در
zlibرا در ساخت نخبندی آزاد به صورت نخایمن درآورید.gh-142343: رفع فروپاشی SIGILL روی m68k به دلیل محدودیت مونتاژ نادرست.
gh-142236: بهبود خطای نحوی «Perhaps you forgot a comma?» برای ترکیبهای رشتهای چندسطری به نحوی که به جای رشتهی اول، به آخرین رشته اشاره کند و یافتن محل گم شدن کاما را آسانتر سازد. وصله توسط Pablo Galindo.
gh-142236: رفع پیشنهادهای کلیدواژهی نادرست برای خطاهای نحوی در
traceback. مکانیسم پیشنهاد خطای املایی کلیدواژه به جای داشتن یک خطای املایی واقعی، زمانی که کد منبع استخراجشده ناقص بود، به اشتباه جایگزینهایی را پیشنهاد میکرد. وصله توسط Pablo Galindo.gh-142305: کاهش اندازهی استنسیلهای تولیدشده و کد رانتایم کامپایلر درجا (JIT). وصله توسط Diego Russo.
gh-135379: پیادهسازی شکل محدودی از تخصیص رجیستر به نام «کش کردن بالای پشته» در کامپایلر درجا (JIT). این کار با نگهداری ۰ تا ۳ مورد برتر پشته در رجیسترها انجام میشود. تولیدکنندهی کد نسخههای متعددی از آن ریزعملگرهایی (uops) که فرار نمیکنند و نسبتا کوچک هستند را تولید میکند. در طول کامپایل کامپایلر درجا (JIT)، کپیای که کمترین ترافیک حافظه را ایجاد میکند انتخاب میشود و در صورت نیاز مقادیر تخلیه یا بارگذاری مجدد میشوند.
gh-142276: رفع دیدهبان نوع گمشده هنگام ارتقای بارگذاری ویژگیها به ثوابت در کامپایلر درجا (JIT). وصله توسط Ken Jin. بازتولید توسط Yuancheng Jiang.
gh-142218: رفع فروپاشی هنگام درج در یک دیکشنری جدول تقسیمشده با کلیدی غیر از
strکه با یک کلید موجود مطابقت دارد.gh-141976: بررسی سرریز پشتهی انتزاعی در بهینهساز کامپایلر درجا (JIT).
gh-97850: حذف تمام استفادهها و تعاریف
*.load_module()از سیستم ایمپورت و importlib. این متد از پایتون ۳.۴ به نفعimportlib.abc.Loader.exec_module()منسوخ شده است.gh-142048: رفع تأخیرهای رو به افزایش درجهدوم زبالهروبی در ساخت نخآزاد.
gh-65961: متوقف کردن تنظیم
__cached__روی ماژولها.gh-141770: حاشیهنویسی استفاده از mmap ناشناخته فقط زمانی که توسط هستهی لینوکس پشتیبانی شود و اگر از
-X devاستفاده شود یا پایتون در حالت رفع اشکال ساخته شود. وصله توسط Donghee Na.gh-142029: هنگامی که از یک ماژول ناموجود به عنوان نام در
_imp.create_builtin()استفاده میشود، به جای کرش کردن،ModuleNotFoundErrorرا بالا بیاورید.gh-142029: هنگامی که از یک رشتهی خالی به عنوان نام در
_imp.create_builtin()استفاده میشود، به جای کرش کردن،ValueErrorرا بالا بیاورید.gh-141976: به دلایل مربوط به کارایی، در برابر خطاهای تخصصیسازی در کامپایلر درجا (JIT) برای ردیابی محافظت کنید.
gh-141861: اصلاح خوانش نامعتبر حافظه در دستور
ENTER_EXECUTOR.gh-141930: هنگام ایمپورت کردن یک ماژول، از شیء پروندهی معمولی پایتون استفاده کنید تا اطمینان حاصل شود که نوشتهها در پروندههای
.pycکامل هستند یا خطای مناسبی بالا برود.gh-138122: تشخیص نمونهی ناقص را برای جلوگیری از دادههای پروفایلگیری خراب اضافه کنید. هر وضعیت نخ اکنون شامل یک قاب پایهی تعبیهشده (نشانگر در پایین پشتهی قاب) با نوع مالک
FRAME_OWNED_BY_INTERPRETERاست. پروفایلگیر اعتبارسنجی میکند که باز شدن پشته در این قاب نشانگر پایان مییابد. نمونههایی که به قاب پایه نمیرسند (به دلیل شرایط رقابت، خرابی حافظه یا سایر خطاها) اکنون به جای اینکه به عنوان دادههای نادرست گنجانده شوند، رد میشوند.gh-120158: اصلاح وضعیت ناسازگار هنگام فعال یا غیرفعال کردن مکرر رویدادهای مانیتورینگ.
gh-140638: نمایش یک آمار
"candidates"درgc.get_stats()وgc.callbacks.gh-141780: اصلاح
Py_mod_gilبا API اضافه شده در PEP 793:PyModule_FromSlotsAndSpec()و قلابهایPyModExportgh-141732: اطمینان حاصل کنید که
__repr__()برایExceptionGroupوBaseExceptionGroupزمانی که دنبالهی استثنایی که در ابتدا به سازندهی آن ارسال شده است متعاقباً جهش پیدا میکند، تغییر نکند.gh-140638: نمایش یک آمار
"duration"درgc.get_stats()وgc.callbacks.gh-139653: فقط زمانی یک
RecursionErrorبالا بیاورید یا خطای مهلکی را راهاندازی کنید که اشارهگر پشته هم پایینتر از اشارهگر حد و هم بالاتر از پایهی پشته باشد. اگر خارج از این کرانها است، فرض کنید که همهچیز درست است. این کار از مثبتهای کاذب هنگامی که نخهای فضای کاربر پشتهها را جابهجا میکنند جلوگیری میکند.gh-41779: اجازه دادن به تعریف __slots__ شامل __dict__ و __weakref__ برای هر کلاس.
gh-139103: بهبود مقیاسپذیری چندنخی دیتاکلاسها روی ساخت نخآزاد.
gh-141589: تغییر
backoff counterبرای استفاده از اعداد اول به جای توانهای ۲. استفاده از تنها ۳ بیت برایcounterو ۱۳ بیت برایvalue. این امر امکان پشتیبانی از مقادیر تا ۸۱۹۱ را فراهم میکند. پچ توسط Mikhail Efimov.gh-137007: اصلاح یک باگ در طول خطای کامپایل JIT که باعث شکست ادعاهای اشکالزدایی زبالهروبی میشد.
gh-132657: برای ساخت نخآزاد، از قفل کردن شیء
setبرای متد__contains__خودداری کنید.gh-134584: حذف شمارش ارجاع اضافی از
_CALL_STR_1.gh-134584: حذف شمارش ارجاع اضافی از
_CALL_BUILTIN_O.gh-134584: حذف شمارش ارجاع اضافی از
_CALL_TUPLE_1. پچ توسط Noam Cohen
رابط C API¶
gh-142589: اصلاح نحوهی مدیریت اعداد صحیح نشانهگذاریشده در پشتهی مفسر توسط
PyUnstable_Object_IsUniqueReferencedTemporary().gh-142571: تابع
PyUnstable_CopyPerfMapFile()اکنون پیش از تخلیه (flush)، بررسی میکند که باز کردن پرونده با موفقیت انجام شده باشد.gh-142225: ماکروی
PyABIInfo_VARاصلاح شد.gh-141049: توابع
_PyObject_CallMethodId()،_PyObject_GetAttrId()و_PyUnicode_FromId()از نسخهی ۳.۱۵ منسوخ شدهاند و در نسخهی ۳.۲۰ حذف خواهند شد. بهجای آنها، ازPyUnicode_InternFromString()استفاده کنید و نتیجه را در نهانگاه وضعیت ماژول ذخیره نمایید، سپسPyObject_CallMethod()یاPyObject_GetAttr()را فراخوانی کنید. این وصله توسط Victor Stinner تهیه شده است.gh-142163: اصلاح تعریف شدن ماکروی
HAVE_THREAD_LOCALبدون تنظیم ماکرویPy_BUILD_COREپس از گنجاندنPython.h.gh-137422: برطرف کردن وضعیت رقابتی نخبندی آزاد در
PyImport_AddModuleRef(). پیشتر این احتمال وجود داشت که دو فراخوانی به این تابع دو شیء مختلف برگردانند که تنها یکی از آنها درsys.modulesذخیره میشد.gh-141726: افزودن تابع
PyDict_SetDefaultRef()به ABI پایدار (Stable ABI).gh-140042: حذف فراخوانی sqlite3_shutdown که میتوانست هنگام استفاده با چند زیرمفسر (sub-interpreter)، باعث بستهشدن اتصالات برای sqlite شود.
gh-141070: افزودن
PyUnstable_Object_Dump()برای برونریزی یک شیء درstderr. این تابع باید صرفاً برای اشکالزدایی استفاده شود. این وصله توسط Victor Stinner تهیه شده است.gh-139165: معرض دید قرار دادن توابع
Py_SIZE()،Py_IS_TYPE()وPy_SET_SIZE()در ABI پایدار (Stable ABI).
ساخت¶
gh-131372: افزودن
LDVERSIONوEXEبه مقدارbase_interpreterدر پروندهیbuild-details.json.gh-142454: هنگام محاسبهی چکیدهی ورودیهای استنسیلهای JIT، پیش از افزودن محتوای پروندهها به هشساز، آنها را بر اساس نام پرونده مرتب کنید. این کار تضمین میکند که ورودی هش و در نتیجه مقدار هش قطعی (deterministic) باشد و به ترتیب سامانهی فایلبندی وابسته نباشد.
gh-131372: پروندهی
build-details.pyتنها بهعنوان بخشی از نصب اصلی (make install) نصب خواهد شد. دستورmake altinstallدیگر آن را شامل نخواهد شد.gh-142234: امکان استفاده از
--enable-wasm-dynamic-linkingرا برای WASI فراهم کنید. از آنجا که سیپایتون (CPython) بهطور مستقیم از آن پشتیبانی نمیکند، کاربران خارجی/پاییندست نیازی به اعمال وصله برای پشتیبانی از این پرچم ندارند.gh-142050: رفع باگی که در آن استنسیلهای JIT تولیدشده روی ویندوز حاوی دادههای اشکالزدایی بودند. این وصله توسط Chris Eibl تهیه شده است.
gh-141808: در ساختهای PGO روی ویندوز، استنسیلهای JIT را دو بار تولید نکنید.
gh-141926: متغیر
RUNSHAREDدیگر هنگام کامپایل متقابل (cross-compiling) پاکسازی نمیشود. پیشتر،RUNSHAREDدر هنگام کامپایل متقابل پاک میشد، که باعث خرابی PGO هنگام استفاده از--enabled-sharedروی سیستمهایی میشود که در آنها سیپایتونِ کامپایلشدهی متقابل در غیر این صورت قابلاجرا است (مثلاً از طریق شبیهسازی شفاف).gh-141808: هنگام اجرای
make clean-retain-profile، استنسیلهای JIT تولیدشده را نگه دارید. به این ترتیب، وقتی از بهینهسازی هدایتشده با پروفایل (PGO) استفاده میشود، استنسیلها دو بار تولید نمیشوند. همچنین این امکان را به توزیعکنندگان میدهد که استنسیلهای JIT پیشساختهی خود را ارائه دهند.gh-141784: اصلاح کامپایل پروندهی
_remote_debugging_module.cروی لینوکس ۳۲ بیتی. پروندهی Python.h را پیش از سرآیندهای سیستم بگنجانید تا اطمینان حاصل شود که_remote_debugging_module.cاز همان انواع دادهی (ABI) پایتون استفاده میکند. این وصله توسط Victor Stinner تهیه شده است.gh-141172: بهروزرسانی به WASI SDK 29.
gh-139707: افزودن گزینهی پیکربندی
--with-missing-stdlib-config=FILEبه توزیعکنندگان اجازه میدهد تا یک پروندهی پیکربندی JSON حاوی پیامهای خطای سفارشی برای ماژولهای کتابخانهی استاندارد مفقود را ارسال کنند.gh-108819: احترام گذاشتن به
--with-platlibdirدر مسیر نصب کتابخانهی استاندارد تمامپایتون (pure-Python)، در صورتی کهPLATLIBDIRبا مقدار استفادهشده درLIBDIRمطابقت نداشته باشد.
پایتون ۳.۱۵.۰ آلفا ۲¶
تاریخ انتشار: ۲۰۲۵-۱۱-۱۸
Windows¶
gh-140849: بهروزرسانی liblzma بستهبندیشده به نسخهی ۵.۸.۱.
Tools/Demos¶
gh-141442: محیط آزمون iOS اکنون آرگومانهای آزمونی را که حاوی فاصلهها هستند به درستی مدیریت میکند.
gh-140702: برنامهی محیط آزمون iOS اکنون متغیر محیطی
GITHUB_ACTIONSرا در اختیار برنامههای iOS که در حال آزمون هستند قرار میدهد.gh-139198: حذف اسکریپت
Tools/scripts/checkpip.py.gh-139188: حذف اسکریپت
Tools/tz/zdump.py.
آزمونها¶
gh-140482: حفظ و بازیابی وضعیت
stty echoبه عنوان بخشی از محیط آزمون.gh-140082: بهروزرسانی
python -m testبرای تنظیمFORCE_COLOR=1هنگام اجرا با رنگبندی فعال، به طوری کهunittestکه توسط آن با خروجی هدایتشده اجرا میشود، خروجی را با رنگ نمایش دهد.gh-136442: استفاده از کد خروج
1به جای5اگرunittest.TestCase.setUpClass()یک استثنا ایجاد کند.
امنیت¶
gh-137836: افزودن پشتیبانی از المان «plaintext»، المانهای RAWTEXT به نامهای «xmp»، «iframe»، «noembed» و «noframes»، و به صورت اختیاری المان RAWTEXT «noscript» در
html.parser.HTMLParser.gh-136063:
email.message: اطمینان از پیچیدگی خطی برای تجزیه پارامترهای قدیمی HTTP. وصله توسط Bénédikt Tran.gh-136065: اصلاح پیچیدگی درجهدوم در
os.path.expandvars().
کتابخانه¶
gh-141497:
ipaddress: اطمینان حاصل کنید که متدهایIPv4Network.hosts()وIPv6Network.hosts()همیشه یک پیمایشگر برمیگردانند.gh-140938: توابع
statistics.stdev()وstatistics.pstdev()اکنون زمانی که ورودی شامل یک عدد بینهایت (infinity) یا یک NaN باشد، یکValueErrorبالا میآورند.gh-124111: بهروزرسانی پیکربندی نخکشی Tcl در
_tkinterبا فرض اینکه نخها همیشه در Tcl 9 و نسخههای بعدی در دسترس هستند.gh-137109: توابع
os.forkو APIهای انشعاب مرتبط دیگر در حالت کلی که APIهای پلتفرم لینوکس یا macOS تعداد نخها را در یک فرایند برمیگردانند و مقدار را ۱ مییابند هشدار نخواهند داد، حتی زمانی که یک کالبکafter_in_parent=درos.register_at_fork()یک نخ را (دوباره) راهاندازی کند.gh-141314: رفع خطای شرط (assertion) در
io.TextIOWrapper.tell()هنگام خواندن پروندههایی با انتهای سطر بازگشت به ابتدای سطر مستقل (\r).gh-141311: برطرف کردن خطای عدم برآورده شدن شرط (assertion failure) در
io.BytesIO.readinto()و رفتار نامشخصی که وقتی موقعیت خواندن بالاتر از ظرفیت است درio.BytesIOرخ میدهد.gh-87710:
mimetypes: بهروزرسانی نوع MIME برای پروندههای.aiبهapplication/pdf.gh-85524: بهروزرسانی
io.FileIO.readallکه پیادهسازیio.RawIOBase.readall()است، به طوری که از راهنمایio.IOBaseپیروی کند و زمانی که پرونده در حالت «w» است بهجایOSErrorاستثنایio.UnsupportedOperationرا بالا بیاورد.gh-141141: برطرف کردن مسئلهی امنیت نخ (thread safety) با
base64.b85decode(). ارسالشده توسط Benel Tayar.gh-141018:
mimetypes: بهروزرسانی.exe،.dll،.rtfو (هنگامی کهstrict=Falseاست).jpgبه نوع MIME صحیح IANA.gh-137969: برطرف کردن مشکلی که در آن
annotationlib.ForwardRef.evaluate()شیءهایForwardRefرا برمیگرداند که با متغیرهای سراسری جدید بهروز نمیشوند.gh-75593: افزودن پشتیبانی از شیء شبهمسیر و شیء شبهبایت در
wave.open().gh-140797: کلاس مستندنشدهی
re.Scannerاکنون عبارتهای باقاعده حاوی گروههای ثبتکننده (capturing groups) را در الگوهای واژهنامهی خود ممنوع میکند. الگوهایی که از گروههای ثبتکننده استفاده میکردند قبلاً میتوانستند منجر به خرابی برنامه با خطای قطعهبندی (segmentation fault) شوند. بهجای آن از گروههای غیرثبتکننده (non-capturing groups) (?:...) استفاده کنید.gh-125115: بازسازی مسئلهی تجزیه در
pdbبه طوری که آرگومانهای جایگاهی بتوانند به صورت شهودی عبور کنند.gh-140815: ماژول
faulthandlerاکنون تشخیص میدهد که آیا یک قاب (frame) یا شیء کد نامعتبر است یا آزاد شده است. وصله توسط Victor Stinner.gh-100218: تنظیم صحیح
errnoهنگامی کهsocket.if_nametoindex()یاsocket.if_indextoname()یکOSErrorرا بالا میآورند. وصله توسط Bénédikt Tran.gh-140734:
multiprocessing: برطرف کردن خطای off-by-one هنگام بررسی طول مسیر پروندهی سوکت موقت. وصله توسط Bénédikt Tran.gh-140873: افزودن پشتیبانی از موارد فراخوانیپذیر (callables) غیر توصیفگر در
functools.singledispatchmethod().gh-140874: ارتقای نسخهی pip بستهبندیشده در ensurepip به نسخهی 25.3
gh-140826: اکنون شیءهای
winreg.HKEYTypeبه جای هویت شیء، بر اساس مقدار دسته (handle) زیرین رجیستری ویندوز مقایسه میشوند.gh-140808: کلاس داخلی
mailbox._ProxyFileدیگر یک عام پارامتریشده (parameterized generic) نیست.gh-140691: در
urllib.request، زمانی که باز کردن یک نشانیوب FTP به دلیل عدم امکان برقراری اتصال داده با شکست مواجه میشود، سوکت اتصال کنترلی برای جلوگیری از وقوع یکResourceWarningبسته میشود.gh-103847: برطرف کردن توقف ناخواسته هنگام لغو فرایند ایجادشده توسط
asyncio.create_subprocess_exec()یاasyncio.create_subprocess_shell(). وصله توسط Kumar Aditya.gh-137821: تبدیل ماژول
_jsonبرای استفاده از Argument Clinic. وصلهشده توسط Yoonho Hann.gh-140790: مقداردهی اولیهی تمام متغیرهای نمونهی Pdb در
__init__، حذف برخی از hasattr/getattrgh-140766: افزودن
enum.show_flag_values()وenum.binبهenum.__all__.gh-120057: افزودن
os.reload_environ()بهos.__all__.gh-140741: رفع مشکل پردازش نادرست
FileNotFoundErrorیاPermissionErrorتوسطprofiling.sampling.sample().gh-140228: جلوگیری از فراخوانیهای غیرضروری سامانه فایلبندی برای ماژولهای فریزشده در
linecacheهنگامی که نهانگاه سراسری ماژول موجود نیست.gh-139946: کلیدواژههای خطا و هشدار در پیامهای
argparse.ArgumentParserاکنون هنگام فعال بودن خروجی رنگی، رنگآمیزی میشوند و این امر ناهماهنگی بصری را که در آن متنها ساده باقی میماندند در حالی که سایر خروجیها رنگی بودند، برطرف میکند.gh-140590: رفع بررسی آرگومانها برای
functools.partial.__setstate__()که ممکن است به خراب شدن وضعیت داخلی و فروپاشی منجر شود. وصل توسط Sergey Miryanov.gh-125434: نمایش نام نخ در
faulthandlerروی ویندوز. وصل توسط Victor Stinner.gh-140634: رفع یک اشکال شمارش ارجاع در
os.sched_param.__reduce__().gh-140650: رفع مشکلی که در آن بستن
io.BufferedWriterممکن بود در صورت پرتاب استثنا هنگام دسترسی به صفت closed یا عدم امکان تبدیل آن به بولی، منجر به فروپاشی شود.gh-140633: نادیده گرفتن
AttributeErrorهنگام تنظیم صفت__file__یک ماژول در زمان بارگذاری یک ماژول توسعهای بستهبندیشده به شکل Apple Framework.gh-140601:
xml.etree.ElementTree.iterparse()اکنون هنگامی که پیمایشگر به طور صریح بسته نشده و با یک نامپرونده باز شده باشد، یکResourceWarningصادر میکند. این کار به توسعهدهندگان کمک میکند تا نشت منابع را شناسایی و رفع کنند. وصله توسط Osama Abdelkader.gh-140593:
xml.parsers.expat: رفع یک نشت حافظه که میتوانست کاربرانی را تحت تأثیر قرار دهد کهElementDeclHandler()را روی یک هندلر اعلان عنصر سفارشی تنظیم کردهاند. وصل توسط Sebastian Pipping.gh-140607: درون
io.RawIOBase.read()، اعتبارسنجی اینکه تعداد بایتهای بازگرداندهشده توسطio.RawIOBase.readinto()معتبر است (درون بافر ارائهشده).gh-138162: رفع مشکل
logging.LoggerAdapterباmerge_extra=Trueو بدون آرگومان extra.gh-140481: بهبود پیام خطا هنگام تلاش برای پیمایش کردن یک ابزارک، تصویر یا فونت Tk.
gh-138774:
ast.unparse()اکنون هنگام مدیریت گرههایast.Interpolationکه منبع مشخصی ندارند، کد منبع کامل را تولید میکند.gh-140474: رفع نشت حافظه در
array.arrayهنگام ایجاد آرایهها از یکstrخالی و کد نوعu.gh-140448: تغییر مقدار پیشفرض
suggest_on_errorبهTrueدرargparse.ArgumentParser.gh-137530:
dataclasses: رفع حاشیهنویسیها برای متدهای تولیدشده__init__با جایگزین کردن حاشیهنویسیهایی که به صورت درونخطی در کد منبع تولیدشده بودند، با توابع__annotate__متصل به متدها.gh-140348: رفع رگرسیون در نسخهی 3.14.0 پایتون که در آن استفاده از عملگر
|روی یک شیءtyping.Unionترکیبشده با شیءای که نوع داده نیست، خطایی را پرتاب میکرد.gh-76007:
decimal: منسوخ کردن__version__و جایگزینی آن باdecimal.SPEC_VERSION.gh-76007: منسوخ کردن
__version__ازimaplib. وصلهی ارائه شده توسط Hugo van Kemenade.gh-140272: رفع نشت حافظه در متد
clear()پایگاه دادهیdbm.gnu.gh-129117:
unicodedata: اضافه کردن توابعisxidstart()وisxidcontinue()برای بررسی اینکه آیا یک نویسه میتواند شروعکننده یا ادامهدهندهی یک شناسه در Unicode Standard Annex #31 باشد.gh-140251: رنگی کردن دستور ایمپورت پیشفرض
import asyncioدر REPL مربوط به asyncio.gh-140212: قالببندی HTML گاهشماری اکنون سال و ماه را به عنوان گزینهها میپذیرد. پیش از این، اجرای
python -m calendar -t html 2025 10منجر به پیام خطا میشد. اکنون یک سند HTML ایجاد میکند که گاهشماری را برای ماه مشخص شده نمایش میدهد. مشارکتکننده: Pål Grønås Drange.gh-135801: بهبود فیلتر کردن بر اساس ماژول در
warnings.warn_explicit()اگر هیچ آرگومان module ارسال نشود. اکنون این تابع، عبارت باقاعدهی ماژول را در فیلتر هشدارها نه تنها روی نام پرونده با حذف.py، بلکه روی نامهای ماژول ساختهشده از دایرکتوریهای والد مختلف نام پرونده (با حذف/__init__.py،.pyو در ویندوز،.pyw) آزمایش میکند.gh-139707: بهبود پیام خطای
ModuleNotFoundErrorهنگامی که یک ماژول کتابخانهی استاندارد گم شده است.gh-140041: رفع ایمپورت
ctypesدر اندروید و Cygwin هنگامی که پرچمهای ABI حضور دارند.gh-140120: رفع یک نشت حافظه در
hmacزمانی که از بکاند hacl-star استفاده میکرد. کشف شده توسط@ashm-devبا استفاده از AddressSanitizer.gh-140141: ردگیری
importlib.metadata.PackageNotFoundErrorکه وقتیimportlib.metadata.Distribution.from_nameنمیتواند یک توزیع را پیدا کند بالا برده میشود، دیگر شامل یک رد استثنای موقتStopIterationنیست.مشارکت توسط Bartosz Sławecki در gh-140142.
gh-140166:
mimetypes: مطابق با IANA assignment، نوع MIME برای قالبهای پروندهی.texiو.texinfoبهapplication/texinfoبهروزرسانی شد، بهجایapplication/x-texinfo.gh-140135: تسریع
io.RawIOBase.readall()با استفاده از API پیبایتسرایتر (PyBytesWriter) (حدود ۴ برابر سریعتر)gh-76007:
zlib: منسوخ کردن__version__و برنامهریزی برای حذف آن در پایتون ۳.۲۰.gh-136702:
encodings: منسوخ کردن ارسال نام encoding غیر اسکی (non-ascii) بهencodings.normalize_encoding()و برنامهریزی برای حذف پشتیبانی از آن در پایتون ۳.۱۷.gh-139940: چاپ پیام خطای واضحتر هنگام استفاده از
pdbبرای متصل شدن به یک فرایند ناموجود.gh-139462: هنگامی که یک فرایند فرزند در یک
concurrent.futures.ProcessPoolExecutorبه طور ناگهانی خاتمه مییابد، ردگیری حاصل اکنون شناسه فرایند (PID) و کد خروج فرایند خاتمهیافته را به شما میگوید. مشارکتکننده: Jonathan Berg.gh-63161: رفع
tokenize.detect_encoding(). پشتیبانی از خط مفسر (shebang) و کامنتهای غیر UTF-8 اگر کدگذاری غیر UTF-8 مشخص شده باشد. تشخیص خطای کدگشایی برای کدگذاری غیر UTF-8. تشخیص بایتهای تهی (null bytes) در کد منبع.gh-101828: رفع اشکال کُدکهای
'shift_jisx0213'،'shift_jis_2004'،'euc_jisx0213'و'euc_jis_2004'که نویسههای تهی را برش میدادند زیرا به عنوان بخشی از دنبالههای چندنویسهای در نظر گرفته میشدند.gh-139246: رفع مشکل: جایگذاری عرض صفر در عرض پیشفرض REPL نادرست است.
gh-83714: پیادهسازی
os.statx()در نسخههای ۴.۱۱ و پس از آنِ هستهی لینوکس با نسخههای ۲.۲۸ و پس از آنِ glibc. ارسالشده توسط Jeffrey Bosboom و Victor Stinner.gh-138891: رفع خطای
SyntaxErrorهنگام فراخوانیinspect.get_annotations(f, eval_str=True)روی تابعی که با یک PEP 646star_expressionحاشیهنویسی شده استgh-138859: رفع خطایی که در پارامتریسازی نوع عام باعث ایجاد یک
TypeErrorمیشود، هنگامی که یکParamSpecکه دارای مقدار پیشفرضی است که فهرست انواع نیست، حذف شود.gh-138764: جلوگیری از فراخوانی تابعی از سوی
annotationlib.call_annotate_function()که توابع__annotate__را که ازVALUE_WITH_FAKE_GLOBALSدر یک فضای نام سراسری جعلی با فضای نامهای سراسری خالی پشتیبانی نمیکنند، فراخوانی میکند.کاری کنید که حاشیهنویسیهای
FORWARDREFوSTRINGدر صورتی که نه قالب خودشان و نهVALUE_WITH_FAKE_GLOBALSپشتیبانی شوند، به استفاده از حاشیهنویسیهایVALUEبازگردند.gh-138775: استفاده از
python -mباbase64اصلاح شده است تا ورودی را از یک پایانه تشخیص دهد تا بتواند EOF را به درستی متوجه شود.gh-98896: رفع خرابی در resource_tracker مربوط به multiprocessing وقتی نامهای SharedMemory حاوی علامت دو نقطه هستند. وصله از Rani Pinchuk.
gh-138425: رفع ارزیابی جزئی اشیاء
annotationlib.ForwardRefکه به نامهای تعریفشده به عنوان متغیرهای سراسری اتکا دارند.gh-138151: در ماژول
annotationlib، ارزیابی ارجاعهای پیشرو به متغیرهای غیرسراسری که در زمان ارزیابی اولیه حاشیهنویسیها هنوز تعریف نشدهاند را بهبود ببخشید.gh-69528: ویژگی
modeمربوط به پروندههای بازشده در حالت'wb+'اکنون به جای'rb+'برابر با'wb+'است.gh-137627: افزایش سرعت تشخیص جداکننده در
csv.Sniffer.sniff()تا ۱.۶ برابر.gh-55531: ماژول
encodings: بهبود کارایی تابعnormalize_encoding()با پیادهسازی این تابع در C با استفاده از تابع خصوصی_Py_normalize_encodingکه تغییر یافته است تا تبدیل حروف کوچک اختیاری باشد.gh-136057: رفع باگ در
pdbوbdbکه در آنnextوstepنمیتوانند در صورت وجود یک حلقه در سطر، از روی سطر عبور کنند.gh-133390: پشتیبانی از تکمیل جدول، اندیس، تریگر، نما، ستون، تابع و شما برای رابط خط فرمان
sqlite3یعنی command-line interface.gh-135307: ماژول
email: رفع استثنا درset_content()هنگام کدگذاری متن و زمانی که max_line_length روی0یاNone(نامحدود) تنظیم شده است.gh-133789: رفع بارگذاری از حالت ترشی (unpickling) اشیاء
pathlibکه در پایتون ۳.۱۳ ترشی شده بودند.gh-133601: حذف تابع منسوخشدهی
typing.no_type_check_decorator().gh-132686: افزودن پارامترهای inherit_class_doc و fallback_to_class_doc برای
inspect.getdoc().gh-131116: تابع
inspect.getdoc()اکنون اگر هیچ رشته مستندی در زیرکلاس داده نشده باشد، به درستی یک رشته مستند به ارثبردهشده را روی اشیاءcached_propertyبرمیگرداند.gh-130693: افزودن پشتیبانی از گزینههای
-nolinestopو-strictlimitsبه متدtkinter.Text.search(). همچنین افزودن متدtkinter.Text.search_all()برای گزینههای-allو-overlap.gh-122255: در ماژول
linecacheو در پیادهسازی پایتونی ماژولwarnings، هنگامی که مقدارmod.__loader__باmod.__spec__.loaderمتفاوت باشد (مانند پیادهسازی C در ماژولwarnings)، یک هشدارDeprecationWarningصادر میشود.gh-121011: تابع
math.log()اکنون از آرگومانهای شبیهبهعدد صحیح با اندازهی دلخواه، به همان روش آرگومانهای عدد صحیح با اندازهی دلخواه پشتیبانی میکند.gh-119668: قرار دادن
importlib.machinery.NamespacePathدر معرض دید عموم و مستندسازی آن.gh-102431: شفافسازی محدودیتهای مربوط به آرگومانهای «منطقی» در متدهای
decimal.Context.gh-81313: افزودن ماژول
math.integer(PEP 791).
هسته و توکارها (Core and Builtins)¶
gh-141579: اصلاح
sys.activate_stack_trampoline()برای پشتیبانی مناسب از بکاندperf_jit. پچ توسط Pablo Galindo.gh-114203: اگر شیء از قبل توسط بخش بحرانی دو قفل متقابل (two-mutex critical section) قفل شده باشد، قفلگذاری را رد کنید.
gh-141528: هنگام هشدار دادن دربارهی زیرتفسیرگرهای باقیمانده، پیشنهاد میشود به جای تابع خصوصی
_interpreters.destroyاز متدconcurrent.interpreters.Interpreter.close()استفاده کنید. پچ توسط Sergey Miryanov.gh-141367: اختصاصیسازی دستور
CALL_LIST_APPENDفقط برای فهرستها، نه زیرکلاسهای فهرست، برای جلوگیری از deopt غیرضروری. پچ توسط Mikhail Efimov.gh-141312: رفع خطای ادعا (assertion) در متد
__setstate__مربوط به پیمایشگر بازه هنگامی که یک آرگومان غیرصحیح ارسال میشود. پچ توسط Sergey Miryanov.gh-140643: افزودن پشتیبانی از فریمهای
<GC>و<native>به خروجیprofiling.samplingبرای نشان دادن زبالهروبی فعال و فراخوانیها به کد بومی.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
gh-140479: بهروزرسانی کامپایلر درجا (JIT) برای استفاده از LLVM 21 در زمان ساخت.
gh-140939: رفع نشت حافظه زمانی که
bytearrayیاbytesبا قالب%*bو با عرض زیاد قالببندی میشوند که منجر بهMemoryErrorمیگردد.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
gh-140530: رفع نشت ارجاع زمانی که دستور
raise exc from causeبا خطا مواجه میشود. پچ توسط Bénédikt Tran.
کتابخانه¶
gh-90344: جایگزینی
io.IncrementalNewlineDecoderبا رمزگشاهای خط جدید غیرترجیحی در پایگاهکد جاهایی که متدio.IncrementalNewlineDecoder.decode()یک بار فراخوانی میشد.
هسته و توکارها (Core and Builtins)¶
gh-140373: انتشار صحیح رویداد
PY_UNWINDزمانی که شیء تولیدگر بسته میشود. پچ توسط Mikhail Efimov.gh-140729: رفع خطای انبارش (pickling) در پروفایلگیر نمونهبرداری زمانی که اسکریپت
concurrent.futures.ProcessPoolExecutorنمیتواند به درستی انبارش شده و در فرایندهای کارگر اجرا شود.gh-131527: بررسی قرضگیری پویا برای stackrefs به حالت
Py_STACKREF_DEBUGاضافه شد. نوشته شده توسط Mikhail Efimov.gh-140576: رفع فروپاشی در
tokenize.generate_tokens()در صورت وجود ورودی نادرست خاص. نوشته شده توسط Mikhail Efimov.gh-140544: افزایش سرعت دسترسی به وضعیت مفسر با ذخیرهسازی آن در یک متغیر محلی نخ. نوشته شده توسط Kumar Aditya.
gh-140551: رفع فروپاشی در
dictاگرdict.clear()در مرحلهی جستجو فراخوانی شود. نوشته شده توسط Mikhail Efimov و Inada Naoki.gh-140517: رفع نشتی ارجاع هنگام پیمایش روی نتیجهی
map()باstrict=Trueدر حالتی که مجموعههای پیمایشپذیر ورودی طولهای متفاوتی دارند. نوشته شده توسط Mikhail Efimov.gh-133467: رفع رقابت هنگام بهروزرسانی
type.__bases__که میتواند باعث شود خواندنtype.__base__مقداری نامنسجم را در ساخت نخبندی آزاد مشاهده کند.gh-140471: رفع سرریز احتمالی بافر در مقداردهی اولیهی گره
ast.ASTهنگام مواجهه با_fieldsمعیوبی که حاوی مقداری غیر ازstrاست.
کتابخانه¶
gh-140443: توابع لگاریتم (مانند
math.log10()وmath.log()) اکنون ممکن است نتایج کمی متفاوتی برای اعداد صحیح بسیار بزرگی تولید کنند که بدون سرریز نمیتوانند به اعداد اعشاری تبدیل شوند. این نتایج به طور کلی دقیقتر هستند، با خطای کمینه در بدترین حالت و توزیع خطای کلی فشردهتر.
هسته و توکارها (Core and Builtins)¶
gh-140431: رفع فروپاشی در زبالهروب پایتون به دلیل اشیاء همروال تا حدی مقداردهی اولیه شده هنگامی که عمق پیگیری مبدأ همروال فعال است (
sys.set_coroutine_origin_tracking_depth()).gh-140476: بهینهسازی
PySet_Add()برایfrozensetدر ساخت نخبندی آزاد.gh-135904: افزودن برچسبهای ویژهای به مونتاژ ایجادشده طی ساخت استنسیل برای پشتیبانی از جابجاییهایی که قالب پروندهی شیء بومی پشتیبانی نمیکند. بهویژه، شاخههای ۱۹ بیتی برای AArch64 در پروندههای شیء Mach-O.
کتابخانه¶
gh-140398: رفع نشتیهای حافظه در توابع
readlineیعنیread_init_file()،read_history_file()،write_history_file()وappend_history_file()هنگامی کهPySys_Audit()با خطا مواجه میشود.
هسته و توکارها (Core and Builtins)¶
gh-140406: رفع نشتی حافظه هنگامی که متد
__hash__()یک شیء، شیء ای را برمیگرداند کهintنیست.gh-140358: بازیابی زمان سپریشده و تعداد اشیاء دسترسیناپذیر در خروجی اشکالزدایی GC. این موارد به طور سهوی طی بازسازی
gc.cحذف شده بودند. گزارش اشکالزدایی اکنون دوباره زمان جمعآوری سپریشده و تعداد اشیاء دسترسیناپذیر را گزارش میکند. مشارکتکننده: Pål Grønås Drange.gh-136895: بهروزرسانی کامپایلر درجا (JIT) برای استفاده از LLVM 20 در زمان ساخت.
gh-139109: یک فرانتاند ردیابی جدید برای کامپایلر درجا (JIT) پیادهسازی شده است. نوشته شده توسط Ken Jin. طراحی برای سیپایتون توسط Ken Jin، Mark Shannon و Brandt Bucher.
gh-140306: رفع نشتیهای حافظه در عملیاتهای کانال میانمفسری و مدیریت فضای نام مشترک.
gh-116738: ایمنسازی ماژول _suggestions در برابر نخ در ساخت نخبندی آزاد.
gh-140301: رفع نشتی حافظهی
PyConfigدر مفسرهای فرعی.gh-140257: رفع رقابت داده بین interpreter_clear() و take_gil() روی eval_breaker در طول نهاییسازی با نخهای دِیمِن.
gh-139951: اصلاح یک رگرسیون در کارایی GC برای یک هیپِ در حال رشد که بیشتر از تاپلهای کوچک تشکیل شده است.
شمارش تعداد اشیاء واقعاً ردگیریشده، به جای اشیاء قابل ردگیری. این کار تضمین میکند که لغو ردگیری تاپلها اثر مطلوب کاهش سربار GC را به همراه داشته باشد.
ردگیری نکردن بیشتر تاپلهای غیرقابلردگیری در طول ایجاد. این کار از ایجاد تعداد زیادی تاپل کوچک که باعث مصرف بیش از حد GC میشوند جلوگیری میکند.
gh-140253: قرارگیری نادرست یک الگوی ستارهدوتایی درون یک الگوی نگاشت اکنون یک خطای نحوی تخصصی پرتاب میکند. مشارکتکننده: Bartosz Sławecki در gh-140253.
gh-140104: اصلاح یک اشکال در مدیریت استثنا در کامپایلر درجا (JIT). وصله توسط Ken Jin. گزارش اشکال توسط Daniel Diniz.
gh-140149: افزایش سرعت تجزیه الحاق مقادیر لفظی bytes با استفاده از رابط برنامهنویسی PyBytesWriter و یک تخصیص حافظه واحد (حدود ۳ برابر سریعتر).
gh-140061: اصلاح بررسی اینکه آیا یک شیء به طور منحصربهفرد ارجاع داده شده است یا خیر، برای تضمین سازگاری نخآزاد. وصله توسط Sergey Miryanov.
gh-140080: رفع توقف ناخواسته (hang) در طول نهاییسازی هنگام تلاش برای فراخوانی هندلرهای
atexitدر شرایط کمبود حافظه.gh-139871: بهروزرسانی
bytearrayبرای استفاده از یکbytesدر پشت صحنه به عنوان بافر خود و افزودنbytearray.take_bytes()برای استخراج آن.gh-140067: اصلاح نشتی حافظه در ایجاد زیرمفسر.
gh-139914: بازیابی پشتیبانی از HP PA-RISC که دارای پشتهای با رشد رو به بالا است.
gh-139817: ویژگی
__qualname__بهtyping.TypeAliasTypeاضافه شد. وصله توسط Mikhail Efimov.gh-135801: بسیاری از توابع مرتبط با کامپایل یا تجزیه کد پایتون، مانند
compile()،ast.parse()،symtable.symtable()وimportlib.abc.InspectLoader.source_to_code()اکنون اجازه میدهند نام ماژول مشخص شود. این کار برای فیلتر کردن صریح هشدارهای نحوی بر اساس نام ماژول filter مورد نیاز است.gh-139640: تابع
ast.parse()دیگر هشدارهای نحوی برای دستوراتreturn/break/continueدر بلاکfinallyصادر نمیکند (نگاه کنید به PEP 765) -- آنها فقط در طول کامپایل صادر میشوند.gh-139640: جلوگیری از نادیده گرفته شدن برخی هشدارهای نحوی در ماژولهای مختلف اگر به طور تصادفی پیام یکسانی داشته باشند و از یک سطر صادر شوند. اصلاح هشدارهای تکراری در بلاک
finally.gh-139475: تغییرات در حالت اشکالزدایی stackref هنگامی که
Py_STACKREF_DEBUGتنظیم شده است. ما از همان الگوی شمارش ارجاع برای stackrefها مانند نسخه تولیدی (production build) استفاده میکنیم.gh-139269: رفع رفتار نامشخص هنگام استفاده از ذخیرهسازی ترازنشده در عملکردهای
patch_*در کامپایلر درجا (JIT).gh-138944: اصلاح پیام
SyntaxErrorوقتی نحو نامعتبر در همان سطری ظاهر میشود که یک دستور معتبرimport ... as ...یاfrom ... import ... as ...قرار دارد. وصله توسط Brian Schubert.gh-138857: بهبود پیام
SyntaxErrorبرای کلیدواژهcaseکه خارج از بدنهmatchقرار گرفته است.gh-131253: پشتیبانی از گزینه ساخت
--enable-pystatsبرای ساخت نخآزاد.gh-136327: خطاهای زمان فراخوانی تابع با مقادیر نامعتبر پس از
*و**اکنون نام تابع را شامل نمیشوند. اصلاحیه از Ilia Solin.gh-134786: اگر از
Py_TPFLAGS_MANAGED_DICTوPy_TPFLAGS_MANAGED_WEAKREFاستفاده شود، باید ازPy_TPFLAGS_HAVE_GCنیز استفاده شود.
رابط C API¶
gh-141341: در سیستمعامل ویندوز، برای جلوگیری از تداخل نامها، نام کلاندستور
COMPILERبه_Py_COMPILERتغییر یافت. اصلاحیه از Victor Stinner.gh-116146: افزودن یک API زبان C جدید به نام
PyImport_CreateModuleFromInitfunc()برای ایجاد یک ماژول از روی spec و initfunc. اصلاحیه از Itamar Oren.gh-141042: ساختن qNaN در
PyFloat_Pack2()وPyFloat_Pack4()، اگر در طول تبدیل به یک قالب ممیز شناور با دقت محدودتر --- مقدار باقیمانده پس از برش صفر باشد. اصلاحیه از Sergey B Kirpichev.gh-141004: کلاندستورهای
Py_MATH_ElوPy_MATH_PIlمنسوخ شدهاند.gh-141004: کلاندستور
Py_INFINITYبه آرامی منسوخ شده است.gh-140556: PEP 793: افزودن یک نقطهی ورود جدید برای ماژولهای توسعهای C به نام
PyModExport_<modulename>.gh-140487: رفع مشکل
Py_RETURN_NOTIMPLEMENTEDدر API محدود C نسخهی ۳.۱۱ و قدیمیتر: عدم در نظر گرفتنPy_NotImplementedبه عنوان نامیرا. اصلاحیه از Victor Stinner.gh-140153: رفع تعریف
Py_REFCNT()در API محدود C نسخههای ۳.۱۳-۳.۱۱. اصلاحیه از Victor Stinner.gh-139653: افزودن توابع
PyUnstable_ThreadState_SetStackProtection()وPyUnstable_ThreadState_ResetStackProtection()برای تنظیم آدرس پایهی حفاظت از پشته و اندازهی حفاظت از پشتهی یک وضعیت نخ پایتون. اصلاحیه از Victor Stinner.
ساخت¶
gh-140454: هنگام ساخت کامپایلر درجا (JIT)، انتظارات نام پروندهی jit_stencils در Makefile را با اسکریپت تولیدگر مطابقت دهید. این کار از کامپایل مجدد غیرضروری JIT در طول
make installجلوگیری میکند.gh-140768: هشدار دادن در مواردی که نسخهی WASI SDK با نسخهی پشتیبانیشده مطابقت ندارد.
gh-140513: تولید یک خطای کامپایل واضح در صورتی که
_Py_TAIL_CALL_INTERPفعال باشد اما یکی ازpreserve_noneیاmusttailپشتیبانی نشود.gh-140475: پشتیبانی از WASI SDK 25.
gh-140239: بررسی دسترسپذیری
statxفقط در لینوکس (شامل اندروید).gh-140189: ساختهای iOS به CI اضافه شدند.
gh-137618: متغیر
PYTHON_FOR_REGENاکنون به پایتون ۳.۱۰ تا ۳.۱۵ نیاز دارد. اصلاحیه از Adam Turner.
پایتون ۳.۱۵.۰ آلفا ۱¶
تاریخ انتشار: ۱۴۰۴-۰۷-۲۲
مکاواس¶
gh-115119: بهروزرسانی نصبکنندهی macOS برای استفاده از libmpdecimal 4.0.1.
gh-124111: بهروزرسانی نصبکنندهی macOS برای استفاده از Tcl/Tk 9.0.2.
gh-132339: بهروزرسانی نسخهی نصبکنندهی macOS مربوط به OpenSSL به 3.5.4.
gh-137450: بهبودهای مدیریت مسیر پوستهی نصبکنندهی macOS: جداسازی اسکریپت پسازنصب
Shell profile updaterازUpdate Shell Profile.commandبرای فراهم کردن قابلیت مدیریت خطای مقاومتر.gh-137134: بهروزرسانی نصبکنندهی macOS برای عرضهی همراه با نسخهی SQLite 3.50.4.
Windows¶
gh-139810: نصب با
py install 3[.x]-devاز این پس نسخههای نهایی و همچنین نسخههای پیشانتشار را انتخاب خواهد کرد.gh-139573: بهروزرسانی نسخهی بستهبندیشدهی همراه OpenSSL به 3.0.18.
gh-138896: رفع خطای نصب زمان اجرای C روی ماشینهای ویندوزی بهروزرسانینشده
gh-138314: افزودن
winreg.DeleteTree().gh-137136: سرکوب هشدارهای ساخت هنگام ساخت روی ویندوز با
--experimental-jit-interpreter.gh-137134: بهروزرسانی نصبکنندهی ویندوز برای عرضهی همراه با SQLite 3.50.4.
gh-135099: رفع فروپاشیای که ممکن است روی ویندوز هنگامی رخ دهد که یک نخ پسزمینه روی
PyMutexمنتظر میماند در حالی که نخ اصلی در حال متوقف کردن مفسر است.gh-130727: رفع یک رقابت در فرازخوانیهای داخلی به WMI که میتواند تحت بار بالا منجر به بروز استثنای "invalid handle" شود. پچ توسط Chris Eibl.
gh-76023: باعث میشود
os.path.realpath()خطای ۱۰۰۵ ویندوز را در حالت غیرسختگیرانه نادیده بگیرد.gh-133779: تغییر ایجاد پروندههای مختلف
pyconfig.hبر اساس تنظیمات کامپایلر را برمیگرداند، زیرا این امر مکرراً باعث خرابی ساخت افزونهها میشد. بهویژه، متغیر پیشپردازندهیPy_GIL_DISABLEDاز این پس باید همیشه هنگام کامپایل کردن برای رانتایم آزمایشی نخآزاد بهطور صریح تعریف شود. تابعsysconfig.get_config_var()میتواند برای تعیین اینکه آیا رانتایم فعلی با آن پرچم کامپایل شده است یا خیر، استفاده شود.gh-133626: تضمین میکند بستهها بهطور تصادفی در نصبکنندهی سنتی گنجانده نشوند.
gh-133580: رفع خطای
sys.getwindowsversion()که بدون تنظیم یک استثنا هنگام فراخوانی روی برخی پارتیشنهای WinAPI با شکست مواجه میشد.gh-133572: جلوگیری از تبدیل LsaNtStatus به WinError روی پارتیشنهای پشتیبانینشدهی WinAPI.
gh-133568: رفع خطای کامپایل هنگام استفاده از پارتیشن WinAPI که از کتابخانهی رانتایم RPC پشتیبانی نمیکند.
gh-133562: غیرفعال کردن مدیریت توصیفگرهای امنیتی توسط
os.mkdir()با حالت0o700روی پارتیشنهای WinAPI که از آن پشتیبانی نمیکنند. این موضوع فقط روی ساختهای سفارشی برای اهداف خاص تأثیر میگذارد.gh-133537: از استفاده از ورودی/خروجی کنسول در پارتیشنهای WinAPI که از آن پشتیبانی نمیکنند، خودداری کنید
gh-131942: در کد C مربوط به ویندوز، بهجای ماکروی
_DEBUGاز ماکروی خاص پایتونPy_DEBUGاستفاده کنید. وصله توسط Xuehai Pan.
Tools/Demos¶
gh-139330: ابزار تولید SBOM مقادیر نسخه و جمعآزما را با اسکریپت
Modules/expat/refresh.shمتقابل بررسی نمیکرد که منجر به قدیمی شدن مقادیر در طول بهروزرسانیهای معمول شد.gh-132006: فریمورکهای XCframeworks اکنون شامل مانیفستهای حریم خصوصی هستند تا الزامات ارسال اپاستور اپل را برآورده کنند.
gh-138171: یک اسکریپت برای ساختن یک XCframework برای iOS اضافه شد. به عنوان بخشی از این تغییر، پوشهی ردهبالای
iOSبه عنوان زیرپوشهای از پوشهیAppleمنتقل شده است.gh-137873: اجراکنندهی آزمون iOS سادهسازی شده است و برخی از مشکلات مشاهدهشده هنگام استفاده از اجراکننده در محیطهای آزمون GitHub Actions و Azure Pipelines را برطرف کرده است.
gh-137484: کاری کنید که
Tools/wasm/wasiپایتون ساختهشده را به جای «build» در پوشهای با نام tripleِ ساخت قرار دهد.gh-137025: اسکریپت
wasm_build.pyحذف شده است. همانطور که در Dev Guide توضیح داده شده است، به جای آن باید ازTools/wasm/emscriptenوTools/wasm/wasiاستفاده شود.gh-137248: یک گزینهی
--logdirبهTools/wasm/wasiاضافه کنید تا مشخص شود پروندههای ثبت وقایع (log) در کجا نوشته شوند.gh-137243: کاری کنید Tools/wasm/wasi نصب WASI SDK را در /opt هنگامی که مستقیماً از یک تاربال انتشار استخراج شده است، شناسایی کند.
gh-136251: اصلاحات و بهبودهای قابلیت استفاده برای
Tools/wasm/emscripten/web_examplegh-135968: کدهای stub برای
stripاکنون به عنوان بخشی از نصب iOS ارائه میشوند.gh-135379: تولیدگر موارد دیگر حاشیهنویسی نوع را روی آیتمهای پشته نمیپذیرد. تبدیلها به انواع غیرپیشفرض اکنون به صراحت در bytecodes.c و optimizer_bytecodes.c انجام میشوند. این کار تولید کد را برای کش بالای پشته و سایر ویژگیهای آتی ساده میکند.
gh-134215: تکمیل خودکار ایمپورت در REPL تنها زمانی ماژولهای خصوصی را پیشنهاد میکند که به صراحت مشخص شده باشند.
آزمونها¶
gh-139208: رفع regrtest با
--fast-ci --verbose: دیگر گزینهی--verboseرا نادیده نگیرید. وصله توسط Victor Stinner.gh-138313: بازیابی آزمون ردشده و افزودن راهحل موقت ناپایدار برای جلوگیری از شکست خوردن برخی از باتهای ساخت با یک ResourceWarning.
gh-135966: بسترهی آزمون iOS اکنون پوشهی
app_packagesرا به عنوان یک پوشهی site مدیریت میکند.gh-135494: اصلاح regrtest برای پشتیبانی از مستثنی کردن آزمونها از آزمونهای
--pgo. وصله توسط Victor Stinner.gh-132815: اصلاح test__opcode: افزودن
JUMP_BACKWARDبه آمارهای تخصصیسازی.gh-135489: نمایش خروجی پرجزئیات برای آزمونهای ناموفق در طول مرحلهی پروفایلگیری PGO با --enable-optimizations.
gh-135401: افزودن یک کار جدید در GitHub CI برای آزمون ماژول
sslبا استفاده از AWS-LC به عنوان کتابخانهی رمزنگاری و TLS زیربنایی.gh-135120: افزودن
test.support.subTests().gh-134567: قرار دادن قالببند ثبت وقایع در دسترس کاربران در TestCase.assertLogs. متد
unittest.TestCase.assertLogs()اکنون به صورت اختیاری یک قالببند را میپذیرد که در صورت فراهم شدن، برای قالببندی رشتهها در خروجی استفاده خواهد شد.gh-133744: اصلاح آزمون وقفه در چندپردازشی (multiprocessing). افزودن یک رویداد برای همگامسازی فرایند والد با فرایند فرزند: صبر کردن تا زمانی که فرایند فرزند شروع به خوابیدن کند. وصله توسط ویکتور استینر (Victor Stinner).
gh-133682: اصلاح مورد آزمون
test.test_annotationlib.TestStringFormat.test_displaysکه مدیریت صحیح ساختارهای دادهی پیچیده (فهرستها، مجموعهها، دیکشنریها و تاپلها) را در حاشیهنویسیهای رشتهای تضمین میکند.gh-133639: اصلاح این که
TestPyReplAutoindent.test_auto_indent_default()متغیرinput_codeرا اجرا نمیکند.
امنیت¶
gh-139700: بررسی سازگاری رکورد انتهای پوشه مرکزی zip64. پشتیبانی از رکوردهایی با «دادههای قابل گسترش zip64» در صورتی که هیچ بایتی به پروندهی ZIP اضافه نشده باشد.
gh-139400:
xml.parsers.expat: اطمینان حاصل کنید که پارسرهای والد Expat تنها زمانی به صورت خودکار زبالهروبی میشوند که دیگر توسط زیرپارسترهای ایجاد شده توسطExternalEntityParserCreate()ارجاع داده نشوند. وصله توسط سباستین پیپینگ (Sebastian Pipping).gh-139283:
sqlite3: مدیریت صحیح حداکثر تعداد ردیفها برای دریافت درCursor.fetchmanyو رد کردن مقادیر منفی برایCursor.arraysize. وصله توسط بندیکت تران (Bénédikt Tran).gh-136053:
marshal: رفع یک فروپاشی احتمالی هنگام درونسنجی (deserializing) شیءهایslice.gh-135661: اصلاح تجزیه تگهای شروع و پایان در
html.parser.HTMLParserمطابق با استاندارد HTML5.فاصلههای خالی دیگر بین
</و نام تگ پذیرفته نمیشوند. به عنوان مثال،</ script>بخش اسکریپت را به پایان نمیرساند.جدولبندی عمودی (
\v) و فاصلههای خالی غیر اسکی دیگر به عنوان فاصلهی خالی شناخته نمیشوند. تنها فاصلههای خالی معتبر عبارتند از\t\n\r\fو فاصله.نویسهی تهی (U+0000) دیگر نام تگ را به پایان نمیرساند.
ویژگیها و اسلشها پس از نام تگ در تگهای پایان اکنون نادیده گرفته میشوند، به جای اینکه پس از اولین
>در مقدار ویژگی نقلقولشده متوقف شوند. به عنوان مثال</script/foo=">"/>.چندین اسلش و فاصلهی خالی بین آخرین ویژگی و علامت بستن
>اکنون هم در تگهای شروع و هم در تگهای پایان نادیده گرفته میشوند. به عنوان مثال<a foo=bar/ //>.چند علامت
=بین نام ویژگی و مقدار دیگر فشرده نمیشوند. به عنوان مثال<a foo==bar>ویژگی "foo" را با مقدار "=bar" تولید میکند.
gh-135661: اصلاح تجزیهی بخش CDATA در
html.parser.HTMLParserمطابق با استاندارد HTML5: عبارتهای] ]>و]] >دیگر بخش CDATA را به پایان نمیرسانند. افزودن متد خصوصی_set_support_cdata()که میتواند برای مشخص کردن نحوهی تجزیه<[CDATA[استفاده شود --- به عنوان یک بخش CDATA در محتوای خارجی (SVG یا MathML) یا به عنوان یک کامنت نادرست در فضای نام HTML.gh-102555: اصلاح تجزیهی کامنت در
html.parser.HTMLParserمطابق با استاندارد HTML5. عبارت--!>اکنون کامنت را به پایان میرساند. عبارت-- >دیگر کامنت را به پایان نمیرساند. پشتیبانی از کامنتهای خالی خاتمهیافتهی غیرطبیعی<-->و<--->.gh-135462: اصلاح پیچیدگی درجهدوم در پردازش ورودیهای بهویژه دستکاریشده در
html.parser.HTMLParser. خطاهای انتهای پرونده اکنون مطابق با مشخصات HTML5 مدیریت میشوند -- کامنتها و اعلانها به طور خودکار بسته میشوند و تگها نادیده گرفته میشوند.gh-118350: اصلاح پشتیبانی از حالت متن خام قابل گریز (المانهای "textarea" و "title") در
html.parser.HTMLParser.gh-135034: رفع چندین مشکل که به کمک پیوندهای نمادین (symlink) و پیوندهای سخت دستکاریشده، اجازه میداد فیلترهای استخراج
tarfile(بندهایfilter="data"وfilter="tar") دور زده شوند.برطرف کردن CVE 2024-12718، CVE 2025-4138، CVE 2025-4330 و CVE 2025-4517.
gh-133767: رفع خطای استفاده پس از آزاد شدن (use-after-free) در رمزگشای "unicode-escape" با یک هندلر خطای غیر-"strict".
gh-133623: نشان دادن اینکه آیا ماژول
sslاز طریقssl.HAS_PSK_TLS13از «PSKهای خارجی» در TLSv1.3 پشتیبانی میکند یا خیر، همانطور که در RFC 9258 توصیف شده است. وصلهای از Will Childs-Klein.gh-128840: کوتاه کردن زودهنگام پردازش آدرسهای طولانی IPv6 در
ipaddressبرای جلوگیری از مصرف بیش از حد حافظه و یک خطای جزئی انکار خدمت (denial-of-service).
کتابخانه¶
gh-139482: بهینهسازی
os.environ.clear()با فراخوانی clearenv(3) در زمان دسترسی به این تابع. وصلهای از Victor Stinner.gh-139958: نوع دادهی
application/tomlاکنون توسطmimetypesپشتیبانی میشود. وصلهای از Gil Forcada.gh-139823: ماژول
ensurepipاکنون در صورت در دسترس نبودن ماژولzlibبا یک پیام خطای مناسبتر متوقف میشود.gh-139905: افزودن پیشنهاد به پیام خطا برای زیرکلاسهای
typing.Genericهنگامی کهcls.__parameters__به دلیل عدم فراخوانیsuper().__init_subclass__()توسط کلاس والد در متد__init_subclass__آن گم شده است.gh-139894: رفع اشتراکگذاری نادرست وظیفهی فعلی با فرایند فرزند هنگام انشعاب (forking) در
asyncio. وصلهای از Kumar Aditya.gh-139845: رفع مشکل چاپ نشدن دوبار KeyboardInterrupt در REPL پیشفرض asyncio.
gh-139783: اصلاح
inspect.getsourcelines()برای حالتی که پس از یک دکوراتور، کامنت یا یک سطر خالی قرار دارد.gh-139809: جلوگیری از رنگآمیزی زودهنگام
progزیرپارسر درargparse.ArgumentParser.add_subparsers()جهت اعمال تغییرات متغیر محیطی مربوط به رنگها پس از ایجاد پارسر.gh-139736: رفع تورفتگی بیش از حد در
HelpFormatterپیشفرضargparse. وصلهای از Alexander Edland.gh-70765:
http.server: رفع نحوه برخورد پیشفرض با درخواستهای HTTP/0.9 درBaseHTTPRequestHandler. پیشتر،BaseHTTPRequestHandler.parse_request()بهاشتباه منتظر سرآیندها در درخواست میماند، با وجود اینکه این موارد در HTTP/0.9 پشتیبانی نمیشوند. وصلهای از Bénédikt Tran.gh-139322: اصلاح مدیریت خطای
os.getlogin(): رفع شمارهی خطا. وصلهای از Victor Stinner.gh-135953: افزودن خروجی با فرمت Gecko به پروفایلگیر tachyon از طریق
--gecko.gh-139184: توصیفگر پروندهی بازگرداندهشده توسط
os.forkpty()اکنون غیرقابل به ارث بردن (non-inheritable) میشود.gh-139391: رفع مشکلی که در پلتفرمهای غیر ویندوزی، خروج به موقع از یک فرایند
python -m asyncioمعلقشده با Ctrl+Z و ازسرگیری بعدی آن توسط fg را بهجز با استفاده از kill غیرممکن میساخت.gh-90949: افزودن متدهای
SetBillionLaughsAttackProtectionActivationThreshold()وSetBillionLaughsAttackProtectionMaximumAmplification()به اشیای xmlparser برای تنظیم محافظتها در برابر حملات billion laughs. وصلهای از Bénédikt Tran.gh-139312: ارتقای کتابخانهی بستهبندیشدهی libexpat به نسخهی 2.7.3
gh-139289: انجام ایمپورت تنبل واقعی روی
rlcompleterدرpdbو بازیابی تکمیلکنندهی موجود پس از ایمپورت کردنrlcompleter.gh-90949: افزودن متدهای
SetAllocTrackerActivationThreshold()وSetAllocTrackerMaximumAmplification()به اشیای xmlparser برای تنظیم محافظتها در برابر مقادیر نامتعادل استفاده از حافظهی پویا از درون یک پارسر Expat. وصلهای از Bénédikt Tran.gh-67795: توابعی که آرگومانهای مهلت زمانی یا برچسب زمانی میپذیرند، اکنون هر عدد حقیقی (مانند
DecimalوFraction) را میپذیرند، نه فقط اعداد صحیح یا اعشاری، هرچند این کار دقت را افزایش نمیدهد.gh-95953: یک کلاس CSS به نام
diff_changedبه سطرهای تغییریافته در خروجیmake_tableازdifflib.HtmlDiffاضافه شد. وصلهای از Katie Gardner.gh-139210: رفع خطای استفاده پس از آزاد شدن (use-after-free) هنگام گزارش رویداد ناشناخته در
xml.etree.ElementTree.iterparse(). وصلهای از Ken Jin.gh-138860: ایمپورت تنبل
rlcompleterدرpdbبرای جلوگیری از بنبست در زیرفرایند.gh-112729: رفع فروپاشی هنگام فراخوانی
concurrent.interpreters.create()در صورتی که فرایند با کمبود حافظه مواجه شود.gh-126016: رفع خطای شکست ادعا (assertion failure) هنگام ارسال
KeyboardInterruptبه یک فرایند پایتون که در حال اجرای یک مفسر فرعی در یک نخ جداگانه است.gh-118803: کلاس
collections.abc.ByteStringازcollections.abc.__all__و کلاسtyping.ByteStringازtyping.__all__حذف شدهاند. اولی از پایتون نسخهی ۳.۱۲ و دومی از پایتون نسخهی ۳.۹ منسوخ شده بودند. قرار است هر دو کلاس در پایتون نسخهی ۳.۱۷ کاملاً حذف شوند.علاوه بر این، دستورات زیر اکنون باعث میشوند که
DeprecationWarningها در زمان اجرا (runtime) صادر شوند:from collections.abc import ByteString،from typing import ByteString،import collections.abc; collections.abc.ByteStringوimport typing; typing.ByteString. هر دو کلاس پیش از این نیز در صورت زیرکلاس شدن یا استفاده به عنوان آرگومان دوم درisinstance()یاissubclass()باعث صدورDeprecationWarningها میشدند، اما پیش از این اگر صرفاً از ماژولهای مربوطه وارد (import) یا فراخوانی میشدند، منجر بهDeprecationWarningنمیشدند.gh-135729: رفع خطای استثنای غیرقابلپرتاب در طول نهاییسازی هنگام استفاده از
concurrent.interpretersدر REPL.gh-139076: رفع یک باگ در ماژول
pydocکه باعث پنهان شدن توابع درون یک ماژول پایتون میشد، اگر آن توابع در یک ماژول توسعهای پیادهسازی شده بودند و ماژول فاقد__all__بود.gh-139090: افزودن ثابت
os.RWF_DONTCACHEبرای لینوکس ۶.۱۴ و بالاتر.gh-139065: رفع فضای خالی اضافی قبل از یک کلمهی طولانیِ پیچیده شده در صورتی که طول سطر دقیقاً برابر با width در
textwrapباشد.gh-139001: رفع شرایط رقابت (race condition) در
pathlib.Pathروی فیلد داخلی_raw_paths.gh-138813: کلاس
multiprocessing.BaseProcessمقدار پیشفرضkwargsرا به جای یک دیکشنری مشترک، رویNoneتنظیم میکند.gh-138998: ارتقای کتابخانهی بستهبندیشدهی libexpat به نسخهی 2.7.2
gh-118803: افزودن دوبارهی
collections.abc.ByteStringوtyping.ByteString. هر دو در نسخههای آلفا، بتا و نامزدهای انتشار پیشین برای پایتون 3.14 حذف شده بودند، اما حذف آنها اکنون به پایتون 3.17 موکول شده است.gh-130567: رفع فروپاشی احتمالی در
locale.strxfrm()به دلیل یک باگ پلتفرم در مکاواس.gh-137226: رفع فراخوانیهای
typing.get_type_hints()روی کلاسهای عامtyping.TypedDictکه با حاشیهنویسیهای رشتهای تعریف شدهاند.gh-138899: اجرای دستور
quitدرpdbهنگامی کهpdbاز طریق یک کنسول asyncio با استفاده ازbreakpoint()یاpdb.set_trace()راهاندازی میشود، موجب بالا آمدنbdb.BdbQuitخواهد شد.gh-138804: هنگامی که آرگومانی با نوع نادرست به
shlex.quote()پاس داده میشود، بهجایAttributeErrorاستثنایTypeErrorبالا بیاید. این تغییر رفتار تابع را به حالت پیش از نسخهی 3.14 بازمیگرداند.gh-138779: پشتیبانی از شمارههای دستگاه بزرگتر از
2**63-1برای فیلدst_rdevاز ساختارos.stat_result.gh-138682: پشتیبانی از تفاضل تقارن (symmetric difference) به اشیاء
collections.Counterاضافه شد.gh-128636: رفع فروپاشی در PyREPL وقتی os.environ با مقداری نامعتبر برای مک بازنویسی میشود
gh-138720: رفع مسئلهای که در آن
io.BufferedWriterوio.BufferedRandomتعاریف متفاوتی از «closed» برایclose()وflush()داشتند، که این امر منجر به بروز یک استثنا میشد وقتی close تابع flush را فراخوانی میکرد اما flush فکر میکرد پرونده از قبل بسته شده است.gh-138706: بهروزرسانی پایگاه دادهی
unicodedataبه یونیکد 17.0.0.gh-76007: منسوخ کردن
__version__از تعدادی ماژول کتابخانهی استاندارد. وصله توسط هوگو فان کمیناده (Hugo van Kemenade).gh-138535: افزایش سرعت
os.stat()برای پروندههایی با برچسبهای زمانی معقول. مشارکت توسط جفری بوسبوم (Jeffrey Bosboom).gh-116946:
curses.panel: نوعcurses.panel.new_panel()اکنون تغییرناپذیر است. وصله توسط بندیکت تران (Bénédikt Tran).gh-116946:
zlib: انواعzlib.compressobj()وzlib.decompressobj()اکنون تغییرناپذیر هستند. وصله توسط بندیکت تران (Bénédikt Tran).gh-116946:
os: نوعos.DirEntryو نوعos.scandir()اکنون تغییرناپذیر هستند. وصله توسط بندیکت تران (Bénédikt Tran).gh-116946:
tkinter: انواع_tkinter.Tcl_Obj(پوششی برای اشیاء Tcl)،_tkinter.tktimertoken(که با فراخوانیcreatetimerhandler()روی یک برنامهیTkبه دست میآید) و_tkinter.tkapp(نوع زمان اجرای برنامههای Tk) اکنون تغییرناپذیر هستند. وصله توسط بندیکت تران (Bénédikt Tran).gh-138514: هنگامی که یک رشتهی چندنویسهای به پارامتر echo_char از
getpass.getpass()پاس داده میشود، استثنایValueErrorبالا بیاید. وصله توسط بنجامین جانسون (Benjamin Johnson).gh-137706: رفع ارزیابی جزئی حاشیهنویسیهایی که از
typing.Annotated[T, x]استفاده میکنند، جایی کهTیک ارجاع پیشرو است.gh-88375: اصلاح نرمالسازی قوانین
robots.txtو نشانیهای وب در ماژولurllib.robotparser. دیگر نویسهی پایانی?نادیده گرفته نمیشود. نویسههای ویژه و خام?،=و&را از نویسههای دارای کدگذاری درصدی متمایز کنید.gh-99948: متد
ctypes.util.find_library()اکنون در ساخت Emscripten کار میکند.gh-111788: اصلاح خطاهای تجزیه در ماژول
urllib.robotparser. در هنگام تلاش برای تجزیهی مسیرهای عجیبوغریب دچار خطا نشوید. در هنگام تلاش برای رمزگشایی پروندههای غیر UTF-8 از نوعrobots.txtدچار خطا نشوید.gh-138432: متد
zoneinfo.reset_tzpath()اکنون هر شیءos.PathLikeکه دریافت میکند را پیش از افزودن بهTZPATHبه رشته تبدیل میکند. اگر پس از این تبدیل چیزی غیر از یک رشته یافت شود، خطایTypeErrorبالا میآید. اگر شیءos.PathLikeدادهشده نشاندهندهی یک مسیر نسبی باشد، اکنون بهجایTypeErrorخطایValueErrorرا بالا میآورد و یک پیام خطای آموزندهتر ارائه میدهد.gh-132657: بهبود مقیاسپذیری
copy.copy()وcopy.deepcopy()در ساخت با قابلیت نخکشی آزاد (free-threading).gh-116946: نوع دادههای شیءهای
select.poll()وselect.epoll()اکنون تغییرناپذیر هستند. وصله توسط Bénédikt Tran.gh-116946: نوع دادهی C ممیز
_random.Randomاکنون تغییرناپذیر است. وصله توسط Bénédikt Tran.gh-57911: هنگام استخراج پروندههای tar در ویندوز، اسلشها در مقصدهای پیوند نمادین با بکاسلش جایگزین میشوند تا از خراب شدن پیوندها جلوگیری شود.
gh-138205: متد
resize()روی پلتفرمهایی که سیستکال زیربنایی را پشتیبانی نمیکنند، بهجای بالا آوردن یک خطایSystemErrorحذف شد.gh-138008: اصلاح خطاهای قطعهبندی (segmentation fault) در ماژول
ctypesبه دلیل مقادیر نامعتبر درargtypes. وصله توسط Dung Nguyen.gh-138252: ماژول
ssl: شیءهایSSLContextاکنون میتوانند الگوریتمهای امضای TLS کلاینت و سرور را تنظیم کنند. اگر پایتون با OpenSSL ۳.۵ یا نسخههای بعد از آن ساخته شده باشد، شیءهایSSLSocketمیتوانند الگوریتمهای امضای انتخابشده روی یک اتصال را برگردانند.gh-138253: افزودن پارامتر block در متدهای
put()وget()صفهایconcurrent.interpretersبرای سازگاری با رابطqueue.Queue.gh-60462: اصلاح
locale.strxfrm()روی Solaris (و احتمالاً سایر پلتفرمها).gh-138239: پوستهی تعاملی پایتون (REPL) اکنون
typeرا به عنوان یک کلیدواژه نرم در دستورات نوع داده برجسته میکند.gh-78502: کلاس
mmap.mmapاکنون دارای یک پارامتر trackfd روی ویندوز است؛ اگر مقدار آنFalseباشد، دستهی پروندهی متناظر با fileno تکثیر نخواهد شد.gh-138204: ممنوعیت گسترش نقشههای حافظهی
memory mapsناشناس مشترک روی لینوکس، که باعث بروز خطای باس (bus error) میشد.gh-138010: رفع مشکلی که در آن تعریف یک کلاس با یک کلاس پایهی تزئینشده با
@warnings.deprecatedممکن است متد__init_subclass__()صحیح را در مواردی که شامل وراثت چندگانه است فراخوانی نکند. وصله توسط برایان شوبرت (Brian Schubert).gh-134716: افزودن پشتیبانی از عبارات باقاعده در گزینهی
-Wو متغیر محیطیPYTHONWARNINGS.gh-138133: جلوگیری از حلقهی بینهایت ردگیری (traceback) هنگام ارسال CTRL^C به پایتون از طریق
strace.gh-138122: پیادهسازی PEP 799 -- یک بستهی پروفایلگیری اختصاصی برای سازماندهی ابزارهای پروفایلگیری پایتون. وصلهای از Pablo Galindo.
gh-138092: رفع باگی در
mmap.mmap.flush()که در آن فراخوانی با تنها یک پارامتر آفست با شکست مواجه میشد.gh-138044: حذف لایهی سازگاری برای پارامتر منسوخ package در
importlib.resources.files(). وصلهای از Semyon Moroz.gh-86819:
socket: اضافهکردن ثابتهای گمشده برای سوکتهای ISO-TP.gh-137884: افزودن پشتیبانی از
threading.get_native_id()برای Illumos/Solaris. وصلهای از Yüce Tekol.gh-134869: رفع مشکلی که در آن فشردن کلید Ctrl+C هنگام تکمیل خودکار در REPL، منوی تکمیل خودکار را در وضعیتی خراب باقی میگذاشت.
gh-137840: کلاس
typing.TypedDictاکنون از آرگومانهای کلیدواژهایclosedوextra_items(همانطور که در PEP 728 توضیح داده شده است) پشتیبانی میکند تا مشخص کند آیا کلیدهای اضافیِ غیرضروری مجاز هستند یا خیر و نوع مقدار آنها را تعیین کند.gh-132947: اعمال تغییرات مربوط به
importlib.metadataاز importlib_metadata 8.7، از جمله سلب اجازه ازdistبرای استفاده درEntryPoints.select؛ ایمپورتهای به تعویق افتاده برای زمانهای ایمپورت سریعتر؛ افزودن پشتیبانی از فراداده (metadata) دارای نویسههای خط جدید (python/cpython#119650)؛ و تابعmetadata()اکنون وقتی پوشهی فراداده وجود دارد اما هیچ فرادادهای موجود نیست، مقدارNoneرا برمیگرداند.gh-90548: رفع تشخیص
muslبرایplatform.libc_ver()در Alpine Linux در صورتی که با --strip-all کامپایلشده باشد.gh-137317: تابع
inspect.signature()اکنون به درستی کلاسهایی را که از یک توصیفگر روی متد بستهبندیشدهی__init__()یا__new__()استفاده میکنند، مدیریت میکند. مشارکت از Yongyu Yan.gh-137754: رفع ایمپورت ماژول
zoneinfoدر صورتی که پیادهسازی C ماژولdatetimeدر دسترس نباشد.gh-125854: بهبود پیامهای خطا برای دستهی نامعتبر در
warnings.warn().gh-137729: تابع
locale.setlocale()اکنون از کدهای زبان با اصلاحگرهای@پشتیبانی میکند. اصلاحگرهای@دیگر به طور صامت درlocale.getlocale()حذف نمیشوند، بلکه در کد زبان گنجانده میشوند.gh-73487: تسریع پردازش آرگومانها (تا ۱.۵ برابر) در متدهای ماژول
decimalکه اکنون از قرارداد فراخوانیMETH_FASTCALLاستفاده میکنند. وصلهای از Sergey B Kirpichev.gh-137634: صفحات تقویم تولیدشده توسط کلاس
calendar.HTMLCalendarاکنون از حالت تاریک پشتیبانی میکنند و برای بهبود دسترسیپذیری به استاندارد HTML5 مهاجرت کردهاند.gh-137630: ماژول
_interpretersاکنون برای تجزیه آرگومانها از Argument Clinic استفاده میکند. وصلهای از Adam Turner.gh-137583: رفع بنبستی که در نسخهی 3.13.6 ایجاد شده بود؛ زمانی که یک فراخوانی به
ssl.SSLSocket.recvدر یک نخ مسدود میشد و سپس متد دیگری روی شیء (مانندssl.SSLSocket.send) متعاقباً در نخی دیگر فراخوانی میشد.gh-92936: بهروزرسانی عبارت منظم (regex) استفادهشده توسط
http.cookies.SimpleCookieبرای مدیریت مقادیر حاوی نقلقول دوتایی.gh-137426: حذف منسوخسازی کد برای
importlib.abc.ResourceLoader. این مورد به عنوان منسوخ مستند شده است، اما برای سازگاری رو به عقب با سایر کلاسها درimportlib.abcباقی مانده است.gh-137490: مدیریت
ECANCELEDبه همان روشEINTRدرsignal.sigwaitinfo()روی NetBSD.gh-137512: افزودن ثابتهای جدید در ماژول
resource:RLIMIT_NTHR،RLIMIT_UMTXP،RLIMIT_PIPEBUF،RLIMIT_THREADS،RLIM_SAVED_CURوRLIM_SAVED_MAX.gh-137044: مقدار
resource.RLIM_INFINITYاکنون همیشه یک عدد صحیح مثبت است. روی تمام پلتفرمهای پشتیبانیشده، این مقدار از هر مقدار منبع محدودی بزرگتر است که مقایسهی مقادیر منبع را سادهتر میکند. پیشتر، بسته به پلتفرم، این مقدار میتوانست منفی باشد، مانند -1 یا -3.gh-137477: رفع توابع
inspect.getblock()،inspect.getsourcelines()وinspect.getsource()برای عبارتهای تولیدگر.gh-137481: ماژول گاهشماری برای تصمیمگیری دربارهی نیاز عرض به اختصار، از طول روزهای هفتهی locale استفاده میکند.
gh-137466: حذف توابع منسوخشدهی
glob.glob0()وglob.glob1()که از نسخهی ۳.۱۳ پایتون منسوخ شده بودند. بهجای آنها ازglob.glob()استفاده کنید و یک پوشه را به آرگومان root_dir آن بفرستید.gh-137044: در
resource.getrlimit()، مقادیر حد بزرگ را بهجای اعداد صحیح منفی به عنوان اعداد صحیح مثبت برگردانید. درresource.setrlimit()، مقادیر بزرگ را بپذیرید و مقادیر منفی (بهجزRLIM_INFINITY) را برای حدود رد کنید.gh-115766: رفع
ipaddress.IPv4Interface.is_unspecified.gh-75989: توابع
tarfile.TarFile.extractall()وtarfile.TarFile.extract()اکنون هنگام استخراج پیوندهای سخت (hardlinks)، پیوندهای نمادین (symlinks) را بازنویسی میکنند. (مشارکتکننده: Alexander Enrique Urieles Nieto در gh-75989.)gh-137017: اصلاح
threading.Thread.is_aliveبهطوریکه تا زمانی که نخ زیرین سیستمعامل بهطور کامل پاکسازی نشده است، رویTrueباقی بماند. این کار از نتایج منفی کاذب در موارد خاص مربوط به پایش نخ یا فراخوانیهای زودهنگامthreading.Thread.is_aliveجلوگیری میکند.gh-137273: رفع خطای شکست ادعا (assertion) در
locale.setlocale()روی سیستمعامل ویندوز.gh-137191: نحوهی جمعآوری پارامترهای نوع هنگام مشخص شدن
typing.Protocolبا پارامترهای صریح را اصلاح میکند. اکنون،typing.Genericوtyping.Protocolهمیشه تعداد پارامترها و ترتیب پارامترهای انواع را دیکته میکنند. رفتار قبلی یک باگ بود.gh-137282: رفع تکمیل خودکار با تب و
dir()رویconcurrent.futures.gh-137257: بهروزرسانی نسخهی pip بستهبندیشده در ensurepip به نسخهی ۲۵.۲.
gh-137239: ماژول
heapq: بهروزرسانیheapq.__all__با توابع*_max.gh-124503: تابع
ast.literal_eval()برای ورودیهای کوچک بین ۱۰ تا ۲۰ درصد سریعتر شده است.gh-137226: رفع رفتار
annotationlib.ForwardRef.evaluate()هنگامی که پارامتر type_params ارسال میشود و نام یک پارامتر نوع در محدودهی پیرامون نیز وجود دارد.gh-137197: اشیای
SSLContextاکنون میتوانند مجموعهرمزهای (cipher suites) TLS 1.3 را از طریقset_ciphersuites()تنظیم کنند.gh-81325: کلاس
tarfile.TarFileاکنون هنگام کار روی یک آرشیو tar، یک شیء شبهمسیر را میپذیرد. (مشارکتکننده: Alexander Enrique Urieles Nieto در gh-81325.)gh-137185: رفع یک مسئلهی احتمالی ایمنی سیگنال ناهمگام (async-signal-safety) در
faulthandlerهنگام چاپ ردگیریهای پشتهی C.gh-133951: حذف ایجاد پیوند نمادین lib64-lib هنگام ایجاد محیطهای مجازی جدید در ماژول
venv.gh-130522: رفع خطای غیرقابلپرتاب
TypeErrorکه در طول خاموش شدن مفسر در ماژولthreadingرخ میدهد.gh-137059: رفع مشکل مدیریت نشانیهای وب (URL) حاوی حرف درایو ویندوز در بخش authority توسط تابع
urllib.request.url2pathname(). این تغییر یک رگرسیون را در نسخههای پیشنمایش اولیه پایتون 3.14 برطرف میکند.gh-136980: حذف کد ردیابی C استفادهنشده در bdb برای انواع رویداد
c_call،c_returnوc_exceptiongh-130577: ماژول
tarfileاکنون آرشیوها را اعتبارسنجی میکند تا اطمینان حاصل شود که آفستهای اعضا منفی نیستند. (مشارکت توسط Alexander Enrique Urieles Nieto در gh-130577.)gh-136170: ویژگی منتشرنشدهی
zipfile.ZipFile.data_offsetکه در نسخهی 3.14.0a7 اضافه شده بود، حذف شد؛ زیرا کاملاً مشخص نبود که در برخی وضعیتها چه رفتاری باید داشته باشد و در نتیجه، خروجی همیشه آن چیزی نبود که کاربر ممکن است انتظار داشته باشد.gh-121237: پشتیبانی از دایرکتیو
%:zبرای متدهایdatetime.datetime.strptime()،datetime.time.strptime()و تابعtime.strptime(). وصلهی ارائه شده توسط Lucas Esposito و Semyon Moroz.gh-136929: اطمینان از اینکه توابع هش که تضمین شده است همواره قابلدسترس هستند، حتی اگر به دلیل نبود پیادهسازیهای بکاند در زمان اجرا کار نکنند، به عنوان ویژگیهای
hashlibوجود دارند. برای نمونه، اگر OpenSSL در دسترس نباشد و پایتون بدون پشتیبانی از MD5 ساخته شده باشد،hashlib.md5دیگر خطایAttributeErrorرا پرتاب نخواهد کرد. وصله توسط Bénédikt Tran.gh-124621: کتابخانهی pyrepl اکنون در Emscripten کار میکند.
gh-136914: رفع مشکل بازیابی صفت
doctest.DocTest.linenoبرای اشیاء دکوریتشده باfunctools.cache()یاfunctools.cached_property.gh-136912: تابع
hmac.digest()اکنون کلیدها و پیامهای بزرگ را با بازگشت به پیادهسازی خالص پایتون در صورت نیاز، به درستی مدیریت میکند. وصله توسط Bénédikt Tran.gh-83424: امکان ایجاد یک
ctypes.CDLLبدون نام هنگام ارسال یک دسته (handle) به عنوان آرگومان را فراهم میکند.gh-135228: هنگامی که
dataclassesیک کلاس را با یک دیتاکلاس شکافدار (slotted) جایگزین میکند، کلاس اصلی اکنون میتواند دوباره زبالهروبی (garbage collected) شود. تغییرات قبلی در پایتون 3.14 باعث میشدند که این کلاس همیشه همراه با کلاس جایگزینشده که توسطdataclassesساخته شده است، باقی بماند.gh-136874: حذف پرسوجو (query) و قطعه (fragment) نشانی وب (URL) در
urllib.request.url2pathname().gh-136787: ماژول
hashlib: بهبود پیامهای استثنا هنگامی که یک الگوریتم هش شناخته نشده باشد، توسط خطمشی امنیتی فعلی مسدود شده باشد یا با عملیات مورد نظر ناسازگار باشد (برای نمونه، استفاده از HMAC با SHAKE). وصله توسط Bénédikt Tran.gh-130645: فعالسازی راهنمای رنگی به طور پیشفرض در ماژول
argparse.gh-131724: در ماژول
http.client، یک پارامتر جدیدِ فقط-کلیدواژهای max_response_headers به سازندههایHTTPConnectionوHTTPSConnectionاضافه شده است. این پارامتر حداکثر تعداد سرآیندهای پاسخ مجاز را تعیین میکند و به جلوگیری از حملات انکار خدمت کمک میکند.gh-135427: با سوییس
-Werror، هشدار DeprecationWarning که توسطos.fork()وos.forkpty()در فرایندهای چندرشتهای صادر میشود، اکنون به عنوان یک استثنا پرتاب میشود. پیش از این به طور بیصدا نادیده گرفته میشد. وصله توسط Rani Pinchuk.gh-136234: رفع مشکل متد
asyncio.WriteTransport.writelines()برای مقاومت در برابر خطای اتصال، با استفاده از همان رفتار متدwrite().gh-53144: ماژول
encodings.aliases: اضافه کردن نامهای مستعارlatin_Ngh-136669: ماژول
_asyncioاکنون برای بهبود کارایی به صورت ایستا پیوند داده میشود.gh-136134: متد
SMTP.auth_cram_md5()اکنون اگر پایتون بدون پشتیبانی از MD5 ساخته شده باشد، بهجایValueErrorیکSMTPExceptionپرتاب میکند. بهویژه، کلاینتهایSMTPحتی اگر فرض شود سرور راه دور از آن پشتیبانی میکند، تلاشی برای استفاده از این متد نخواهند کرد. وصل توسط Bénédikt Tran.gh-136134: متد
IMAP4.login_cram_md5اکنون اگر احراز هویت CRAM-MD5 پشتیبانی نشود، یکIMAP4.errorپرتاب میکند. وصل توسط Bénédikt Tran.gh-136591: ماژول
_hashlib: هنگام استفاده از OpenSSL ۳.۰ و نسخههای پس از آن، از استفاده از توابع منسوخ ERR_func_error_string و EVP_MD_CTX_md خودداری کنید. وصل توسط Bénédikt Tran.gh-136571: تابع
datetime.date.fromisocalendar()اکنون میتواند برای آرگومانهای خارج از بازه، خطای OverflowError را پرتاب کند.gh-136549: اصلاح امضای
threading.excepthook().gh-136492: قرار دادن
FrameLocalsProxyTypeمتعلق به PEP 667 در ماژولtypes.gh-83336: نام مستعار
utf8_sigاکنون بهencodings.utf_8_sigمتصل شدgh-136523: اصلاح خطایی که باعث میشد
wave.Wave_writeهنگام فراخوانی open یک خطای غیرقابلپرتاب صادر کند.gh-136507: اصلاح ابزار خط فرمان mimetypes برای مدیریت چندین پارامتر پرونده.
gh-52876: افزودن پارامتر گمشدهی
keepends(بهطور پیشفرضTrue) بهcodecs.StreamReaderWriter.readline()وcodecs.StreamReaderWriter.readlines().gh-136470: اصلاح نام پیشفرض نخ در
concurrent.futures.InterpreterPoolExecutor.gh-136476: اصلاح باگی که باعث میشد تابع
get_async_stack_traceبرخی از قابها را در ردگیری پشته از دست بدهد.gh-136434: اصلاح تولید مستندات برای
UnboundItemدرconcurrent.interpretersهنگام اجرا با-OO.gh-136380: هنگام دسترسی به
concurrent.futures.InterpreterPoolExecutorو در دسترس نبودن زیرمفسرها، خطایAttributeErrorپرتاب میشود.gh-72327: پیشنهاد استفاده از اعلان فرمان سیستم هنگامی که
pip installدر REPL تایپ میشود. وصل توسط Tom Viner، Richard Si و Brian Schubert.gh-135953: پیادهسازی یک پروفایلگیر رانتایم با فرکانس بالا که از قابلیتهای اشکالزدایی راه دور موجود برای جمعآوری آمارهای اجرایی دقیق از فرایندهای در حال اجرای پایتون بهره میبرد. این ابزار در ماژول
profile.sampleارائه شده است و امکان مشاهدهی غیرمزاحم برنامههای تولیدی را با اتصال به فرایندهای در حال اجرا بدون نیاز به هیچگونه تغییر کد، راهاندازی مجدد یا پرچمهای آغازین خاص فراهم میکند. ناظر میتواند نمونهبرداری بسیار بافرکانسی از ردگیری پشته و وضعیت مفسر انجام دهد و تحلیل اجرایی رانتایم دقیقی از برنامههای زنده ارائه دهد.gh-136021: الزامی کردن پارامتر
type_paramsدر تابعtyping._eval_type()پس از یک دورهی گذار برای ارائهنکردن این پارامتر. همچنین حذفDeprecationWarningبرای رفتار قدیمی.gh-136286: اصلاح خطاهای سیکلینگ (Pickling) برای پروتکلهای ۰ و ۱ در بسیاری از اشیاء مرتبط با زیرمفسرها.
gh-136047: اصلاح مسائل مربوط به
typingهنگامی که پیادهسازی C متعلق بهabcدر دسترس نیست.gh-136316: بهبود پشتیبانی از ارزیابی ارجاعات پیشروی تو در تو در
typing.evaluate_forward_ref().gh-136306: ماژول
sslاکنون میتواند گروههای مورد استفاده برای توافق کلید را دریافت و تنظیم کند.gh-136156: تابع
tempfile.TemporaryFile()دیگر ازos.O_EXCLهمراه باos.O_TMPFILEاستفاده نمیکند؛ بنابراین، امکان استفاده ازlinkat()روی توصیفگر پرونده وجود دارد. وصله توسط Victor Stinner.gh-133982: پیادهسازی پایتون برای
io.BytesIOبهروزرسانی شد تا ایمن در برابر نخ باشد.gh-136193: بهبود پیام خطای
TypeErrorهنگام مقایسهی غنی بین دو شیء ازtypes.SimpleNamespace.gh-136097: رفع بازگشت بینهایت احتمالی و خطای KeyError در
sysconfig --generate-posix-vars.gh-85702: اگر به
zoneinfo._common.load_tzdataبستهای بدون منبع داده شود، بهجایPermissionErrorاستثنایzoneinfo.ZoneInfoNotFoundErrorبالا آورده میشود. وصله توسط Victor Stinner.gh-90733: بهبود پیامهای خطا هنگام گزارش پارامترهای نامعتبر در
hashlib.scrypt(). وصله توسط Bénédikt Tran.gh-134759: رفع خطای
UnboundLocalErrorدرemail.message.Message.get_payload()زمانی که بار برای رمزگشایی یک شیءbytesاست. وصله توسط Kliment Lamonov.gh-136028: رفع تجزیه نام ماههای حاوی «İ» (نویسهی U+0130، حرف بزرگ لاتین I با نقطه در بالا) در
time.strptime(). این مسئله روی تنظیمات محلی az_AZ، ber_DZ، ber_MA و crh_UA تأثیر میگذارد.gh-87135: به دست آوردن یک
threading.Lockیاthreading.RLockدر هنگام خاموش شدن مفسر، اگر پایتون بتواند تشخیص دهد که در غیر این صورت بنبست رخ میدهد، خطایPythonFinalizationErrorرا بالا خواهد آورد.gh-135995: در کدگذاری palmos، بایت
0x9bرا به›(U+203A - علامت نقلقول زاویهدار تک رو به راست) رمزگشایی کنید.gh-105456: ماژولهای
sre_compile،sre_constantsوsre_parseحذف شدند.gh-53203: رفع تابع
time.strptime()برای قالبهای%cو%xروی تنظیمات محلی byn_ER، wal_ET و lzh_TW، و برای قالب%Xروی تنظیمات محلی ar_SA، bg_BG و lzh_TW.gh-135878: رفع فروپاشی
types.SimpleNamespaceدر ساختهای نخبندی آزاد، زمانی که چندین نخ همزمان در حال فراخوانی متد__repr__()آن بودند.gh-135853: افزودن
math.fmax()وmath.fmin()برای به دست آوردن مقدار بزرگتر و کوچکتر بین دو مقدار ممیز شناور. وصله توسط Bénédikt Tran.gh-135836: رفع
IndexErrorدرasyncio.loop.create_connection()که ممکن بود هنگام رخ دادن یک استثنای غیر ازOSErrorدر طول اتصال و فراخوانی متدclose()سوکت کهOSErrorرا بالا میآورد، اتفاق بیفتد.gh-135853: ماژول
math: قرار دادن تابع C99signbit()در دسترس برای تشخیص این که آیا بیت علامت یک مقدار ممیز شناور تنظیم شده است یا خیر. وصله توسط Bénédikt Tran.gh-134531: ماژول
hmac: استفاده از رابط EVP_MAC(3ssl) برای HMAC زمانی که پایتون با OpenSSL ۳.۰ و نسخههای بعد از آن ساخته شده است، بهجای رابط منسوخ HMAC_CTX(3ssl). وصله توسط Bénédikt Tran.gh-135836: رفع
IndexErrorدرasyncio.loop.create_connection()که ممکن است زمانی رخ دهد که الگوریتم Happy Eyeballs در طول تلاشهای اتصال منجر به یک فهرست خالی از استثناها شود.gh-135855: بالا آوردن
TypeErrorبهجایSystemErrorزمانی که به_interpreters.set___main___attrs()یک شیء غیر دیکشنری ارسال میشود. وصله توسط Brian Schubert.gh-135823:
netrc: بهبود پیام خطا هنگامی که بررسی امنیتی برای مالکیت پروندهی پیکربندی پیشفرض~/.netrcبا شکست مواجه میشود. وصله توسط Bénédikt Tran.gh-135815:
netrc: اگرos.getuid()وجود نداشته باشد، بررسیهای امنیتی را رد کن. وصله توسط Bénédikt Tran.gh-135640: رفع باگی که در آن امکان فراخوانی
xml.etree.ElementTree.ElementTree.write()روی یک شیء از نوع ElementTree با یک عنصر ریشهی نامعتبر وجود داشت. این رفتار در صورتی که پروندهی پاسدادهشده بهwriteاز قبل وجود داشت، آن را خالی میکرد.gh-135759:
hashlib: رد کردن طولهای منفی خلاصه (digest) در شیءهای SHAKE مبتنی بر OpenSSL با بالا آوردن یکValueError. پیش از این، طولهای منفی بهطور ضمنی با بالا آوردن یکMemoryErrorیاSystemErrorرد میشدند. وصله توسط Bénédikt Tran.gh-123471: پیمایشهای همزمان روی
itertools.chainرا تحت نخبندی آزاد ایمن کنید.gh-135645: فیلد
supports_isolated_interpretersبهsys.implementationاضافه شد.gh-135646: بالا آوردن استثناهای سازگار
NameErrorدرannotationlib.ForwardRef.evaluate()gh-135557: رفع شرایط رقابت در بهروزرسانیهای
heapqو خواندنهایlistدر نسخهی ساخت نخبندی آزاد.gh-119180: مقادیر سراسری و محلی را تنها در صورت نیاز در
annotationlib.get_annotations()دریافت کنgh-135561: رفع فروپاشی در ساختهای DEBUG وقتی که یک روال HACL* HMAC با شکست مواجه میشود. وصله توسط Bénédikt Tran.
gh-135386: رفع مشکل باز کردن یک پایگاه دادهی
dbm.sqlite3برای خواندن از یک پرونده یا پوشهی فقطخواندنی.gh-135444: رفع
asyncio.DatagramTransport.sendto()برای در نظر گرفتن اندازهی سرآیند دیتاگرام هنگامی که داده نمیتواند ارسال شود.gh-65697: پیام خطای
configparserهنگام تلاش برای نوشتن یک کلید نامعتبر اکنون مفیدتر است.gh-135497: رفع شکست خوردن
os.getlogin()برای نامهای کاربری طولانیتر در پلتفرمهای مبتنی بر BSD.gh-135487: رفع
reprlib.Repr.repr_int()هنگامی که اعداد صحیحی با ارقامی بیشتر ازsys.get_int_max_str_digits()داده میشوند. وصله توسط Bénédikt Tran.gh-135429: رفع عدم تطابق آرگومان در
_lsprofبرای رویدادPY_THROW.gh-135368: رفع تولید
unittest.mock.Mockروی شیءهایdataclasses.dataclass(). اکنون تمام ویژگیهای خاص درست مانند قبل از gh-124429 تنظیم میشوند.gh-135336: ماژول
jsonاکنون رشتهها را تا ۲.۲ برابر سریعتر رمزگذاری میکند اگر صرفاً شامل نویسههایی باشند که نیازی به فرار دادن (escaping) ندارند.gh-135335:
multiprocessing: تخلیه (Flush) کردنstdoutوstderrپس از بارگذاری پیشفرض ماژولها درforkserver.gh-126631: رفع یک باگ در
multiprocessingو بخشforkserverکه مانع از بارگذاری پیشهنگام__main__میشد.gh-133967: نام
localeیعنی 'C.UTF-8' را به 'en_US.UTF-8' نرمالسازی نکنید.gh-130870: حفظ زیرکلاسهای
types.GenericAliasدرtyping.get_type_hints()gh-135321: پرتاب یک استثنای صحیح برای مقادیر بزرگتر از 0x7fffffff مربوط به آپکد
BINSTRINGدر پیادهسازی C از ماژولpickle.gh-121914: نامهای جدول نمادها برای عبارتهای لامبدا و عبارتهای تولیدگر به ترتیب به "<lambda>" و "<genexpr>" تغییر یافت تا از تداخل با نامهای تعریفشده توسط کاربر جلوگیری شود.
gh-135276: ماژول zipfile.Path با zipp 3.23 همگامسازی شد، که شامل بهبود کارایی
zipfile.Path.open()برای حالتهای غیرخواندنی است و برای نهانسازی مقادیر روی نمونه، بهfunctools.cached_property()اتکا میکند. همچنین برای ذخیرهسازی آرگومانهای متد مقداردهی اولیه بهsave_method_argsاتکا میکند. ویژگیهای.name،.stemو سایر ویژگیهای مبتنی بر نام پایه روی سیستمعامل ویندوز هنگام کار با پروندههای zip روی دیسک رفع شدند.gh-135234:
hashlib: بهبود پیامهای استثنا هنگامی که یک تابع OpenSSL با خطا مواجه میشود. زمانی که تخصیص حافظه در سمت OpenSSL با شکست مواجه شود، بهجای یکValueError، یک استثنایMemoryErrorپرتاب میشود. وصله توسط Bénédikt Tran.gh-135244:
uuid: هنگامی که آدرس MAC قابل تشخیص نباشد، شناسهی گره ۴۸ بیتی اکنون با استفاده از یک مولد اعداد شبهتصادفی امن از نظر رمزنگاری (CSPRNG) مطابق با RFC 9562, §6.10.3 تولید میشود. این تغییر رویuuid1()وuuid6()تأثیر میگذارد.gh-135241: آپکد
INTاز ماژول شتابدهندهی C یعنی_pickleبهروزرسانی شد تا فقط به دنبال "00" و "01" بگردد تا مقادیر بولی را روی پشته قرار دهد، که این امر با ماژولpickleدر پایتون هماهنگ است.gh-133934: بهبود پیام
.helpدر رابط خط فرمان، CLI ماژولsqlite3.gh-135069: رفع استثنای «Invalid error handling» در
encodings.idna.IncrementalDecoderجهت جایگزینی صحیح پارامتر 'errors'.gh-130662: +پذیرش صفرهای پیشآهنگ در فیلدهای دقت و عرض برای قالببندی
Decimal؛ برای نمونهformat(Decimal(1.25), '.016f').gh-130662: پذیرش صفرهای پیشآهنگ در فیلدهای دقت و عرض برای قالببندی
Fraction؛ برای نمونهformat(Fraction(1, 3), '.016f').gh-135004: بازنویسی و پاکسازی ماژول داخلی
_blake2. برخی از پیامهای استثنا تغییر کردند اما نوع آنها دستنخورده باقی ماند. وصله توسط Bénédikt Tran.gh-134953: گسترش پوستهی
_colorizeباkeyword_constantو پیادهسازی آن در پوستهی تعاملی.gh-134978:
hashlib: پشتیبانی از پارامتر کلیدواژهیstringدر سازندههای تابع هش مانندnew()یا سازندههای مستقیم با نام هش مانندmd5()وsha256()اکنون منسوخ شده و قرار است در پایتون ۳.۱۹ حذف شود. برای حداکثر سازگاری با نسخههای قبلی، ترجیح دهید دادههای اولیه را به عنوان یک آرگومان جایگاهی ارسال کنید. وصله توسط Bénédikt Tran.gh-134970: رفع استثنای «unknown action» در
argparse.ArgumentParser.add_argument_group()جهت جایگزینی صحیح کلاس اکشن.gh-134718: بهطور پیشفرض، مقادیر اختیاری
Load()درast.dump()حذف میشوند.gh-134718: تابع
ast.dump()اکنون فقط در صورتی مقادیرNoneو[]را حذف میکند که مقادیر پیشفرض باشند.gh-134939: افزودن ماژول
concurrent.interpreters. نگاه کنید به PEP 734.gh-108885: هر نمونه را به عنوان یک زیرآزمون در آزمونهای واحدی اجرا کنید که توسط
doctest.DocFileSuite()وdoctest.DocTestSuite()سنتز شدهاند. متدdoctest.DocTestRunner.report_skip()را اضافه کنید.gh-134885: رفع فروپاشی احتمالی در ماژول
compression.zstdمربوط به تنظیم انواع پارامتر. وصله توسط Jelle Zijlstra.gh-134857: بهبود گزارش خطا برای
doctestهایی که باunittestاجرا میشوند. حذف قابهای ماژولdoctestاز ردگیریها و نویسهی نویسهی خط جدید اضافی از پیام خطا.gh-128840: رفع تجزیهی آدرسهای طولانی IPv6 با آدرس تعبیهشدهی IPv4.
gh-133579:
curses: گزارشدهی سازگار خطاهای فرایندهای API زبان C در curses در متدهای سطح ماژول با بالا آوردن یکcurses.error. این امر رویassume_default_colors()،baudrate()،cbreak()،echo()،longname()،initscr()،nl()،raw()،termattrs()،termname()وunctrl()تأثیر میگذارد. وصله توسط Bénédikt Tran.gh-133579: متدهای
curses.window.refresh()وcurses.window.noutrefresh()اکنون هنگام فراخوانی با تعداد آرگومان نادرست برای پدها به جایcurses.errorیک خطایTypeErrorبالا میآورند. وصله توسط Bénédikt Tran.gh-133579: curses.window: گزارشدهی سازگار خطاهای فرایندهای API زبان C در curses در متدهای Window با بالا آوردن یک
curses.error. این امر رویaddch()،addnstr()،addstr()،border()،box()،chgat()،getbkgd()،inch()،insstr()وinsnstr()تأثیر میگذارد. وصله توسط Bénédikt Tran.gh-134771: تابع
time_clockid_converter()اکنون نوع صحیح را برایclockid_tروی Cygwin انتخاب میکند که خطای ساخت را برطرف میکند.gh-134637: رفع پسرفت عملکرد در فراخوانی یک اشارهگر تابع
ctypesدر نخبندی آزاد.gh-134696: پیادهسازیهای توکار HACL* و OpenSSL برای سازندگان تابع هش اکنون به درستی همان آرگومانهای نامگذاریشدهی مستندشده را میپذیرند. برای نمونه،
md5()قبلاً بسته به پیادهسازی زیرین میتوانست به صورتmd5(data=data)یاmd5(string=string)فراخوانی شود اما این فراخوانیها سازگار نبودند. وصله توسط Bénédikt Tran.gh-132710: در صورت امکان، اطمینان حاصل کنید که
uuid.getnode()حتی در فرایندهای مختلف نیز نتیجهی یکسانی را برمیگرداند. پیش از این، نتیجه فقط در همان فرایند ثابت بود. وصله توسط Bénédikt Tran.gh-134531:
_hashlib: تغییر نام عملکردهای داخلی C برای شیءهای_hashlib.HASHو_hashlib.HASHXOF. وصله توسط Bénédikt Tran.gh-134698: رفع فروپاشی هنگام فراخوانی متدهای
ssl.SSLContextیاssl.SSLSocketدر چند نخ.gh-134151:
email: رفعTypeErrorدرemail.utils.decode_params()هنگام مرتبسازی ادامههای RFC 2231 که حاوی یک بخش بدون شماره هستند.gh-134635:
zlib: امکان ترکیب جمعآزماهای Adler-32 و CRC-32 از طریقadler32_combine()وcrc32_combine(). وصله توسط Callum Attryde و Bénédikt Tran.gh-134657:
asyncio: حذف برخی نامهای خصوصی ازasyncio.__all__.gh-134210:
curses.window.getch()اکنون سیگنالها را به درستی مدیریت میکند. وصله توسط Bénédikt Tran.gh-80334: متد
multiprocessing.freeze_support()اکنون بررسی کار را روی هر پلتفرم متد شروع «spawn» انجام میدهد، نه فقط روی ویندوز.gh-134582: رفع خطاهای رفتوبرگشت tokenize.untokenize() مربوط به فرار آکولادهای تیاسترینگ
gh-134580: بهبود استایلدهی صفحات تفاوت HTML تولید شده توسط کلاس
difflib.HtmlDiff، و مهاجرت خروجی به استاندارد HTML5.gh-134565: تابع
unittest.doModuleCleanups()دیگر همهی استثناهای مطرحشده در کد پاکسازی را بهجز اولین استثنا پنهان نمیکند، بلکه اگر خطاهای متعددی رخ داده باشد، یکExceptionGroupبالا میآورد.gh-134546: اطمینان حاصل کنید که اسکریپت اشکالزدایی راه دور
pdbتوسط فرایند راه دور پایتون قابل خواندن باشد.gh-134451: کلاس
asyncio.tools.CycleFoundExceptionاز دیتاکلاس به یک نوع استثنای معمولی تبدیل شد.gh-114177: ماژول
asyncioرا اصلاح کنید تا پایپهای زیرفرایند را که در صورت بستهشدن حلقهی رویداد در غیر این صورت خطا ایجاد میکردند، نبندد.gh-90871: یک خطای اختلافِ واحد (off-by-one) مربوط به پارامتر backlog در تابع
create_unix_server()اصلاح شد. مشارکت از Christian Harries.gh-134323: متد
threading.RLock.locked()اصلاح شد.gh-86802: نشت حافظهی asyncio در وظایف محافظتشدهی لغو شده اصلاح شد. برای وظایف محافظتشدهای که محافظ آنها لغو شده است، استثناهای بالقوه را از طریق هندلر استثنا ثبت (لاگ) کنید. مشارکت از Christian Harries.
gh-71189: پشتیبانی از حالت all-but-last در
os.path.realpath()اضافه شد.gh-72902: بهبود سرعت (x1.1-1.8) سازندهی
Fractionبرای ورودیهای معمولی (استاندارد) (مانندfloat،Decimalیا رشتهها).gh-134209:
curses: متدهایcurses.window.instr()وcurses.window.getstr()اکنون بافر داخلی خود را به جای استک روی هیپ تخصیص میدهند؛ علاوه بر این، حداکثر اندازهی بافر از ۱۰۲۳ به ۲۰۴۷ افزایش یافته است.gh-88994: تابع
datetime.datetime.now()را برای سازگاری باdatetime.datetime.fromtimestamp()به گرد کردن زوجنصف (half-even rounding) تغییر دهید. وصله توسط جان کیث هوم (John Keith Hohm).gh-80184: اندازهی پیشفرض صف اکنون برای
socketserver.TCPServerبرابر باsocket.SOMAXCONNاست.gh-132983: اطلاعات نسخهی
compression.zstdبهtest.pythoninfoاضافه شد.gh-134235: تکمیل خودکار تب (tab completion) در REPL بهروزرسانی شد تا ماژولهای توکار را نیز شامل شود. مشارکت از Tom Wang، Hunter Young.
gh-134152: خطای
UnboundLocalErrorکه ممکن بود هنگام تجزیهی سرآیندemailدر برخی زمینهها اگر جداکنندهی پایانی مورد انتظار وجود نداشته باشد رخ دهد، اصلاح شد.gh-134152:
email: تجزیهی شناسهی پیام ایمیل با دامنهی نامعتبر اصلاح شد.gh-134168:
http.server: اتصال آدرس IPv6 و مدیریت--directoryهنگام استفاده از HTTPS اصلاح شد.gh-62184: ایمپورت پیادهسازی C از
io.FileIOاز پیادهسازی پایتون که پیادهسازی خاص خود را دارد، حذف شد.gh-134087: پشتیبانی از آرگومانهای جایگاهی یا کلیدواژهای اختیاری در پیادهسازی C شیءهای
threading.RLockحذف شد. این مورد از نسخهی ۳.۱۴ پایتون منسوخ شده بود. وصله توسط Bénédikt Tran.gh-134173: عملکرد
asyncioدر انتقال وضعیت از استخر نخconcurrent.futures.Futureتا ۴.۴ برابر سریعتر شد. وصله توسط J. Nick Koston.gh-133982: در پیادهسازی پایتونی
ioهنگامی که شیء پرونده در حضور چندین لایهی ورودی/خروجی (I/O) به طور صریح بسته نمیشود، یکRuntimeWarningصادر کنید.gh-133890: ماژول
tarfileاکنون خطاهایUnicodeEncodeErrorرا هنگام عدم امکان استخراج یک عضو، درست مانندOSErrorمدیریت میکند.gh-134097: تعامل REPL جدید و گزینهی خط فرمان
-X showrefcountرا رفع اشکال کنید.gh-133889: صفحهی فهرست دایرکتوری تولیدشده در
http.server.SimpleHTTPRequestHandlerاکنون تنها جزءِ مسیر رمزگشاییشدهی URL درخواستشده را نشان میدهد و کوئری و فرگمنت را نمایش نمیدهد.gh-134098: مدیریت مسیرهایی را که با یک اسلش با کدگذاری درصدی (
%2fیا%2F) ختم میشوند درhttp.server.SimpleHTTPRequestHandlerرفع اشکال کنید.gh-132124: در سیستمهای سازگار با POSIX، تابع
multiprocessing.util.get_temp_dir()اکنون اگر طول مسیر پروندههای سوکتAF_UNIXهنگام استفاده از روش راهاندازی forkserver از حداکثر طول مختص پلتفرم فراتر رود، متغیرTMPDIR(و متغیرهای محیطی مشابه) را نادیده میگیرد. وصلهای از Bénédikt Tran.gh-134062: ماژول
ipaddress: تداخلها (collisions) را در متد__hash__()برای اشیاءIPv4NetworkوIPv6Networkرفع اشکال کنید.gh-134004: ماژول
shelveو همینطور ماژولهای زیرینdbm.dumbوdbm.sqliteاکنون دارای متدهایreorganize()هستند تا فضای خالی استفادهنشدهای را که پیشتر توسط درایههای حذفشده اشغال شده بود، بازیابی کنند.gh-133970: کلاسهای
string.templatelib.Templateوstring.templatelib.Interpolationرا عام (generic) کنید.gh-71253: در پیادهسازی پایتونی
io، اگر opener یک توصیفگر پروندهی منفی برگرداند، برای مطابقت با پیادهسازی C، خطایValueErrorرا درopen()ایجاد کنید (raise).gh-133960: تابع
typing.evaluate_forward_ref()را سادهسازی و بهبود ببخشید. این تابع اکنون دیگر روی انواع نامعتبر خاصی خطا ایجاد نمیکند. در چندین موقعیت، این تابع اکنون قادر است ارجاعات پیشروی پیشتر پشتیبانینشده را ارزیابی کند.gh-133925: کلاس خصوصی
typing._UnionGenericAliasرا هشپذیر (hashable) کنید.gh-133604: تابع
platform.java_ver()را که از نسخهی ۳.۱۳ پایتون منسوخ شده بود، حذف کنید.gh-133875: متد منسوخشدهی
pathlib.PurePath.is_reserved()حذف شد. برای تشخیص مسیرهای رزرو شده در ویندوز ازos.path.isreserved()استفاده کنید.gh-133873: متدهای منسوخشدهی
getmark()،setmark()وgetmarkers()از کلاسهایWave_readوWave_writeکه از نسخهی ۳.۱۳ پایتون منسوخ شده بودند، حذف شدند. وصلهای از Bénédikt Tran.gh-133866: تابع مستندنشدهی
ctypes.SetPointerType()که از نسخهی ۳.۱۳ پایتون منسوخ شده بود، حذف شد. وصلهای از Bénédikt Tran.gh-133823: پشتیبانی از فراخوانیهای
TD = TypedDict("TD")وTD = TypedDict("TD", None)برای ساخت اشیاءtyping.TypedDictبا صفر فیلد حذف شد. وصلهای از Bénédikt Tran.gh-125996: امنیت نخ (thread safety) کلاس
collections.OrderedDictرا رفع اشکال کنید. وصلهای از Kumar Aditya.gh-133817: پشتیبانی از ایجاد کلاسهای
NamedTupleاز طریق نحو آرگومان کلیدواژهای مستندنشده حذف شد. وصلهای از Bénédikt Tran.gh-133653: کلاس
argparse.ArgumentParserرا با آرگومان formatter_class رفع اشکال کنید. خطای TypeError هنگامی که formatter_class یک زیرکلاس سفارشی ازHelpFormatterاست، رفع شد. خطای TypeError هنگامی که formatter_class زیرکلاسی ازHelpFormatterنیست و از prefix_char غیرمعاوری استفاده میشود، رفع شد. پشتیبانی از رنگیسازی هنگامی که formatter_class زیرکلاسی ازHelpFormatterنیست، رفع شد.gh-133810: حذف
http.server.CGIHTTPRequestHandlerو پرچم--cgiاز رابط python -m http.server. این موارد در پایتون ۳.۱۳ منسوخ شده بودند. وصله توسط Bénédikt Tran.gh-132641: رفع یک مشکل رقابت در
functools.lru_cache()تحت حالت رایگان-رشتهای (free-threading).gh-133783: رفع باگ مربوط به اعمال
copy.replace()روی اشیایast. ویژگیهایی که مقدار پیشفرض آنهاNoneاست، به اشتباه برای گرههای درخت نحوی انتزاعی (AST) که به صورت دستی ایجاد شدهاند، ضروری در نظر گرفته میشدند.gh-133684: رفع باگی که در آن تابع
annotationlib.get_annotations()نتیجهی نادرستی برای برخی کلاسهایی برمیگرداند که بخشی از یک سلسلهمراتب کلاس هستند و در آنها ازfrom __future__ import annotationsاستفاده شده است.gh-77057: رفع نحوهی پردازش اعلامیههای نشانهگذاری نامعتبر در
html.parser.HTMLParser.gh-130328: افزایش سرعت جایگذاری (pasting) در
PyREPLروی ویندوز در یک کنسول قدیمی (legacy). وصله توسط Chris Eibl.gh-133701: رفع باگی که در آن کلاسهای
typing.TypedDictتعریفشده تحتfrom __future__ import annotationsکه از یکTypedDictدیگر ارثبری میکنند، ویژگی__annotations__نادرستی داشتند.gh-133656: حذف متد منسوخ
zipimport.zipimporter.load_module(). به جای آن ازzipimport.zipimporter.exec_module()استفاده کنید.gh-133722: افزودن گزینهی color به
difflib.unified_diff()که خروجی را مشابه git diff رنگی میکند.gh-133489: تابع
random.getrandbits()اکنون میتواند بیش از ۲31 بیت تولید کند. تابعrandom.randbytes()اکنون میتواند بیش از ۲۵۶ مگابایت تولید کند.gh-133595: پاکسازی و بهبود APIهای
sqlite3.Connection. تمام پارامترهایsqlite3.connect()به جز database اکنون فقط-کلیدواژه (keyword-only) هستند. سه پارامتر اول متدهایcreate_function()وcreate_aggregate()اکنون فقط-جایگاهی (positional-only) هستند. پارامتر اول متدهایset_authorizer()،set_progress_handler()وset_trace_callback()اکنون فقط-جایگاهی است.gh-133581: بهبود تحلیل (unparsing) تیاسترینگها در
ast.unparse()وfrom __future__ import annotations. تیاسترینگهای خالی اکنون به درستی رفتوبرگشت (round-trip) میکنند و قالببندی در درونیابیها حفظ میشود. وصله توسط Jelle Zijlstra.gh-133577: افزودن پارامتر
formatterبهlogging.basicConfig().gh-92897: حذف پارامتر
check_homeازsysconfig.is_python_build()که از پایتون ۳.۱۲ منسوخ شده بود.gh-133551: پشتیبانی از تیاسترینگها (PEP 750) در
annotationlib. وصله توسط Jelle Zijlstra.gh-133517: حذف
os.listdrives()،os.listvolumes()وos.listmounts()در ساختهای دسکتاپ غیر ویندوزی به دلیل فقدان قابلیت زیربنایی مربوطه.gh-133439: رفع خطایی که در آن دستورات نقطهای با فضاهای خالی پایانی در رابط خط فرمان sqlite3 به اشتباه به عنوان دستورات SQL چندخطی در نظر گرفته میشدند.
gh-133253: رفع مسائل ایمنی رشتهها (thread-safety) در
linecache.gh-133390: پشتیبانی از تکمیل کلیدواژه در رابط خط فرمان
sqlite3و افزودن ثابتsqlite3.SQLITE_KEYWORDS.gh-132493: از دسترسی غیرضروری به
__annotations__درinspect.signature()جلوگیری کنید.gh-133017: بهبود پیام خطای
multiprocessing.sharedctypes.Array()،multiprocessing.sharedctypes.RawArray()،multiprocessing.sharedctypes.Value()وmultiprocessing.sharedctypes.RawValue()هنگامی که یک کد نوع نامعتبر ارسال میشود. وصله توسط Tomas Roungh-132813: بهبود پیامهای خطا برای انواع و مقادیر نادرست ویژگیهای
csv.Dialect.gh-132969: جلوگیری از تلاش نخ اجراکنندهی
ProcessPoolExecutorکه هنگام اجرایshutdown(wait=False)فعال باقی میماند، برای تنظیم مجدد فرایندهای کارگر استخر پس از این که وضعیت شیء قبلاً در طول خاموشسازی بازنشانی شده است. ترکیبی از شرایط، از جمله پایان یافتن غیرطبیعی یک فرایند کارگر، باعث ایجاد یک استثنا و توقف احتمالی (hang) شد هنگامی که نخ اجراکننده که همچنان در حال اجراست تلاش کرد کارگران مرده را در استخر جایگزین کند.gh-132876: تابع
ldexp()روی ویندوز نتایج زیرنرمال را پیش از ویندوز ۱۱ گرد نمیکند، اما باید این کار را انجام دهد. پوششmath.ldexp()پایتون اکنون آنها را گرد میکند، بنابراین در موارد نادر نتایج بسیار کوچک در نسخههای ویندوز پایینتر از ۱۱، ممکن است کمی تغییر کنند.gh-133009:
xml.etree.ElementTree: رفع خرابی درElement.__deepcopy__هنگامی که عنصر به شکل همزمان تغییر مییابد. وصله توسط Bénédikt Tran.gh-132908: افزودن توابع
math.isnormal()وmath.issubnormal(). وصله توسط Sergey B Kirpichev.gh-95380:
fcntl.fcntl()وfcntl.ioctl(): حذف محدودیت ۱۰۲۴ بایتی روی اندازهی آرگومان بایتگونهی تغییرنیافته.gh-122781: رفع دایرکتیو
%zدرdatetime.datetime.strptime()برای مجاز دانستن عدم ارائهی آفست همانطور که مستند شده بود.gh-123471: ایمنسازی پیمایشهای همزمان روی
itertools.combinationsوitertools.productتحت ساختار نخبندی آزاد.gh-127081: رفع مشکلات امنیت نخ کتابخانهی libc با
dbmاز طریق انجام عملیاتهای حالتمند در بخشهای بحرانی.gh-127081: رفع مشکلات امنیت نخ کتابخانهی libc با
osاز طریق جایگزینیgetloginبا نسخهی مجددپذیر (re-entrant)getlogin_r.gh-127081: رفع مشکلات امنیت نخ کتابخانهی libc با
pwdاز طریق قفل کردن دسترسی بهgetpwall.gh-132551: ایمنسازی
io.BytesIOدر ساخت نخبندی آزاد.gh-107583: رفع وارونسازی
Flagهنگامی که مجموعهی پرچمها مقادیر گمشده دارد (IntFlagهمچنان همهی بیتها را معکوس میکند)؛ رفع مقادیر اختصاصیافتهی منفی در طول ایجاد پرچم (همFlagو همIntFlagمقادیر گمشده را نادیده میگیرند).gh-87790: پشتیبانی از زیرخط و کاما به عنوان جداکنندههای هزارگان در بخش کسری برای قالببندی
Fraction. وصله توسط Sergey B Kirpichev.gh-87790: پشتیبانی از زیرخط و کاما به عنوان جداکنندههای هزارگان در بخش کسری برای قالببندی
Decimal. وصله توسط Sergey B Kirpichev.gh-131884: رفع مشکلات قالببندی در
json.dump()هنگامی که هر دو پارامتر indent و skipkeys استفاده میشوند.gh-131788: ایمنسازی
ResourceTracker.sendاز ماژولmultiprocessingدر برابر ورود مجدد (re-entrant safe)gh-91349: تنظیم مقدار پیشفرض
compressionlevel=به ۶ (کاهش از ۹) درgzipوtarfile. این سطح پیشفرضی است که توسط بیشتر ابزارهای فشردهسازی استفاده میشود و تعادل بهتری بین سرعت و کارایی ایجاد میکند.gh-131146: رفع مشکل
calendar.TextCalendar،calendar.HTMLCalendarو رابط خط فرمانcalendar(CLI) برای نمایش نام ماهها در حالت فاعلی با افزودنcalendar.standalone_month_nameوcalendar.standalone_month_abbr؛ این موارد نامها و مخففهای ماهها را در فرم دستوری مورد استفاده زمانی که نام ماه به تنهایی قرار میگیرد، فراهم میکنند (در صورتی که :locale: از آن پشتیبانی کند).gh-123471: ایمنسازی پیمایشهای همزمان روی
itertools.cycleدر حالت رشتهآزاد (free-threading).gh-130664: مدیریت حالت خاص برای قالببندی
Fraction: رفتار با صفرگذاری (پیشوند کردن فیلد عرض با یک نویسه'0') به عنوان معادل نویسهی پرکنندهی'0'با نوع تراز'='، درست مانند موردfloat.gh-130999: جلوگیری از خروج از REPL جدید و ارائه پیشنهادها حتی اگر نامزدهای غیررشتهای در هنگام بروز خطاها وجود داشته باشند.
gh-88473: پیادهسازی یک مسیر سریع برای شیءهای
datetime.dateدرdatetime.date.today()که منجر به بهبود عملکرد ۵ برابری میشود، در حالی که زیرکلاسهای مناسب عملکرد قبلی خود را حفظ میکنند.gh-126883: افزودن بررسی اینکه فیلدهای منطقهی زمانی در محدوده معتبر برای
datetime.datetime.fromisoformat()وdatetime.time.fromisoformat()قرار دارند. وصله توسط Semyon Moroz.gh-125028: شیء
functools.Placeholderرا نمیتوان به عنوان آرگومان کلیدواژهای بهfunctools.partial()ارسال کرد.gh-125843: در صورت امکان، مشخص کنید که کدام تابع یا ماکروی زبان C در ماژول
cursesمسئول ایجاد استثنایcurses.errorاست. وصله توسط Bénédikt Tran.gh-119109: فراخوانیهای
functools.partial()اکنون هنگامی که از آرگومانهای کلیدواژهای استفاده میشود، سریعتر هستند.gh-124033: شیء
SimplePathاکنون درimportlib.metadata.__all__ارائه میشود.gh-91216: ماژول
importlib.metadataاکنون به جای بازگرداندنNoneهنگامی که یک کلید در متادیتا وجود ندارد، یکKeyErrorایجاد میکند.gh-120492: ماژول
importlib.metadataاکنون هنگام بازیابی بر اساس نام، توزیعهای معتبر را نسبت به توزیعهای نامعتبر در اولویت قرار میدهد.gh-99631: ماژول
shelveاکنون توابع سریالسازی و سریالزدایی سفارشی را میپذیرد.gh-119186: افزایش سرعت جزئی
os.walk()با فراخوانی کمترos.path.join().gh-120170: رفع مشکلی در ماژول توسعهای
_pickleکه در آن ایمپورت کردنmultiprocessingمیتواند نحوهی شناسایی ماژول متعلق به یک شیء را توسط پیکل تغییر دهد و به طور بالقوه باعث خرابی در پیکلزدایی آن شیءها شود.gh-118981: رفع احتمال توقف کامل (hang) در
multiprocessing.popen_spawn_posixکه ممکن است هنگام مرگ زودهنگام فرآیند فرزند با بستن فوری شناسههای توصیفگر فایل (fds) فرزند رخ دهد.gh-105497: رفع معکوسسازی ماسک پرچم هنگامی که پرچمهای بدون نام وجود دارند.
gh-99813: ماژول
sslاکنون در صورت امکان به صورت داخلی ازSSL_sendfileاستفاده میکند (نگاه کنید بهOP_ENABLE_KTLS). این تابع یک پرونده را با کارایی بیشتری ارسال میکند زیرا رمزگذاری TLS را در هسته (kernel) انجام میدهد تا از تعویضهای زمینه اضافی جلوگیری شود. وصله توسط Illia Volochii.gh-62824: رفع نامهای مستعار برای کدگذاری
iso8859_8. وصله توسط Dave Goncalves.gh-86155: متد
html.parser.HTMLParser.close()دیگر هنگامی که تگ<script>بسته نشده است، دادهها را از دست نمیدهد. وصله توسط Waylan Limberg.gh-78319: پشتیبانی از UTF-8 برای دستور IMAP APPEND با استاندارد RFC سازگار شد.
gh-93334: هنگامی که
importlib.machinery.PathFinder.find_spec()روی یک زیرماژول بدون ایمپورت کردن والد (و بدون آرگومانpath) فراخوانی میشود، استثنایKeyErrorرا مجدداً به عنوانModuleNotFoundErrorبالا بیاورید.gh-69426: کلاس
html.parser.HTMLParserرا اصلاح کنید تا اگر موجودیتهای نویسهای در مقادیر ویژگیها با یک نویسهی الفبایی عددی اسکی (ASCII) یا علامت مساوی دنبال شوند، آنها را کدگشایی نکند.bpo-38735: خطای هنگام ایمپورت کردن یک ماژول از پوشهی ریشه روی سکوهای یونیکسمانند با تنظیم sys.pycache_prefix را برطرف کنید.
bpo-45959: ماژول
pprintاکنون میتواند نمای دیکشنریها را به شکلی زیبا چاپ کند.gh-84683: ماژول
zoneinfo: بررسی برای یافتن پروندههای داده در مسیر<prefix>/share/zoneinfoروی ویندوزbpo-43429: متد
size()از کلاسmmap.mmapاکنون اندازه یک نگاشت ناشناس را روی هر دو سیستمعامل یونیکس و ویندوز برمیگرداند. پیش از این، اندازه روی ویندوز برگردانده میشد و روی یونیکس خطایOSErrorرخ میداد. اکنون هنگام تنظیمtrackfd=Falseبه جایOSErrorخطایValueErrorبالا میرود.bpo-41839: امکان استفاده از مقادیر اولویت منفی را برای توابع
os.sched_get_priority_min()وos.sched_get_priority_max()فراهم کنید.bpo-28494: نرخ مثبت کاذب اعتبارسنجی پروندههای Zip را در تابع
zipfile.is_zipfile()بهبود ببخشید.
IDLE¶
مستندات¶
هسته و توکارها (Core and Builtins)¶
gh-140000: رفع نشت حافظهی بالقوه هنگام وجود چرخهی ارجاع بین نمونهای از
typing.TypeAliasType،typing.TypeVar،typing.ParamSpecیاtyping.TypeVarTupleو ویژگی__name__آن. پچ توسط میخائیل افیموف (Mikhail Efimov).gh-140009: بهبود کارایی گسترش فهرست توسط آیتمهای دیکشنری.
gh-139988: رفع نشت حافظه هنگام شکست در ایجاد نوع دادهی
Union. پچ توسط بندیک تران (Bénédikt Tran).gh-139748: رفع نشت ارجاع در شاخههای خطای توابعی که رشتههای مسیر یا بایتها را میپذیرند، مانند
compile()وos.system(). پچ توسط بندیک تران (Bénédikt Tran).gh-139516: رفع شروع اشتباه مشخصات قالب توسط دونقطه لامبدا در افاسترینگ (f-string) داخل توکنساز.
gh-63161: پشتیبانی از خط مفسر (shebang) و کامنتهای غیر UTF-8 در پروندههای سورس پایتون در صورت مشخص شدن کدگذاری غیر UTF-8. شناسایی خطای کدگشایی در کامنتها برای کدگذاری پیشفرض (UTF-8). نمایش سطر و موقعیت خطای کدگشایی برای کدگذاری پیشفرض در یک ردگیری (traceback). نمایش سطری که شامل کوکی کدگذاری است هنگامی که با BOM در ردگیری تداخل دارد.
gh-139116: جلوگیری از ایجاد بنبست هنگامی که چندین نخ بهطور همزمان آغاز به کار کرده، متوقف شده و از
tracemallocاستفاده میکنند.gh-139275: رفع مشکلات کامپایل در
_remote_debugging_module.cهنگامی که سیستم دارایprocess_vm_readvنیست. وصله توسط Pablo Galindogh-133059: افزایش تعداد اعداد صحیح مثبت کوچک کششده از ۲۵۶ به ۱۰۲۴.
gh-74857: PEP 538: اعمال تنظیمات locale پیکس بر مبنای UTF-8. وصله توسط Victor Stinner.
کتابخانه¶
gh-116738: ایمنسازی
mmapدر برابر نخ در ساخت نخبندی آزاد.
هسته و توکارها (Core and Builtins)¶
gh-138558: رفع نحوه پردازش حاشیهنویسیهای غیرعادی t-string در annotationlib. وصله توسط Dave Peck.
gh-134466: عدم اجرای PyREPL در محیطی تخریبشده که در آن تنظیم ویژگیهای termios مجاز نیست.
gh-138794: هنگامی که یک تابع ردگیری جدید با
PyRefTracer_SetTracer()ثبت میشود، با جایگزینی تابع فعلی، فراخوانی تابع ردگیری با شیء تنظیمشده روی NULL و event تنظیمشده رویPyRefTracer_TRACKER_REMOVEDانجام خواهد شد. این کار درست قبل از ثبت تابع جدید رخ میدهد. وصله توسط Pablo Galindogh-71810: ایجاد خطای
OverflowErrorبرای(-1).to_bytes()در تبدیلهای علامتدار هنگامی که تعداد بایتها صفر است. وصله توسط Sergey B Kirpichev.gh-138716: بهبود پیام
SyntaxErrorبرایassertدر مواردی مانندassert a := b.gh-105487: حذف موارد ناموجود
__copy__()،__deepcopy__()و__bases__از ورودیهای__dir__()درtypes.GenericAlias.gh-138192: رفع مقداردهی اولیهی
contextvarsبه طوری که مقدارMISSINGبه تمام زیرمترجمها اختصاص یابد.gh-138479: رفع فروپاشی هنگام بازگرداندن مقداری که یک
tupleنیست توسط__typing_subst__یک شیء عام.gh-138431: رفع یک اشکال در بهینهساز JIT هنگام رفتوبرگشت بین رشتهها و تاپلها.
gh-138378: انتقال مرحلهی بهینهساز JIT از متغیرهای سراسری به ثابت، به درون مرحلهی اصلی بهینهساز JIT
کتابخانه¶
gh-138401: افزودن اعتبارسنچی مفقود شدهی آرگومان
countدرos.sendfile()برای غیرمنفی بودن.
هسته و توکارها (Core and Builtins)¶
gh-138372: رفع هشدار
SyntaxWarningصادر شده برای عبارتهای زیرنویس نادرست مربوط به template string literals.gh-138302: دستور
BINARY_OPاکنون در صورت فشرده بودن عملوندها، بهBINARY_OP_ADD_INT،BINARY_OP_SUBTRACT_INTیاBINARY_OP_MULTIPLY_INTاختصاص مییابد.gh-138318: پوستهی تعاملی پیشفرض پایتون (REPL) اکنون از برجستهسازی نامهای توکار (برای نمونه
setیاformat()) هنگامی که به عنوان نام ویژگی (برای نمونه درvalue.setیاtext.format) استفاده میشوند، جلوگیری میکند.gh-138349: رفع فروپاشی در موارد خاصی که یک ماژول شامل هم حاشیهنویسی در سطح ماژول و هم یک درک (comprehension) باشد.
gh-69605: رفع برخی از زیرماژولهای کتابخانهی استاندارد که در تکمیل خودکار ایمپورتهای REPL، پوسته تعاملی پایتون گم شده بودند.
gh-61206: ماژول
zipimportاکنون از پروندههای زیپ فشردهشده با zstandard پشتیبانی میکند.
کتابخانه¶
gh-116738: ایمنسازی
cProfileدر برابر نخ در ساخت نخبندی آزاد.
هسته و توکارها (Core and Builtins)¶
gh-137838: رفع سرریز بافر رد کامپایلر درجا (JIT) با افزایش تعداد استابهای خروجی احتمالی. وصله توسط Donghee Na.
gh-71679: استفاده از الگوریتم نقلقول یکسان برای تابع repr شیءهای bytearray همانند شیءهای bytes و رشتهها -- اگر شیء bytearray شامل نقلقول تکی باشد و شامل نقلقول دوتایی نباشد، از نقلقول دوتایی برای محصور کردن استفاده کنید.
gh-137384: رفع فروپاشی هنگام استفاده از ماژول
warningsدر یک نهاییساز هنگام خاموش شدن. وصله توسط Kumar Aditya.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
gh-137992: اطمینان حاصل کنید که
PyRefTracer_SetTracer()هنگام فراخوانی با تمام نخهای موجود همگام میشود تا از رقابتها در ساخت نخبندی آزاد جلوگیری شود. وصله توسط Pablo Galindogh-137967: نمایش پیشنهادهای خطا در دسترسی به ویژگیهای تو در تو. وصله توسط Pablo Galindo
gh-137959: جایگزینی کد شیم اضافه شده به هر بخش از کد کامپایلشده با JIT با یک تابع ترامپولین واحد.
gh-137883: رفع بازگشت بیپایان هنگام فراخوانی یک تابع با آرگومانهای کلیدواژهای.
gh-137079: رفع تشخیص خطای املایی کلیدواژه هنگام تجزیهی پروندهها. وصله توسط Pablo Galindo.
gh-137728: رفع نحوهی مدیریت متغیرهای محلی بسیار زیاد در JIT. این امر پیشتر باعث خطای حافظه (segfault) میشد.
gh-137716: رفع نقطهی مضاعف در پیام
AttributeErrorبرای ادعاهای ماک نامعتبرgh-137433: رفع یک بنبست احتمالی در ساخت نخبندی آزاد وقتی نخهای دیمن در حال فعال یا غیرفعال کردن پروفایلگیری هستند یا در حالی که نخ اصلی در حال خاموش کردن مفسر است، ردیابی را انجام میدهند.
gh-137576: رفع نمایش کد منبع نادرست در ردگیریهای (tracebacks) پوستهی پایهی REPL هنگامی که
PYTHONSTARTUPداده شده است. وصله توسط Adam Hartz.gh-37817: اجازه دادن به انتساب به
__bases__زیرکلاسهای مستقیم کلاسهای توکار.gh-132732: بهینهسازی دستورات
_COMPARE_OP،_CONTAINS_OP،_UNARY_NEGATIVE،_UNARY_NOTو_UNARY_INVERTدر ساختهای JIT با ریزعملیاتهای بارگذاری ثابت (_POP_TWO_LOAD_CONST_INLINE_BORROWو_POP_TOP_LOAD_CONST_INLINE_BORROW) و سپس حذف هر دو برای کاهش تعداد دستورالعملها.gh-137400: رفع یک فروپاشی در ساخت نخبندی آزاد هنگام غیرفعال کردن پروفایلگیری یا ردیابی در تمام نخها با
PyEval_SetProfileAllThreads()یاPyEval_SetTraceAllThreads()یا معادلهای پایتونی آنهاthreading.settrace_all_threads()وthreading.setprofile_all_threads().gh-133143: اضافه کردن شیء
sys.abi_infoبرای دسترسی آسانتر به اطلاعات ABI.gh-137400: رفع یک فروپاشی در ساخت نخبندی آزاد هنگام غیرفعال کردن پروفایلگیری یا ردیابی در تمام نخها با
PyEval_SetProfileAllThreads()یاPyEval_SetTraceAllThreads()یا معادلهای پایتونی آنهاthreading.settrace_all_threads()وthreading.setprofile_all_threads().gh-120037: غیرفعال کردن پوشهی بستههای کاربر در سایت، هنگامی که از پروندهی
._pthاستفاده میشود، حتی اگر حاویimport siteباشد.gh-58124: رفع نام کدگذاری پایتون در خطاهای یونیکد کُدکِ صفحه کد: استفاده از "cp65000" و "cp65001" بهجای "CP_UTF7" و "CP_UTF8" که نامهای معتبری برای کدهای پایتون نیستند. وصل توسط Victor Stinner.
gh-136966: توصیفگرهای
object.__dict__و__weakref__اکنون از یک نمونهی توصیفگر واحد به ازای هر مفسر استفاده میکنند که در تمام انواعی که به آنها نیاز دارند به اشتراک گذاشته میشود. این کار باعث تسریع ایجاد کلاس میشود و به جلوگیری از چرخههای ارجاع کمک میکند.gh-137314: رفع یک رگرسیون که در آن افاسترینگهای خام، دنبالههای گریز را در مشخصات قالببندی به اشتباه تفسیر میکردند. افاسترینگهای خام اکنون بهدرستی بکاسلشهای لفظی را در مشخصات قالب حفظ میکنند که با رفتار پایتون ۳.۱۱ مطابقت دارد. برای مثال، عبارت
rf"{obj:\xFF}"اکنون بهدرستی'\\xFF'را بهجای'ÿ'تولید میکند. وصل توسط Pablo Galindo.gh-137308: یک رشته مستند مستقل در بدهی یک گره بهعنوان یک
passدستور بهینهسازی میشود تا اطمینان حاصل شود که بدهی گره هرگز خالی نیست. در غیر این صورت، یکValueErrorدرcompile()رخ میداد.gh-137288: رفع باگی که در آن برخی از دستورالعملهای بایتکد یک عبارت بولی به هندلر استثنای صحیح متصل نمیشدند.
gh-137291: پروفایلگیر perf اکنون در صورت فراهم بودن API ارزیابی فریم قبلی، قابل استفاده است.
gh-134291: حذف برخی از استفادههای جدیدتر API مکاواس از کامپایلر درجا (JIT) به منظور بازیابی سازگاری با اهداف استقرار قدیمیتر OSX 10.15.
gh-88886: تابع جستجوی کُدکها اکنون دوباره فقط نرمالسازی حداقلی نام کدگذاری را قبل از ارسال آن به عملکردهای جستجو انجام میدهد: تمام حروف اسکی به حروف کوچک تبدیل میشوند، و فاصلهها با خط تیره جایگزین میشوند. این کار رفتار پیش از پایتون ۳.۹ را بازیابی میکند.
gh-131338: غیرفعالسازی بررسیهای حد پشتهی محاسبهشده روی پلتفرمهای لینوکس غیر glibc برای رفع فروپاشیها در بازگشتهای عمیق.
gh-136870: رفع رقابتهای داده هنگام حذف ابزاربندی از بایتکد شیءهای کد که به شکل همزمان در نخها اجرا میشوند.
gh-132732: بهینهسازی مقایسهی ثابتها برای
_COMPARE_OP_INT،_COMPARE_OP_FLOATو_COMPARE_OP_STRدر ساختهای کامپایلر درجا (JIT)gh-127598: بهبود
ModuleNotFoundErrorبا افزودن متن طعناهآمیز به استثنا هنگامی که سوئیچ-Sارسال میشود. وصله توسط Andrea Mattei.gh-136801: رفع برجستهسازی نحو در PyREPL روی حالتهای match پس از حالت چندخطی. مشارکت از Olga Matoula.
gh-74185: تابع
__repr__()ازImportErrorوModuleNotFoundErrorاکنون «name» و «path» را به شکلname=<name>وpath=<path>نشان میدهد، اگر در زمان ساخت به عنوان آرگومان کلیدواژهای داده شده باشند. وصله توسط Serhiy Storchaka، Oleg Iarygin و Yoav Nir
کتابخانه¶
gh-116738: توابع موجود در
syslogرا روی ساخت نخبندی آزاد نخایمن کنید.gh-116738: توابع موجود در
pwdرا روی ساخت نخبندی آزاد نخایمن کنید.
هسته و توکارها (Core and Builtins)¶
gh-136616: بهبود پیامهای خطای
SyntaxErrorبرای استفادههای نامعتبرassert.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
gh-136541: رفع برخی مشکلات مربوط به ترامپولینهای perf در معماریهای x86-64 و aarch64. ترامپولینها برای برخی موارد به درستی تولید نمیشدند، که میتوانست منجر به کار نکردن صحیح یکپارچهسازی با perf شود. وصله توسط پابلو گالیندو (Pablo Galindo).
کتابخانه¶
gh-107545: بهبود پیامهای خطایی که ممکن است توسط
setsockopt()بالا آورده شوند.
هسته و توکارها (Core and Builtins)¶
gh-136517: رفع یک خطای نگارشی که مانع از چاپ اشیاء غیرقابلجمعآوری هنگامی که حالت
gc.DEBUG_UNCOLLECTABLEتنظیم شده بود، میشد.gh-136525: رفع مشکلی که در آن بایتکدِ مختصِ هر نخ برای نخهای تازه ایجاد شده ابزارگذاری (instrument) نمیشد.
gh-132657: بهبود کارایی
frozensetبا حذف قفلها در ساخت نخبندی آزاد.gh-136459: افزودن پشتیبانی از ترامپولین perf روی سیستمعامل macOS، تا به پروفایلگیرهایی که از نگاشت JIT پشتیبانی میکنند اجازه دهد فراخوانیهای پایتون را بخوانند. در حین پروفایلگیری، میتوان
PYTHONPERFSUPPORT=1را برای فعالسازی ترامپولین ضمیمه کرد.gh-132661: ویژگی
Interpolation.expressionاکنون دارای یک مقدار پیشفرض یعنی رشتهی خالی است.gh-132661: بازتاب تغییر اخیر PEP 750.
عدم اجازه برای الحاق
string.templatelib.Templateوstr. همچنین، عدم اجازه برای الحاق ضمنی مقادیر لفظی t-string با مقادیر لفظی string یا f-string.gh-91636: هنگام انجام زبالهروبی، ارجاعات ضعیف به اشیاء غیرقابلدسترسی که در طول اجرای نهاییسازها ایجاد شدهاند را پاکسازی کنید. اگر آن ارجاعات ضعیف پاکسازی نشوند، میتوانند اشیاء غیرقابلدسترسی را آشکار کنند.
gh-136355: منسوخ کردن گزینههای خط فرمان
-bو-bbو برنامهریزی برای تبدیل آنها به عملیات بیاثر در پایتون 3.17.gh-109700: رفع مدیریت خطای حافظه در
PyDict_SetDefault().gh-135552: رفع باگی که به دلیل پاکسازی زودهنگام ارجاعات ضعیف توسط زبالهروب ایجاد شده بود. ارجاعات ضعیف موجود در دیکشنری
tp_subclassesبرای نامعتبرسازی صحیح نهانگاههای نوع (برای مثال، با فراخوانیPyType_Modified()) مورد نیاز هستند. پاکسازی ارجاعات ضعیف پیش از فراخوانی نهاییسازها باعث میشود نهانگاهها به درستی نامعتبر نشوند. این موضوع میتواند باعث فروپاشی شود زیرا نهانگاهها میتوانند به اشیاء نامعتبر اشاره کنند. پاکسازی ارجاعات ضعیف بدون فراخوانیهای بازگشتی را تا پس از اجرای نهاییسازها به تعویق بیندازید.gh-136203: بهبود پیام خطای
TypeErrorهنگام مقایسهی غنی (richcomparing) دو شیءtypes.MappingProxyType.gh-136003: رفع تبدیل نادرست اشیاء
threading.Threadبه دِیمِن هنگامی که از یک فراخوانی بازگشتیatexitیا یک فراخوانی معلق (Py_AddPendingCall()) ایجاد میشوند.gh-78465: رفع پیام خطا برای
cls.__new__(cls, ...)در جایی کهclsیک نوع داخلی (builtin) یا افزایشیِ غیرقابلنمونهسازی است (باtp_newتنظیمشده رویNULL).gh-135904: انجام بهینهسازیهای جریان کنترلِ تهاجمیتر روی قالبهای کد ماشینی که توسط کامپایلر درجا (JIT) آزمایشی تولید میشوند.
gh-129958: تمایز بین t-stringها و f-stringها در خطای نحوی مربوط به نویسههای خط جدید (newlines) در مشخصکنندههای قالببندی رشتههای درونپاشیشدهی تکنقلقولی.
gh-135871: تلاشهای قفل متقابل غیرمسدودکننده اکنون به محض شلوغ بودن قفل، بهجای چرخش کوتاه در ساخت نخبندی آزاد، بلافاصله بازمیگردند.
gh-134584: تخصصیسازی
POP_TOPدر کامپایلر درجا (JIT) با اختصاصیسازی برای طول عمر ارجاع و نوع. این کار همچنین کش کردن بالای پشته را در کامپایلر درجا (JIT) آسانتر میکند.gh-135106: محدود کردن مکانیسم سطل آشغال به اشیای دارای مدیریت زبالهجمعکن (GC) و لغو پیگیری آنها هنگام حضور در سطل آشغال برای جلوگیری از تداخل بین مکانیسمهای زبالهجمعکن و سطل آشغال.
gh-135379: تغییر تخصصیسازی
BINARY_OPبرای اعداد صحیح به طوری که فقط برای اعداد صحیح «فشرده» تخصصیسازی انجام شود. این کار مسیر سریع را سادهتر میکند، به این قیمت که هنگام استفاده از اعداد صحیح بسیار بزرگ، تخصصیسازیهای کمتری انجام میشود.gh-135607: رفع رقابتهای بالقوه
weakrefدر مخرب یک شیء روی ساخت نخبندی آزاد.gh-135608: رفع یک خرابی در کامپایلر درجا (JIT) که مربوط به ویژگیهای ماژولها است.
gh-82088: بهبود کارایی عملکردهای تبدیل
PyLongObjectیعنیPyLong_AsLongAndOverflow()،PyLong_AsSsize_t()،PyLong_AsUnsignedLong()،PyLong_AsSize_t()،PyLong_AsUnsignedLongMask()،PyLong_AsUnsignedLongLongMask()،PyLong_AsLongLongAndOverflow()برای اعداد صحیح بزرگتر از 2**30 تا میزان ۳۰٪.gh-135551: مرتبسازی فهرستهای دارای ترتیب تصادفی اغلب کمی سریعتر اجرا خواهد شد، به لطف طرح جدیدی برای انتخاب حداقل طولهای اجرا از استفان پوخمان (Stefan Pochmann) که ترتیب میدهد درخت ادغام تا حد امکان به طور متوازن مرتب شود.
gh-135543: انتشار رویداد حسابرسی
sys.remote_execهنگامی کهsys.remote_exec()فراخوانی میشود و انتقالremote_debugger_scriptبهcpython.remote_debugger_script.gh-135496: رفع خطای تایپی در خطای نوع تبدیل افاسترینگ («exclamanation» -> «exclamation»).
gh-135474: تخصصیسازی عملیات اعداد صحیح فقط روی اعداد صحیح فشرده. این یک تغییر داخلی در سیپایتون است.
gh-135371: رفع ابزارهای اشکالزدایی
asyncioبرای نمایش صحیح پشتههای فراخوانی همروال داخلی در کنار وابستگیهای وظیفهی خارجی. دستوراتpython -m asyncio psوpython -m asyncio pstreeاکنون زمینه اجرای کامل را نشان میدهند. وصله توسط پابلو گالیندو (Pablo Galindo).gh-135422: رفع رگرسیون در پیامهای
SyntaxErrorپس از gh-134036.
کتابخانه¶
gh-116738: ایمنسازی توابع در
grpدر برابر نخها روی ساخت نخبندی آزاد.gh-127319: تنظیم متغیر کلاس
allow_reuse_portروی مقدارFalseدر سرورهای XMLRPC، logging و HTTP. این رفتار با نسخههای قبلی پایتون مطابقت دارد که اجازه استفاده مجدد از پورت را نمیدهند.
هسته و توکارها (Core and Builtins)¶
gh-130077: بالا آوردن صحیح خطای نحو سفارشی هنگام مواجهه با نحو نادرست حاوی نامهایی که پیشوند کلیدواژههای نرم هستند. وصله توسط پابلو گالیندو (Pablo Galindo).
gh-131798: بهینهسازی _CALL_LEN در کامپایلر درجا (JIT) هنگامی که طول مشخص است. وصله توسط توماس رون (Tomas Roun)
gh-131798: بهینهسازی
_UNARY_NEGATIVEدر کد کامپایلشدهی کامپایلر درجا (JIT).gh-135148: رفع باگی که در آن عبارات اشکالزدایی افاسترینگ (با استفاده از =) به طور نادرست بخشهایی از رشتههای حاوی نقلقولهای فرار شده و نویسههای # را حذف میکردند. وصله توسط پابلو گالیندو (Pablo Galindo).
gh-131798: بهینهسازی
_UNARY_INVERTدر کد کامپایلشدهی کامپایلر درجا (JIT).gh-131798: بهینهسازی و حذف
_CALL_TYPE_1در کامپایلر درجا (JIT) هنگامی که نوع بازگشتی مشخص است. وصله توسط توماس رون (Tomas Roun)gh-133136: محدود کردن مصرف حافظهی اضافی در ساخت نخبندی آزاد زمانی که یک دیکشنری یا فهرست بزرگ تغییر اندازه داده و توسط چندین نخ مورد دسترسی قرار میگیرد.
gh-131798: بهینهسازی
_CHECK_METHOD_VERSIONبه_CHECK_FUNCTION_VERSION_INLINEدر کد کامپایلشده با کامپایلر درجا (JIT).
کتابخانه¶
gh-116738: متدهای موجود در
heapqرا روی نسخهی نخبندی آزاد نخایمن (thread-safe) کنید.
هسته و توکارها (Core and Builtins)¶
gh-134280: غیرفعال کردن تاشدن ثابت (constant folding) برای
~با یک آرگومان بولی. این تغییر، هشدار منسوخشدن را از زمان کامپایل به زمان اجرا منتقل میکند.gh-134876: افزودن پشتیبانی از اشکالزدایی از راه دور PEP 768 برای هستههای لینوکس که CONFIG_CROSS_MEMORY_ATTACH در آنها پیکربندی نشده است.
gh-134889: اصلاح نحوهی مدیریت برخی از آپکدها که هنگام بهینهسازی
LOAD_FASTعملوندها را روی پشته باقی میگذارند.
کتابخانه¶
gh-134908: رفع فروپاشی هنگام پیمایش روی سطرها در یک پرونده متنی روی نسخهی رشتهبندی آزاد.
هسته و توکارها (Core and Builtins)¶
gh-132617: رفع بررسی تغییرات
dict.update()که ممکن بود به اشتباه خطای "dict mutated during update" را صادر کند، زمانی که دیکشنری متفاوتی تغییر کرده بود که اتفاقاً شیء کلید زیرین مشابهای را به اشتراک میگذارد.gh-131798: به کامپایلر درجا (JIT) اجازه دهید عملگرهای غیرضروری
_ITER_CHECK_TUPLEرا حذف کند.gh-134679: رفع خرابی در کد QSBR ساخت نخبندی آزاد که ممکن بود هنگام تغییر ویژگی
__dict__یک شیء رخ دهد.gh-133912: اصلاح تابع API زبان C یعنی
PyObject_GenericSetDictبرای مدیریت کلاسهای افزونه با مقادیر درونخطی.gh-131798: کاری کنید که بهینهساز کامپایلر درجا (JIT) بفهمد که برشزدن (slicing) یک رشته/فهرست/تاپل همان نوع را برمیگرداند.
gh-134584: افزودن مرحلهی حذف شمارندهی ارجاع به کامپایلر درجا (JIT). پچ توسط Ken Jin.
gh-131798: بهینهسازی
_POP_CALL_TWO_LOAD_CONST_INLINE_BORROW.
کتابخانه¶
gh-134381: رفع خطای
RuntimeErrorهنگام استفاده از یک کلاسthreading.Threadآغازنشده پس از فراخوانیos.fork()
هسته و توکارها (Core and Builtins)¶
gh-127960: پوستهی تعاملی PyREPL دیگر با نامهای سراسری
__package__و__file__که روی بخشهای داخلی بستهی_pyreplتنظیم شدهاند، شروع به کار نمیکند. مشارکت توسط Yuichiro Tachibana.gh-130397: حذف موارد خاص برای محدودیتهای عمق پشتهی C در WASI. به دلیل محافظت توکار پشته در WebAssembly، این موضوع نگرانی امنیتی ایجاد نمیکند.
gh-131798: کامپایلر درجا (JIT): جایگزینی
_LOAD_SMALL_INTبا_LOAD_CONST_INLINE_BORROWgh-131798: بهبود توانایی کامپایلر درجا (JIT) در بهینهسازی و حذف بارگذاریهای ویژگی و متد کلاسِ کششده.
gh-128066: یک حالت خاص را اصلاح میکند که در آن PyREPL هنگامی که پایتون روی یک سامانه فایلبندی فقطخواندنی اجرا میشود و تلاش میکند ورودیهای تاریخچهی پرونده را بنویسد، به اشتباه خطایی پرتاب میکرد.
gh-131798: توانایی کامپایلر درجا (JIT) را در محدود کردن کلاسهای ناشناخته به مقادیر ثابت بهبود ببخشید.
gh-134268: تابع
_POP_CALL_TWO_LOAD_CONST_INLINE_BORROWرا اضافه کرده و از آن برای بهینهسازی بیشترCALL_ISINSTANCEاستفاده کنید.gh-131798: دستور
CALL_LIST_APPENDرا به چندین ریزعمل (uop) تقسیم کنید. این وصله توسط Diego Russo تهیه شده است.gh-69605: هنگام تکمیل خودکار یک ایمپورت در پوسته تعاملی پایتون، اگر نامزدی پیدا نشود، به جای پیشنهاد دادن از فضای نام فعلی، هیچ پیشنهادی ارائه نمیشود.
gh-134170: رنگبندی را بهطور پیشفرض به
sys.unraisablehook()اضافه کنید.gh-91153: فروپاشی ناشی از تغییر همزمان یک
bytearrayدر حین انتساب آیتم را برطرف کنید.gh-134158: رنگبندی براکتهای دوتایی در افاسترینگها و تیاسترینگها در پوسته تعاملی پایتون را اصلاح کنید.
gh-134119: فروپاشی رخداده هنگام فراخوانی
next()روی یک پیمایشگر رشتهی قالب تمامشده را برطرف کنید. این وصله توسط Jelle Zijlstra تهیه شده است.gh-134100: یک خطای استفاده پس از آزادساختن را که وقتی یک ماژول ایمپورتشده پس از ایمپورت اولیه در
sys.modulesقرار ندارد رخ میدهد، برطرف کنید. این وصله توسط Nico-Posada تهیه شده است.gh-134036: پیام
SyntaxErrorرا هنگام استفاده از دستوراتraiseنامعتبر بهبود ببخشید.gh-133999: رگرسیون
SyntaxErrorرا در تجزیه کردنexceptپس از gh-123440 برطرف کنید.gh-133886: تابع
sys.remote_exec()را برای مسیرهای غیر ASCII در محلیهای غیر UTF-8 و مسیرهای غیر UTF-8 در محلیهای UTF-8 اصلاح کنید.gh-133400: رفتار Ctrl+D (^D) را در ماژول _pyrepl اصلاح کنید تا با رفتار قدیمی REPL پیش از نسخهی ۳.۱۳ مطابقت داشته باشد.
gh-133703: اصلاح این مشکل که جدول هش در dict میتواند در برخی شرایط بزرگتر از حد مورد نظر باشد.
gh-133778: باگ مربوط به اینکه انتساب به ویژگیهای
__annotations__کلاسهای تعریفشده تحتfrom __future__ import annotationsهیچ تأثیری نداشت، برطرف شد.gh-133711: پیادهسازی PEP 686: فعالسازی حالت UTF-8 پایتون بهطور پیشفرض. این وصله توسط Adam Turner تهیه شده است.
gh-132762: تابع
fromkeys()دیگر هنگام اضافه کردن مجموعهای کوچک از کلیدها به یک dict پایهی بزرگ، در حلقه نمیفتد. این وصله توسط Angela Liss تهیه شده است.gh-133541: تورفتگی ناسازگار در ورودی کاربر باعث فروپاشی REPL جدید در زمان فعال بودن برجستهسازی نحوی میشد. این مورد اکنون برطرف شده است.
gh-133516: هنگامی که ثابتهای
True،FalseیاNoneپس از نرمالسازی NFKC به عنوان شناسه استفاده شوند،ValueErrorپرتاب کنید.gh-131798: به کامپایلر درجا (JIT) اجازه دهید تا نگهبانهای int را پس از
_GET_LENبا تنظیم نوع بازگشتی به int حذف کند.gh-131798: دستور
CALL_ISINSTANCEرا به چند ریزعمل (uop) تقسیم کنید تا به کامپایلر درجا (JIT) اجازه داده شود برخی از آنها را حذف کند.gh-132554: تغییر پیمایش برای استفاده از «پیمایشگرهای مجازی» برای دنبالهها. بهجای ایجاد یک پیمایشگر، یک عدد صحیح برچسبگذاریشده که نمایانگر اندیس بعدی است، به پشته بالای شیء پیمایشپذیر فرانشانده میشود. برای پیمایشگرهای غیردنبالهای،
NULLفرانشانده میشود.gh-130821: پیامهای خطای نوع نادرست را بهبود ببخشید و آنها را سازگارتر کنید. وصله توسط Semyon Moroz.
gh-131798: نوع بازگشتی را محدود کنید و
CALL_ISINSTANCEرا برای زیرمجموعهای از مقادیر شناختهشده در کامپایلر درجا (JIT) ارزیابی ثابت (constant-evaluate) کنید. وصله توسط Tomas Roungh-132542: برای اطمینان از صحت، ویژگی
Thread.native_idرا پس از fork(2) بهروزرسانی کنید. وصله توسط Noam Cohen.
کتابخانه¶
gh-132732: عملیات بایتکد مشخصشده به عنوان خالص را بهطور خودکار در بهینهساز کامپایلر درجا (JIT) ارزیابی ثابت کنید.
هسته و توکارها (Core and Builtins)¶
gh-127971: مشکل خواندن خارج از محدوده (off-by-one) در انتهای یک رشته طی جستجوی رشته را برطرف کنید.
gh-132042: با پیشمحاسبهی جایگاههای نوع فقط برای یک بار، زمان ایجاد کلاس را تا ۱۲ درصد بهبود ببخشید. وصله توسط Sergey Miryanov.
gh-133379: نحوهی استفاده از آرگومانها را در پیامهای خطا اصلاح کنید.
gh-127266: در ساخت نخآزاد، از رقابتهای دادهای ناشی از بهروزرسانی جایگاههای نوع یا پرچمهای نوع پس از ایجاد اولیهی نوع جلوگیری کنید. برای آن دسته از موارد (معمولاً نادر)، از مکانیزم توقف جهان (stop-the-world) استفاده کنید. استفاده از اتمیکها را هنگام خواندن یا نوشتن پرچمهای نوع حذف کنید. استفاده از اتمیکها برای جلوگیری از رقابتها کافی نیست (زیرا پرچمها گاهی بدون قفل و بدون اتمیک خوانده میشوند) و دیگر مورد نیاز نیستند.
gh-130425: هنگامی که از
del obj.attrاستفاده میکنید، اگرattrوجود نداشته باشد، پیشنهاد"Did you mean: 'attr'?"را اضافه کنید.gh-128640: رفع یک فروپاشی هنگام استفاده از نخها در داخل یک زیرتفسیرگر.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
gh-119494: متن استثنا هنگام تلاش برای حذف ویژگیهای انواع شفافسازی شد.
رابط C API¶
gh-139924: ناظران تابع اکنون میتوانند رویدادی از نوع PyFunction_PYFUNC_EVENT_MODIFY_QUALNAME دریافت کنند هنگامی که نام کامل (qualname) یک تابع تحت نظارت تغییر میکند.
gh-111489: تابع
PyTuple_FromArray()را برای ایجاد یکtupleاز یک آرایه اضافه کنید. وصله توسط Victor Stinner.gh-136355: فیلد
PyConfig.bytes_warningرا منسوخ کرده و حذف آن را در نسخهی ۳.۱۷ برنامهریزی کنید.gh-138886: تابع منسوخشدهی API زبان C به نام
PySys_ResetWarnOptions()را حذف کنید.gh-129813: استاندارد PEP 782 یعنی API مربوط به
PyBytesWriterرا پیادهسازی کنید. توابع زیر را اضافه کنید:توسط Victor Stinner وصل شد.
gh-137956: اگر افزونهای که برای نسخهی نخآزاد (free-threaded) پایتون کامپایل شده است در یک مفسر نخآزاد بارگذاری شود، یک استثنا نمایش داده شده و بالا آورده میشود.
gh-137573: نشانهگذاری
_PyOptimizer_Optimizeبه عنوانPy_NO_INLINEبرای جلوگیری از فروپاشیهای ناشی از سرریز پشته در سیستمعامل macOS.gh-128813: توابع
_Py_c_sum()،_Py_c_diff()،_Py_c_neg()،_Py_c_prod()،_Py_c_quot()،_Py_c_pow()و تابع پیشتر مستندنشدهی_Py_c_abs()منسوخ میشوند. همچنین فیلدcvalاز نوعPyComplexObjectمنسوخ میشود. اصلاحیه از Sergey B Kirpichev.gh-137210: افزودن API برای بررسی سازگاری ABI ماژول توسعهای:
Py_mod_abi،PyABIInfo_Check()،PyABIInfo_VARوPy_mod_abi.gh-136759: تغییر نام
lock.hبهpylock.hبرای جلوگیری از تداخلهای احتمالی در includeها.gh-112068: بازگردانی پشتیبانی از آرگومانهای با قابلیت مقدار تهی (nullable) در
PyArg_Parse().gh-136006: روی سیستمعامل Solaris، ماکروی
Py_NANاکنون به جای آدرس یک تابع، به یکdoubleگسترش مییابد. اصلاحیه از Bénédikt Tran.gh-135075: توابع
PyObject_SetAttr()وPyObject_SetAttrString()را در صورت فراخوانی با مقدارNULLو یک استثنای تنظیمشده، با خطا مواجه کنید. اصلاحیه از Victor Stinner.gh-135906: اصلاح خطاهای کامپایل هنگام کامپایل کردن سرآیندهای داخلی با یک کامپایلر C++.
gh-133296: انواع جدیدی برای API بخش بحرانی که یک یا دو اشارهگر
PyMutexرا بهجای نمونههایPyObjectمیپذیرند، اکنون در API غیرمحدود C عمومی هستند.gh-133157: حذف ماکروی خصوصی و مستندنشدهی
_Py_NO_SANITIZE_UNDEFINED.gh-134989: اصلاح ماکروهای
Py_RETURN_NONE،Py_RETURN_TRUEوPy_RETURN_FALSEدر API محدود C نسخهی ۳.۱۱ و قدیمیتر:Py_None،Py_TrueوPy_Falseرا به عنوان نامیرا در نظر نگیرید. وصله توسط Victor Stinner.gh-134989: پیادهسازی
PyObject_DelAttr()وPyObject_DelAttrString()به صورت ماکرو در API محدود C نسخهی ۳.۱۲ و قدیمیتر. وصله توسط Victor Stinner.gh-134745: تغییر پیادهسازی
PyThread_allocate_lock()بهPyMutex. در ویندوز،PyThread_acquire_lock_timed()اکنون از پارامتر intr_flag پشتیبانی میکند: این پارامتر میتواند متوقف شود. وصله توسط Victor Stinner.gh-134891: افزودن
PyUnstable_Unicode_GET_CACHED_HASHبرای دریافت هشِ کششدهی یک رشته.gh-134009: عرضهی
PyMutex_IsLocked()به عنوان بخشی از API عمومی C.gh-134144: اصلاح فروپاشی هنگام فراخوانی
Py_EndInterpreter()با یک وضعیت نخ که نخ اولیهی مفسر نیست.gh-133968: افزودن تابع
PyUnicodeWriter_WriteASCII()برای نوشتن یک رشتهی اسکی داخل یکPyUnicodeWriter. این تابع سریعتر ازPyUnicodeWriter_WriteUTF8()است، اما اگر رشتهی ورودی شامل نویسههای غیر اسکی باشد، رفتاری تعریفنشده دارد. وصله توسط Victor Stinner.gh-133644: حذف توابع getter مقداردهی اولیهی منسوخشدهی پایتون
Py_Get*. وصله توسط Bénédikt Tran.gh-133644: حذف تابع منسوخشدهی
PyWeakref_GetObject()و ماکرویPyWeakref_GET_OBJECT. به جای آن ازPyWeakref_GetRef()استفاده کنید. وصله توسط Bénédikt Tran.gh-133644: حذف نام مستعار منسوخشدهی
PyImport_ImportModuleNoBlock()برایPyImport_ImportModule(). وصله توسط Bénédikt Tran.gh-133610: حذف توابع منسوخشدهی
PyUnicode_AsDecodedObject()،PyUnicode_AsDecodedUnicode()،PyUnicode_AsEncodedObject()وPyUnicode_AsEncodedUnicode().gh-132629: برای قالبهای اعداد صحیح بدون علامت در
PyArg_ParseTuple()، پذیرش اعداد صحیح پایتون با مقداری که بزرگتر از حداکثر مقدار برای نوع C یا کوچکتر از حداقل مقدار برای نوع عدد صحیح علامتدار متناظر با همان اندازه باشد، اکنون منسوخ شده است.gh-131185: تابع
PyGILState_Ensure()دیگر پس از نهاییسازی مفسر دچار فروپاشی نمیشود.gh-108512: افزودن توابع
PySys_GetAttr()،PySys_GetAttrString()،PySys_GetOptionalAttr()وPySys_GetOptionalAttrString().
ساخت¶
gh-138489: هنگام کامپایل متقابل برای WASI توسط
build_wasmیاbuild_emscripten، مرحلهیbuild-details.jsonاکنون درست مانند ساختهای بومی، در فرایند ساخت گنجانده میشود.این کار وظیفهی
libinstallرا که در طول فرایند به پروندهیbuild-details.jsonنیاز دارد، اصلاح میکند.gh-138497: نسخهی LLVM مورد استفاده توسط کامپایلر درجا (JIT) در زمان ساخت اکنون میتواند با استفاده از متغیر محیطی
LLVM_VERSIONتغییر یابد. از این کار با مسئولیت خودتان استفاده کنید، زیرا تنها یک نسخهی LLVM به طور رسمی پشتیبانی میشود. برای اطلاعات بیشتر، لطفاًTools/jit/README.mdرا بررسی کنید.gh-95952: هنگام کامپایل متقاطع برای WASI، الزام کنید که متغیر محیطی HOSTRUNNER به طور صریح تنظیم شود.
این کار لازم بود چون macOS ابزارهای CLI مناسبی برای تعیین یک پیشفرض منطقی ندارد.
gh-138061: با قطعی کردن تولید سرآیند استنسیل JIT، از ساختهای تکرارپذیر اطمینان حاصل کنید.
gh-128042:
./configureاکنون زمانی که--enable-optimizationsوCFLAGS=-O0هر دو تنظیم شده باشند هشدار میدهد و پیشنهاد میکند برای عملکرد بهینه،-O0ازCFLAGSحذف شود. وصلهای از Taegyun Kim.gh-132339: افزودن پشتیبانی از OpenSSL 3.5.
gh-135621: کتابخانهی استاندارد PyREPL دیگر به ماژول
cursesوابسته نیست. مشارکت از Łukasz Langa.gh-135927: رفع مشکل ساخت با MSVC هنگام ارسال گزینهی
/std:clatest.gh-119132: حذف برچسب «آزمایشی» از ساخت چندنخی آزاد سیپایتون.
gh-135497: رفع تشخیص
MAXLOGNAMEدر اسکریپتconfigure.ac.gh-134923: ساختهای ویندوز با بهینهسازی هدایتشده با پروفایل فعال، اکنون به جای گزینههای منسوخ
/LTCG:از/GENPROFILEو/USEPROFILEاستفاده میکنند.gh-134632: تولید
build-details.jsonاصلاح شد تا برای ارجاع به زیرپوشهیpythonX.Yاز پوشهی include، طبق الزامات PEP 739 و به جای پوشهی include سطح بالا، ازINCLUDEPYاستفاده کند.gh-134486: ماژول
ctypesاکنون آزمونی قابلحملتر برای تعریف alloca(3) انجام میدهد و خطای کامپایل روی NetBSD را برطرف میکند.gh-134455: تولید
build-details.jsonاصلاح شد تا به جایc_api.include، ازc_api.headersصحیح تعریفشده در PEP 739 استفاده کند.gh-134273: افزودن پشتیبانی برای پیکربندی پرچمهای کامپایلر برای کامپایلر درجا (JIT) با
CFLAGS_JITgh-115119: بازگشت ضمنی به نسخهی بستهبندیشدهی کتابخانهی
libmpdecحذف شد. اکنون این مورد باید به طور صریح از طریق--with-system-libmpdecتنظیمشده رویnoیا--without-system-libmpdecفعال شود. وصلهای از Sergey B Kirpichev.gh-131769: رفع مشکل تشخیص اینکه آیا پایتونِ ساخت در یک ساخت متقاطع، یک ساخت pydebug است یا خیر.
gh-117088: پیونددهندهی AIX از گزینهی -h پشتیبانی نمیکند، بنابراین از طریق بررسی پلتفرم از آن اجتناب کنید
gh-123681: رفتار
strftime()را به جای زمان کامپایل، در زمان اجرا (رانتایم) بررسی کنید تا از کامپایل متقاطع پشتیبانی شود. ماکرو داخلی_Py_NORMALIZE_CENTURYرا حذف کنید.gh-127545: رفع خرابی هنگام ساخت روی Linux/m68k.
Python 3.14.0 beta 1¶
تاریخ انتشار: ۲۰۲۵-۰۵-۰۶
Windows¶
gh-132930: نصبکنندهی ویندوز را منسوخ اعلام میکند و مستندات را برای پوشش مدیر نصب جدید پایتون بهروزرسانی میکند.
gh-127405: اضافه کردن
ABIFLAGSبهsysconfig.get_config_vars()در ویندوز. وصله توسط Xuehai Pan.
Tools/Demos¶
آزمونها¶
gh-133131: بستر آزمون iOS اکنون جدیدترین دستگاه «SE-class» منتشرشده را برای آزمون انتخاب میکند، اگر دستگاهی بهصراحت مشخص نشده باشد.
gh-91048: امکان بررسی خارجی تمام وظایف معلق asyncio، حتی اگر هیچ وظیفهای در حال حاضر روی حلقه رویداد وارد نشده باشد را اضافه میکند.
gh-109981: کمکی آزمونی که فهرست توصیفگرهای پروندهی باز را میشمارد، اکنون از رویکرد بهینهشدهی
/dev/fdدر تمام پلتفرمهای اپل، و نه فقط macOS، استفاده میکند. این کار از خرابیهای ناشی از توصیفگرهای پروندهی محافظتشده جلوگیری میکند.gh-132678: افزودن
--prioritizeبه-m test. این گزینه به شما اجازه میدهد مشخص کنید کدام آزمونهای انتخابشده باید ابتدا اجرا شوند، حتی اگر ترتیب در غیر این صورت تصادفی شده باشد. این امر بهویژه برای آزمونهایی که طولانیترین زمان اجرا را دارند مفید است.gh-131290: آزمونها در
Lib/testاکنون میتوانند به درستی به عنوان اسکریپتهای مستقل اجرا شوند.
امنیت¶
gh-115322: ماژولهای توسعهای زیرین در پشت
readline،subprocessوctypesاکنون رویدادهای حسابرسی را در مسیرهای کد که قبلاً پوشش داده نشده بودند و میتوانند به دسترسی به سیستم پرونده مرتبط با فراخوانی تابع C و اجرای باینری خارجی منجر شوند، ایجاد میکنند. قلاب حسابرسیctypes.call_functionنیز اصلاح شده است تا از یک مقدار بدون علامت برایfunction pointerخود استفاده کند.
کتابخانه¶
gh-133490: افزودن پشتیبانی از رنگ به PDB در حالت راه دور.
gh-132493: جلوگیری از ارزیابی مشتاقانهی حاشیهنویسیها در توابع تزئینشده با
reprlib.recursive_repr().gh-130645: افزودن رنگ به رابطهای خط فرمان argparse در کتابخانه استاندارد. وصله توسط Hugo van Kemenade.
gh-119180: موفقیتآمیز کردن
annotationlib.get_annotations()با قالبFORWARDREFاگر ارزیابی حاشیهنویسیها استثنایی غیر ازNameErrorیاAttributeErrorپرتاب کند.gh-133351: اصلاح PDB راه دور برای درخواست صحیح تکمیلهای تب برای عبارتهای پایتون از سرور هنگام تکمیل یک سطر ادامهی یک بلوک چندخطی پایتون.
gh-133367: افزودن گزینههای
--feature-version،--optimizeو--show-emptyبه رابط خط فرمانast. وصله توسط Semyon Moroz.gh-133363: کلاس
cmd.Cmdاصلاح شده است تا هر زمان که متدdo_shellتعریف نشده باشد و تکمیل تب برای سطری که با!شروع میشود درخواست شود، متدcompletedefaultرا با اطمینان فراخوانی کند.gh-133306: استفاده از
\zبهجای\Zدرfnmatch.translate()وglob.translate().gh-133306: پشتیبانی از
\zبه عنوان مترادفی برای\Zدرعبارات منظم.gh-133300: پارامتر
suggest_on_errorکلاسargparse.ArgumentParserرا به یک پارامتر فقط-کلیدواژه (keyword-only) تبدیل کنید. وصله از Hugo van Kemenade.gh-133290: رفع مشکل کش کردن ویژگیها هنگام تنظیم
ctypes._Pointer._type_در تابع مستندنشده و منسوخctypes.SetPointerType()و متد مستندنشدهset_type().gh-133223: هنگامی که PDB به یک فرایند دوردست متصل است، عملیات رهگیری Ctrl+C و ارسال آن به فرایند دوردست را به شکل بهتری انجام دهید.
gh-133153: دستورات
pdbرا در حالت (mode)interactازpdbتکمیل نکنید.gh-133139: افزودن تابع
curses.assume_default_colors()، که نسخهی بهبودیافتهای از تابعcurses.use_default_colors()است و امکان تغییر جفت رنگ0را فراهم میکند.gh-133089: استفاده از مقدار مهلت زمانی اصلی برای
subprocess.TimeoutExpiredهنگامی که تابعsubprocess.run()با یک مهلت زمانی فراخوانی میشود، بهجای استفادهی گاهبهگاه از مقدار باقیماندهی جزئی گیجکنندهای که بهصورت داخلی درwait()نهایی استفاده میشد.gh-133036: تابع
codecs.open()اکنون منسوخ شده است. بهجای آن ازopen()استفاده کنید. مشارکت از Inada Naoki.gh-132987: بسیاری از توابع داخلی و افزونه که یک آرگومان عدد صحیح بدون علامت را میپذیرند، اکنون در صورت موجود بودن از
__index__()استفاده میکنند.gh-124703: هنگام لغو فرایند از
pdb، کد بازگشتی را روی1تنظیم کنید.gh-133005: پشتیبانی از ارسال گزینهی
presetبهtarfile.open()هنگام استفاده از حالت'w|xz'.gh-115032: پشتیبانی از هندلرهای گزارشگیری سفارشی با آرگومان strm منسوخ شده است و طبق برنامهریزی در پایتون ۳.۱۶ حذف خواهد شد. بهجای آن هندلرها را با آرگومان stream تعریف کنید. تکه کد (patch) توسط Mariusz Felisiak.
gh-132991: افزودن ثابت
socket.IP_FREEBINDروی لینوکس ۲.۴ و نسخههای جدیدتر.gh-132995: ارتقای نسخهی pip بستهبندیشده در ensurepip به نسخهی 25.1.1
gh-132933: ماژول zipapp اکنون فیلتر را هنگام ایجاد فهرست پروندههای قابل افزودن اعمال میکند، نه اینکه تا زمان افزوده شدن پرونده به آرشیو صبر کند.
gh-121249: پشتیبانی همیشگی از انواعی C نظیر float complex و double complex در ماژول
struct. تکه کد (patch) توسط Sergey B Kirpichev.gh-132915: توابع
fcntl.fcntl()وfcntl.ioctl()اکنون میتوانند سرریز بافر (buffer overflow) را تشخیص داده و استثنایSystemErrorرا بالا بیاورند. در چنین مواردی ممکن است پشته و حافظه خراب شوند، بنابراین این خطا را مهلک تلقی کنید.gh-132017: رفع خطا هنگامی که ماژول
pyreplمعلق (suspended) شده، سپس از سر گرفته شده و خاتمه مییابد.gh-132893: بهبود دقت
statistics.NormalDist.cdf()برای ورودیهای کوچکتر از میانگین.gh-130328: افزایش سرعت جایگذاری (pasting) در
PyREPLروی ویندوز. اصلاح توسط Chris Eibl.gh-132882: اصلاح کپی کردن اشیای
typing.Unionکه حاوی اشیایی هستند که از عملگر|پشتیبانی نمیکنند.gh-93696: اصلاح خطای نمایش نقطهی توقف (breakpoint) برای ماژولهای فریزشده در
pdb.gh-129965: افزودن انواع MIME برای
.7z،.apk،.deb،.glb،.gltf،.gz،.m4v،.php،.rar،.rpm،.stlو.wmv. وصلهای از Hugo van Kemenade.gh-132742: تابع
fcntl.fcntl()اکنون از اشیای شبهبایت دلخواه، و نه فقطbytes، پشتیبانی میکند. تابعfcntl.ioctl()اکنون بهطور خودکار فرایندهای سیستمی را که با EINTR با خطا مواجه میشوند مجدداً تلاش میکند و GIL را در طول فراخوانی سیستمی حتی برای اشیای شبهبایت بزرگ آزاد میکند.gh-132451: رابط خط فرمان (CLI) برای دیباگر PDB اکنون آرگومان
-p PIDرا برای امکان اتصال به یک فرایند در حال اجرا میپذیرد. فرایند باید همان نسخهی پایتون در حال اجرا را داشته باشد که PDB روی آن اجرا میشود.gh-125618: افزودن پارامتر format به متد
annotationlib.ForwardRef.evaluate(). ارزیابی حاشیهنویسیها در قالبFORWARDREFاکنون در موارد بیشتری که پیشتر باعث بروز استثنا میشدند، با موفقیت انجام میشود.gh-132805: اصلاح پردازش نادرست مقادیر غیرثابت تو در تو در قالب FORWARDREF در ماژول
annotationlib.gh-132734: افزودن ثابتهای جدید برای سوکتهای بلوتوث در ماژول
sockets.gh-132673: اصلاح خطای
AssertionErrorکه هنگام استفاده ازctypes.Structureبا_align_ = 0و_fields_ = []رخ میداد.gh-132578: تغییر نام فیلد
threading.Thread._handleبرای جلوگیری از پوشاندن متدهای تعریفشده در زیرکلاسهایthreading.Thread.gh-132561: اصلاح متد عمومی
lockedدر کلاسmultiprocessing.SemLock. همچنین افزودن ۲ آزمون برای کلاسهای مشتقشدهیmultiprocessing.Lockوmultiprocessing.RLock.gh-121468: افزودن تابع
pdb.set_trace_async()برای پشتیبانی از دستوراتawaitدرpdb.gh-132493: کلاس
typing.Protocolاکنون هنگام بررسی این موضوع که آیا یک نمونه پروتکل را پیادهسازی میکند یا خیر، ازannotationlib.get_annotations()باisinstance()استفاده میکند. این کار پشتیبانی از بررسیهایisinstanceرا در برابر کلاسهای دارای حاشیهنویسیهای معوق فراهم میکند.gh-132536: رویداد
PY_THROWرا در ماژولbdbغیرفعال نکنید، زیرا امکان غیرفعال کردن آن وجود ندارد.gh-132527: گنجاندن کد نوع (typecode) معتبر 'w' در پیام خطا زمانی که یک کد نوع نامعتبر به
array.arrayارسال میشود.gh-132099: سوکت بلوتوث با پروتکل
BTPROTO_HCIروی لینوکس اکنون آدرسی را در قالب یک عدد صحیحdevice_idمیپذیرد، و نه فقط یک تاپل(device_id,).gh-81793: اصلاح
os.link()روی پلتفرمهایی (مانند لینوکس) که تابع سیستمیlink()از پیوندهای نمادین پیروی نمیکند. روی لینوکس، اکنون بهطور پیشفرض یا در صورت مشخص شدنfollow_symlinks=Trueاز پیوندهای نمادین پیروی میکند. روی ویندوز، اگرfollow_symlinks=Trueارسال شود، اکنون یک خطا ایجاد میکند. روی macOS، اگرfollow_symlinks=Falseارسال شود و تابع سیستمیlinkat()در زمان اجرای برنامه در دسترس نباشد، اکنون خطا ایجاد میکند.gh-132493: پشتیبانی از ایجاد کلاسهای
typing.Protocolبا حاشیهنویسیهایی که نمیتوانند در زمان ایجاد کلاس حلوفصل شوند.gh-132491: تغییر نام
annotationlib.value_to_stringبهannotationlib.type_repr()و ارائهی مدیریت بهتر برای اشیای تابع.gh-132426: افزودن
annotationlib.get_annotate_from_class_namespace()به عنوان یک کمکی برای دسترسی به حاشیهنویسیها در فراکلاسها، و حذفannotationlib.get_annotate_function.gh-70145: افزودن پشتیبانی از کانالها در پروتکل Bluetooth HCI (
BTPROTO_HCI).gh-131913: افزودن تابع میانبر
multiprocessing.Process.interrupt()در کنار توابع موجودmultiprocessing.Process.terminate()وmultiprocessing.Process.kill()برای کنترل بهتر روی پایان فرایند فرزند.gh-132439: رفع مشکل
PyREPLدر ویندوز: نویسههای واردشده از طریق AltGr بلعیده میشوند. وصله توسط Chris Eibl.gh-132429: رفع پشتیبانی سوکتهای بلوتوث در NetBSD و DragonFly BSD. افزودن پشتیبانی برای cid و bdaddr_type در آدرس BTPROTO_L2CAP روی FreeBSD. برگرداندن cid در
getsockname()برای BTPROTO_L2CAP اگر صفر نباشد.gh-132106: متد
QueueListener.startاکنون اگر شنونده از قبل شروع شده باشد، یکRuntimeErrorبالا میآورد.gh-132417: رفع خطای ارجاع به اشارهگر
NULLهنگامی که یک تابع C فراخوانیشده با استفاده ازctypesباrestypeاز نوعpy_objectمقدارNULLبرمیگرداند.gh-132385: رفع پیشنهادهای خطای نمونه که باعث ایجاد استثناهای بالقوه در
object.__getattr__()درtracebackمیشوند.gh-125866: افزودن آرگومان اختیاری add_scheme به
urllib.request.pathname2url()؛ هنگامی که روی درست تنظیم شود، یک URL کامل برگردانده میشود. به همین ترتیب، افزودن آرگومان اختیاری require_scheme بهurl2pathname()؛ هنگامی که روی درست تنظیم شود، یک URL کامل پذیرفته میشود.gh-132308: کلاس
traceback.TracebackExceptionاکنون ویژگیهای__context__و__cause__را از falseyExceptionو ویژگیexceptionsرا ازExceptionGroupنادرست به درستی رندر میکند.gh-130645: افزودن رنگ به خروجی راهنمای
argparse. وصله توسط Hugo van Kemenade.gh-127495: در PyREPL، یک ورودی جدید پس از هر دستور به پروندهی
PYTHON_HISTORYاضافه کنید. این کار باید تاریخچهی خط فرمان را پس از پایان یافتن مفسر حفظ کند. وصله توسط Sergey B Kirpichev.gh-129463: مقایسهی شیءهای
annotationlib.ForwardRefدیگر از ویژگیهای داخلی__code__و__ast_node__که به عنوان نهانگاه استفاده میشوند، استفاده نمیکند.gh-132250: رفع
SystemErrorدرcProfileهنگامی که پیدا کردن تابع واقعی C یک متد، استثنایی را ایجاد میکند.gh-132064: تابع
annotationlib.get_annotations()اکنون در صورت وجود ویژگی__annotate__از آن استفاده میکند، حتی اگر__annotations__وجود نداشته باشد. علاوه بر این، این تابع اکنون اگر شیءای بدون هیچگونه حاشیهنویسی به آن ارسال شود، یکTypeErrorبالا میآورد.gh-130664: پشتیبانی از جداکنندهی رقم
'_'در قالببندی بخش صحیح ازDecimal. وصله توسط Sergey B Kirpichev.gh-131952: افزودن خروجی رنگی به رابط خط فرمان json. وصله توسط Tomas Roun.
gh-132063: جلوگیری از نادیده گرفته شدن استثناهایی که به عنوان نادرست ارزیابی میشوند (یعنی زمانی که متد
__bool__آنهاFalseبرمیگرداند یا متد__len__آنها مقدار 0 را برمیگرداند) توسطconcurrent.futures.ProcessPoolExecutorوconcurrent.futures.ThreadPoolExecutor.gh-132106: کلاس
logging.handlers.QueueListenerاکنون پروتکل مدیر زمینه را پیادهسازی میکند و به آن اجازه میدهد در یک دستورwithاستفاده شود.gh-132054: نوع MIME به نام
application/yaml(نسخهی RFC 9512) اکنون توسطmimetypesپشتیبانی میشود. وصله توسط Sasha "Nelie" Chernykh و Hugo van Kemenade.gh-119605: هنگام دریافت امضای کلاس برای کلاسی با
inspect.signature()، پارامترfollow_wrappedرا برای متدهای__init__()و__new__()رعایت کنید. امضای کلاس را پس از پیچیدن باwarnings.deprecated()حفظ کنید. وصلهی ارائه شده توسط Xuehai Pan.gh-118761: زمانهای ایمپورت برای ماژول
shlexرا تا ۳۳ برابر بهبود دهید و کاراییshlex.quote()را تا ۱۲ برابر بهبود ببخشید. وصلهی ارائه شده توسط Adam Turner.gh-85302: پشتیبانی از
BTPROTO_SCOرا در سوکتها روی FreeBSD اضافه کنید.gh-131757: تابع
functools.lru_cache()را وادار کنید که تابع کششده را به صورت قفلنشده فراخوانی کند تا همروندی امکانپذیر شود.gh-131423: ماژول
sslمیتواند توضیحات خطاهای اضافه شده در OpenSSL 3.4.1 را نشان دهد. وصلهی ارائه شده توسط Bénédikt Tran.gh-131434: گزارش خطا را برای قالب نادرست در
time.strptime()بهبود دهید.gh-131524: پیام راهنما را به رابط خط فرمان
platformاضافه کنید. مشارکت توسط Harry Lees.gh-100926: نهانگاه انواع
ctypes.POINTER()را از یک نهانگاه داخلی سراسری (_pointer_type_cache) به ویژگیctypes._CData.__pointer_type__از انواع متناظرctypesمنتقل کنید. این کار مانع از رشد بیرویهی نهانگاه در برخی شرایط میشود.gh-85702: اگر به
zoneinfo._common.load_tzdataبستهای بدون منبع داده شود، بهجایIsADirectoryErrorخطایZoneInfoNotFoundErrorبالا آورده میشود.gh-123471: پیمایشهای همزمان روی
itertools.repeatرا تحت موضوعبندی آزاد (free-threading) ایمن کنید.gh-131127: سامانههایی که از LibreSSL استفاده میکنند اکنون با موفقیت ساخته میشوند.
gh-89157: پیادهسازی پایتون خالص
datetime.date.fromisoformat()را به گونهای تغییر دهید که برای سازگاری با پیادهسازی C، فقط رشتههای ASCII را بپذیرد.gh-130941: رفع مشکل تجزیه کردن درونیابی خالی در
configparser.ConfigParserهنگامی کهallow_no_valueرویTrueتنظیم شده است.gh-110067: توابع هیپ بیشینهی
heapqیعنیheapq.heapify_max()،heapq.heappush_max()،heapq.heappop_max()وheapq.heapreplace_max()را عمومی کنید. نامگذاری زیرخطدار قبلی برای سازگاری با نسخههای قبلی حفظ شده است. علاوه بر این، تابع مفقودشدهیheapq.heappushpop_max()به هر دو پیادهسازی C و پایتون اضافه شده است.gh-129098: رفع گزارشدهی ردگیری در REPL هنگام استفاده از
compile()با یک پروندهی ناموجود. وصله توسط Bénédikt Tran.gh-130631: تابع
http.cookiejar.join_header_words()اکنون شباهت بیشتری به نسخهی اصلی پرل (Perl) پیدا کرده است. این تابع اکنون همان مجموعه از نویسهها را نقلقول میکند و همیشه مقادیری را که با"\n"تمام میشوند، در نقلقول قرار میدهد.gh-130482: امکان مشخص کردن نام برای
tkinter.OptionMenuوtkinter.ttk.OptionMenuاضافه شد.gh-77065: آرگومان اختیاری فقط-کلیدواژه (keyword-only) echo_char برای
getpass.getpass()جهت پشتیبانی از بازخورد بصری صفحه کلید اضافه شد. وصله توسط Semyon Moroz.gh-130317: توابع
PyFloat_Pack2()وPyFloat_Unpack2()برای مقدار NaN همراه با بار (payload) اصلاح شدند. این تغییر رفتوبرگشت (round-trip) را برایstruct.unpack()وstruct.pack()در مورد نوع «نیمدقت» (half precision) دودویی IEEE 754 اصلاح میکند. وصله توسط Sergey B Kirpichev.gh-130402: پیوستن به نخهای دِیمِن (daemon threads) در حال اجرا هنگام خاموش شدن مفسر، اکنون خطای
PythonFinalizationErrorرا بالا میآورد.gh-130167: بهبود سرعت
difflib.IS_LINE_JUNK(). وصله توسط Semyon Moroz.gh-101410: افزودن پیامهای دقیقتر برای خطاهای دامنه در ماژول
math.gh-128384: باعث میشود
warnings.catch_warningsدر صورت تنظیم شدن پرچمsys.flags.context_aware_warningsروی مقدار درست، از یک متغیر زمینه برای نگهداری وضعیت فیلتر کردن هشدار استفاده کند. این کار استفاده از مدیر زمینه را در برنامههای چندنخی، نخایمن میسازد. این پرچم به طور پیشفرض در نسخههای ساخت نخآزاد درست و در غیر این صورت نادرست است. مقدار این پرچم را میتوان با گزینهی خط فرمان-X context_aware_warningsیا متغیر محیطیPYTHON_CONTEXT_AWARE_WARNINGSبازنشانی کرد.gh-129719: اصلاح ثابت گمشدهی
socket.CAN_RAW_ERR_FILTERدر ماژول socket روی سیستمهای لینوکس. این ثابت از پایتون نسخه ۳.۱۱ گم شده بود.gh-129027: ایجاد اخطار
DeprecationWarningبرایsys._clear_type_cache(). این تابع در پایتون نسخه ۳.۱۳ منسوخ شد اما هشدار زمان اجرا (رانتایم) ایجاد نمیکرد.gh-128307: افزودن آرگومان کلیدواژهای
eager_startبهasyncio.loop.create_task()gh-127604: افزودن پشتیبانی برای چاپ ردگیری پشتهی C روی سیستمهایی که از آن پشتیبانی میکنند از طریق
faulthandler.dump_c_stack()یا از طریق آرگومان c_stack درfaulthandler.enable().gh-126838: افزودن پارامتر فقط-کلیدواژهی resolve_host به
urllib.request.url2pathname()، و اصلاح نحوهی مدیریت URLهای پرونده با مراجع (authorities).gh-82129: رفع خطای
NameErrorهنگام فراخوانیtyping.get_type_hints()روی یکdataclasses.dataclass()که توسطdataclasses.make_dataclass()با فیلدهای بدون انوتیشن ایجاد شده است.gh-122559: حذف متدهای
__reduce__()و__reduce_ex__()که همیشه خطایTypeErrorرا در پیادهسازی C ازio.FileIO،io.BufferedReader،io.BufferedWriterوio.BufferedRandomایجاد میکنند و جایگزینی آنها با متدهای پیشفرض__getstate__()که خطایTypeErrorرا ایجاد میکنند. این کار جزئیات دقیق رفتار پایتون ۳.۱۱ و نسخههای قدیمیتر را بازیابی میکند.gh-122179: تابع
hashlib.file_digest()اکنون هنگامی که در طول ورودی/خروجی غیرمسدودکننده دادهای در دسترس نباشد، خطایBlockingIOErrorرا ایجاد میکند. پیش از این، بایتهای تهی نادرستی را به هضم (digest) اضافه میکرد.gh-53032: ارائهی
decimal.IEEEContext()برای پشتیبانی از ایجاد زمینههای منطبق بر فرمتهای تبادل دهدهی IEEE 754 (2008). وصله توسط Sergey B Kirpichev.gh-120220: منسوخ کردن متدهای
tkinter.Variableیعنیtrace_variable()،trace_vdelete()وtrace_vinfo(). به جای آنها میتوان از متدهایtrace_add()،trace_remove()وtrace_info()استفاده کرد.gh-113539: ماژول
webbrowser: نامهای موجود در متغیر محیطیBROWSERاکنون میتوانند به مرورگرهای وب از پیش ثبتشده اشاره کنند، به جای اینکه همیشه یک فرمان مرورگر جدید تولید کنند.این کار امکان تنظیم کردن
BROWSERرا روی مقدار یکی از مرورگرهای پشتیبانیشده در macOS فراهم میکند.bpo-44172: حفظ ارجاع به پنجرههای اصلی
cursesدر زیرپنجرهها به طوری که پنجرهی اصلی پیش از زیرپنجرهها حذف نشود.gh-75223: منسوخ کردن پسوندهای بدون نقطه در
mimetypes.MimeTypes.add_type(). وصله توسط Hugo van Kemenade.
IDLE¶
gh-112936: اصلاح IDLE: نبود آیتم منوی Shell در حالت تکفرایندی.
مستندات¶
gh-107006: انتقال مستندات و کد نمونه برای
threading.localاز رشتهمستند آن (docstring) به مستندات رسمی.gh-125142: به عنوان بخشی از متن مقدماتی راهنمای توکار، میانبرهای صفحهکلید را برای REPL جدید و غیرپایه (F1، F2 و F3) نمایش دهید.
هسته و توکارها (Core and Builtins)¶
gh-133336:
-Jدیگر برای استفاده توسط Jython رزرو نشده است. وصلهای از Adam Turner.gh-133261: رفع باگی که در آن زبالهروب چرخهای میتوانست اشیاء را در سطل زباله از حالت ردیابی خارج کند زیرا به نظر میرسید نامیرا هستند. هنگامی که اشیاء به سطل زباله اضافه میشوند، دقت میکنیم تا مطمئن شویم شمارندهی ارجاع میرا را حفظ میکنند.
gh-133346: پشتیبانی از رنگبندی آزمایشی به ماژول
_colorizeاضافه شد.gh-132917: برای ساخت نخآزاد، افزایش میزان مصرف حافظهی فرایند را پیش از راهاندازی یک زبالهروبی خودکار کامل بررسی کنید. اگر حافظهی استفادهشده از زمان آخرین زبالهروبی ۱۰٪ افزایش نیافته باشد، آن را به تعویق بیندازید.
gh-91048: یک رابط خط فرمان جدید به صورت
python -m asyncio ps PIDبرای بازرسی وظایف asyncio در یک فرایند در حال اجرای پایتون اضافه کنید. یک جدول مسطح از روابط await را نمایش میدهد. یک نوع دیگر که نمای درختی را نشان میدهد نیز به صورتpython -m asyncio pstree PIDدر دسترس است. هر دو برای اشکالزدایی کد ناهمگام مفید هستند. وصلهای از Pablo Galindo، Łukasz Langa، Yury Selivanov و Marta Gomez Macias.gh-133304: دور زدن «قانونیسازی» (canonicalization) مقدار NaN در
PyFloat_Pack4()وPyFloat_Unpack4()روی RISC-V.gh-133197: بهبود پیامهای خطای
SyntaxErrorبرای پیشوندهای ناسازگار رشته / بایت.gh-133231: ابزارهای جدیدی برای مشاهدهی کامپایل JIT اضافه شد:
sys._jit.is_available()،sys._jit.is_enabled()وsys._jit.is_active().
کتابخانه¶
gh-133194: تابع
ast.parse()دیگر نحو جدید PEP 758 را با feature_version قدیمیترِ ارسالشده تجزیه نخواهد کرد.
هسته و توکارها (Core and Builtins)¶
gh-131798: تجزیهی
CALL_LENبه چندین ریزعمل (uop) که به کامپایلر درجا (JIT) اجازه میدهد آنها را هنگام بهینهسازی حذف کند. وصلهای از Diego Russo.gh-131798: استفاده از
sym_new_typeبهجایsym_new_not_nullبرای _BUILD_STRING و _BUILD_SETgh-132942: رفع دو وضعیت رقابتی در نهانگاه جستجوی نوع. این مورد ساخت نخآزاد را تحت تأثیر قرار داد و میتواند باعث فروپاشی شود (که ظاهراً تکرار آن بسیار دشوار است).
gh-131798: انتشار نوع بازگشتی
_BINARY_OP_SUBSCR_TUPLE_INTدر کامپایلر درجا (JIT). وصلهای از Tomas Roungh-132952: با ایمپورت کردن ماژول خصوصی
_ioبه جایio، راهاندازی را با آرگومان-Sسرعت ببخشید. این کار یک رگرسیون عملکردی را که قبلاً در روند توسعهی پایتون ۳.۱۴ معرفی شده بود، رفع میکند و عملکرد را به سطح پایتون ۳.۱۳ بازمیگرداند.gh-131798: با تنظیم نوع بازگشتی به int، به کامپایلر درجا (JIT) اجازه دهید نگهبانهای int را پس از
_CALL_LENحذف کند. وصلهای از Diego Russogh-131798: تجزیهی
CALL_TUPLE_1به چندین ریزعمل که به کامپایلر درجا (JIT) اجازه میدهد برخی از آنها را حذف کند. وصلهای از Tomas Roungh-131798: تجزیهی
CALL_STR_1به چندین ریزعمل که به کامپایلر درجا (JIT) اجازه میدهد برخی از آنها را حذف کند. وصلهای از Tomas Roungh-132825: بهبود پیامهای خطای کلید/عنصر هشناپذیر برای
dictوset. وصلهای از Victor Stinner.gh-131591: بازنشانی هرگونه تماس معلق اشکالزدایی از راه دور PEP 768 در فرزاندان پس از فراخوانیهای
os.fork().gh-132713: برطرفسازی شرایط رقابت در
repr(list): هنگام فراخوانیrepr(item)، یک ارجاع قوی به آیتم نگه دارید. این پچ توسط Victor Stinner تهیه شده است.gh-132661: پیادهسازی PEP 750 (رشتههای قالبی یا Template Strings). افزودن نحو جدید برای t-stringها و پیادهسازی انواع جدید داخلی
string.templatelib.Templateوstring.templatelib.Interpolation.gh-132479: برطرفسازی فروپاشی کامپایلر در شرایط خاصی که چندین حاشیهنویسی در سطح ماژول شامل درکها (comprehensions) و سایر محدودههای تودرتو هستند.
gh-132747: برطرفسازی فروپاشی هنگام فراخوانی
__get__()مربوط به یک متد با آرگومان دومNone.gh-132744: برخی از فراخوانیها اکنون بازگشت بیرویه (runaway recursion) را بررسی کرده و حد مجاز بازگشت سیستم را رعایت میکنند.
gh-132449: خطاهای نحوی که شبیه به اشتباه املایی کلیدواژههای پایتون هستند، اکنون پیشنهاد اصلاح مفیدی برای غلط املایی ارائه میدهند. مشارکت توسط Pablo Galindo Salgado.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
gh-132639: توابع
PyLong_AsNativeBytes()،PyLong_FromNativeBytes()وPyLong_FromUnsignedNativeBytes()به API محدود C اضافه شدند.gh-100239: افزودن بهینهسازی (specialisation) برای
BINARY_OP/SUBSCRروی فهرست و اسلایس.gh-132508: از اعداد صحیح برچسبگذاریشده روی پشتهی ارزیابی برای نمایش آفستهای دستورالعمل هنگام بازنشانی یک استثنا استفاده میکند. این کار از نیاز به باکس کردن عدد صحیح جلوگیری میکند که ممکن است در شرایط کمبود حافظه با شکست مواجه شود.
gh-124476: برطرفسازی کدگشایی از کدگذاری locale در locale پیشفرض C.UTF-8.
gh-131927: اخطارهای کامپایلر که از یک ماژول و شماره سطر یکسان سرچشمه میگیرند، اکنون فقط یک بار صادر میشوند که با رفتار اخزارهای صادر شده از کد کاربر مطابقت دارد. این مورد را میتوان با فیلترهای
warningsنیز پیکربندی کرد.gh-132457: عام (generic) کردن
staticmethod()وclassmethod().gh-131798: استفاده از
sym_new_typeبه جایsym_new_not_nullبرای _BUILD_LIST، _BUILD_SET، _BUILD_MAPgh-131798: تقسیم
CALL_TYPE_1به چندین ریزعمل (uops) که به کامپایلر درجا (JIT) اجازه میدهد برخی از آنها را حذف کند.gh-132386: برطرفسازی فروپاشی هنگام ارسال یک زیرکلاس دیکشنری به عنوان پارامتر
globalsبهexec().gh-127682: هنگام ایجاد و اجرای یک عبارت تولیدگر دیگر
__iter__دو بار فراخوانی نمیشود. ایجاد یک عبارت تولیدگر از یک شیء غیرقابلپیمایش تنها هنگام اجرای عبارت تولیدگر باعث بروز خطا میشود. این تغییر، رفتار عبارات تولیدگر را با سایر تولیدگرها هماهنگ میکند.gh-132261: ذخیرهسازی داخلی برای حاشیهنویسیها و توابع حاشیهنویسی روی کلاسها اکنون از کلیدهای متفاوتی در دیکشنری کلاس استفاده میکند. این امر موارد حادی که در آنها دسترسی به ویژگیهای
__annotate__و__annotations__رفتار غیرقابل پیشبینی داشت را از بین میبرد.gh-132284: اگر جایگاههای پایهای
PyCFunctionبازنویسی نشدهاند، آنها را هنگام ایجاد کلاس پوشش ندهید.gh-130415: بهبود توانایی کامپایلر درجا (JIT) در حذف بارگذاریهای ثابت و متغیر محلی استفادهنشده، و برطرفسازی مشکلی که در آن آزادسازی مقادیر استفادهنشده میتواند باعث فروپاشی کد JIT یا رفتار نادرست آن شود.
gh-126703: رفع احتمال استفاده پس از آزادسازی (use after free) در مواردی که تعریف یک متد دارای طول عمری مشابه با
selfخود است.gh-132286: رفع این مشکل که هنگام حذف
type.__annotations__، صفتtype.__annotate__حذف نمیشد.gh-131798: امکان حذف یک دستور اضافی
_TO_BOOL_BOOLپس از_CONTAINS_OP_DICTتوسط کامپایلر درجا (JIT) با تنظیم نوع بازگشتی به bool.gh-124715: جلوگیری از سرریز پشته هنگام فراخوانی
Py_DECREF(). اشیاء افزونهی شخص ثالث دیگر نیازی به استفاده از مکانیزم «سطل زباله» (trashcan) ندارند، زیرا محافظت اکنون در ماکرویPy_DECREF()تعبیه شده است.gh-131798: به کامپایلر درجا (JIT) اجازه میدهد برخی از بررسیهای نوع داده را برای عملیات روی فهرستها، تاپلها، دیکشنریها و مجموعهها حذف کند.
gh-128398: بهبود پیام خطا هنگامی که شیء پشتیبانیکنندهی پروتکل مدیر زمینه همگام (یا ناهمگام) بهجای استفاده از
with(یاasync with) با استفاده ازasync with(یاwith) فراخوانی میشود. وصلهای از Bénédikt Tran.gh-131798: امکان حذف نگبانهای یونیکد پس از
_BINARY_OP_SUBSCR_STR_INTتوسط کامپایلر درجا (JIT) با تنظیم نوع بازگشتی به رشته.gh-131878: مدیریت استثناهای گرفتهنشده در حلقهی ورودی اصلی برای REPL جدید.
gh-131878: رفع پشتیبانی از نویسههای یونیکد با دو یا چند نقطهی کد (codepoints) روی ویندوز در REPL جدید.
gh-126835: انتقال تا کردن ثابت (constant folding) به بهینهساز سوراخسوزنی (peephole optimizer). تغییر نام پروندههای مرتبط با بهینهسازی درخت نحوی انتزاعی (AST) (Python/ast_opt.c -> Python/ast_preprocess.c)، ساختارها (_PyASTOptimizeState -> _PyASTPreprocessState) و تابعها (_PyAST_Optimize -> _PyAST_Preprocess، _PyCompile_AstOptimize -> _PyCompile_AstPreprocess).
gh-114809: افزودن پشتیبانی از ساختهای چندمعماری (multi-arch) در macOS با فعال بودن کامپایلر درجا (JIT)
gh-131507: برنامهی PyREPL اکنون از برجستهسازی نحو (syntax highlighting) پشتیبانی میکند. مشارکتکننده: Łukasz Langa.
gh-130907: اگر حاشیهنویسیهای (
__annotations__) یک شیء ماژول در حین اجرای ماژول فراخوانی شوند، حاشیهنویسیهایی که تاکنون تعریف شدهاند، بدون ذخیرهسازی موقت (caching)، برگردانده میشوند.gh-130104: تابع
pow()با سه آرگومان اکنون در صورت لزوم تلاش میکند__rpow__()را فراخوانی کند. پیشتر این متد فقط در تابعpow()با دو آرگومان و عملگر توان دودویی فراخوانی میشد.gh-130070: رفع خطای شرط (assertion error) برای
exec()هنگامی که یک رشتهیsourceو یکclosureنهچندانNoneبه آن ارسال میشود. وصلهای از Bartosz Sławecki.gh-129958: رفع باگی که اجازه میداد نویسههای خط جدید (newlines) بهصورت ناسازگار در مشخصکنندههای قالب (format specifiers) برای افاسترینگهای تککوتولی استفاده شوند. وصلهای از Pablo Galindo.
gh-129858: دستورات
elifکه پس از یک بلوکelseمیآیند، اکنون پیام خطای مشخصی دارند.gh-69605: افزودن تکمیل خودکار ماژول به PyREPL.
gh-128555: افزودن پرچم
sys.flags.thread_inherit_context.این پرچم بهطور پیشفرض در ساخت نخآزاد (free-threaded build) روی مقدار درست (True) و در غیر این صورت روی نادرست (False) تنظیم میشود. اگر این پرچم درست باشد، شروع یک نخ جدید با استفاده از
threading.Threadبهطور پیشفرض بهجای استفاده از یک زمینهی خالی، از کپی زمینهی (contextvars.Context) فراخوانندهیthreading.Thread.start()استفاده خواهد کرد.گزینهی خط فرمانی
-X thread_inherit_contextو متغیر محیطیPYTHON_THREAD_INHERIT_CONTEXTاضافه شدند که پرچمthread_inherit_contextرا تنظیم میکنند.پارامتر کلیدواژهای
contextبهThreadاضافه شد. از آن میتوان برای انتقال صریح یک مقدار زمینه برای استفاده توسط یک نخ جدید استفاده کرد.ماژول
_contextvarsبه صورت توکار درآمد.
gh-123539: بهبود پیام
SyntaxErrorهنگام استفاده ازimport ... asوfrom ... import ... asبا چیزی که نام نیست.gh-102567: گزینهی
-X importtimeاکنون مقدار2را میپذیرد، که نشان میدهد اگر یک ماژول واردشده (import شده) قبلاً بارگذاری شده باشد، یک درایهیimporttimeنیز باید چاپ شود. این وصله توسط نوا کیم (Noah Kim) و آدام ترنر (Adam Turner) تهیه شده است.gh-116436: بهبود پیام خطا هنگامی که
TypeErrorدر طولdict.update()رخ میدهد.gh-103997: آرگومانهای رشتهای ارسالشده به "-c" اکنون بهطور خودکار تورفتگیشان اصلاح (dedent) میشود. این امر به فراخوانیهای "python -c" اجازه میدهد در اسکریپتهای پوسته بدون ایجاد خطاهای تورفتگی، تورفتگی داشته باشند. (وصله توسط جون کرال (Jon Crall) و استیون سان (Steven Sun))
کتابخانه¶
gh-89562: حذف عضو
hostflagsاز ساختارPySSLContext.
رابط C API¶
gh-133166: رفع رگرسیونی که در آن تابع
PyType_GetModuleByDef()هنگام ارسال یک نوع ایستا، بدون تنظیمTypeErrorمقدار NULL را برمیگرداند.gh-133164: تابع
PyUnstable_Object_IsUniqueReferencedTemporary()را برای تشخیص اینکه آیا یک شیء به عنوان یک متغیر موقت یکتا روی پشتهی مفسر وجود دارد یا خیر، اضافه کنید. این تابع جایگزینی برای برخی مواردی است که بررسی اینکه آیاPy_REFCNT()برابر با یک است، دیگر برای تعیین اینکه آیا اصلاح درجا (in-place) یک شیء پایتون بدون عوارض جانبی قابلمشاهده ایمن است یا خیر، کافی نیست.gh-133140: افزودن
PyUnstable_Object_IsUniquelyReferenced()به عنوان جایگزینی برایPy_REFNCT(op) == 1در ساختهای نخبندی آزاد پایتون.gh-131747: در پلتفرمهای غیر ویندوزی، استفاده از
ctypes.Structure._pack_برای استفاده از یک طرحبندی سازگار با ویندوز منسوخ میشود. طرحبندی باید با تنظیمctypes.Structure._layout_روی'ms'به صورت صریح مشخص شود.gh-128972: برای ساختهای غیر نخآزاد، طرحبندی حافظهی
PyASCIIObjectبه حالت قبل بازگردانده شده است تا با پایتون ۳.۱۳ مطابقت داشته باشد. (توجه داشته باشید که این ساختار بخشی از ABI پایدار نیست و بنابراین طرحبندی حافظهی آن تضمین میشود که پایدار بماند.)gh-133079: APIهای مستندنشدهی
Py_C_RECURSION_LIMITوPyThreadState.c_recursion_remainingکه در نسخهی ۳.۱۳ اضافه شده بودند، بدون دورهی منسوخسازی حذف شدند.gh-132987: قالبهای
kوKدرPyArg_Parse()اکنون مانند تمام قالبهای اعداد صحیح دیگر، از متد ویژهی__index__()پشتیبانی میکنند.gh-132909: رفع سرریز هنگام مدیریت قالب K در
Py_BuildValue(). وصله توسط بندیکت تران (Bénédikt Tran).gh-132798: توابع منسوخشده و مستندنشدهی
PyUnicode_AsEncodedObject()،PyUnicode_AsDecodedObject()،PyUnicode_AsEncodedUnicode()وPyUnicode_AsDecodedUnicode()برای حذف در نسخهی ۳.۱۵ برنامهریزی شدهاند.gh-132470: ایجاد یک
ctypes.CFieldبا یک byte_size که با اندازهی نوع واقعی مطابقت ندارد، اکنون به جای از کار انداختن (crash کردن) مفسر، یک استثنایValueErrorایجاد میکند.gh-112068: [بازگرداندهشده در gh-136991] پشتیبانی از آرگومانهای با قابلیت پذیرش مقدار تهی (nullable) در
PyArg_Parse()و توابع مشابه اضافه شد. افزودن?پس از هر واحد قالب باعث میشودNoneبه عنوان مقدار پذیرفته شود.gh-50333: دنبالههای غیر تاپل به عنوان آرگومان برای واحد قالب
(items)درPyArg_ParseTuple()و سایر توابع تجزیهی آرگومان منسوخ شدهاند، اگر items شامل واحدهای قالبی باشد که یک بافر امانتی یا یک ارجاع امانتی را ذخیره میکنند.
ساخت¶
gh-113464: استفاده از مخزن «externals» با نام cpython-bin-deps برای مدیریت وابستگیهای LLVM در ویندوز. برای ساختهای JIT در ویندوز، نصب دستی LLVM دیگر ضروری نیست.
gh-133183: لایههای سازگاری (shims) کامپایلر iOS اکنون شامل
IPHONEOS_DEPLOYMENT_TARGETدر سهگانههای هدف (target triples) میشوند که تضمین میکند حداقلهای نسخهی SDK رعایت شوند.gh-133167: رفع فرایند کامپایل با
--enable-optimizationsو--without-docstrings.gh-133171: از آنجا که ساختهای نخآزاد (free-threaded builds) از کامپایلر درجا (JIT) آزمایشی پشتیبانی نمیکنند، از ترکیب شدن این پیکربندیها جلوگیری کنید.
gh-132758: رفع ساخت با مفسر فراخوانی تهی (tail call interpreter) و pystats.
gh-132649: اسکریپت
PClayoutاکنون امکان ارسال--include-tcltkرا روی ویندوز ARM64 فراهم میکند.gh-132257: تغییر پرچمهای پیشفرض LTO در GCC به شکلی که
-flto-partition=noneرا ارسال نکند و امکان موازیسازی LTO را فراهم کند. برای ابزارهای GNU make و GCC جدیدتر، این کار باعث سرعتبخشیدن چندبرابری به زمانهای ساخت LTO میشود، بدون اینکه افت عملکرد محسوسی داشته باشد.gh-132026: رفع استفاده از شناسههای تعریفنشده در تشخیص سهگانهی سکو (platform triplet) روی سکوهای لینوکس MIPS.
پایتون ۳.۱۴.۰ آلفا ۷¶
تاریخ انتشار: ۲۰۲۵-۰۴-۰۸
مکاواس¶
Windows¶
gh-131423: بروزرسانی نسخهی بستهبندیشدهی OpenSSL به 3.0.16. ساخت جدید همچنین پشتیبانی از uplink را غیرفعال میکند که ممکن است برای برنامههای جاسازیشده مرتبط باشد اما تأثیری روی استفادهی عادی ندارد.
gh-131453: برخی از ثابتهای
SND_*وMB_*بهwinsoundاضافه شدند.gh-91349: جایگزینی نسخهی ما از
zlibباzlib-ng، برای بهبود کارایی درzlib.gh-131025: بروزرسانی برنامهی نصب ویندوز برای عرضهی همراه با SQLite 3.49.1.
Tools/Demos¶
آزمونها¶
gh-131277: امکان لغو تنظیم یک یا چند متغیر محیطی بهطور همزمان از طریق
EnvironmentVarGuard.unset(). وصل توسط Bénédikt Tran.gh-131050: اگر کتابخانهی زیرین TLS از Diffie-Hellman موقت میدان متناهی پشتیبانی نکند، تابع
test_ssl.test_dh_paramsنادیده گرفته میشود.
امنیت¶
gh-131809: بهروزرسانی libexpat بستهبندیشده به نسخهی 2.7.1
gh-131261: ارتقا به libexpat 2.7.0
gh-121284: رفع باگ در تا کردن (folding) کلمات رمزگذاریشدهی rfc2047 هنگام تختسازی (flattening) یک پیام ایمیل با استفاده از یک سیاست ایمیل مدرن. پیشتر وقتی یک کلمهی رمزگذاریشده برای یک سطر بیش از حد طولانی بود، رمزگشایی میشد، در طول سطرها شکسته میشد و دوباره رمزگذاری میشد. اما کاماها و سایر نویسههای خاص در متن اصلی ممکن بود رمزگذارینشده و بدون نقلقول باقی بمانند. این امر از نظر تئوری میتوانست برای جعل خطوط سرآیند (header) با استفاده از یک کلمهی رمزگذاریشدهی بهدقت ساختهشده مورد استفاده قرار گیرد، اگر ایمیل رندرشدهی حاصل منتقل یا مجدداً تجزیه میشد.
کتابخانه¶
gh-132174: رفع نام تابع در پیام خطای
_interpreters.run_string.gh-132171: رفع فروپاشی (crash) در
_interpreters.run_stringروی زیرکلاسهای رشته.gh-129204: معرفی کلید متغیر محیطی جدید
_PYTHON_SUBPROCESS_USE_POSIX_SPAWNدر ماژولsubprocessبرای کنترل استفاده ازos.posix_spawn().gh-132159: جلوگیری از پنهان شدن آرگومانهای کاربر در
__new__()تولیدشده توسط دکوراتورwarnings.deprecated. بستهی اصلاحی (patch) توسط Xuehai Pan.gh-132168: نوع
ctypes.py_objectاکنون از زیرنویسی (subscription) پشتیبانی میکند و آن را به یک نوع عام تبدیل میکند.gh-84481: افزودن ویژگی
zipfile.ZipFile.data_offsetکه آفست (offset) مربوط به آغاز دادههای ZIP را در صورت موجود بودن در یک پرونده ذخیره میکند. زمانی که شیءzipfile.ZipFileدر هر یک از حالتهای'w'یا'x'باز شود و پروندهی زیرین از روشtell()پشتیبانی نکند، مقدار به جای آنNoneخواهد بود.gh-132075: رفع استفاده احتمالی از ساختارهای آدرس
socketبا اعضای مقداردهینشده. اکنون تمام اعضای ساختار به طور پیشفرض با صفر مقداردهی اولیه میشوند.gh-118761: بهبود زمانهای ایمپورت تا ۲۷ برابر برای ماژول
string. بستهی اصلاحی توسط Adam Turner.gh-125434: نمایش نام نخ (thread) در
faulthandler. بستهی اصلاحی توسط Victor Stinner.gh-132002: رفع فروپاشی هنگام آزاد کردن حافظه
contextvars.ContextVarبا نامهای رشتهای عجیب و غیرقابل هش.gh-131938:
xml.etree.ElementTree: بهروزرسانی پیام خطا وقتی المانی که قرار است از طریقElement.removeحذف شود، پیدا نمیشود. بستهی اصلاحی توسط Bénédikt Tran.gh-115942: افزودن
threading.RLock.locked()،multiprocessing.Lock.locked()،multiprocessing.RLock.locked()و اجازه دادن بهmultiprocessing.managers.SyncManager.Lock()وmultiprocessing.managers.SyncManager.RLock()برای پروکسی کردن فراخوانیlocked().gh-131974: رفع چندین مشکل ایمنی نخ در
ctypesروی نسخهی ساخت نخبندی آزاد.gh-118761: بهبود زمان ایمپورت ماژول
astبا استخراج تابعunparse()به یک ماژول کمکی.gh-107369: بهبود عملکرد
textwrap.indent()به طور میانگین حدود ۱.۳ برابر. بستهی اصلاحی توسط Adam Turner.gh-131792: بهبود عملکرد
textwrap.dedent()به طور میانگین حدود ۲.۴ برابر (با بهبودهایی تا ۴ برابر برای ورودیهای بزرگ)، و رفع باگ مربوط به خطوط خالی حاوی نویسههای سفید به غیر از فاصله یا تب افقی که به نویسهی سطر جدید نرمالسازی نمیشدند. بستهی اصلاحی توسط Adam Turner، Marius Juston و Pieter Eendebak.gh-131668:
socket: اصلاح تجزیه کردن کد برای آدرسهای سوکت AF_BLUETOOTH.gh-60115: پشتیبانی از ماژولهای فریزشده (frozen modules) برای
linecache.getline().gh-131492: اصلاح نشت منبع هنگام ساخت یک
gzip.GzipFileبا نام پروندهای که ناموفق است، برای مثال هنگام ارسال یکcompresslevelنامعتبر.gh-131435: بهبود عملکرد ۱۰ تا ۲۰ درصدی تابع
random.randint().gh-131461: اصلاح
ResourceWarningهنگام ساخت یکgzip.GzipFileدر حالت (mode) نوشتن با یک شیء پرونده (file object) خراب.gh-125866: منسوخ کردن ماژول
nturl2path. بهجای آنurllib.request.url2pathname()وpathname2url()را فراخوانی کنید.gh-126367: اصلاح مشکلی که در آن
urllib.request.url2pathname()هنگام دریافت یک URI ویندوزی حاوی یک نویسه (character) دونقطه که دنبالهی یک حرف درایو نیست (مانند قبل از یک جریان دادهی جایگزین NTFS)، خطایOSErrorرا بالا میآورد.gh-120144: غیرفعال کردن رویداد (event)
CALLدرbdbدر بکاند (backend)monitoringزمانی که برای بهدست آوردن عملکرد بهتر، به هیچ رویداد جدیدی روی شیء (object) کد نیاز نداریم.gh-131358: ثبت کردن (register)
cseuckrبه عنوان یک نام مستعار کدگذاری (encoding) برایeuc_kr.gh-131325: اصلاح پیادهسازی جایگزین (fallback) sendfile برای تخلیه دادهها پس از نوشتن در انتقال (transport) در
asyncio.gh-90548: تابع
platform.libc_ver()اکنون میتواند نسخهیmuslرا روی Alpine Linux شناسایی و گزارش کند.gh-129843: اصلاح ارسال نادرست آرگومان در
warnings.warn_explicit().gh-70647: هنگام ایجاد یک شیء (object)
datetimeبا تاریخ خارج از محدوده، یک خطای آموزندهتر بالا میرود.gh-130914: اجازه دادن به متد
graphlib.TopologicalSorter.prepare()برای فراخوانی بیش از یک بار مادامی که مرتبسازی شروع نشده است. وصله (patch) توسط Daniel Pope.gh-131236: اجازه دادن به تولید چندین UUID به طور همزمان از طریق
python -m uuid --count.gh-126895: اصلاح
readlineدر نسخهی ساخت (free-threaded build).gh-121468: متغیر
$_asynctaskبه عنوان یک متغیر کمکی (convenience variable) درpdbاضافه شده است تا در صورت لزوم به وظیفهی (task) فعلی asyncio دسترسی داشته باشد.gh-118761: بهبود زمان ایمپورت ماژول
localeبا استفاده از ایمپورت تنبلre. وصله (patch) توسط Semyon Moroz.gh-129598: اصلاح
ast.unparse()وقتیast.Interactiveشامل چندین دستور (statement) است.gh-85162: ماژول
http.serverاکنون شامل پشتیبانی توکار برای سرورهای HTTPS ارائه شده توسطhttp.server.HTTPSServerاست. این قابلیت از طریق رابط (interface) خط فرمان (python -m http.server) و با استفاده از گزینههای--tls-cert،--tls-keyو--tls-password-fileدر دسترس است. وصله (patch) توسط Semyon Moroz.gh-129463: پیادهسازیهای برابری و هش برای
annotationlib.ForwardRefاکنون از تمامی ویژگیها روی شیء استفاده میکنند. دو شیءForwardRefفقط در صورتی برابر هستند که تمامی ویژگیها با هم برابر باشند.gh-128593: اشیاء
annotationlib.ForwardRefدیگر مقدار خود را هنگام ارزیابی موفقیتآمیز نهانگاه نمیکنند. فراخوانیهای متوالیannotationlib.ForwardRef.evaluate()ممکن است مقادیر متفاوتی را برگردانند.gh-117779: رفع مشکل خواندن درایههای تکراری در
zipfileبر اساس نام. خواندن درایههای تکراری (بهجز آخرین مورد) توسطZipInfoاکنون به جای بالا آوردن یک استثنا، یک هشدار صادر میکند.gh-128715: کلاس توصیفگرهای فیلد
Structure/Unionاکنون به عنوانCFieldدر دسترس است و دارای ویژگیهای جدیدی برای کمک به اشکالزدایی و دروننگری است.gh-128055: رفع مشکل
test.test_sysconfig.test_sysconfigdata_jsonهنگام اجرا در خارج از پوشهی ساخت (مثلاً پس از نصب).gh-126037:
xml.etree.ElementTree: رفع یک فروپاشی درElement.find،Element.findtextوElement.findallهنگامی که تگ مورد جستجو یک متد__eq__()را پیادهسازی میکند که عنصر در حال پرسوجو را تغییر میدهد. وصله توسط Bénédikt Tran.gh-127794: هنگامی که سرآیندها به اشیاء
email.message.Messageاضافه میشوند، چه از طریقemail.message.Message.__setitem__()و چهemail.message.Message.add_header()، نام فیلد اکنون طبق RFC 5322, Section 2.2 اعتبارسنجی میشود و اگر نام فیلد حاوی هرگونه نویسهی نامعتبر باشد، یکValueErrorبالا آورده میشود.gh-123599: منسوخ کردن
pathlib.PurePath.as_uri()؛ به جای آن ازpathlib.Path.as_uri()استفاده کنید.gh-126033:
xml.etree.ElementTree: رفع یک فروپاشی درElement.removeهنگامی که عنصر بهطور همزمان تغییر میکند. وصله توسط Bénédikt Tran.gh-120144: افزودن بکاند اختیاری
sys.monitoringبهbdbو استفاده از آن برایpdb.gh-74598: افزودن
fnmatch.filterfalse()برای مستثنی کردن نامهای منطبق با یک الگو. وصله توسط Bénédikt Tran.gh-114917: افزودن پشتیبانی از AI_NUMERICSERV در شبیهسازی getaddrinfo
bpo-17254: افزودن نام مستعار برای زبان تایلندی با استفاده از صفحات کد مایکروسافت.
مستندات¶
gh-131417: ذکر
asyncio.Futureوasyncio.Taskدر فهرست کلاسهای عام.
هسته و توکارها (Core and Builtins)¶
gh-131798: به کامپایلر درجا (JIT) اجازه دهید با تنظیم نوع دادهی بازگشتی به bool، یک دستور اضافی
_TO_BOOL_BOOLرا پس از_CONTAINS_OP_SETحذف کند.gh-132011: رفع فروپاشی هنگام فراخوانی
list.append()به عنوان یک متد آزاد (unbound).gh-131998: رفع فروپاشی هنگام استفاده از یک شیء توصیفگر متد آزاد در تابعی که در آن از یک توصیفگر متد کران (bound) استفاده شده بود.
gh-131591: پیادهسازی PEP 768 (رابط اشکالزدای خارجی امن برای سیپایتون). افزودن یک تابع جدید
sys.remote_exec()به ماژولsys. این تابع اجرای یک پروندهی پایتون را در یک فرایند مجزا زمانبندی میکند. وصله توسط Pablo Galindo، Matt Wozniski و Ivona Stojanovic.gh-131798: به کامپایلر درجا (JIT) اجازه دهید زمانی که نوع دادهی str شناخته شده است، نگهبان str را در آزمون درستی (truthiness) حذف کند.
gh-131833: افزودن پشتیبانی برای حذف اختیاری پرانتزهای گروهبندی هنگام استفاده از چندین نوع دادهی استثنا مطابق با PEP 758. وصله توسط Pablo Galindo
gh-130924: استفاده از یک نام در حاشیهنویسی محدودهی تابع دیگر باعث ایجاد یک سلول برای آن متغیر نمیشود. این کار یک رگرسیون را در نسخههای اولیهی آلفای پایتون ۳.۱۴ اصلاح میکند.
gh-131800: بهبود توانایی کامپایلر درجا (JIT) آزمایشی در حذف بررسیهای نوع برای برخی عملیاتهای زیرنویسگذاری.
gh-131738: کامپایلر کد بهینهشدهای را برای فراخوانیهای توکار any/all/tuple روی یک عبارت تولیدگر صادر میکند.
gh-131719: رفع بررسی گمشدهی NULL در
_PyMem_FreeDelayedدر ساخت نخبندی آزاد.gh-131670: رفع خرابی تابع
anext()در متد همگام__anext__()که یک استثنا ایجاد میکند.gh-131666: رفع امضای اشیاء
anext_awaitable.close. وصله توسط Bénédikt Tran.gh-130415: بهینهسازی مقایسهی دو ثابت در ساختهای کامپایلر درجا (JIT)
gh-129149: افزودن مسیر سریع برای اعداد صحیح کوچک و متوسط در
PyLong_FromInt32()،PyLong_FromUInt32()،PyLong_FromInt64()وPyLong_FromUInt64(). وصله توسط Chris Eibl.gh-130887: بهینهسازی تولید کد AArch64 برای کامپایلر درجا (JIT). وصله توسط Diego Russo
gh-130956: بهینهسازی تولید کد AArch64 برای کامپایلر درجا (JIT). وصله توسط Diego Russo
gh-130928: رفع پیام خطا هنگام قالببندی بایتها با استفاده از پرچم
'i'. وصله توسط Maxim Ageev.gh-130935: حاشیهنویسیها در سطح کلاس و ماژول که به صورت شرطی تعریف شدهاند، اکنون تنها در صورتی در
__annotations__منعکس میشوند که بلوکی که در آن قرار دارند اجرا شود. وصله توسط Jelle Zijlstra.gh-130775: عدم فروپاشی روی مقادیر منفی
columnوend_columnدر موقعیتهایast.gh-130704: بهینهسازی
LOAD_FASTو فرم دستورالعمل فوقالعادهی آن برای کاهش سربار شمارش ارجاع. این دستورالعملها با انواع سریعتری جایگزین میشوند که وقتی میتوانیم ثابت کنیم ارجاع موجود در قاب بیشتر از ارجاع بارگذاریشده روی پشته عمر میکند، ارجاعات امانتی را روی پشتهی عملوند بارگذاری میکنند.gh-88887: رفع نشت فرایند ردیاب منابع چندپردازشی (multiprocessing)، که معمولاً هنگام اجرای پایتون به عنوان PID 1 مشاهده میشود.
gh-130115: رفع مسئلهی گسترش علامت شناسههای نخ در برخی پلتفرمها.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
gh-130080: پیادهسازی PEP 765: عدم اجازه به دستورات return/break/continue برای خروج از یک بلوک finally.
gh-129900: رفع کدهای بازگشتی درون
SystemExitکه توسط پوسته تعاملی پایتون (REPL) برگردانده نمیشدند.gh-128632: عدم اجازه به استفاده از
__classdict__به عنوان نام یک پارامتر نوع. استفاده از این نام قبلاً در برخی شرایط باعث فروپاشی مفسر میشد.gh-126703: بهبود کارایی متدهای توکار با استفاده از فهرست آزاد (freelist).
gh-126703: بهبود کارایی
rangeبا استفاده از فهرست آزاد (freelist).
رابط C API¶
ساخت¶
gh-131865: ساخت DTrace اکنون بهدرستی متغیرهای
CCوCFLAGSرا هنگام استفاده از SystemTap روی لینوکس به دستورdtraceارسال میکند.gh-131675: رفع خطاهای ساخت کتابخانهی mimalloc برای اهداف ARM ۳۲ بیتی.
gh-131691: ابزار clang-cl روی ویندوز برای پشتیبانی درست از SEH (مدیریت استثنای ساختاریافته) به گزینهی
/EHaنیاز دارد. اصلاح توسط Chris Eibl.gh-131278: افزودن پرچم بهینهسازی
WITH_COMPUTED_GOTOSبه ساختهای ویندوز برای زمانی که از کامپایلری استفاده میشود که از آن پشتیبانی میکند (در حال حاضر clang-cl). وصله توسط Chris Eibl.gh-130213: بهروزرسانی کتابخانهی جانبی HACL* برای رفع مشکلات ساخت با کامپایلرهای قدیمیتر clang.
gh-130673: رفع خطای احتمالی
KeyErrorهنگام مدیریت بخشهای شیء در طول فرایند ساخت JIT.
نسخهی ۳.۱۴.۰ آلفا ۶¶
تاریخ انتشار: ۱۴-۰۳-۲۰۲۵
مکاواس¶
gh-128540: اطمینان از راهاندازی مرورگر وب توسط
webbrowser.open()روی مکاواس، حتی برای URLهایfile://.
Windows¶
gh-131020: ابزار pylauncher هنگام جستوجو برای خط مفسر (shebang)، نشانگر ترتیب بایت (BOM) را بهدرستی شناسایی میکند. اصلاح توسط Chris Eibl.
Tools/Demos¶
gh-130453: امکان بازنویسی کلیدواژههای پیشفرض در pygettext.
gh-85012: بازنشانی درست
msgctxtهنگام کامپایل کردن پیامها در msgfmt.gh-130453: گسترش پشتیبانی از مشخص کردن کلیدواژههای سفارشی در pygettext.
gh-130195: افزودن پیامهای هشدار هنگامی که گزینهی پیادهسازینشدهی
-a/--extract-allدرpygettextفراخوانی میشود.gh-130057: افزودن پشتیبانی از کامنتهای مترجم در pygettext.py.
gh-130025: محیط آزمایشی iOS اکنون پیوندهای نمادین (symlinks) استفادهشده به عنوان ارجاعات چارچوب پایتون را بهدرستی مدیریت میکند.
gh-129911: اصلاح ورودی کلیدواژه در خروجی راهنمای pygettext.
آزمونها¶
gh-129200: اکنون میتوان چندین اجراکنندهی محیط آزمون iOS را همزمان و بدون ایجاد ابهام در مالکیت شبیهساز راهاندازی کرد.
gh-130292: محیط آزمون iOS اکنون روی دستگاهی که پیشتر آزمونهای Xcode را اجرا نکرده است (مانند پیکربندیهای CI) با موفقیت اجرا خواهد شد.
gh-130293: آزمونهای رنگآمیزی ترمینال دیگر نسبت به مقدار متغیر
TERMدر محیط آزمون حساس نیستند.gh-129401: رفع یک آزمون ناپایدار در
test_repr_rlockکه بازنماییmultiprocessing.RLockرا بررسی میکند.gh-126332: افزودن آزمونهای واحد برای pyrepl.
امنیت¶
gh-127371: جلوگیری از بافرینگ بیکران برای
tempfile.SpooledTemporaryFile.writelines(). پیشتر، سرریز دیسک تنها پس از اتمام پیمایشگر سطور بررسی میشد. اکنون این کار پس از نوشته شدن هر سطر انجام میشود.
کتابخانه¶
gh-131204: استفاده از قلم تکفاصله از System Font Stack برای پشتیبانی میانپلتفرمی در
difflib.HtmlDiff.gh-131196: بهبود کارایی
uuid.UUID.hexوuuid.UUID.__str__.gh-130940: رفتار
PyConfig.use_system_loggerتغییر کرد تا به طور پیشفرض روی iOS فعال باشد. این ویژگی روی macOS همچنان به طور پیشفرض غیرفعال میماند.gh-131123: پشتیبانی از تکمیلسازی برای ویژگیهای متغیرهای کمکی در
pdb.gh-93096: رابط خط فرمان مستندنشدهی
python -m difflibحذف شد. بهجای آن ازpython -m doctest Lib/difflib.py -vاستفاده کنید. وصله توسط Semyon Moroz.gh-93096: آرگومانهای
-tو-vمستندنشدهیpython -m pickleحذف شدند. بهجای آن ازpython -m doctest Lib/pickle.py -vاستفاده کنید. وصله توسط Semyon Moroz.gh-81267: اصلاح پیام خطای
time.sleep()هنگامی که شیءای فراهم شده است که نمیتوان آن را به عنوان عدد صحیح یا عدد اعشاری تفسیر کرد.gh-93096: آرگومانهای
-tو-vمستندنشدهیpython -m pickletoolsحذف شدند. بهجای آن ازpython -m doctest Lib/pickletools.py -vاستفاده کنید. وصله توسط Semyon Moroz.gh-131045: رفع مشکل مربوط به
__contains__، مقادیر و شبهعضوها برایenum.Flag.gh-130959: اصلاح پیادهسازی خالصپایتونی
datetime.time.fromisoformat()برای رد کردن زمانهایی که در بخش اعشاری خود فاصله دارند (برای نمونه12:34:56.400 +02:00)، بهطوریکه با پیادهسازی C مطابقت داشته باشد. وصله توسط Michał Gorny.gh-130806: حذف کردن
gzip.GzipFileپیش از بسته شدن آن، اکنون یکResourceWarningصادر میکند.gh-130637: افزودن اعتبارسنجی برای دادههای پاسخ عددی در متد poplib.POP3.stat()
gh-130665: اعمال locale به calendar CLI تنها زمانی که از طریق
--localeتنظیم شده باشد و نه از طریق متغیر محیطیLANG.gh-130660: متغیرهای
sys.ps1وsys.ps2اکنون پس از فراخوانیcode.interact()بازیابی میشوند.gh-130608: آرگومان dirs_exist_ok از
pathlib.Path.copy()وcopy_into()حذف شد. این متدها در پایتون ۳.۱۴ جدید هستند.gh-130461: دایرکتیوهای
.. index::از مستندات ماژولuuidحذف شدند. این دایرکتیوها پیشتر ورودیهایی را در اندیس عمومی برایgetnode()و همچنین توابع سازندهیuuid1()،uuid3()،uuid4()،uuid5()وuuid8()ایجاد میکردند.gh-130379: ماژول zipapp اکنون فهرست پروندههایی را که قرار است به آرشیو اضافه شوند، پیش از ایجاد آرشیو محاسبه میکند. این کار از گنجانده شدن تصادفی هدف هنگام ایجاد آن در پوشهی مبدأ جلوگیری میکند.
gh-82987: نقاط توقف درونخطی مانند
breakpoint()یاpdb.set_trace()همیشه برنامه را در قاب فراخواننده متوقف خواهند کرد و الگویskip(در صورت وجود) را نادیده میگیرند.gh-125377: عبارت
<tab>در ابتدای سطر در ورودی چندسطریpdbاکنون به جای درج نویسهی\t، یک تورفتگی ۴-فضایی را پر میکند.gh-125413: اطمینان حاصل کنید مسیری که از
pathlib.Path.copy()یاmove()برگردانده میشود دارای ویژگیinfoبهروز است.gh-65697: ماژول configparser کتابخانهی استاندارد اکنون تلاش میکند اعتبارسنجی کند که کلیدهایی که مینویسد منجر به خرابی پرونده نمیشوند (ایجاد پروندهای که نتواند بهدستی توسط فراخوانی آیندهی ()read از همان پارسر تحلیل شود). تلاش برای یک عملیات نوشتن خرابکننده ()write خطای InvalidWriteError را بالا خواهد آورد.
gh-125413: با استفادهی بهتر از
infoدر سطح داخلی، سرعت متدPath.copyرا افزایش دهید.gh-130285: رفع حالت خاص برای
random.sample()که به پارامتر counts اجازه میداد یک جمعیت خالی را مشخص کند. بنابراین اکنون،sample([], 0, counts=[])وsample('abc', k=0, counts=[0, 0, 0])هر دو نتیجهای مشابهsample([], 0)ارائه میدهند.gh-124703: اجرای دستور
quitدرpdbهنگامی کهpdbاز طریق یک کنسول تعاملی با استفاده ازbreakpoint()یاpdb.set_trace()راهاندازی شده است، خطایbdb.BdbQuitرا بالا خواهد آورد.gh-107773: متد
__repr__()زیرکلاسdatetimeرا در هر دو پیادهسازی سازگار کنید. وصله توسط Semyon Moroz.gh-130250: رفع رگرسیون در
traceback.print_last().gh-123471: پیمایشهای همزمان روی
itertools.batchedرا تحت رشتهبندی آزاد (free-threading) امن کنید.gh-57537: پشتیبانی از نقاط توقف برای ماژولهای
zipimportرویpdbgh-126944: نمایش خطاهای صریح هنگام مفقود بودن آرگومانهای ضروری دستورات
pdbgh-127750: بهبود بازنمایی (repr) متدها و توصیفگرهای
functools.singledispatchmethod.gh-128520: اعمال سازگار تبدیل نوع در متدهای
pathlib.PurePathوPathکه میتوانند یک شیء مسیر را به عنوان آرگومان بپذیرند، مانندmatch()وrename(). این آرگومان اکنون در صورتی که فاقد ویژگیwith_segments()باشد به شیء مسیر تبدیل میشود، و در غیر این صورت خیر.gh-118761: بازنشانی تغییری در نسخهی قبلی که تلاش میکرد برخی ایمپورتهای کتابخانهی استاندارد مورد استفاده در ماژول
subprocessرا به صورت تنبل درآورد، زیرا این کار باعث بروز خطاها در طول فراخوانی متدهایی مانندterminateیاkillیاsend_signalتوسط نهاییسازهای__del__میشد.gh-130164: رفع عدم پرتاب
TypeErrorدر متدinspect.Signature.bind()برای آرگومانهای فقط-جایگاهی که با کلیدواژه ارائه شدهاند، زمانی که یک آرگومان کلیدواژهای چندآرگومانی (مانند**kwargs) حضور دارد.gh-130151: رفع نشتیهای ارجاع در توابع
_hashlib.hmac_new()و_hashlib.hmac_digest(). پچ توسط Bénédikt Tran.gh-130145: رفع مشکل متد
asyncio.AbstractEventloop.run_forever()زمانی که حلقهی دیگری در حال اجراست.gh-130139: رفع باگی که در آن تابع
ast.parse()هنگام فراخوانی با مقدار optimize=False، روی ورودیخت نحوی انتزاعی (AST) که نوع درستی ندارد خطا صادر نمیکرد.gh-127260: ممنوع کردن استفاده از دو نقطه (":") به عنوان جداکنندهی جزء کسری و سایر بهبودها در سازگاری پرتاب خطا بین پیادهسازیهای C و پایتون در متدهای
datetime.time.fromisoformat()وdatetime.datetime.fromisoformat(). پچ توسط Semyon Moroz.gh-85795: استفاده از
super()و متغیر بستار مربوط به__class__در متدهای تعریفشده توسط کاربر در زیرکلاسهایtyping.NamedTupleاکنون به طور صریح در زمان اجرا ممنوع است. مشارکت توسط Bartosz Sławecki در gh-130082.gh-118761: بهبود زمان ایمپورت ماژول
cmdاز طریق ایمپورت تنبل ماژولinspectو حذفstring. پچ توسط Semyon Moroz.gh-129726: رفع مشکل
gzip.GzipFileکه هنگام ارجاع به یک شیء موقت، در طول زبالهروبی یک استثنای غیرقابلپرتاب ایجاد میکرد، با شکستن حلقهی ارجاع توسط ماژولweakref.gh-127750: حذف کشسازی خراب در
functools.singledispatchmethod()که در gh-85160 معرفی شده بود. دستیابی به همان کارایی با استفاده از بهینهسازی متفاوت.gh-129948: افزودن پشتیبانی از
setمشترک بهmultiprocessing.managers.SyncManagerاز طریقSyncManager.set().gh-129965: بهروزرسانی انواع MIME برای پسوندهای
.aviو.wav. افزودن انواع MIME برای.docx،.pptx،.xlsx،.epub،.flac،.m4a،.odg،.odp،.ods،.odt،.oga،.ogg،.ogxو.weba. پچ توسط Hugo van Kemenade.gh-129889: پشتیبانی از پروتکل مدیر زمینه توسط
contextvars.Token. پچ توسط Andrew Svetlov.gh-97850: بهروزرسانی هشدار منسوخسازی
importlib.abc.Loader.load_module.gh-129678:
configparser.ConfigParser: عدم نوشتن یک بخش نامگذارینشدهی خالیgh-128641: بازیابی کارایی متد
configparser.ConfigParser.read().gh-129569: رفع تابع
unicodedata.normalize()به طوری که وقتی ورودی از یک زیرکلاسstrبه آن داده میشود، صرفنظر از اینکه رشته از قبل نرمالسازی شده باشد یا خیر، همیشه یک شیءstrتوکار برمیگرداند.gh-128231: اجرای چندین دستور در REPL جدید اکنون بلافاصله با برخورد به اولین استثنا متوقف میشود. پچ توسط Bartosz Sławecki.
gh-96092: رفع باگ در تابع
traceback.walk_stack()که هنگام فراخوانی با مقدار None، فریمهای بیشتری را نسبت به نسخههای قبلی رد میکرد. این اصلاح باگ همچنین walk_stack را تغییر میدهد تا به جای فریمی که برای اولین بار استفاده میشود، پشته را در فریمی که در آن فراخوانی شده است پیمایش کند.gh-129288: افزودن فیلدهای اختیاری
l2_cidوl2_bdaddr_typeبه تاپل sockaddr مربوط بهBTPROTO_L2CAPدر ماژولsocket.gh-128703: رفع تابع
mimetypes.guess_type()برای استفاده از نگاشت پیشفرض برایContent-Typeخالی در رجیستری.gh-128647: نوشتن سریعتر در بافرهای ارسالشده به پیادهسازیهای
readinto()وreadinto1()درgzip.GzipFileکه از تخصیصهای غیرضروری جلوگیری میکند. وصله توسط Chris Markiewicz.gh-128184: بهبود نمایش شیء
annotationlib.ForwardRefدر بازنماییهایinspect.Signature. این کار همچنین خطایNameErrorرا که هنگام استفاده ازdataclasses.dataclass()روی کلاسهایی با ارجاع پیشروی غیرقابلحل رخ میداد، برطرف میکند.gh-128041: اضافهکردن
concurrent.futures.ProcessPoolExecutor.terminate_workers()وconcurrent.futures.ProcessPoolExecutor.kill_workers()به عنوان روشهایی برای خاتنهدادن یا کشتن تمام فرایندهای کارگر فعال در استخر دادهشده. (مشارکت توسط Charles Machalow در gh-130849.)gh-127647: اضافهکردن پروتکلهای
io.Readerوio.Writerبه عنوان جایگزینهایی برایtyping.IO،typing.TextIOوtyping.BinaryIO.gh-109798: اضافهکردن اطلاعات بیشتر به پیامهای خطا در
datetimeو سازگارتر کردن پیامها بین پیادهسازیهای C و پایتون. وصله توسط Semyon Moroz.gh-125746: به تعویق انداختن زمان حذف متد منسوخشدهی
zipimport.zipimporter.load_module()به نسخهی ۳.۱۵. به جای آن ازzipimport.zipimporter.exec_module()استفاده کنید.gh-74028: اضافهکردن پارامتر اختیاری
buffersizeبهconcurrent.futures.Executor.map()برای محدودکردن تعداد وظایف ارسالشدهای که نتایج آنها هنوز بازگردانده (yield) نشدهاند. اگر بافر پر باشد، پیمایش روی paittern (یا iterables) تا زمانی که نتیجهای از بافر بازگردانده شود متوقف میماند.gh-124927: نویسههای غیرقابلچاپ اکنون به درستی در REPL جدید مدیریت میشوند.
gh-124096: روشنکردن حالت پایانه مجازی و فعالکردن جایگذاری قلابدار (bracketed paste) در REPL روی کنسول ویندوز. (اگر پایانه از جایگذاری قلابدار پشتیبانی نکند، فعالکردن آن هیچ کاری انجام نمیدهد.)
gh-89083: اضافهکردن
uuid.uuid7()برای تولید شیءهای UUIDv7 همانطور که در RFC 9562 مشخص شده است. وصله توسط Bénédikt Tran.gh-89083: اضافهکردن
uuid.uuid6()برای تولید شیءهای UUIDv6 همانطور که در RFC 9562 مشخص شده است. وصله توسط Bénédikt Tran.gh-117151: افزایش مقدار
io.DEFAULT_BUFFER_SIZEاز ۸k به ۱۲۸k و تنظیمopen()در پلتفرمهایی کهos.fstat()یک فیلدst_blksizeفراهم میکند (مانند لینوکس) برای استفاده ازmax(min(blocksize, 8 MiB), io.DEFAULT_BUFFER_SIZE)به جای استفادهی همیشه از اندازه بلوک دستگاه. این کار باید عملکرد I/O را بهبود بخشد. وصله توسط Romain Morotti.gh-105499: تبدیل
types.UnionTypeبه یک نام مستعار برایtyping.Union. هر دو عبارتint | strوUnion[int, str]اکنون نمونههایی از یک نوع را ایجاد میکنند. وصله توسط Jelle Zijlstra.gh-93096: مستندسازی خط فرمان برای
mimetypes. این ماژول اکنون در صورت بروز خطا با1به جای0و برای پارامترهای نادرست خط فرمان با2به جای1خارج میشود. همچنین، خطاها به جای stdout روی stderr چاپ میشوند و متن آنها فشردهتر شده است. وصله توسط Oleg Iarygin و Hugo van Kemenade.
مستندات¶
gh-125722: نیاز به Sphinx نسخهی ۸.۲.۰ یا بالاتر برای ساخت مستندات پایتون. وصله توسط Adam Turner.
gh-129712: برچسبهای wheel پشتیبانیشده توسط هر گزینهی SDK همگانی macOS اکنون مستند شدهاند.
gh-46236: رابط برنامهنویسی C: مستندسازی
PyUnicode_RSplit()،PyUnicode_Partition()وPyUnicode_RPartition().
هسته و توکارها (Core and Builtins)¶
gh-131141: رفع رقابت دادهای (data race) در ابزار دقیق
sys.monitoringهنگام ثبت کالبک.gh-130804: رفع پشتیبانی از نویسههای یونیکد روی ویندوز در REPL جدید.
gh-130932: رفع مدیریت نادرست استثنا در
_PyModule_IsPossiblyShadowinggh-122029: تابعهای
sys.setprofile()وsys.settrace()رویدادc_callرا برایINSTRUMENTED_CALL_FUNCTION_EXتولید نخواهند کرد، اگر شیء فراخوانیپذیر یک متد با یک تابع C پیچیدهشده باشد، زیرا در چنین حالتی رویدادc_returnرا تولید نمیکنیم.gh-129964: رفع فروپاشی کامپایلر درجا (JIT) روی ویندوز در پردازندههای آرم (Arm). وصله توسط دیگو روسو (Diego Russo) و برانت بوچر (Brandt Bucher).
gh-130851: رفع فروپاشی در ساخت نخبندی آزاد هنگام ساخت یک شیء
codeباco_constsکه شامل نمونههایی از انواعی است که در غیر این صورت توسط کامپایلر بایتکد تولید نمیشوند.gh-128534: اطمینان حاصل کنید که هر دو شاخهی چپ و راست منبع یکسانی برای حلقههای
async forدارند. این شاخهها را به پیمایشگرco_branches()اضافه کنید.gh-130794: رفع نشت حافظه در ساخت نخبندی آزاد هنگام تغییر اندازهی یک فهرست یا دیکشنری مشترک از چندین نخ با عمر کوتاه.
gh-130415: بهبود درک کامپایلر درجا (JIT) از اعداد صحیح در زمینهی بولی.
gh-130382: رفع ارسال نشدن
PyRefTracer_DESTROYازPy_DECREF()درPython/ceval.c.gh-124878: رفع شرایط رقابت (race conditions) در طول نهاییسازی رانتایم که میتواند منجر به دسترسی به حافظهی آزادشده شود.
gh-130415: بهبود توانایی کامپایلر درجا (JIT) آزمایشی در محدود کردن مقادیر بولی بر اساس نتایج آزمونهای درستی.
gh-130618: رفع باگی که هنگام استفاده از افاسترینگها با عبارتهای
lambdaدارای نویسههای غیر اسکی باعث ایجادUnicodeDecodeErrorیاSystemErrorمیشد. وصله توسط پابلو گالیندو (Pablo Galindo)gh-123044: مطمئن شوید که مکان اهداف شاخه در عبارتهای
matchدر بدنهی آن قرار دارد، نه در الگو.gh-128534: افزودن پایش شاخه (رویدادهای
BRANCH_LEFTوBRANCH_RIGHT) برای حلقههایasync for.gh-130163: رفع فروپاشیهای احتمالی مرتبط با تغییر همزمان و استفاده از ویژگیهای ماژول
sys.gh-122029:
INSTRUMENTED_CALL_KWمتد را قبل از پایش گسترش میدهد تا رفتار واقعی را با دقت بیشتری منعکس کند.gh-130415: بهبود توانایی کامپایلر درجا (JIT) در بهینهسازی رشتهها در زمینههای بولی.
gh-130396: استفاده از محدودیتهای واقعی پشته (از pthread_getattr_np(3)) برای لینوکس و سایر سیستمهایی که
_GNU_SOURCEدر آنها تعریف شده است، هنگام تعیین محدودیتها برای محافظت از پشته C.gh-128396: رفع فروپاشی رخداده هنگام فراخوانی
locals()درون یک درک (comprehension) خطی که از همان متغیر محلی به عنوان محدوده قاب بیرونی استفاده میکند، جایی که متغیر یک متغیر آزاد یا سلولی است.gh-129107: رفع دو تابع دیگر
bytearrayبرای نخبندی آزاد.gh-127705: استفاده از ارجاعات برچسبگذاریشده (
_PyStackRef) برای ساخت پیشفرض و همچنین ساخت نخبندی آزاد. این کار تأثیر عملکردی منفی کوچکی در کوتاهمدت دارد، اما در آینده امکان سرعتبخشیدنهای بزرگتر را فراهم میکند و با اجازه دادن به یک پیادهسازی واحد از ارجاعات برچسبگذاریشده در آینده، هزینههای نگهداری را به طور قابل توجهی کاهش میدهد.gh-130094: برطرفسازی دو شرط رقابت (race condition) مربوط به ایمپورتهای همزمان که میتوانستند به خطاهای کاذب با
ModuleNotFoundErrorمنجر شوند.gh-129107: ایمنسازی پیمایشگر
bytearrayدر برابر نخبندی آزاد.gh-115802: استفاده از مدل کد «متوسط» بهینهتر برای کدهای کامپایلشدهی JIT روی پلتفرمهای پشتیبانیشده.
gh-107956: یک پروندهی
build-details.jsonاکنون در پوشهی کتابخانهی استاندارد مستقل از پلتفرم نصب میشود (پیادهسازی PEP 739).gh-116042: رفع موقعیت برای خطاهای نحوی (SyntaxErrors) مربوط به گریزهای نامعتبر در توکنساز. تکه کُد (Patch) توسط Pablo Galindo
gh-91079: تغییر محافظت در برابر سرریز پشتهی C بهگونهای که میزان پشتهی مصرفشده را در نظر بگیرد، نه یک شمارنده. این تغییر در بسیاری از موارد امکان بازگشتی عمیقتر را فراهم میکند، اما همچنان ایمن باقی میماند.
gh-129715: بهبود نحوهی مدیریت بازگشت به فراخوانکنندگان ناشناخته در JIT آزمایشی.
کتابخانه¶
gh-129983: رفع شرط رقابت دادهها در compile_template در
sre.c.
هسته و توکارها (Core and Builtins)¶
gh-129967: رفع یک شرط رقابت در نسخهی نخبندی آزاد زمانی که
repr(set)همزمان باset.clear()فراخوانی میشود.gh-129953: پشتهی داخلی (ارزیابی) اکنون هر زمان که اجرا از مفسر یا کد کامپایلشدهی JIT خارج شود، به حافظه ریخته (spill) میشود. این کار نباید تأثیر قابلمشاهدهای در پایتون یا افزونههای توکار داشته باشد، اما امکان بهینهسازیهای مهم مختلفی را در آینده فراهم میکند.
gh-129515: شفافسازی پیامهای خطای نحو برای عبارتهای شرطی زمانی که یک دستور قبل از یک
ifیا بعد از یک کلیدواژهelseمشخص شده باشد.gh-129349: متدهای
bytes.fromhex()وbytearray.fromhex()اکنونbytesاسکی و اشیای شبهبایت را میپذیرند.gh-129149: افزودن مسیر سریع برای اعداد صحیح با اندازهی متوسط در
PyLong_FromSsize_t(). تکهکد (Patch) توسط Chris Eibl.gh-129107: ایمنسازی
bytearrayتحت نخبندی آزاد.gh-128974: رفع فروپاشی در
UnicodeError.__str__هنگامی که ویژگیهای سفارشی__str__()را با عوارض جانبی پیادهسازی میکنند. تکهکد (Patch) توسط Bénédikt Tran.gh-126085: کلاس
typing.TypeAliasTypeاکنون از باز کردن بستهی ستارهای پشتیبانی میکند.gh-125331: عبارت
from __future__ import barry_as_FLUFLاکنون در زمینههای بیشتری کار میکند، از جمله زمانی که در پروندهها استفاده میشود، با پرچم-c، و در REPL وقتی چندین دستور روی یک سطر قرار دارند. پیش از این، این قابلیت فقط در سطرهای بعدی در REPL و زمانی که پرچمهای مناسب مستقیماً بهcompile()ارسال میشدند، کار میکرد. تکهکد (Patch) توسط Pablo Galindo.gh-121464: پیمایشهای همزمان روی یک پیمایشگر
enumerate()را تحت نخبندی آزاد ایمن کنید. نگاه کنید به Strategy for Iterators in Free Threading.gh-87790: پشتیبانی از زیرخط و ویرگول به عنوان جداکنندههای هزارگان در بخش کسری برای انواع نمایش ممیز شناور در قالببندی رشتهای سبک جدید (با
format()یا افاسترینگها). تکهکد (Patch) توسط Sergey B Kirpichev.gh-124445: رفع تخصصیسازی مستعارهای عامی که روی یک
typing.ParamSpecعام هستند و با یک متغیر نوع تو در تو تخصصی شدهاند.gh-120608: تابع
reversed()را برای استفاده در ساختِ چندرشتهای آزاد (free-threading) سازگار کنید. تابعreversed()همچنان از نظر اینکه پیمایشهای همزمان ممکن است شیء واحدی را ببینند نخایمن نیست، اما آنها وضعیت مفسر را خراب نخواهند کرد.
کتابخانه¶
gh-100388: متد
platform._sys_version()را زمانی که__DATE__در هنگام ساخت تعریف نشده است، با تغییر دادن رشتهی تاریخ و زمان پیشفرضِ هنگام ساخت به مبدأ زمان UNIX اصلاح کنید.
هسته و توکارها (Core and Builtins)¶
bpo-44369: خطاهای نحوی مربوط به رشتههای بستهنشده را بهبود ببخشید. اصلاحیه از پابلو گالیندو (Pablo Galindo)
رابط C API¶
gh-111178: API مربوط به
PyCMethodرا اصلاح کنید: عبارتsize_t nargsرا باPy_ssize_t nargsدرPyCMethodجایگزین کنید. اصلاحیه از ویکتور استینر (Victor Stinner).gh-130947: تابع
PySequence_Fast()را دوباره به API محدود C اضافه کنید. اصلاحیه از ویکتور استینر (Victor Stinner).gh-128863: توابع خصوصی زیر منسوخ شدهاند و برنامهریزی شده است که در پایتون ۳.۱۸ حذف شوند:
_PyUnicodeWriter_Init(): عبارت_PyUnicodeWriter_Init(&writer)را باwriter = PyUnicodeWriter_Create(0)جایگزین کنید._PyUnicodeWriter_Finish(): عبارت_PyUnicodeWriter_Finish(&writer)را باPyUnicodeWriter_Finish(writer)جایگزین کنید._PyUnicodeWriter_Dealloc(): عبارت_PyUnicodeWriter_Dealloc(&writer)را باPyUnicodeWriter_Discard(writer)جایگزین کنید._PyUnicodeWriter_WriteChar(): عبارت_PyUnicodeWriter_WriteChar(&writer, ch)را باPyUnicodeWriter_WriteChar(writer, ch)جایگزین کنید._PyUnicodeWriter_WriteStr(): عبارت_PyUnicodeWriter_WriteStr(&writer, str)را باPyUnicodeWriter_WriteStr(writer, str)جایگزین کنید._PyUnicodeWriter_WriteSubstring(): عبارت_PyUnicodeWriter_WriteSubstring(&writer, str, start, end)را باPyUnicodeWriter_WriteSubstring(writer, str, start, end)جایگزین کنید._PyUnicodeWriter_WriteASCIIString(): عبارت_PyUnicodeWriter_WriteASCIIString(&writer, str)را باPyUnicodeWriter_WriteUTF8(writer, str)جایگزین کنید._PyUnicodeWriter_WriteLatin1String(): عبارت_PyUnicodeWriter_WriteLatin1String(&writer, str)را باPyUnicodeWriter_WriteUTF8(writer, str)جایگزین کنید._PyUnicodeWriter_Prepare(): (بدون جایگزین)._PyUnicodeWriter_PrepareKind(): (بدون جایگزین).
پروژهی pythoncapi-compat project را میتوان برای دریافت این توابع عمومی جدید در پایتون ۳.۱۳ و نسخههای قدیمیتر استفاده کرد.
توسط Victor Stinner وصل شد.
gh-45325: پارامتر قالب جدید
pرا بهPy_BuildValue()اضافه کنید که به شما اجازه میدهد یک عدد صحیح در C را بگیرید و یک شیءboolدر پایتون تولید کنید. اصلاحیه از پابلو گالیندو (Pablo Galindo).
ساخت¶
gh-131035: از
-flto=thinبرای زمانهای ساخت سریعتر با استفاده از clang-cl روی ویندوز استفاده کنید. اصلاحیه از کریس ایبل (Chris Eibl).gh-130740: اطمینان حاصل کنید که
Python.hپیش ازstdbool.hگنجانده میشود، مگر اینکهpyconfig.hپیش از آن یا در برخی زمینههای خاصِ پلتفرم گنجانده شده باشد.gh-130090: ساخت با
PlatformToolset=ClangCLروی ویندوز اکنون از PGO (بهینهسازی هدایتشده با پروفایل) پشتیبانی میکند. این وصله توسط Chris Eibl با پشتیبانی ارزشمند Steve Dover تهیه شده است.gh-129819: امکان ساخت کامپایلر درجا (JIT) با مفسر انتهایفراخوانی (tailcall) را فراهم میکند.
gh-129989: رفع باگی که در آن مفسر انتهایفراخوانی (tailcall) هنگامی که گزینهی
--without-tail-call-interpبه اسکریپت پیکربندی داده میشد، فعال میگردید.gh-129838: هنگام کامپایل با نسخهی جدیدی از GCC و فعال بودن ابزار بررسی سلامت (sanitizer) مقادیر نامشخص، از بازتعریف
_Py_NO_SANITIZE_UNDEFINEDخودداری کنید.gh-82909: پیوند دادن مبتنی بر
#pragmaباpython3*.libاکنون میتواند با استفاده از Py_NO_LINK_LIB غیرفعال شود. وصله توسط Jean-Christophe Fillion-Robin.
نسخهی آلفای ۵ از پایتون ۳.۱۴.۰¶
تاریخ انتشار: ۱۱-۰۲-۲۰۲۵
مکاواس¶
gh-91132: بهروزرسانی نصبکنندهی macOS برای استفاده از ncurses ۶.۵.
Tools/Demos¶
آزمونها¶
gh-129386: اضافه کردن
test.support.reset_codeکه میتوان از آن برای بازنشانی بهینهسازیهای مختلف در سطح بایتکد و ابزار دقیق محلی برای یک تابع استفاده کرد.gh-128474: غیرفعال کردن موارد آزمون
test_embedکه روی باینریهای ابزار دقیق BOLT باعث خطای حافظه (segfault) میشوند. این آزمونها تنها زمانی که BOLT فعال باشد، غیرفعال میشوند.gh-128003: افزودن گزینهی
--parallel-threads=Nبه اجراکنندهی آزمون رگرسیون که آزمونهای فردی را به صورت موازی در چندین نخ اجرا میکند تا باگهای همروندی پیدا شوند. توجه داشته باشید که بیشتر بدنهی آزمون هنوز از نظر ایمنی نخ بررسی نشده است یا در صورت لزوم با@thread_unsafeنشانهگذاری نشده است.
امنیت¶
gh-105704: هنگام استفاده از
urllib.parse.urlsplit()وurllib.parse.urlparse()، تجزیه میزبان (host parsing) نامهای دامنهی حاوی براکتهای مربع ([و]) را رد نمیکرد. براکتهای مربع طبق RFC 3986 Section 3.2.2 فقط برای میزبانهای IPv6 و IPvFuture معتبر هستند.gh-126108: رفع خطای احتمالی ارجاع به اشارهگر
NULLدرPySys_AddWarnOptionUnicode().gh-80222: رفع باگ در تا کردن رشتههای نقلقولشده هنگام تختسازی یک پیام ایمیل با استفاده از یک سیاست ایمیل مدرن. پیشتر، هنگامی که یک رشتهی نقلقولشده به گونهای تا میشد که بیش از یک سطر را در بر بگیرد، نقلقولهای پیرامونی و کاراکترهای گریز داخلی حذف میشدند. این امر از نظر تئوری میتوانست برای جعل سطرهای سرآیند با استفاده از یک رشتهی نقلقولشدهی با دقت ساختهشده استفاده شود، اگر ایمیل رندرشدهی حاصل منتقل یا مجدداً تجزیه میشد.
gh-119511: رفع یک انکار سرویس بالقوه در ماژول
imaplib. هنگام اتصال به یک سرور مخرب، این امر میتواند باعث تخصیص مقدار دلخواهی از حافظه شود. در بسیاری از سیستمها این کار بیضرر است زیرا حافظهی مجازی استفادهنشده فقط یک نگاشت است، اما اگر این مورد به محدودیت اندازهی آدرس مجازی برخورد کند، میتواند منجر به یکMemoryErrorیا فروپاشی فرآیند دیگری شود. در سیستمها یا نسخههای ساخت غیرمعمول که در آن تمام حافظهی تخصیصیافته لمس شده و توسط رم یا ذخیرهسازی واقعی پشتیبانی میشود، ممکن است با انجام این کار منابع را مصرف کند تا به طور مشابه دچار فروپاشی شود.
کتابخانه¶
gh-129939: صفحات مقایسه با تغییرات برجستهشده که توسط کلاس
difflib.HtmlDiffتولید شدهاند، اکنون از حالت تاریک پشتیبانی میکنند.gh-129928: اگر یک تابع SQL تعریفشده توسط کاربر با تعداد نامعتبر پارامترها ایجاد شود، استثنای
sqlite3.ProgrammingErrorرا بالا بیاورید. وصله توسط Erlend Aasland.gh-129583: بهروزرسانی پکیج داخلی pip به نسخهی ۲۵.۰.۱
gh-129766: رفع فروپاشی در
warnings، هنگامی که_release_lock()بدون قفل موجود فراخوانی میشود.gh-129005: تابع
_pyio.FileIO.readall()اکنون با استفاده از همان الگوریتمی که_io.FileIO.readall()استفاده میکند، یک بافر داده را تخصیص داده، اندازهی آن را تغییر میدهد و پر میکند.gh-129646: بهروزرسانی نگاشت نام مستعار locale در ماژول
localeبرای تطابق با آخرین نگاشت نام مستعار locale در X Org و پشتیبانی از localeهای جدید در Glibc 2.41.gh-128317: قرار دادن برجستهسازی گاهشماری رابط خط فرمان (CLI) در یک کلاس خصوصی، و حذف
highlight_dayاز API عمومیcalendar.TextCalendar. ارسالشده توسط Hugo van Kemenade.gh-129603: رفع باگهایی که در آنها اشیاء
sqlite3.Rowاگر صفت ارثبریشدهیdescriptionآنها رویNoneتنظیم شده بود، ممکن بود دچار خطای حافظه (segfault) شوند. ارسالشده توسط Erlend Aasland.gh-129559: افزودن متد
bytearray.resize()به گونهای کهbytearrayبتواند بهطور بهینه در همان محل تغییر اندازه دهد.gh-129502: خطاهای بعید در آمادهسازی آرگومانها برای کالبک
ctypesاکنون به همان روش خطاهای ایجادشده در کالبک یا در تبدیل نتیجهی کالبک مدیریت میشوند -- یعنی استفاده ازsys.unraisablehook()به جایsys.excepthook()و تنظیم نکردنsys.last_excو سایر متغیرها.gh-129403: اصلاح پیام
ValueErrorبرایasyncio.Barrierوthreading.Barrier.gh-129409: رفع سرریز عدد صحیح در ماژول
csvهنگام نوشتن یک فیلد دادهی بزرگتر از ۲ گیگابایت.gh-126400: افزودن یک آرگومان کلیدواژهای timeout از نوع socket به
logging.handlers.SysLogHandler.gh-118761: همیشه ایمپورت تنبل
warningsدرthreading. ارسالشده توسط Taneli Hukkinen.gh-118761: بهبود زمان ایمپورت
subprocessبا ایمپورت کردن تنبلlocaleوsignal. ارسالشده توسط Taneli Hukkinen.gh-129346: در
sqlite3، مدیریت خطای کمبود حافظه هنگام ایجاد توابع SQL تعریفشده توسط کاربر.gh-129005: بهینهسازی
_pyio.FileIO.readintoبا اجتناب از اشیاء و نسخههای غیرضروری با استفاده ازos.readinto().gh-129195: پشتیبانی از گزارشدهی اطلاعات گراف فراخوانی از
asyncio.staggered.staggered_race().gh-129205: افزودن
os.readinto()برای خواندن درون یک شیء بافر از یک توصیفگر پرونده.gh-128772: رفع
pydocبرای متدهایی که صفت__module__آنها برابر باNoneاست.gh-129061: رفع مشکل FORCE_COLOR و NO_COLOR هنگامی که رشتهها خالی هستند. ارسالشده توسط Hugo van Kemenade.
gh-92897: زمانبندی منسوخسازی آرگومان
check_homeدر تابعsysconfig.is_python_build()برای نسخهی ۳.۱۵ پایتون.gh-129064: منسوخ کردن تابع
sysconfig.expand_makefile_vars()، به نفع استفاده ازsysconfig.get_paths()با آرگومانvars.gh-128550: یک بهینهسازی نادرست مربوط به وظیفههای مشتاق در
asyncio.TaskGroupکه باعث از دست رفتن لغوها میشد، حذف شد.gh-118761: کاهش زمان ایمپورت
pstatsوzipfileتا ۲۰ درصد، با حذف ایمپورتهای غیرضروری بهtyping. وصلهای از Bénédikt Tran.gh-128978: رفع یک خطای
NameErrorدرsysconfig.expand_makefile_vars(). وصلهای از Bénédikt Tran.gh-128961: رفع یک فروپاشی هنگام تنظیم وضعیت روی یک پیمایشگر
array.arrayخاتمهیافته.gh-128894: رفع مشکل
traceback.TracebackException._format_syntax_errorبه طوری که روی استثناهای دارای متادیتای سفارشی با شکست مواجه نشود.gh-128916: از تلاش برای تنظیم
SO_REUSEPORTروی سوکتهای خانوادههای آدرسی غیر ازAF_INETوAF_INET6خودداری کنید، زیرا با این خانوادههای آدرس بیمعنی است و این فراخوانی با هستهی لینوکس نسخهی ۶.۱۲.۹ و جدیدتر با خطا مواجه خواهد شد.gh-118761: بهبود زمان ایمپورت
tomllibبا حذف ایمپورتهایtyping،stringوtomllib._types. وصلهای از Taneli Hukkinen.gh-128679:
tracemalloc: رفع شرایط رقابت هنگامی کهtracemalloc.stop()توسط یک نخ فراخوانی میشود، در حالی که سایر نخها در حال ردیابی تخصیصهای حافظه هستند. وصلهای از Victor Stinner.gh-128891: افزودن آپکدهای تخصصی به
opcode.opname.gh-118761: کاهش زمان ایمپورت
gettextتا ده برابر، با ایمپورت کردنreبر حسب تقاضا. بهویژه،reدیگر بهطور ضمنی به عنوانgettext.reدر معرض نمایش گذاشته نمیشود. وصلهای از Eli Schwartz.gh-118761: کاهش زمان ایمپورت
optparseزمانی که هیچ متن راهنمایی چاپ نمیشود. وصلهای از Eli Schwartz.gh-128657: رفع ارجاع اضافی احتمالی هنگام استفاده از شیءهای بازگرداندهشده توسط
hashlib.sha256()تحت نخبندی آزاد.gh-118761: کاهش زمان ایمپورت
csvتا پنج برابر، با ایمپورت کردنreبر حسب تقاضا. بهویژه،reدیگر بهطور ضمنی به عنوانcsv.reدر معرض نمایش گذاشته نمیشود. وصلهای از Bénédikt Tran.gh-128308: پشتیبانی از آرگومان کلیدواژهای name برای وظیفههای مشتاق در
asyncio.loop.create_task()،asyncio.create_task()وasyncio.TaskGroup.create_task()، با پاس دادن تمام kwargs به کارخانه وظیفه تعیینشده توسطasyncio.loop.set_task_factory().gh-118761: بهبود کارایی
base64.b16decode()تا ده برابر با بررسی کارآمدتر رشتهی بایت برای ارقام مبنای شانزده. کاهش زمان ایمپورتbase64تا شش برابر، با عدم ایمپورت کردنre. وصلهای از Bénédikt Tran، Chris Markiewicz و Adam Turner.gh-128156: هنگام استفاده از
libffiسیستم macOS، پشتیبانی از نوعهای پیچیده درctypesاکنون در زمان اجرا (macOS 10.15 یا جدیدتر) بررسی میشود. این نوعها همچنین باید در زمان ساخت در دسترس باشند.gh-128636: رفع خطای PyREPL هنگامی که
os.environبا یک مقدار نامعتبر بازنویسی میشود.gh-128498: پیشفرض قرار دادن isatty برای stdout جهت تشخیص رنگ به جای stderr. وصلهای از Hugo van Kemenade.
gh-128384: افزودن قفلگذاری به
warningsبرای جلوگیری از برخی شرایط رقابت هنگام استفاده از نخبندی آزاد. تغییر_warnings_runtime_state.mutexبه یک قفل متقابل بازگشتی و قرار دادن آن در معرضwarnings، از طریق تابعهای_acquire_lock()و_release_lock(). این قفل هنگام بهروزرسانیfiltersو_filters_versionنگه داشته میشود.gh-128509: تابع
sys._is_immortal()را برای شناسایی شیءهای نامیرا در زمان اجرا اضافه میکند.gh-128479: رفع مشکل نشت وظایف و صدور یک استثنای مدیریتنشده در
asyncio.staggered.staggered_race().gh-128427: ثابتهای
uuid.NILوuuid.MAXاکنون برای نمایش قالبهای Nil و Max UUID همانطور که توسط RFC 9562 تعریف شدهاند، در دسترس هستند.gh-91279: متد
zipfile.ZipFile.writestr()اکنون بهSOURCE_DATE_EPOCHاحترام میگذارد تا توزیعها بتوانند آن را بهطور مرکزی تنظیم کنند و ابزارهای ساخت برای تولید خروجی قابلبازتولید از آن استفاده کنند.gh-112064: رفع مدیریت نادرست اندازههای خواندن منفی در
HTTPResponse.read. وصله توسط Yury Manushkin.gh-128131: پشتیبانی کامل از دسترسی تصادفی به پروندههای فشردهنشده، رمزنگارینشده و فقطخواندنیِ zip که توسط
ZipFile.openبه دست آمدهاند.gh-127975: در صورت عدم نیاز، از استفادهی مجدد از انواع نقلقول در
ast.unparse()جلوگیری کنید.gh-115514: رفع استثناها و نوشتههای ناقص پس از بسته شدن
asyncio._SelectorTransportپیش از اتمام عملیات نوشتن.gh-121604: اضافه کردن هشدارهای منسوخسازیِ جاافتاده برای
importlib.machinery.DEBUG_BYTECODE_SUFFIXES،importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES،importlib.machinery.WindowsRegistryFinder،importlib.abc.ResourceLoader، وimportlib.abc.SourceLoader.path_mtime().gh-127873: هنگامی که
-Eتنظیم شده است، هنگام رنگی کردن خروجی، فقطPYTHON_COLORSرا نادیده بگیرید و نهFORCE_COLOR/NO_COLOR/TERMرا. وصله توسط Hugo van Kemenade.gh-125413: ویژگی
pathlib.Path.infoرا اضافه میکند که یک شیء پیادهسازیکنندهی پروتکلpathlib.types.PathInfo(که آن هم جدید است) را ذخیره میکند. این شیء از پرسوجوی نوع پرونده و کش کردن داخلی نتایجstat()پشتیبانی میکند. شیءهای مسیر تولیدشده توسطiterdir()با اطلاعات نوع پرونده که از پویش پوشه والد به دست آمدهاند، مقداردهی اولیه میشوند.gh-127712: رفع مدیریت آرگومان
secureدرlogging.handlers.SMTPHandler.gh-127096: عدم ایجاد مجدد بخش بدون نام در هر خواندن در
configparser.ConfigParser. وصله توسط Andrey Efremov.gh-124369: منسوخ کردن
pdb.Pdb.curframe_localsgh-126332: رفع خرابی _pyrepl هنگام وارد کردن یک CTRL-Z دوبل روی یک سطر سرریزکننده.
gh-125553: رفع وارونگی رفتوبرگشتی برای ادامههای بکاسلش در
tokenize.untokenize().gh-91048: توابع
asyncio.capture_call_graph()وasyncio.print_call_graph()را اضافه میکند.gh-124703: خروج از
pdbدر حالتinlineاکنون به جای چاپ کردن ردیابی استثنا، یک اعلان تأیید را نمایش داده و بهخوبی خارج میشود.gh-123987: رفع مسئلهای در NamespaceReader که در آن یک آیتم غیرمسیر در یک مسیر فضای نام، مانند یک نشانگر اضافه شده توسط یک نصبکنندهی قابلویرایش، بارگذاری منابع را مختل میکرد.
gh-119349: افزودن تابع
ctypes.util.dllist()برای فهرست کردن کتابخانههای مشترک بارگذاریشده برای فرایند جاری.gh-55454: افزودن پشتیبانی از IMAP4
IDLEبه ماژولimaplib. وصله توسط Forest.gh-119257: نمایش منوی تکمیل زبانه در زیر سطر جاری که باعث رفتار پایدارتر میشود و یک باگ مربوط به حرکت نشانگر را رفع میکند. وصله توسط Daniel Hollas
gh-101410: پشتیبانی از پیامهای سفارشی برای خطاهای دامنه در ماژول
math(توابعmath.sqrt()،math.log()وmath.atanh()به عنوان نمونه تغییر یافتند). وصله توسط Charlie Zhao و Sergey B Kirpichev.gh-81340: استفاده پیشفرض از تابع
os.copy_file_range()در توابعshutil.copy()،shutil.copy2()وshutil.copyfile(). یک سیستکال زیرین در لینوکس به سامانههای فایلبندی فرصت میدهد تا از قابلیت کپی هنگام نوشتن (در مورد btrfs و XFS) یا کپی سمت سرور (در مورد NFS) استفاده کنند. وصله توسط Illia Volochii.bpo-27307: افزودن پشتیبانی از دسترسی به ویژگی و آیتم به
string.Formatterدر حالت شمارهگذاری خودکار که امکان استفاده از رشتههای قالببندی مانند '{.name}' و '{[1]}' را فراهم میکند.
IDLE¶
gh-129873: سادهسازی نمایش مستندات IDLE فقط با کپی کردن بخش متنی idle.html به idlelib/help.html. وصله توسط Stan Ulbrych.
مستندات¶
gh-125722: الزام به استفاده از Sphinx نسخه 8.1.3 یا جدیدتر برای ساخت مستندات پایتون. وصله توسط Adam Turner.
gh-67206: مستندسازی این موضوع که
string.printableبه مفهوم POSIX قابل چاپ نیست. به طور خاص، متدstring.printable.isprintable()مقدارFalseرا برمیگرداند. وصله توسط Bénédikt Tran.
هسته و توکارها (Core and Builtins)¶
gh-100239: جایگزینی آپکد BINARY_SUBSCR و خانوادهی آن با BINARY_OP و oparg مربوط به NB_SUBSCR.
gh-129732: رفع یک شرایط رقابت در
_Py_qsbr_reserveدر ساخت با نخبندی آزاد.gh-129763: حذف کلاندستور داخلی
LLTRACE(به جای آن ازPy_DEBUGاستفاده کنید).gh-129715: بهبود کارایی کامپایلر درجا (JIT) برای تولیدگرها.
gh-129643: رفع امنیت نخ
PyList_Insert()در ساختهای با نخبندی آزاد.gh-129668: رفع شرایط رقابت هنگام ایجاد
MemoryErrorدر ساخت با نخبندی آزاد.gh-129643: رفع امنیت نخ
PyList_SetItem()در ساختهای با نخبندی آزاد. وصله توسط Kumar Aditya.gh-128563: رفع مشکلی که در آن ویژگی اشکالزدایی "lltrace" ممکن بود به اشتباه برای برخی قابها فعال شده باشد.
gh-129393: در سیستمعامل FreeBSD، متغیر
sys.platformدیگر شامل نسخهی اصلی نمیشود. این مقدار همیشه'freebsd'است، به جای'freebsd13'یا'freebsd14'.
کتابخانه¶
gh-129345: رفع ارجاع به اشارهگر تهی در
syslog.openlog()هنگامی که یک قلاب حسابرسی یک استثنا ایجاد میکند.
هسته و توکارها (Core and Builtins)¶
gh-129231: بهبود چیدمان حافظه در ردپاهای کامپایلر درجا (JIT). وصله توسط Diego Russo
gh-129149: افزودن مسیر سریع برای اعداد صحیح با اندازهی متوسط در توابع
PyLong_FromUnsignedLong()،PyLong_FromUnsignedLongLong()وPyLong_FromSize_t().gh-129201: نسخهی نخآزاد (free-threaded) جمعآور زبالهی چرخهای بهینهسازی شده است تا به طور شرطی در طول جمعآوری از دستورالعملهای پیشبارگذاری (prefetch) پردازنده استفاده کند. این کار میتواند با افزایش احتمال وجود دادهها در نهانگاه (cache) پردازنده در زمان نیاز، زمانهای جمعآوری را کاهش دهد. اگر تعداد شیءهای (objects) با عمر طولانی (شیءهایی که از یک جمعآوری کامل جان سالم به در میبرند) از آستانهای بیشتر شود، دستورالعملهای پیشبارگذاری فعال میشوند.
gh-129093: رفع مشکلی که در آن افاسترینگهایی مانند
f'{expr=}'گاهی اوقات وقتی عبارت شامل!=است، کل عبارت را نمایش نمیدادند.gh-124363: رفتار با عبارات اشکالزدایی در افاسترینگ به عنوان رشتههای خام. توسط پابلو گالیندو (Pablo Galindo)
gh-128714: رفع رقابتهای احتمالی در متون دوطرفه گتر/ستر
__annotations__،__annotate__و__type_params__برای شیء تابع، و افزودن آزمونهای مرتبط.gh-128799: افزودن قاب از
except*به ردگیری هنگامی که یک استثنای لخت را پوشش میدهد.gh-128842: جمعآوری آمارهای حافظه کامپایلر درجا (JIT) با استفاده از pystats. توسط دیهگو روسو (Diego Russo).
gh-100239: اختصاصیسازی
BINARY_OPبرای عملیات منطقی بیتی روی اعداد صحیح فشرده.gh-128910: توابع خصوصی و مستندنشده و استفادهنشدهی C-API با نامهای
_PyTrash_beginو_PyTrash_endحذف شدند.gh-128807: افزودن یک فاز علامتگذاری به جمعآور زبالهی نخآزاد. این شبیه به کاری است که در gh-126491 انجام شد. از آنجا که جمعآور زبالهی نخآزاد نسلبندی ندارد و تدریجی نیست، فاز علامتگذاری به دنبال تمام اشیایی میگردد که از ریشههای شناختهشده قابل دسترسی هستند. ریشهها اشیایی هستند که شناخته شدهاند زباله نیستند، مانند دیکشنری ماژول برای
sys. برای بیشتر برنامهها، این فاز علامتگذاری باید جمعآور زباله را کمی سریعتر کند زیرا معمولاً کار کمتری به ازای هر شیء انجام میشود.gh-100239: افزودن آپکد
BINARY_OP_EXTENDکه جفت توابعی (توابع نگهبان و اختصاصیسازی) را اجرا میکند که از نهانگاه درونخطی قابل دسترسی هستند.gh-128563: نوع جدیدی از مفسر به سیپایتون اضافه شده است. این مفسر از فراخوانیهای پایانی برای کنترلکنندههای دستور خود استفاده میکند. نتایج اولیه بنچمارک نشان میدهد که در pyperformance (بسته به پلتفرم) میانگین هندسی ۷ تا ۱۱ درصد سریعتر و در بارهای کاری فشردهپایتون تا ۳۰ درصد سریعتر است. این مفسر در حال حاضر فقط روی کامپایلرهای جدیدتر مانند
clang-19کار میکند. سایر کامپایلرها به استفاده از مفسر قدیمی ادامه خواهند داد. توسط کن جین (Ken Jin)، با ایدههایی دربارهی نحوهی پیادهسازی این مورد در سیپایتون توسط مارک شانون (Mark Shannon)، گارت گو (Garret Gu)، هائوران ژو (Haoran Xu) و جاش هابرمن (Josh Haberman).gh-126703: بهبود کارایی پیمایش روی فهرستها و تاپلها با استفاده از یک فهرست آزاد برای اشیاء پیمایشگر.
gh-127953: زمان پردازش رویداد
LINEدر sys.monitoring (و sys.settrace) اکنون مستقل از تعداد سطرهای موجود در شیء کد است.gh-128330: بازیابی نویسههای کنترلی پایانه هنگام خروج از REPL.
gh-128016: بهبود پیام
SyntaxWarningبرای دنبالههای گریز نامعتبر تا روشن شود که چنین دنبالههایی در نسخههای آینده پایتون یکSyntaxErrorایجاد خواهند کرد. پیام جدید همچنین یک اصلاح احتمالی را پیشنهاد میکند، یعنیDid you mean "\\e"?.gh-126004: رفع نحوهی مدیریت مقادیر
UnicodeError.startوUnicodeError.endدر هندلر خطایcodecs.replace_errors(). توسط بندیکت تران (Bénédikt Tran).gh-126004: رفع نحوهی مدیریت مقادیر
UnicodeError.startوUnicodeError.endدر هندلر خطایcodecs.backslashreplace_errors(). توسط بندیکت تران (Bénédikt Tran).gh-126004: رفع نحوهی مدیریت مقادیر
UnicodeError.startوUnicodeError.endدر هندلر خطایcodecs.xmlcharrefreplace_errors(). توسط بندیکت تران (Bénédikt Tran).gh-127349: خطای مربوط به تغییر اندازهی پایانه در REPL پایتون برطرف شد. از وصلههای Semyon Moroz.
gh-125723: فروپاشی با
gi_frame.f_localsزمانی که قابهای تولیدگر از خودِ تولیدگر بیشتر عمر میکنند، برطرف شد. از وصلههای Mikhail Efimov.
کتابخانه¶
gh-126349: مدیرهای زمینهی
turtle.fill()،turtle.poly()وturtle.no_animation()اضافه شدند. از وصلههای Marie Roald و Yngve Mardal Moe.
هسته و توکارها (Core and Builtins)¶
gh-115911: اگر پوشهی کاری فعلی به دلیل محدودیت دسترسی قابل تعیین نباشد، عملیات ایمپورت دیگر خطای
PermissionErrorرا بالا نخواهد آورد. از وصلههای Alex Willmer.
کتابخانه¶
gh-112713: پشتیبانی از پرچم کوکی
Partitionedدرhttp.cookiesاضافه شد.
رابط C API¶
gh-129533: توابع
PyGC_Enable()،PyGC_Disable()وPyGC_IsEnabled()بهروزرسانی شدند تا برای ایمنی در برابر نخها در ساخت با نخبندی آزاد، از عملیات اتمی استفاده کنند. از وصلههای Donghee Na.gh-89188: توابع
PyUnicode_KIND()وPyUnicode_DATA()علاوه بر کلاندستورهایی با همین نامها، به صورت تابع پیادهسازی شدند. کلاندستورها به فیلدهای بیتی C متکی هستند که چیدمان وابستهبهکامپایلر دارند. از وصلههای Victor Stinner.gh-91417: تابع
PySequence_Fast()از API محدود C حذف شد، از آنجا که این تابع باید باPySequence_Fast_GET_ITEMاستفاده شود که هرگز در API محدود C کار نکرده است. از وصلههای Victor Stinner.gh-128509: تابع
PyUnstable_IsImmortal()برای تشخیص اینکه آیا یک شیء نامیرا است یا خیر، اضافه شد.gh-129033: توابع خصوصی
_PyInterpreterState_GetConfigCopy()و_PyInterpreterState_SetConfig()حذف شدند. بهجای آنها ازPyConfig_Get()وPyConfig_Set()استفاده کنید که API عمومی C اضافهشده توسط PEP 741 با عنوان «Python Configuration C API» هستند. از وصلههای Victor Stinner.gh-129033: تابع خصوصی
_Py_InitializeMain()حذف شد. این تابع یک API آزمایشی بود که توسط PEP 587 به پایتون 3.8 اضافه شده بود. از وصلههای Victor Stinner.gh-128844: توابع ناپایدار API با نامهای
PyUnstable_TryIncRef()وPyUnstable_EnableTryIncRef()اضافه شدند. این موارد ابزارهای کمکی برای مدیریت ارجاعهای بدون مالک به روشی نخایمن هستند، بهویژه در ساخت با نخبندی آزاد.gh-128911: توابع کمکی
PyImport_ImportModuleAttr()وPyImport_ImportModuleAttrString()برای ایمپورت یک ماژول و دریافت ویژگی آن ماژول اضافه شدند. از وصلههای Victor Stinner.gh-128863: توابع خصوصی زیر منسوخ شدهاند و برنامهریزی شده است که در پایتون ۳.۱۸ حذف شوند:
_PyBytes_Join(): ازPyBytes_Join()استفاده کنید._PyDict_GetItemStringWithError(): ازPyDict_GetItemStringRef()استفاده کنید._PyDict_Pop(): ازPyDict_Pop()استفاده کنید._PyLong_Sign(): ازPyLong_GetSign()استفاده کنید._PyLong_FromDigits()و_PyLong_New(): ازPyLongWriter_Create()استفاده کنید._PyThreadState_UncheckedGet(): ازPyThreadState_GetUnchecked()استفاده کنید._PyUnicode_AsString(): ازPyUnicode_AsUTF8()استفاده کنید._Py_HashPointer(): ازPy_HashPointer()استفاده کنید._Py_fopen_obj(): ازPy_fopen()استفاده کنید.
پروژهی pythoncapi-compat project را میتوان برای دریافت این توابع عمومی جدید در پایتون ۳.۱۳ و نسخههای قدیمیتر استفاده کرد.
توسط Victor Stinner وصل شد.
gh-126599: حذف برخی از APIهای آزمایشی داخلی برای کامپایلر درجا (JIT) آزمایشی.
gh-127925: تبدیل ماژول
decimalبرای استفاده از API C در PEP 757 (صصدور و ورود اعداد صحیح)، که اگر بخش صحیح نمونهیDecimalکوچک باشد، سرعت را افزایش میدهد. وصله توسط Sergey B Kirpichev.
ساخت¶
Python 3.14.0 آلفا ۴¶
تاریخ انتشار: ۱۴-۰۱-۲۰۲۵
مکاواس¶
gh-127592: استفاده از APIهای یکپارچهی Apple System Log هنگامی که نسخهی حداقل macOS پایینتر از 10.12 است، غیرفعال شد.
Tools/Demos¶
gh-128152: رفع باگی که در آن پارسر پیشپردازندهی C در Argument Clinic تلاش میکرد دایرکتیوهای پیشپردازنده را درون کامنتهای C تجزیه کند. وصله توسط Erlend Aasland.
آزمونها¶
gh-128690: بهطور موقت از test_embed در ساختهای نمایه PGO استفاده نکنید تا زمانی که مشکل شکست خوردن test_init_pyvenv_cfg در برخی پیکربندیها حل شود.
کتابخانه¶
gh-128731: رفع اخطار
ResourceWarningدرurllib.robotparser.RobotFileParser.read().gh-71339: افزودن متدهای شرط جدید برای
unittest:assertHasAttr()،assertNotHasAttr()،assertIsSubclass()،assertNotIsSubclass()assertStartsWith()،assertNotStartsWith()،assertEndsWith()وassertNotEndsWith().gh-118761: بهبود زمان ایمپورت ماژول
pickleبه میزان ۲۵٪ با حذف یک عبارت باقاعده غیرضروری. به همین دلیل،reدیگر به طور ضمنی به عنوانpickle.reدر دسترس نیست. وصله توسط Bénédikt Tran.gh-128661: رفع عدم نمایش هشدار منسوخسازی در
typing.evaluate_forward_ref()هنگامی که آرگومانtype_paramsارسال نمیشود.gh-128562: رفع تضادهای احتمالی در نامهای ابزارکهای تولیدشدهی
tkinterاگر نام کلاس ابزارک با یک رقم ختم شود.gh-128552: رفع زبالههای چرخهای ایجاد شده توسط
asyncio.loop.create_task()وasyncio.TaskGroup.create_task()که در صورت اشتیاق (eager)، ارجاعی به وظیفهی ایجاد شده نگه میدارند.gh-128340: افزودن دستهی امن برای نخ داخلی جهت استفاده در
asyncio.loop.call_soon_threadsafe()برای لغو ایمن برای نخ.gh-128182: رفع خرابی هنگام استفاده همزمان از اشارهگرهای
ctypesدر ساخت نخبندی آزاد.gh-128400: نمایش دادن فقط نخ فعلی در
faulthandlerروی ساخت نخبندی آزاد برای جلوگیری از رقابتها.gh-128400: رفع فروپاشی هنگام استفاده از
faulthandler.dump_traceback()در حالی که نخهای دیگر روی ساخت نخبندی آزاد فعال هستند.gh-128388: رفع مشکل
PyREPLدر ویندوز برای پشتیبانی از کلیدبندیهای بیشتر، مانند کلیدبندیهای پرش از کلمه Control-← و Control-→ و کلیدبندیهای دارای متا (یعنی Alt)، به عنوان مثال Alt-d برایkill-wordیا Alt-Backspace برایbackward-kill-word.gh-88834: یکسانسازی بررسی نمونه برای
typing.Unionوtypes.UnionType:Unionاکنون بهجای بررسی زیرکلاس، از بررسیهای نمونه روی پارامترهای خود استفاده میکند.gh-128302: رفع مشکل
xml.dom.xmlbuilder.DOMEntityResolver.resolveEntity()که با انتقال پایتون ۳.۰ دچار اختلال شده بود.gh-128317: رنگی کردن تاریخ امروز در خروجی رابط خط فرمان (CLI) ماژول
calendar. تکهکد (Patch) از Hugo van Kemenade.gh-128302: به
xml.dom.xmlbuilder.DOMParser.parse()اجازه میدهد تا نمونههایxml.dom.xmlbuilder.DOMInputSourceکه فقط دارای صفتsystemIdتنظیمشده هستند را به درستی پردازش کند.gh-128151: بهبود ۳۰ درصدی تولید
UUIDاشیاء نسخههای ۳، ۴، ۵ و ۸ از طریق توابع اختصاصی آنها. وصله توسط Bénédikt Tran.gh-128118: بهبود کارایی
copy.copy()به میزان ۳۰ درصد از طریق یک مسیر سریع برای انواع اتمی و انواع ظرف.gh-127946: اصلاح فروپاشی هنگام تغییر همزمان شیءهای
ctypes._CFuncPtrروی نسخهی نخبندی آزاد.gh-128062: بازگرداندن قلم (font) نوار منوی
turtledemoبه مقدار پیشفرض آن و نمایش کلیدهای میانبر در موقعیت صحیح.gh-128014: رفع مشکل بازنشانی آیکون پیشفرض پنجره با ارسال
default=''به متدtkinterیعنیwm_iconbitmap().gh-41872: رفع استخراج سریع رشتههای مستند ماژول از یک پرونده در
pydoc. این ماژول اکنون از رشتههای مستند با نقلقول تکی، دنبالههای گریز، مقادیر لفظی رشتهی خام و سایر نحوهای پایتون پشتیبانی میکند.gh-127060: تنظیم متغیر محیطی TERM روی "dumb" برای غیرفعال کردن رنگهای ردگیری (traceback) در IDLE، از آنجا که IDLE دنبالههای گریز ANSI را درک نمیکند. تکهکد از Victor Stinner.
gh-126742: رفع پشتیبانی از پیامهای خطای بومیسازیشده که به ترتیب توسط توابع dlerror(3) و gdbm_strerror در
ctypesوdbm.gnuگزارش میشوند. تکهکد از Bénédikt Tran.gh-122548: دو رویداد محلی جدید به sys.monitoring اضافه میکند،
BRANCH_LEFTوBRANCH_RIGHT. این امر به دو شاخه اجازه میدهد تا به طور مستقل غیرفعال شوند، که باید کارایی ابزارهای پوشش در سطح شاخه را به شدت بهبود بخشد. رویداد شاخهی قدیمی، یعنیBRANCHاکنون منسوخ شده است.gh-127847: اصلاح موقعیت هنگام انجام مکانیابیها و خواندنهای متناوب در پروندههای zip فشردهنشده و رمزگذارینشده که توسط
zipfile.ZipFile.open()بازگردانده شدهاند.gh-127688: افزودن ثابتهای
SCHED_DEADLINEوSCHED_NORMALبه ماژولos.gh-83662: افزودن متد گمشدهی
__class_getitem__به پیادهسازی پایتونیfunctools.partial()، برای سازگار کردن آن با نسخهی C. این امر عمدتاً برای پیادهسازیهای جایگزین پایتون مانند PyPy و GraalPy مرتبط است، زیرا سیپایتون معمولاً از پیادهسازی C آن تابع استفاده خواهد کرد.gh-127586: کلاس
multiprocessing.pool.Poolاکنون هنگام ایجاد فرایندها از طریق spawn یا forkserver، هندلرهای سیگنال مسدودشدهی نخ والد را به درستی بازیابی میکند.gh-98188: رفع مشکلی در
email.message.Message.get_payload()که در آن اگر مکانیزم کدگذاری انتقال محتوا (CTE) دارای نویسههای فاصله یا متن اضافی در انتهای خود باشد، دادهها قابل رمزگشایی نیستند. وصلهی نوشتهشده توسط Hui Liu.gh-127529: اصلاح رفتار
asyncio.selector_events.BaseSelectorEventLoop._accept_connection()در مدیریتConnectionAbortedErrorدر یک حلقه. این کار باعث بهبود کارایی در OpenBSD میشود.gh-127360: هنگامی که نتوان یک پیام خطای توصیفی برای یک
ssl.SSLErrorارائه داد، پیام «خطای ناشناخته» اکنون کد خطای داخلی را نشان میدهد (همانطور که توسطERR_get_errorو توابع مشابهی OpenSSL بازیابی میشود).gh-127196: رفع فروپاشی هنگام ارسال دیکشنری با کلیدهایی در کدگذاری نامعتبر به چندین تابع در ماژول
_interpreters.gh-124130: رفع باگ در تطبیق عبارت باقاعده
\Bدر رشتهی ورودی خالی. اکنون این مورد همیشه برعکس\bاست. برای دستیابی به رفتار قدیمی، از(?!\A\Z)\Bاستفاده کنید. برای دستیابی به رفتار جدید در نسخههای قدیمیپایتون، از(?!\b)استفاده کنید.gh-126639: کلاس
tempfile.NamedTemporaryFileاکنون وقتی توسط جمعآور زباله بدون بستهشدن صریح نهایی میشود، یک هشدارResourceWarningصادر میکند.gh-126624: ارائهی کد خطای
XML_ERROR_NOT_STARTEDاز Expat نسخهی ۲.۶.۴ یا بالاتر در ماژولxml.parsers.expat.errors.gh-126225: ماژولهای
getoptوoptparseدیگر به عنوان منسوخ، از رده خارج شده علامتگذاری نمیشوند. دلایل موجهی برای استفاده از یکی از این ماژولها به جایargparseوجود دارد و هیچیک از این ماژولها در خطر حذف شدن از کتابخانهی استاندارد نیستند. از میان این سه،argparseهمچنان انتخاب پیشفرض توصیهشده باقی میماند، مگر اینکه یکی از موارد ذکر شده در بالای مستندات ماژولoptparseاعمال شود.gh-124761: افزودن ثابت
SO_REUSEPORT_LBبه ماژولsocketبرای FreeBSD.gh-121720: کلاس
enum.EnumDictاکنون بدون متوسل شدن به API خصوصی قابل استفاده است.gh-123424: افزودن متد
zipfile.ZipInfo._for_archive()برای تنظیم ویژگیهای پیشفرض روی شیءهایZipInfo. وصلهی نوشتهشده توسط Bénédikt Tran و Jason R. Coombs.gh-121676: منسوخکردن فراخوانی پیادهسازی پایتون برای
functools.reduce()با یک تابع (function) یا دنباله (sequence) به عنوان آرگومان کلیدواژهای. این کار در پایتون ۳.۱۶ برای مطابقت با پیادهسازی C ممنوع خواهد شد.gh-112015: تابع
ctypes.memoryview_at()اکنون برای ایجاد یک شیءmemoryviewکه به اشارهگر و طول ارائهشده اشاره دارد، وجود دارد. این کار مانندctypes.string_at()عمل میکند با این تفاوت که از کپی کردن بافر جلوگیری میکند و معمولاً هنگام پیادهسازی توابع کالبک پایتون خالص که بافرهایی با اندازهی پویا به آنها ارسال میشود، مفید است.gh-95371: افزودن پشتیبانی از سایر فرمتهای تصویر (PNG، PGM و PPM) به ماژول turtle. وصلهی نوشتهشده توسط Shin-myoung-serp.
هسته و توکارها (Core and Builtins)¶
gh-128078: رفع خطای
SystemErrorهنگام استفاده ازanext()با مقدار پیشفرض تاپل. وصلهی نوشتهشده توسط Bénédikt Tran.gh-128717: رفع فروپاشی هنگام تنظیم محدودهی بازگشتی در حالی که سایر نخها در ساخت نخبندی آزاد فعال هستند.
gh-124483: با
Py_DECREFو گونههای آن هنگام تولید متادیتای آپکد و uop به عنوان موارد خروجیافته رفتار کنید. این کار از احتمال ایجاد رفتار نادرست در JIT توسط یک متد__del__جلوگیری میکند.gh-126703: بهبود کارایی متدهای کلاس با استفاده از یک فهرست آزاد (freelist).
gh-128137: بهروزرسانی چیدمان
PyASCIIObjectبرای مدیریت فیلد درونیسازیشده با عملیات اتمی. وصلهی نوشتهشده توسط Donghee Na.
کتابخانه¶
gh-128192: ارتقای الگوریتم احراز هویت خلاصهی HTTP برای
urllib.requestبا پشتیبانی از احراز هویت خلاصهی SHA-256 همانطور که در RFC 7616 مشخص شده است.
هسته و توکارها (Core and Builtins)¶
gh-126868: افزایش میزان استفاده از لیست آزاد (freelist) برای تخصیص
int.gh-114203: بهینهسازی
Py_BEGIN_CRITICAL_SECTIONبرای فراخوانیهای بازگشتی ساده.gh-127705: هنگامی که
Py_STACKREF_DEBUGتنظیم شده باشد، اشکالزدایی stackref را اضافه میکند. تمام موارد دوبار بستهشدن و نشتیها را پیدا کرده و مبدأ و آخرین قرضگیری را گزارشگیری میکند.با الهام از حالت اشکالزدایی HPy. https://docs.hpyproject.org/en/latest/debug-mode.html
gh-128079: رفع خطایی که در آن
except*مقدار بازگشتی تابعsplit()مربوط بهExceptionGroupرا به درستی بررسی نمیکند و در برخی موارد منجر به فروپاشی میشود. اکنون هنگامی کهsplit()یک شیء نامعتبر برمیگرداند،except*یکTypeErrorبه همراه شیءExceptionGroupایجادشدهی اصلی که به آن زنجیر شده است، بالا میآورد.gh-128030: از بروز خطا هنگام فراخوانی
PyModule_GetFilenameObjectروی یک شیء غیرماژول در هنگام ایمپورت کردن یک نماد ناموجود از یک شیء غیرماژول جلوگیری کنید.
کتابخانه¶
gh-128035: از طریق
ssl.HAS_PHAمشخص میکند که آیا ماژولsslاحراز هویت کلاینت پس از دستدهی (PHA) نسخهی TLSv1.3 را پشتیبانی میکند یا خیر. وصله توسط ویل چایلدز-کلاین.
هسته و توکارها (Core and Builtins)¶
gh-127274: افزودن یک پرچم جدید به نام
CO_METHODبهco_flagsکه نشان میدهد آیا شیء کد متعلق به تابعی است که در محدودهی کلاس تعریف شده است.gh-66409: در طول مقداردهی اولیهی مسیر، اکنون بررسی میکنیم که آیا
base_exec_prefixقبل از بازگشت به جستجوی پوشهی مفسر پایتون، باbase_prefixیکسان است یا خیر.gh-127970: اکنون از مکان کتابخانهی رانتایم
libpythonاستفادهشده در فرایند فعلی برای تعیینsys.base_prefixدر تمام پلتفرمهایی که تابع dladdr تعریفشده توسط استاندارد UNIX را پیادهسازی میکنند، استفاده میکنیم — این شامل لینوکس، اندروید، مکاواس، آیاواس، فریبیاسدی و غیره میشود. این موضوع از قبل در ویندوز و نسخههای مکاواس فریمورک وجود داشت.gh-127773: از کش ویژگی نوع برای انواع با ترتیب حل متد ناسازگار استفاده نکنید.
gh-127903:
Objects/unicodeobject.c: رفع فروپاشی در ساختهای اشکالزدایی (DEBUG) در تابع_copy_charactersزمانی که چیزی برای کپی کردن وجود ندارد.gh-127809: رفع مسئلهای که در آن کامپایلر درجا (JIT) تجربی ممکن است نوع نتیجهی نادرستی برای توانرسانی (
**و**=) استنتاج کند و منجر به باگها یا فروپاشیها شود.gh-126862: رفع سرریز احتمالی زمانی که یک کلاس از تعداد نامعقولی از ابرکلاسها ارثبری میکند. گزارششده توسط والری فدورنکو. وصله توسط بندیکت تران.
رابط C API¶
gh-128400: تابع
Py_FatalError()برای جلوگیری از فروپاشی، دیگر تمام نخها را روی ساخت نخبندی آزاد نمایش نمیدهد.gh-128629: افزودن ماکروهای
Py_PACK_VERSION()وPy_PACK_FULL_VERSION()برای بستهبندی بیتی شمارههای نسخهی پایتون.gh-128008: افزودن تابع
PyWeakref_IsDead()که بررسی میکند آیا یک ارجاع ضعیف مرده است یا خیر.gh-127350: افزودن تابع
Py_fopen()برای باز کردن یک پرونده. مشابه تابعfopen()، اما پارامتر path یک شیء پایتون است و در صورت بروز خطا، یک استثنا تنظیم میشود. همچنین افزودن تابعPy_fclose()برای بستن یک پرونده؛ تابعی که برای پشتیبانی از ویندوز مورد نیاز است. وصله توسط ویکتور استینر.
ساخت¶
gh-128627: برای ساختهای Emscripten، فراخوانی ترامپولین تبدیل نوع اشارهگر تابع اکنون به جای انعکاس نوع Wasm JS، از دستورالعمل ref.test در wasm-gc در صورت در دسترس بودن استفاده میکند.
gh-128472: از دست دادن بهینهسازی BOLT توابع با استفاده از پرشهای محاسبهشده (computed gotos) برای رفع خطاهای ساخت با LLVM 19.
gh-115765: برای تولید
configureاکنون به GNU Autoconf 2.72 نیاز است. وصله توسط Erlend Aasland.gh-123925: رفع مشکل ساخت ماژول
cursesروی پلتفرمهایی که دارای libncurses هستند اما libncursesw را ندارند.gh-90905: افزودن پشتیبانی از کامپایل متقابل (cross-compiling) برای x86_64 روی aarch64/arm64 مکاواس (macOS).
gh-128321: هنگام بررسی در دسترس بودن توابع کتابخانهی
sqlite3، به جایLDFLAGS، مقدارLIBSرا تنظیم کنید. این کار ترتیب کتابخانههای پیوندخورده را در طول بررسیها اصلاح میکند؛ ترتیبی که هنگام استفاده ازlibsqlite3پیوندخوردهی ایستا نادرست بود.gh-100384: ایجاد خطا در صورت بروز
unguarded-availabilityدر ساختهای مکاواس (macOS)، که از استفادهی نامعتبر از نمادهایی که در نسخههای قدیمیتر سیستمعامل در دسترس نیستند، جلوگیری میکند.gh-128104: حذف شرایط
Py_STRFTIME_C99_SUPPORTبه نفع الزامی کردن پشتیبانی از مشخصکنندهی strftime(3) در استاندارد C99 در زمان ساخت. هنگام کامپایل متقابل، هیچ بررسی زمان ساختی انجام نمیشود و پشتیبانی فرض میشود.gh-127951: افزودن گزینهی
--pystatsبه ساخت ویندوز برای فعال کردن جمعآوری آمارهای عملکرد.
نسخهی ۳.۱۴.۰ آلفا ۳ پایتون¶
تاریخ انتشار: ۲۰۲۴-۱۲-۱۷
Windows¶
Tools/Demos¶
آزمونها¶
gh-127906: آزمون رابط برنامهنویسی کاربردی (API) محدود C در test_cppext. وصله توسط Victor Stinner.
gh-127637: افزودن آزمونها برای رابط خط فرمان
dis. وصله توسط Bénédikt Tran.gh-126925: نتایج آزمونهای iOS اکنون در طول اجرای آزمون جریانسازی (stream) میشوند و ابزار منسوخ xcresulttool دیگر استفاده نمیشود.
gh-127076: غیرفعال کردن آزمونهای فراخوانی سیستم مبتنی بر strace زمانی که LD_PRELOAD تنظیم شده است.
gh-127076: فیلتر کردن فراخوانیهای
mmap،munmapوmprotectمرتبط با حافظه از موارد مرتبط با پرونده هنگام آزمون رفتارioبا استفاده از strace.
امنیت¶
gh-127655: رفع مشکل ترابرد (transport) کلاس
asyncio.selector_events._SelectorSocketTransportکه هنگام استفاده ازasyncio.WriteTransport.writelines()، وقتی بافر به آستانهی بالا (high water mark) میرسد، نوشتنها را برای پروتکل متوقف نمیکرد.
کتابخانه¶
gh-126907: رفع فروپاشی هنگام استفاده همزمان از
atexitروی ساخت نخبندی آزاد.gh-127870: تشخیص فراخوانیهای بازкурسی (recursive) در مدیریت
_as_parameter_در ctypes. وصله توسط Victor Stinner.gh-127732: ماژول
platformاکنون ویندوز سرور ۲۰۲۵ را به درستی تشخیص میدهد.gh-126789: رفع مشکلی در
sysconfig.get_config_vars()،sysconfig.get_paths()و توابع مشابه که در صورت تغییر مقدارsys.prefixیاsys.exec_prefix، دادههای کششدهی منسوخ را برمیگرداندند. بازنویسیsys.prefixیاsys.exec_prefixهمچنان توصیه نمیشود، زیرا ممکن است بخشهای دیگری از کد را مختل کند.gh-127718: اضافه شدن رنگ به خروجی
test.regrtest. وصله توسط Hugo van Kemenade.gh-127610: اضافه شدن اعتبارسنجی برای بیش از یک پارامتر جایگاهی متغیر (var-positional) یا کلیدواژهای متغیر (var-keyword) در
inspect.Signature. وصله توسط Maxim Ageev.gh-127627: افزودن متد
posix._emscripten_debugger()برای کمک به اشکالزدایی مجموعه آزمونها روی هدف Emscripten.gh-126821: برنامههای سیستمعاملهای macOS و iOS اکنون میتوانند در طول پیکربندی مفسر، هدایت مجدد stdout و stderr را به وقایعنگار سیستم انتخاب کنند.
gh-93312: گنجاندن پروندهی سرآیند
<sys/pidfd.h>برای دریافت ثابتos.PIDFD_NONBLOCK. وصله توسط Victor Stinner.gh-127065: ایمنسازی تابع
operator.methodcaller()در برابر چندریمانی (thread-safe) و ورود مجدد (re-entrant safe).gh-127321: تابع
pdb.set_trace()دیگر روی آپکدی که شماره سطر مرتبطی ندارد متوقف نخواهد شد.gh-127429: رفع باگی که در آن، طی فرآیند ساخت متقابل (cross-build)، دادههای POSIX مربوط به ماژول
sysconfigبا استفاده ازMakefileپایتون میزبان تولید میشدند. این دادهها اکنون ازMakefileساختِ فعلی تولید میشوند.gh-127413: افزودن گزینهی خط فرمان
dis --specializedبرای نمایش بایتکد تخصصیشده. وصله توسط Bénédikt Tran.gh-125413: بازگردانی اضافهشدن متد
pathlib.Path.scandir(). این متد در نسخهی 3.14.0a2 اضافه شده بود. بهینهسازیها برای مسیرهای سیستم پرونده باقی میمانند، اما سایر زیرکلاسها فقط بایدpathlib.Path.iterdir()را پیادهسازی کنند.gh-127257: در ماژول
ssl، خطاهای فراخوانی سیستمی که OpenSSL با استفاده ازERR_LIB_SYSگزارش میکند، اکنون به عنوانOSErrorبالا آورده میشوند.gh-59705: روی لینوکس، کلاس
threading.Threadاکنون نام نخ را روی سیستمعامل تنظیم میکند. وصله توسط Victor Stinner.gh-127303: قرار دادن
EXACT_TOKEN_TYPESبه صورت عمومی درtoken.__all__.gh-127331: ماژول
sslمیتواند توضیحاتی را برای خطاهای اضافه شده در OpenSSL 3.4 نمایش دهد.gh-123967: رفع faulthandler برای فریمهای ترامپولین. اگر بالاترین فریم یک فریم ترامپولین باشد، از آن صرفنظر کنید. وصله توسط Victor Stinner.
gh-127178: یک پروندهی
_sysconfig_vars_(...).jsonاکنون در پوشهی کتابخانهی استاندارد قرار میگیرد. این پرونده شامل خروجی تابعsysconfig.get_config_vars()در محیط پیشفرض است که به صورت دادهی JSON کدگذاری شده است. این یک جزئیات پیادهسازی است و ممکن است در هر زمانی تغییر کند.gh-127072: حذف ثابتهای منسوخ
socket.NETLINK_*که دیگر در هستههای لینوکس فراتر از 2.6.17 وجود ندارند.gh-127255: تابع
CopyComPointer()اکنون عمومی است. پیشتر این تابع خصوصی بود و فقط در_ctypesدر دسترس قرار داشت.gh-127182: رفع فروپاشی
io.StringIO.__setstate__()هنگامی کهNoneبه عنوان نخستین مقدار ارسال میشد.gh-127217: اصلاح تابع
urllib.request.pathname2url()برای مسیرهایی که با چند خطمورب در سیستمپشتیبان Posix شروع میشوند.gh-125866: تابع
urllib.request.pathname2url()اکنون هنگام تولید URL برای مسیری که دقیقا با یک خطمورب شروع میشود، یک مرجع (authority) خالی اضافه میکند. به عنوان مثال، مسیر/etc/hostsبه نشانیوب بدون طرحوارهی///etc/hostsتبدیل میشود. در نتیجهی این تغییر، نشانیوبهای بدون مرجع فقط برای مسیرهای نسبی تولید میشوند.gh-127221: افزودن رنگ به خروجی
unittest. وصل توسط Hugo van Kemenade.gh-127035: رفع مشکل
shutil.whichدر ویندوز. اکنون این تابع بررسی تطابق مستقیم را انجام میدهد اگر و فقط اگر دستور با یک پسوند PATHEXT خاتمه یابد یا حالت X_OK در mode نباشد. پشتیبانی از پروندههای بدون پسوند اگر کاراکتر "." در PATHEXT وجود داشته باشد. پشتیبانی از پسوندهای PATHEXT که به یک نقطه ختم میشوند.gh-122273: پشتیبانی از تاریخچهی PyREPL روی ویندوز. وصل توسط devdanzin و Victor Stinner.
gh-125866: توابع
urllib.request.pathname2url()وurl2pathname()دیگر حروف درایو ویندوز را به حروف بزرگ تبدیل نمیکنند.gh-127078: رفع مشکلی که در آن تابع
urllib.request.url2pathname()نمیتوانست یک خطمورب اضافی را پیش از یک درایو UNC در مسیر URL روی ویندوز حذف کند.gh-126766: رفع مشکلی که در آن تابع
urllib.request.url2pathname()نمیتوانست هر مرجع 'localhost' موجود در URL را حذف کند.gh-127065: رفع فروپاشی هنگام فراخوانی یک نمونهی
operator.methodcaller()از چندین نخ در ساخت نخبندی آزاد (free threading).gh-127090: اصلاح مقدار
urllib.response.addinfourl.urlبرای URLهایfile:که مسیرهای نسبی و مسیرهای مطلق ویندوز را بیان میکنند. اکنون از URL کانونیکال تولید شده توسطurllib.request.pathname2url()استفاده میشود.gh-126992: اصلاح آپکدهای LONG و INT برای استفاده از مبنای ۱۰ جهت تبدیل رشته به عدد صحیح در
pickle.gh-126997: اصلاح پشتیبانی از آپکدهای STRING و GLOBAL با آرگومانهای غیر اسکی در
pickletools. تابعpickletools.dis()اکنون بایتهای غیر اسکی را در آرگومانهای STRING، BINSTRING و SHORT_BINSTRING به صورت فراریافته (\xXX) خروجی میدهد.gh-126316: ماژول
grp: ایمنسازی تابعgrp.getgrall()در برابر چندنخی با افزودن یک قفل متقابل (mutex). وصل توسط Victor Stinner.gh-126618: اصلاح نمایش اشیای
itertools.countهنگامی که مقدار شمارش برابر باsys.maxsizeاست.gh-126615: استثنای
COMErrorاکنون عمومی است. پیشتر این استثنا خصوصی بود و فقط در_ctypesدر دسترس قرار داشت.gh-126985: هنگام اجرا در یک محیط مجازی با ماژول
siteغیرفعال (نگاه کنید به-S)، مقادیرsys.prefixوsys.base_prefixاکنون به جای نصب پایه، به محیط مجازی اشاره خواهند کرد.gh-112192: در ماژول
trace، دقت پوشش (cov%) را به یک رقم اعشار افزایش دهید.gh-118761: بهبود زمان ایمپورت ماژول
mimetypesبه میزان حدوداً ۱۱ تا ۱۶ برابر. وصل توسط Hugo van Kemenade.gh-126947: اگر آرگومانهای ارسالشده
intیاfloatنباشند، در_pydatetime.timedelta.__new__()استثنایTypeErrorرا بالا بیاورید، تا پیادهسازی پایتون با پیادهسازی C همراستا شود.gh-126946: بهبود پیام خطای
GetoptErrorهنگامی که یک پیشوند گزینهی طولانی با چندین گزینهی پذیرفتهشده درgetopt.getopt()وgetopt.gnu_getopt()مطابقت دارد.gh-126899: کاری کنید که متدهای ابزارک tkinter یعنی
after()وafter_idle()آرگومانهای ارسالشده با کلیدواژه را بپذیرند.gh-85168: رفع مشکلی که در آن
urllib.request.url2pathname()وpathname2url()همیشه هنگام نقلقولگذاری و خارج کردن از نقلقول URIهای پرونده از UTF-8 استفاده میکردند. آنها اکنون از رمزگذاری سامانه فایلبندی و هندلر خطا استفاده میکنند.gh-126780: رفع
os.path.normpath()برای مسیرهای نسبی درایو در ویندوز.gh-126775: ایمنسازی
linecache.checkcache()در برابر نخها (thread-safe) و ایمن در برابر ورود مجدد GC.gh-126601: رفع مشکلی که در آن
urllib.request.pathname2url()هنگام دریافت یک مسیر ویندوزی حاوی نویسهی دو نقطه که دنبالکنندهی حرف درایو نبود (مانند پیش از یک جریان دادهی جایگزین NTFS)، استثنایOSErrorرا بالا میآورد.gh-126727:
locale.nl_langinfo(locale.ERA)اکنون چندین بخش توصیف دوران را که با نقطهویرگول از هم جدا شدهاند، برمیگرداند. پیش از این فقط اولین بخش را روی پلتفرمهای دارای Glibc برمیگرداند.gh-118201: رفع شکستهای متناوب
os.confstr،os.pathconfوos.sysconfروی iOS و اندروید.gh-86463: پارامتر
usageدرargparse.ArgumentParserدیگر روی مقدار پیشفرض پارامترprogدر زیرپارسها تأثیری نمیگذارد.gh-124008: رفع فروپاشی احتمالی (در نسخهی ساخت اشکالزدایی)، خروجی نادرست یا بازگرداندن مقدار نادرست از
write()دودویی خام هنگام نوشتن در کنسول در ویندوز.gh-123401: ماژول
http.cookiesاکنون از تجزیهی قالبهای تاریخ منسوخشدهی RFC 850، مطابق با الزامات RFC 9110 پشتیبانی میکند. وصله توسط Nano Zheng.gh-122431: تابع
readline.append_history_file()اکنون هنگام دریافت مقدار منفی، استثنایValueErrorرا بالا میآورد.gh-122356: تضمین اینکه موقعیت یک شیء شبهپروندهی ارسالشده به
zipfile.is_zipfile()پس از فراخوانی دستنخورده باقی میماند. وصله توسط Bénédikt Tran.gh-122288: بهبود عملکردهای
fnmatch.translate()به میزان ضریب ۱.۷. وصله توسط Bénédikt Tran.gh-88110: رفع مشکل گزارش شدن
.exitcodeبرابر با ۱ توسطmultiprocessing.Processحتی در صورت موفقیت، هنگام استفاده از متد شروع"fork"به همراهconcurrent.futures.ThreadPoolExecutor.gh-97514: احراز هویت به سوکت کنترل متد شروع forkserver در
multiprocessingاضافه شد تا فقط فرایندهایی با کلید احراز هویت تولیدشده توسط فرایندی که forkserver را راهاندازی کرده است، بتوانند آن را کنترل کنند. این یک بهبود نسبت به سایر اصلاحات gh-97514 است تا دسترسی دیگر فقط به مجوزهای سامانه فایلبندی محدود نباشد.تبادل توصیفگر پروندهی پایپهای کنترلی با فرایند کارگر انشعابیافته (forked)، اکنون مستلزم ارسال یک بایت تأیید صریح از طریق سوکت پس از تبادل روی تمام پلتفرمهای پشتیبانیکنندهی forkserver است. این کار آزمایش موارد فوق را بسیار آسانتر میکند.
مستندات¶
gh-127347: قرار دادن
traceback.print_list()به صورت عمومی درtraceback.__all__.
هسته و توکارها (Core and Builtins)¶
gh-127740: اصلاح پیغام خطا در
bytes.fromhex()هنگامی که تعداد ارقام فرد داده میشود تا به درستی نشان دهد که تعداد ارقام مبنای شانزده زوج مورد نیاز است.gh-127058: کتابخانهی
PySequence_Tupleاکنون تاپل حاصل را به صورت اتمیک ایجاد میکند و مانع از آن میشود که تاپلهای تا حدی ایجاد شده برای زبالهروب یا از طریقgc.get_referrers()قابل مشاهده باشند.gh-127599: اصلاح آمارهای مربوط به افزایش شمارشگرهای ارجاع شیء (بهویژه هنگامی که شمارشگر ارجاع در یک عملیات منفرد بیش از ۱ واحد افزایش یافته بود).
gh-127651: هنگام بالا آوردن
ImportErrorبرای نمادهای مفقود در ایمپورتهایfrom، اگر__spec__.originیک مکان نباشد، از__file__در پیغام خطا استفاده کنید.gh-127582: اصلاح زندهسازی مجدد شیء غیرنخایمن هنگام فراخوانی نهاییسازها و کالبکهای ناظر در ساخت نخبندی آزاد.
gh-127434: شیمهای کامپایلر iOS اکنون میتوانند آرگومانهایی با فاصله را بپذیرند.
gh-127536: افزودن قفلهای مفقود پیرامون برخی عملیات منتسبسازی فهرست در ساخت نخبندی آزاد.
gh-127085: اصلاح رقابت هنگام صادر کردن یک بافر از یک شیء
memoryviewدر ساخت free-threaded.gh-127238: اصلاح پیغام خطا برای
sys.set_int_max_str_digits().gh-113841: اصلاح رفتار نامشخص احتمالی تقسیم بر صفر در
_Py_c_pow()متعلق بهcomplex.
کتابخانه¶
gh-127133: فراخوانی
argparse.ArgumentParser.add_argument_group()روی یک گروه آرگومان، و فراخوانیargparse.ArgumentParser.add_argument_group()یاargparse.ArgumentParser.add_mutually_exclusive_group()روی یک گروه متقابلاً انحصاری، اکنون استثناهایی را بالا میآورند. این تو در تویی هرگز پشتیبانی نمیشد، اغلب به درستی کار نمیکرد و به طور ناخواسته از طریق ارثبری در معرض دید قرار گرفته بود. این قابلیت از نسخهی ۳.۱۱ پایتون منسوخ شده است.
هسته و توکارها (Core and Builtins)¶
gh-126491: افزودن یک فاز علامتگذاری به ZC. تمام اشیایی که از ماژولهای داخلی یا پشتهها به صورت گذرا قابل دستیابی هستند، قبل از شناسایی چرخهها به عنوان قابل دستیابی علامتگذاری میشوند. این کار میزان کار انجام شده توسط GC را تقریبا به نصف کاهش میدهد.
gh-127020: اصلاح فروپاشی در ساخت نخبندی آزاد هنگامی که
PyCode_GetCode()،PyCode_GetVarnames()،PyCode_GetCellvars()یاPyCode_GetFreevars()از چندین نخ به طور همزمان فراخوانی میشدند.gh-127010: سادهسازی پیگیری GC مربوط به فرهنگ لغتها. تمام فرهنگ لغتها به جای پیگیری تنبلانه هنگام اضافه شدن یک شیء قابل پیگیری به آنها، هنگام ایجاد شدن پیگیری میشوند. این امر کد را به طور قابل توجهی ساده کرده و باعث بهبود جزئی سرعت میشود.
gh-126980: اصلاح فروپاشی
__buffer__()ازbytearrayهنگامی کهREADیاWRITEبه عنوان پرچمها ارسال میشوند.gh-126937: اصلاح
TypeErrorهنگامی که یکctypes.Structureدارای اندازهی فیلدی است که در یک عدد صحیح بدون علامت ۱۶ بیتی جای نمیگیرد. در عوض، حداکثر تعداد بیتهاsys.maxsizeاست.gh-126868: افزایش کارایی
intبا افزودن یک فهرست آزاد برای اعداد صحیح فشرده.gh-126881: اصلاح فروپاشی در نهاییسازی وضعیت dtoa. پچ توسط Kumar Aditya.
gh-126892: الزام کد سرد یا نامعتبر به «گرم شدن» پیش از کامپایل شدن مجدد توسط JIT.
gh-126091: اطمینان از کامل بودن ردگیریهای پشته هنگام پرتاب کردن به درون یک زنجیرهی تولیدگر که به یک تولیدگر سفارشی ختم میشود.
gh-126024: کدگشایی دنبالههای کوتاه UTF-8 حاوی نویسههای غیر اسکی را تقریباً ۱۵ درصد بهینه کنید.
gh-125420: افزودن متد
memoryview.index()به اشیایmemoryview. وصله توسط Bénédikt Tran.gh-125420: افزودن متد
memoryview.count()به اشیایmemoryview. وصله توسط Bénédikt Tran.gh-124470: رفع فروپاشی در ساختهای نخآزاد (free-threaded) هنگام جایگزینی دیکشنری شیء در حین خواندن صفت روی نخی دیگر
gh-69639: پیادهسازی قوانین محاسباتی حالت ترکیبی که اعداد حقیقی و مختلط را همانطور که استانداردهای C از زمان C99 مشخص کردهاند ترکیب میکنند. وصله توسط Sergey B Kirpichev.
gh-120010: اصلاح حالتهای مرزی نامعتبری که منجر به خروجی
(nan+nanj)در ضرب مختلط میشدند، مثلاً(1e300+1j)*(nan+infj). وصله توسط Sergey B Kirpichev.gh-109746: اگر
_thread.start_new_thread()در شروع یک نخ جدید شکست بخورد، وضعیت خود را از مفسر حذف میکند و در نتیجه از پاکسازی مکرر آن در هنگام نهاییسازی جلوگیری میکند.
رابط C API¶
gh-127896: تابع مستندنشدهی قبلی
PySequence_In()به صورت منسوخ نرم درآمده است. به جای آن ازPySequence_Contains()استفاده کنید.gh-127791: رفع از دست رفتن کالبکها پس از بیش از یک بار فراخوانی
PyUnstable_AtExit().gh-127691: رابط برنامهنویسی کاربردی (API) اشیای استثنای یونیکد اکنون اگر آرگومان استثنای آن یک شیء
UnicodeErrorنباشد، یکTypeErrorبالا میآورد. وصله توسط Bénédikt Tran.gh-123378: اطمینان حاصل کنید که مقدار
UnicodeEncodeError.endکه توسطPyUnicodeEncodeError_GetEnd()بازیابی میشود در بازهی[min(1, objlen), max(min(1, objlen), objlen)]قرار دارد که در آن objlen طولUnicodeEncodeError.objectاست. آرگومانهای مشابهی برایUnicodeDecodeErrorوUnicodeTranslateErrorو رابط C مربوط به آنها اعمال میشود. وصله توسط Bénédikt Tran.gh-127314: بهبود پیام خطا هنگام فراخوانی رابط C بدون داشتن وضعیت نخ فعال روی ساخت نخبندیآزاد.
gh-123378: اطمینان حاصل کنید که مقدار
UnicodeEncodeError.startکه توسطPyUnicodeEncodeError_GetStart()بازیابی میشود در بازهی[0, max(0, objlen - 1)]قرار دارد که در آن objlen طولUnicodeEncodeError.objectاست. آرگومانهای مشابهی برایUnicodeDecodeErrorوUnicodeTranslateErrorو رابط C مربوط به آنها اعمال میشود. وصله توسط Bénédikt Tran.gh-109523: خواندن متن از یک جریان غیرمسدودکننده با
readاکنون اگر عملیات نتواند بلافاصله بایتها را برگرداند، ممکن است یکBlockingIOErrorبالا بیاورد.gh-102471: افزودن یک رابط برنامهنویسی کاربردی (API) ایمپورت و اکسپورت جدید برای اشیای
intپایتون (PEP 757):توسط Victor Stinner وصل شد.
gh-121058: تابع
PyThreadState_Clear()اکنون اگر وضعیت نخ همچنان یک استثنای فعال داشته باشد، هشدار میدهد (وsys.excepthookرا فراخوانی میکند).
ساخت¶
gh-127865: رفع خطای ساخت روی سیستمهای فاقد پشتیبانی از متغیرهای نخمحلی.
gh-127629: ساختهای Emscripten اکنون شامل پشتیبانی از ctypes هستند.
gh-127111: بروزرسانی مثال وب Emscripten برای استفاده از ماژولهای ES6 و ساخت آن در یک زیررموزهی متمایز
web_example.gh-115869: قابل بازتولید کردن پروندهی
jit_stencils.h(که در طول ساختهای کامپایلر درجا (JIT) تولید میشود).gh-126898: ساخت Emscripten پایتون اکنون بر اساس ماژولهای ES6 است.
نسخهی ۳.۱۴.۰ آلفا ۲¶
تاریخ انتشار: ۲۰۲۴-۱۱-۱۹
Windows¶
gh-126911: بروزرسانی خروجی دستور credits.
gh-118973: تضمین میکند که نصب آزمایشی نخآزاد شامل ماژول
_tkinterباشد. برای کار کردن این ماژول، باید کامپوننت اختیاری Tcl/Tk نیز نصب شود.gh-126497: رفع خطای venv به دلیل فقدان فایلهای اجرایی تغییردهندهی مسیر (redirector) در نصبهای آزمایشی نخآزاد.
gh-126074: حذف DLLهای غیرضروری از بستهی قابل تعبیهی ویندوز
gh-125315: جلوگیری از از کار افتادن (crash) ماژول
platformبه دلیل فراخوانیهای کند WMI روی برخی ماشینهای ویندوزی.gh-126084: اصلاح venvwlauncher برای راهاندازی pythonw به جای python تا هیچ پنجرهی کنسول اضافهای ایجاد نشود.
gh-125842: رفع یک خطای
SystemErrorهنگامی کهsys.exit()با مقدار0xffffffffروی ویندوز فراخوانی میشود.gh-125550: فعالسازی مدیر نصب پایتون برای شناسایی نصبهای پایتون ۳.۱۴ از فروشگاه ویندوز (Windows Store).
gh-123803: تمام کدپیجهای ویندوز اکنون به عنوان کُدکهای "cpXXX" روی ویندوز پشتیبانی میشوند.
Tools/Demos¶
آزمونها¶
gh-126909: اصلاح آزمونهای ویژگی (attribute) توسعهیافتهی test_os تا روی سامانههای فایلبندی دارای محدودیت اندازهی ۱ کیلوبایتی xattr به درستی کار کنند.
gh-125730: دستور
make testرا تغییر دهید تا بهطور پیشفرض آزمونهای رابط گرافیکی (GUI) را اجرا نکند. در عوض، ازmake ciبرای اجرای آزمونها همراه با آزمونهای رابط گرافیکی استفاده کنید.
امنیت¶
gh-126623: ارتقای libexpat به نسخهی 2.6.4
کتابخانه¶
gh-85957: افزودن انواع (types) گمشدهی MIME برای تصاویر دارای RFCها: emf، fits، g3fax، jp2، jpm، jpx، t38، tiff-fx و wmf. وصله (patch) توسط Hugo van Kemenade.
gh-126920: رفع مشکلی که در آن کلیدهای
prefixوexec_prefixاز تابعsysconfig.get_config_vars()بهاشتباه مقداری برابر باsys.base_prefixوsys.base_exec_prefix(بهترتیب) در داخل محیطهای مجازی داشتند. آنها اکنون بهدرستی منعکسکنندهیsys.prefixوsys.exec_prefixهستند.gh-67877: رفع نشتهای حافظه هنگامی که تطبیق
عبارت منظمبه طور ناگهانی متوقف میشود، چه به دلیل یک سیگنال و چه به دلیل شکست در تخصیص حافظه.gh-125063: ماژول
marshalاکنون از اشیایsliceپشتیبانی میکند. نسخهی فرمت مارشالکردن به ۵ افزایش یافت.gh-126789: اصلاح مقادیر
sysconfig.get_config_vars()،sysconfig.get_paths()و توابع همخانوادهی آنها در زمانی که مقداردهی اولیهیsiteپس از ساخته شدن نهانگاه (cache) برایsysconfig.get_config_vars()توسطsysconfigرخ میدهد.gh-126188: بهروزرسانی بستهی همراه pip به 24.3.1
gh-126766: رفع مشکلی که در آن تابع
urllib.request.url2pathname()در حذف دو اسلش پیشرو که بخش مرجع (authority) خالی را ایجاد میکردند، ناموفق بود.gh-126705: امکان استفاده از
os.PathLikeبه عنوان پایهای برای پروتکلها (Protocols).gh-126699: امکان استفاده از
collections.abc.AsyncIteratorبه عنوان پایهای برای پروتکلها (Protocols).gh-126654: رفع فروپاشی (crash) هنگام ارسال شیء غیر دیکشنری به چندین تابع در ماژول
_interpreters.gh-104745: محدود کردن شروع یک وصلهگر (از
unittest.mock.patch()یاunittest.mock.patch.object()) به بیش از یک بار بدون متوقف کردن آنgh-126595: رفع فروپاشی (crash) هنگام نمونهسازی
itertools.countبا شمارش اولیهیsys.maxsizeدر نسخههای ساخت (build) دیباگ. وصله (patch) توسط Bénédikt Tran.gh-120423: رفع مشکلی که در آن
urllib.request.pathname2url()مسیرهای ویندوز را با اسلشهای رو به جلوی تعبیهشده بهدرستی مدیریت نمیکرد.gh-126565: بهبود کارایی
zipfile.Path.open()برای حالتهای غیرخواندنی.gh-126505: رفع اشکالها در کامپایل کردن
عبارتهای منظمحساسنباید به بزرگی و کوچکی حروف با کلاسهای نویسهای حاوی نویسههای غیر BMP: نویسهی غیر BMP بزرگ نادیده گرفته میشد و پرچم اسکی هنگام تطبیق بازهی نویسهای که کران بالایی آن فراتر از ناحیهی BMP است، نادیده گرفته میشد.gh-117378: اصلاح فرایند forkserver متد شروع
"forkserver"درmultiprocessingبرای ارثبری درستsys.pathوالد در طول ایمپورت کردن ماژولهایmultiprocessing.set_forkserver_preload()به همان صورتی کهsys.pathدر کارگرها (workers) پیش از اجرای آیتمهای کاری پیکربندی میشود.این باگ باعث میشد پیشبارگذاری ماژول forkserver در بارگذاری سکوتوار دچار خطا شود. این مسئله بهصورت افت عملکرد در فرایندهای فرزند هنگام نیاز به
sys.pathبه دلیل کار تکراری اضافی در هر کارگر نمایان میشد.همچنین این موضوع میتواند اثر جانبی باقیماندن
""درsys.pathدر طول ایمپورتهای پیشبارگذاری forkserver داشته باشد، بهجای مسیر مطلق ازos.getcwd()در زمان ایمپورت multiprocessing که درsys.pathکارگر استفاده میشود.تفاوتهای
sys.pathبین فازهای مختلف در فرایند فرزند بهطور بالقوه میتوانست باعث شود پیشبارگذاری، موارد نادرستی را از مکان اشتباه ایمپورت کند. ما اطلاعی نداریم که چنین چیزی در عمل اتفاق افتاده باشد.gh-125679: مقادیر
reprبرایmultiprocessing.Lockوmultiprocessing.RLockدیگر روی macOS عبارت "unknown" را نشان نمیدهند.gh-126476: در صورتی که ماه ورودی صحیح نباشد، برای
calendar.month()خطایcalendar.IllegalMonthError(که اکنون زیرردهای ازIndexErrorاست) را بالا بیاورید.gh-126489: پیادهسازی پایتون برای
pickleدیگرpickle.Pickler.persistent_id()را برای نتیجهیpersistent_id()فراخوانی نمیکند.gh-126451: نوع دادهی
contextvars.Contextرا بهcollections.abc.Mappingثبت کنید.gh-126175: ویژگیهای
msg،doc،pos،linenoوcolnoرا بهtomllib.TOMLDecodeErrorاضافه کنید. استفاده از آرگومانهای آزاد برای نمونهسازی را منسوخ کنید.gh-89416: انواع RFC 9559 MIME را برای فرمتهای ظرف صوتی و تصویری Matroska اضافه کنید. وصله توسط Hugo van Kemenade.
gh-126417: انواع دادهی
multiprocessing.managers.DictProxyوmultiprocessing.managers.ListProxyرا درmultiprocessing.managersبه ترتیب بهcollections.abc.MutableMappingوcollections.abc.MutableSequenceثبت کنید.gh-126390: پشتیبانی از بازگرداندن گزینههای ترکیبی و آرگومانهای غیرگزینهای به ترتیب در
getopt.gnu_getopt()را اضافه کنید.gh-126374: پشتیبانی از گزینهها با آرگومانهای اختیاری را در ماژول
getoptاضافه کنید.gh-126363: با رد کردن ایجاد یک شیء
pathlib.Pathبرای الگو، تجزیهی الگو را درpathlib.Path.glob()سرعت ببخشید.gh-126353: تابع
asyncio.get_event_loop()اکنون بهصورت ضمنی یک حلقه رویداد ایجاد نمیکند. اگر هیچ حلقه رویداد تنظیمشدهای وجود نداشته باشد، اکنون یکRuntimeErrorبالا میآورد. وصله توسط Kumar Aditya.gh-126313: خطایی را در
curses.napms()زمانی کهcurses.initscr()هنوز فراخوانی نشده است، برطرف کنید. وصله توسط Bénédikt Tran.gh-126303: قابلیت پیکل کردن (pickling) و کپی کردن اشیای
os.sched_paramرا برطرف کنید.gh-126138: رفع یک خرابی استفاده پس از آزادسازی روی اشیای
asyncio.Taskکه کوروتین زیرین آنها شیءای را بازمیگرداند که یک__getattribute__()مخرب را پیادهسازی میکند. اصلاحیه از Nico Posada.gh-120057: متد
os.environ.refresh()را با یک تابع جدیدos.reload_environ()جایگزین کنید. وصله توسط Victor Stinner.gh-126220: فروپاشی در
cProfile.Profileو_lsprof.Profilerرا زمانی که کالبکهای آنها مستقیماً با ۰ آرگومان فراخوانی میشدند، برطرف کنید.gh-126212: خطایی را برطرف کنید که در آن
urllib.request.pathname2url()وurl2pathname()اسلشها را از مسیرهای درایو DOS ویندوز و URLها حذف میکردند.gh-126223: هنگام فراخوانی
_interpreters.create()با یک نویسهی نامعتبر یونیکد، به جایSystemErrorخطایUnicodeEncodeErrorرا بالا بیاورید.gh-126205: رفع مشکلی که در آن
urllib.request.pathname2url()هنگام دریافت یک مسیر UNC ویندوز، نشانیهای وب را با چهار اسلش (به جای دو اسلش) آغاز میکرد.gh-126156: بهبود عملکرد ایجاد شیءهای
Morselبه میزان ۳.۸ برابر.gh-126105: رفع یک فروپاشی در
astهنگامی که ویژگیast.AST._fieldsحذف میشود.gh-126080: رفع فروپاشی از نوع use-after-free روی شیءهای
asyncio.Taskکه حلقهی رویداد زیرین آنها یک__getattribute__()مخرب را پیادهسازی میکند. گزارششده توسط Nico-Posada. وصله توسط Bénédikt Tran.gh-125322: اصلاح تشخیص پشتیبانی از اعداد مختلط در libffi.
gh-126083: رفع نشت ارجاع در شیءهای
asyncio.Taskهنگام مقداردهی اولیهی مجدد همان شیء با یک زمینهی غیر ازNone. وصله توسط Nico Posada.gh-126068: استثناهای ماژول
argparseرا بهگونهای اصلاح کنید که اکنون فقط پیامهای خطا برای ArgumentError و ArgumentTypeError ترجمه شوند. ArgumentError اکنون فقط برای خطاهای خط فرمان استفاده میشود، نه برای خطاهای منطقی در برنامه. اکنون برای برخی خطاهای منطقی به جای ValueError، خطای TypeError بالا آورده میشود.gh-125413: اضافه کردن متد
pathlib.Path.scandir()برای بازیابی کارآمد فرزندان پوشه و ویژگیهای پروندهی آنها. این یک پوشش ساده برایos.scandir()است.gh-125984: رفع فروپاشیهای use-after-free روی شیءهای
asyncio.Futureکه حلقهی رویداد زیرین آنها یک__getattribute__()مخرب را پیادهسازی میکند. گزارششده توسط Nico-Posada. وصله توسط Bénédikt Tran.gh-125926: رفع
urllib.parse.urljoin()برای URI پایه با مرجع تعریفنشده. اگرچه RFC 3986 فقط قطعنامهی ارجاع را برای URI پایهی مطلق مشخص میکند،urljoin()باید همچنان به بازگرداندن نتیجهی منطقی برای URI پایهی نسبی ادامه دهد.gh-125969: رفع فروپاشی خارج از کران هنگامی که یک
asyncio.loop.call_soon()مخرب، طول فهرست فراخوانیهای بازگشتی داخلی را تغییر میدهد. وصله توسط Bénédikt Tran.gh-125966: رفع فروپاشی use-after-free در
asyncio.Future.remove_done_callback(). وصله توسط Bénédikt Tran.gh-125789: رفع فروپاشی احتمالی هنگام تغییر فهرست فراخوانیهای بازگشتی بازگرداندهشده توسط
asyncio.Future._callbacks. این ویژگی اکنون همیشه یک نسخهی جدید را در پیادهسازی C یعنی_asyncioبرمیگرداند. وصله توسط Kumar Aditya.gh-126916: اجازه دادن به پارامتر initial در
functools.reduce()تا به عنوان یک آرگومان کلیدواژهای ارسال شود. وصله توسط Sayandip Dutta.gh-124452: رفع مشکلی در
email.policy.EmailPolicy.header_source_parse()وemail.policy.Compat32.header_source_parse()که فاصلههای خالی پیشروی اضافی را وارد مقادیر سرآیند میکرد، زمانی که سرآیند شامل یک نویسهی خط جدید پس از جداکنندهی نام سرآیند (:) و قبل از مقدار بود.gh-117941: کلاس
argparse.BooleanOptionalActionاکنون نام گزینههایی را که با--no-شروع میشوند، رد میکند.gh-125884: رفع باگ مربوط به
pdbکه در آن نمیتواند نقاط توقف را روی توابع با حاشیهنویسیهای خاص تنظیم کند.gh-125355: رفع چندین باگ در
argparse.ArgumentParser.parse_intermixed_args().پارسر دیگر در طول تجزیه به طور موقت تغییر نمیکند.
مقادیر پیشفرض دو بار پردازش نمیشوند.
گروههای متقابلاً انحصاری الزامی که حاوی آرگومانهای جایگاهی هستند اکنون پشتیبانی میشوند.
گزارش آرگومانهای گمشده اکنون شامل نام تمام آرگومانهای اختیاری و جایگاهی الزامی است.
گزینههای ناشناخته را میتوان با آرگومانهای جایگاهی در تابع parse_known_intermixed_args() ترکیب کرد.
gh-125767: اشیای
superاکنون قابلیتpickleableوcopyableدارند.gh-124969: تابع
locale.nl_langinfo(locale.ALT_DIGITS)اکنون دوباره یک رشته برمیگرداند. مقدار بازگشتی شامل حداکثر ۱۰۰ نماد جداشده با نقطهویرگول است.gh-84850: کلاسهای
URLopenerوFancyURLopenerاز ماژولurllib.requestحذف شدند. آنها پیشتر از نسخهی ۳.۳ پایتون هشدارDeprecationWarningرا صادر میکردند.gh-125666: اگر یک بایت تهی به عنوان ورودی در REPL جدید داده شود، از خروج مفسر جلوگیری کنید.
gh-125710: [Enum] اصلاح مقایسههای هشپذیر<->غیرهشپذیر برای مقادیر اعضا
gh-125631: قابلیت تنظیم ویژگیهای
persistent_idوpersistent_loadنمونههای کلاسهایPicklerوUnpicklerدر ماژولpickleبازیابی شد.gh-125378: اشکال در ماژول
pdbبرطرف شد که در آن پس از یک دستور چندسطری، یک سطر خالی به جای کل دستور، سطر اول دستور چندسطری را تکرار میکرد.gh-125682: ارقام غیر اسکی در پیادهسازی پایتون از تابع
json.loads()مطابق با مشخصات JSON رد میشوند.gh-125660: گریزهای یونیکد نامعتبر برای پیادهسازی پایتون از تابع
json.loads()رد میشوند.gh-52551: از تابع
wcsftime()برای پیادهسازیtime.strftime()در ویندوز استفاده کنید.gh-125259: منطق حذف یادداشتها برای خطاهای پرتابشده در مقداردهی اولیهی enum اصلاح شد.
gh-125633: تابع
inspect.ispackage()اضافه شد تا مشخص شود آیا یک شیء بسته است یا خیر.gh-125614: در فرمت
FORWARDREFماژولannotationlib، باگی که در آن عبارتهای تو در تو به عنوان فرمتannotationlib.ForwardRefبرگردانده نمیشدند، اصلاح شد.gh-125590: به
FrameLocalsProxyاجازه دهید اگر کلید یک متغیر سریع نیست، عملیات حذف و pop را انجام دهد.gh-125600: هشدار کد منسوخشده در ماژول
pdbفقط زمانی نمایش داده شود که کد منبع را نمایش میدهیم.gh-125542: منسوخسازی ارسال آرگومان فقط-کلیدواژهی prefix_chars به
argparse.ArgumentParser.add_argument_group().gh-125541: فشردن کلید Ctrl-C هنگام مسدود بودن در
threading.Lock.acquire()،threading.RLock.acquire()وthreading.Thread.join()اکنون فراخوانی تابع را متوقف کرده و یک استثنایKeyboardInterruptرا در ویندوز بالا میآورد (raise میکند)، مشابه عملکرد این توابع در macOS و لینوکس.gh-125519: بهبود ردگیری (traceback) در صورتی که
importlib.reload()با شیءای فراخوانی شود که ماژول نیست. وصله (patch) توسط Alex Waygood.gh-125451: رفع بنبست هنگام خاموش شدن همزمان
concurrent.futures.ProcessPoolExecutorبا یک خطا در هنگام ارسال کار به یک فرایند کارگر.gh-125115: رفع باگی در
pdbکه در آن آرگومانهای شروعشونده با-نمیتوانستند به اسکریپت در حال دیباگ ارسال شوند.gh-125398: رفع تبدیل مسیر
VIRTUAL_ENVدر اسکریپت فعالسازی درvenvهنگام اجرا در Git Bash برای ویندوز.gh-125245: رفع شرط رقابت (race condition) هنگام ایمپورت کردن
collections.abcکه میتوانست به اشتباه یک ماژول خالی برگرداند.gh-52551: رفع مشکلات کدگذاری در
time.strftime()، متدstrftime()از کلاسهایdatetimeشاملdatetime،dateوtimeو قالببندی این کلاسها. نویسههای غیرقابلکدگذاری در locale فعلی اکنون در رشتهی قالب قابلقبول هستند. جفتهای جانشین (surrogate pairs) و دنبالهای از بایتهای کدگذاریشده با surrogatescape دیگر ترکیب مجدد نمیشوند. نویسهی تهی تعبیهشده دیگر به رشتهی قالب پایان نمیدهد.gh-124984: رفع امنیت نخ (thread safety) در
sslدر نسخهی ساخشدهی آزاد-نخ (free-threaded). عملیاتهای OpenSSL اکنون توسط یک قفل برای هر شیء محافظت میشوند.gh-124651: گذاشتن نقلقول مناسب دور رشتههای قالب در اسکریپتهای فعالسازی
venv.gh-124694: ما
concurrent.futures.InterpreterPoolExecutorرا اضافه کردهایم که به شما اجازه میدهد کد را در چند مفسر ایزوله اجرا کنید. این کار به شما اجازه میدهد محدودیتهای نخهای محدود به CPU (به دلیل GIL) را دور بزنید. وصله توسط Eric Snow.این اضافه شدن ارتباطی با PEP 734 ندارد.
gh-58032: منسوخسازی مبدل نوع
argparse.FileType.gh-99749: افزودن ویژگیای برای فعالسازی اختیاری پیشنهادها برای انتخابهای آرگومان و نامهای زیرپارسِر در صورت تایپ اشتباه توسط کاربر.
gh-58956: رفع باگی در
pdbکه گاهی اوقات نقطهی ایست (breakpoint) راهاندازی نمیشد اگر روی تابعی تنظیم شده بود که از پیش در پشتهی فراخوانی قرار داشت.gh-124111: ماژول tkinter اکنون میتواند برای استفاده از نسخهی جدید ۹.۰.۰ Tcl/Tk یا آخرین نسخهی انتشاریافتهی ۸.۶.15 از Tcl/Tk 8 ساخته شود. Tcl/Tk 9 شامل بهبودهای فراوانی، هم در زبان Tcl و هم در ظاهر و کارایی رابط کاربری گرافیکی ارائهشده توسط Tk است.
gh-80958: کشف واحد (unittest discovery) دوباره از بستههای فضای نام PEP 420 به عنوان پوشهی آغازین پشتیبانی میکند.
gh-123370: رفع مشکل پاک نشدن بوم (canvas) پس از اجرای ساعت turtledemo.
gh-89083: افزودن
uuid.uuid8()برای تولید اشیای UUIDv8 همانطور که در RFC 9562 مشخص شده است. وصله توسط Bénédikt Tran.gh-122549: افزودن
platform.invalidate_caches()برای بیاعتبار کردن نتایج کششده.gh-120754: بهروزرسانی فراخوانیهای محدودنشدهی
readدرzipfileبرای مشخص کردن یکsizeصریح که محدودیتی را روی میزان دادههایی که میتوانند بخوانند، اعمال میکند. این کار همچنین نحوهی مدیریت حداکثر اندازهی کامنت در فایلهای ZIP را بهروزرسانی میکند تا بهجای خواندن کامنتهایی که یک بایت بیش از حد طولانی هستند، با استاندارد مطابقت داشته باشد.gh-121267: بهبود کارایی
tarfileهنگام نوشتن پروندهها، از طریق ذخیرهسازی موقت (caching) نامهای کاربری و نامهای گروه.gh-70764: رفع مشکلی که در آن تابع
inspect.getclosurevars()به اشتباه نام یک ویژگی را به عنوان یک متغیر سراسری دستهبندی میکرد، زمانی که آن نام هم به عنوان نام ویژگی و هم به عنوان یک متغیر سراسری وجود داشت.gh-118289: تابع
posixpath.realpath()اکنون زمانی که حالت strict فعال است و یک مسیر غیرپوشهای با یک اسلش انتهایی ارائه میشود، استثنایNotADirectoryErrorرا بالا میآورد.gh-119826: همیشه یک مسیر مطلق برای
os.path.abspath()در ویندوز برگردانید.gh-97850: حذف توابع منسوخ
pkgutil.get_loader()وpkgutil.find_loader().gh-118986: افزودن ثابت
socket.IPV6_RECVERR(در دسترس از لینوکس ۲.۲ به بعد).gh-116897: پذیرش اشیاء با مقادیر نادرست (مانند
0و[]) به جز رشتههای خالی، اشیاء بایتمانند وNoneدر توابعurllib.parseیعنیparse_qsl()وparse_qs()اکنون منسوخ شده است.gh-101955: رفع خطای SystemError هنگام تطبیق الگوی عبارت باقاعده که شامل ترکیبی از کمیتگذار انحصاری (possessive quantifier)، جایگزین و گروه استخراج است.
gh-71936: رفع یک شرایط رقابت (race condition) در
multiprocessing.pool.Pool.bpo-46128: حذف فریمهای پشتهی
unittest.IsolatedAsyncioTestCaseاز ردیابی پشتههای گزارششده.gh-84852: افزودن انواع MIME برای قلمهای MS Embedded OpenType، OpenType Layout، TrueType، WOFF ۱.۰ و ۲.۰. وصله توسط Sahil Prajapati و Hugo van Kemenade.
مستندات¶
gh-126622: افزودن صفحات stub برای ماژولهای حذفشده که توضیحاتی دربارهی حذف آنها، محل یافتن جایگزینها و پیوندی به آخرین نسخهی پایتون که از آنها پشتیبانی میکرده، ارائه میدهند. مشارکت توسط Ned Batchelder.
gh-125277: برای ساخت مستندات پایتون به Sphinx نسخه ۷.۲.۶ یا جدیدتر نیاز است. وصله توسط Adam Turner.
gh-60712: گنجاندن نوع
objectدر فهرست انواع مستندسازیشده. تغییر توسط Furkan Onder و Martin Panter.
هسته و توکارها (Core and Builtins)¶
gh-126795: افزایش آستانه برای گرمسازی کد JIT. بسته به پلتفرم و بار کاری، این کار میتواند منجر به بهبود عملکرد ۱ تا ۹ درصدی و صرفهجویی ۳ تا ۵ درصدی در حافظه شود.
gh-126341: اکنون هنگام تلاش برای پیمایش روی یک شیء آزادشدهی
memoryview، به جایSystemError، استثنایValueErrorبالا آورده میشود.gh-126688: رفع خرابی (crash) هنگام فراخوانی
os.fork()در برخی سیستمعاملها، از جمله SerenityOS.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
کتابخانه¶
gh-126209: رفع مشکلی در پارامتر
skip_file_prefixesکه به رفتار ناسازگار بین پیادهسازیهای C و پایتون تابعwarnings.warn()منجر میشد. وصله توسط Daehee Kim.
هسته و توکارها (Core and Builtins)¶
gh-126312: رفع فروپاشی حین زبالهروبی روی شیء فریزشده توسط
gc.freeze()در ساخت نخآزاد.gh-103951: تسهیل الزامات بهینهسازی برای اجازه دادن به دسترسی سریع به صفت برای زیرکلاسهای ماژول.
gh-126072: به دنبال gh-126101، برای اشیاء کد مانند لامبدا، حاشیهنویسی و مستعار نوع، دیگر
Noneرا بهco_constsآن اضافه نمیکنیم.gh-126195: بهبود کارایی کامپایلر درجا (JIT) به میزان ۱.۴٪ در سیستمعامل macOS روی تراشههای اپل سیلیکون با استفاده از ایپیآیهای حفاظت حافظه مختص پلتفرم. وصله توسط Diego Russo.
gh-126139: ارائهی مکان خطای بهتر هنگام تلاش برای استفاده از یک بیانیهی آتی با ویژگی آتی ناشناخته.
gh-126072: اضافه کردن یک صفت جدید در
co_flagsبرای نشان دادن این موضوع که آیا اولین آیتم درco_constsرشته مستند است یا خیر. اگر یک شیء کد رشته مستند نداشته باشد،Noneدرج نخواهد شد.gh-126076: اشیاء جابهجاشده مانند اشیاء
tuple،bytesوstrبه درستی توسطtracemallocو قلابهای مرتبط با آن ردیابی میشوند. وصله توسط Pablo Galindo.gh-90370: جلوگیری از ایجاد تاپل موقت برای آرگومان متغیر در ارسال آرگومان با کد تولیدشدهی Argument Clinic (در صورتی که آرگومانها آرگومان متغیر یا صرفاً جایگاهی باشند).
gh-126018: رفع فروپاشی در
sys.audit()هنگام ارسال یک مقدار غیررشتهای به عنوان آرگومان اول و در صورتی که پایتون در حالت رفع اشکال کامپایل شده باشد.gh-126012: نوع دادهی
memoryviewاکنون از زیرنویسی پشتیبانی میکند و آن را به یک نوع عام تبدیل میکند.gh-125837: اضافه کردن دستورات
LOAD_SMALL_INTوLOAD_CONST_IMMORTAL. دستورLOAD_SMALL_INTیک عدد صحیح کوچک برابر باopargرا به پشته اضافه میکند. دستورLOAD_CONST_IMMORTALکاری مشابهLOAD_CONSTانجام میدهد اما برای اشیاء نامیرا کارآمدتر است. حذف دستورRETURN_CONST.gh-125942: در اندروید، تنظیم
errorsمربوط بهsys.stdoutازsurrogateescapeبهbackslashreplaceتغییر یافت.gh-125859: رفع فروپاشی در ساخت نخبندی آزاد هنگامی که
gc.get_objects()یاgc.get_referrers()در جریان یک عملیات زبالهروبی فراخوانی میشود.gh-125868: فقط در نسخهی 3.14.0a1 این امکان وجود داشت که جستجوی صفت مقدار اشتباهی را بدهد. این امر به دلیل تخصصیسازی نادرست در شرایط بسیار خاصی رخ داده بود. این مسئله در 3.14.0a2 برطرف شده است.
gh-125498: کامپایلر درجا (JIT) بهروزرسانی شده است تا از صفت جدید
preserve_noneدر کلنگ ۱۹ بهره ببرد؛ صفتی که از پلتفرمهای بیشتری پشتیبانی میکند و نسبت به قرارداد فراخوانی موجود در الویویام (LLVM) یعنیghcccمفیدتر است. این کار همچنین نیاز به وصل کردن دستی قرارداد فراخوانی در LLVM IR را از بین میبرد و فرایند کامپایل کامپایلر درجا (JIT) را سادهتر میکند.gh-125703: اعمال صحیح قلابهای
tracemallocدر مسیرهای تخصصییافتهیPy_DECREF. وصله توسط Pablo Galindogh-125593: استفاده از رنگ برای برجسته کردن مکانهای خطا در ردیابی حاصل از گروه استثنا
gh-125017: رفع فروپاشی در برخی دسترسیها به
__annotations__در اشیاءstaticmethodوclassmethod.gh-125588: تولیدگر PEG پایتون اکنون میتواند در اکشنهای گرامر از افاسترینگها استفاده کند. پچ توسط پابلو گالیندو
gh-125444: رفع دستور غیرمجاز برای معماریهای قدیمیتر Arm. پچ توسط دیگو روسو، تست توسط راس برتون.
gh-118423: افزودن ماکروی جدید
INSTRUCTION_SIZEبه تولیدگر موارد (cases generator) که اندازهی فعلی دستور را برمیگرداند.gh-125038: رفع فروپاشی هنگام پیمایش یک عبارت تولیدگر پس از تغییرات مستقیم روی
gi_frame.f_locals. پچ توسط میخائیل سیموف.gh-124855: عدم اجازه به فعال بودن همزمان کامپایلر درجا (JIT) و پشتیبانی perf. پچ توسط پابلو گالیندو
gh-123714: بهروزرسانی کامپایلر درجا (JIT) برای استفاده از LLVM 19
gh-123930: بهبود پیام خطا هنگامی که یک اسکریپت که ماژولی را از کتابخانهی استاندارد میپوشاند (shadowing)، باعث میشود خطای
ImportErrorدر طول ایمپورت با عبارت "from" بالا بیاید. به همین ترتیب، بهبود پیام خطا هنگامی که اسکریپتی که یک ماژول شخص ثالث را میپوشاند، در حالی که هنوز در حال مقداردهی اولیه است، تلاش میکند ویژگیای را با "from" از آن ماژول شخص ثالث ایمپورت کند.gh-119793: تابع توکار
map()اکنون مانندzip()دارای یک پرچم کلیدواژهی اختیاری و الزامی به نام strict است تا بررسی کند که تمام پیمایشپذیرها طول برابری دارند. پچ توسط وانس بویکنز.
کتابخانه¶
رابط C API¶
gh-126554: رفع مدیریت خطا در شیءهای
ctypes.CDLLکه میتواند در شرایط نادر منجر به فروپاشی شود.gh-126061: افزودن
PyLong_IsPositive()،PyLong_IsNegative()وPyLong_IsZero()برای بررسی اینکه آیا یکPyLongObjectبه ترتیب مثبت، منفی یا صفر است.gh-125608: رفع باگ که در آن پایشگرهای دیکشنری (مانند
PyDict_Watch()) روی دیکشنری ویژگیهای یک شیء (__dict__) هنگامی که ویژگیهای شیء تغییر میکردند، فعال نمیشدند.gh-123619: افزودن تابع
PyUnstable_Object_EnableDeferredRefcount()برای فعالسازی شمارش ارجاعِ معوق PEP 703.gh-121654: افزودن تابع
PyType_Freeze()برای ساختن یک نوع تغییرناپذیر. پچ توسط ویکتور استینر.gh-120026: ماکروی
Py_HUGE_VALدارای وضعیت منسوخ ملایم است.
ساخت¶
gh-126691: حذف پرچم پیکربندی
--with-emscripten-target. گزینههایnodeوbrowserرا یکپارچه کردیم و اکنون میتوان از همان ساخت، مستقل از رانتایم مقصد، استفاده کرد.gh-123877: استفاده از
wasm32-wasip1به عنوان سهتایی مقصد برای WASI به جایwasm32-wasi. دومی در نهایت برای WASI 1.0 پس گرفته خواهد شد در حالی که سیپایتون در حال حاضر تنها از پیشنمایش WASI نسخه ۱ پشتیبانی میکند.gh-126458: غیرفعال کردن پشتیبانی SIMD برای HACL تحت WASI.
gh-89640: کدگذاری سختترتیب کلمات اعشاری به صورت little endian در WASM.
gh-126206: دستور
make clinicاکنون آرگومان کلینیک (Argument Clinic) را با استفاده از گزینهی--forceاجرا میکند؛ بنابراین کدهای تولیدشده بهاجبار دوباره تولید میشوند.gh-126187: برای سادهسازی انجام ساختهای Emscripten، پروندهی
Tools/wasm/emscripten.pyاضافه شد.gh-124932: برای ساختهای متقابل (cross builds)، اکنون پشتیبانی از داشتن یک
prefixنصب متفاوت ازhost_prefixمورد استفاده توسطgetpath.pyفراهم شده است. این مقدار بهطور پیشفرض برای Emscripten روی/تنظیم میشود و در سایر پلتفرمها رفتار پیشفرض مانند قبل است.gh-125946: حداقل نسخهی پشتیبانیشدهی اندروید اکنون نسخهی ۷.۰ (سطح API ۲۴) است.
gh-125940: ساخت اندروید اکنون از اندازههای صفحهی ۱۶ کیلوبایتی پشتیبانی میکند.
gh-89640: بهبود تشخیص ترتیب کلمات عدد اعشاری (float) در لینوکس هنگامی که بهینهسازیهای زمان لینکشدن فعال هستند.
gh-124928: ساختهای Emscripten اکنون به node نسخه ۱۴ یا بالاتر (>= 18) نیاز دارند.
gh-115382: رفع خطاهای کامپایل متقابل (cross compile) هنگامی که SOABIهای میزبان و هدف با یکدیگر مطابقت دارند.
نسخهی ۳.۱۴.۰ آلفا ۱ پایتون¶
تاریخ انتشار: ۲۰۲۴-۱۰-۱۵
مکاواس¶
Windows¶
gh-124487: افزایش نسخهی سیستمعامل و سطح API مورد نیاز ویندوز به ویندوز ۱۰.
gh-124609: رفع خطای
_Py_ThreadIdبرای ساختهای ویندوز با استفاده از MinGW. وصله (patch) توسط Tony Roberts.gh-124448: بهروزرسانی Tcl/Tk دستهبندیشده به نسخهی ۸.۶.۱۵.
gh-124254: تضمین میکند که باینریهای آزمایشی نخآزاد (free-threaded) هنگام بهروزرسانی نصبشده باقی بمانند.
gh-123915: اطمینان از اینکه پروندهی
Tools\msi\buildrelease.batاز دایرکتوریهای متفاوتی برای ساختهای AMD64 و ARM64 استفاده میکند.gh-123418: بهروزرسانی ساخت ویندوز برای استفاده از OpenSSL 3.0.15.
gh-123476: افزودن پشتیبانی از
socket.TCP_QUICKACKروی پلتفرمهای ویندوز.gh-122573: ساخت سیپایتون (CPython) در ویندوز اکنون به نسخهی ۳.۱۰ یا جدیدتر نیاز دارد.
gh-100256: ماژول
mimetypesهنگامی که به یک کلید رجیستری غیرقابلدسترس برخورد میکند، دیگر دچار خطا نمیشود.gh-119679: تضمین میکند که کتابخانههای ایمپورت صحیح در نصبهای ویندوز گنجانده شوند.
gh-119690: پشتیبانی از یونیکد را اضافه کرده و رویدادهای حسابرسی را برای
_winapi.CreateNamedPipeاصلاح میکند.gh-111201: افزودن پشتیبانی از pyrepl جدید روی ویندوز
gh-119070: نحوهی مدیریت خط مفسرها (shebangs) مانند
/usr/bin/env python3.12توسطpy.exeرا اصلاح میکند که پیشتر بهجایpython3.12.exeبهعنوانpython3.exeتفسیر میشدند.gh-117505: مشکلی را در برنامهی نصب ویندوز اصلاح میکند که در آن ensurepip در یک محیط کاملاً ایزوله اجرا نمیشد. این امر میتواند باعث تعاملات غیرمنتظره با site-packages کاربر شود.
gh-118209: از از کار افتادن (crash) ماژول
mmapدر ویندوز زمانی که حافظهی نگاشتشده به دلیل خطاهای سیستم پرونده یا خطاهای دسترسی غیرقابلدسترس است، جلوگیری میکند.gh-79846: باعث میشود
ssl.create_default_context()گواهیهای نامعتبر را در انبار گواهی ویندوز نادیده بگیرد.
Tools/Demos¶
gh-123418: بهروزرسانی جریانهای کاری GitHub CI برای استفاده از OpenSSL 3.0.15 و multissltests برای استفاده از نسخههای ۳.۰.۱۵، ۳.۱.۷ و ۳.۲.۳.
آزمونها¶
gh-125041: فعالسازی مجدد آزمونهای ردشده برای ماژول
zlibدر معماری s390x: فقط بررسیهای بایتهای فشردهشده را رد کنید، که ممکن است بین پیادهسازی نرمافزاری zlib و پیادهسازی شتابدادهشده با سختافزار متفاوت باشد.gh-124378: بهروزرسانی
test_ttkبرای عبور موفق با Tcl/Tk 8.6.15.gh-124213: تشخیص اینکه آیا مجموعهآزمون در یک ظرف systemd-nspawn با گزینهی
--suppress-sync=trueدر حال اجرا است یا خیر، و رد کردن آزمونهایtest_osوtest_mmapکه در این سناریو با خطا مواجه میشوند.gh-124190: افزودن قابلیت نادیده گرفتن کل پروندهها یا پوشهها در ابزار CI بررسی هشدار
gh-121921: بهروزرسانی
Lib/test/crashers/bogus_code_obj.pyبه طوری که دوباره به درستی متوقف شود (دچار فروپاشی شود).gh-112301: افزودن ابزار برای بررسی تغییرات در هشدارهای کامپایلر. وصله (Patch) توسط Nate Ohlson.
gh-59022: افزودن آزمونها برای
pkgutil.extend_path(). وصله (Patch) توسط Andreas Stocker.gh-99242: تابع
os.getloadavg()ممکن است هنگام اجرای آزمونهای رگرسیون تحت شرایط خاص (مانند chroot) خطایOSErrorرا پرتاب کند. این خطا اکنون گرفته شده و نادیده گرفته میشود، زیرا گزارش میانگین بارگذاری اختیاری است.gh-121084: اصلاح نشتهای تصادفی test_typing. پاکسازی نهانگاههای ABC تایپکردن هنگام اجرای آزمونها برای نشتیهای ارجاع (گزینهی
-R): فراخوانی_abc_caches_clear()روی کلاسهای انتزاعی تایپکردن و زیرکلاسهای آنها. وصله (Patch) توسط Victor Stinner.gh-121160: افزودن یک آزمون برای
readline.set_history_length(). توجه داشته باشید که این آزمون ممکن است روی کتابخانههای readline با شکست مواجه شود.gh-121200: رفع تابع
test_expanduser_pwd2()ازtest_posixpath. فراخوانیgetpwnam()برای دریافتpw_dir، از آنجا که میتواند باpw_dirدرgetpwall()متفاوت باشد. وصلهی Victor Stinner.gh-121188: هنگام ایجاد پروندهی XML مربوط به JUnit، برنامهی regrtest اکنون نویسههای نامعتبر در XML، مانند نویسهی کنترلی chr(27) که در دنبالههای گریز ANSI استفاده میشود را خنثی میکند. وصلهی Victor Stinner.
gh-120801: پاکسازی ثابتهای آزمایشی برای آزمونهای importlib.metadata و یکپارچهسازی رفتار با 'test.support.os_helper'.
gh-119727: افزودن گزینهی خط فرمان
--single-processبه اجراکنندهی آزمون پایتون (regrtest). وصلهی Victor Stinner.gh-119273: اجراکنندهی آزمون پایتون دیگر آزمونها را با استفاده از TTY (مانند test_ioctl) در یک گروه فرایند (با استفاده از
setsid()) اجرا نمیکند. پیشتر، آزمونهای استفادهکننده از TTY رد میشدند. وصلهی Victor Stinner.gh-119050: اجراکنندهی آزمون regrtest: افزودن پشتیبانی از XML به بررسیکنندهی نشتی ارجاع (گزینهی -R). وصلهی Victor Stinner.
gh-101525: اگر پروندهی دودویی توسط BOLT جابهجا شده باشد، از
test_gdbصرفنظر کنید. وصلهی Donghee Na.gh-107562: گواهیهای آزمون بهروزرسانی شدهاند تا خیلی دیرتر منقضی شوند. این کار اجازه میدهد Y2038 با زمان سیستم تنظیمشده پس از آن آزمایش شود، بهطوریکه مسائل واقعی Y2038 آشکار شوند و توسط خطاهای گواهی منقضیشده پنهان نشوند.
امنیت¶
gh-125140: هنگام استفاده از PyREPL، پوشهی فعلی را از
sys.pathحذف کنید.gh-123678: ارتقای libexpat به نسخهی 2.6.3
gh-112301: فعالسازی گزینههای کامپایلر که دربارهی آسیبپذیریهای امنیتی بالقوه هشدار میدهند.
gh-122792: تغییر
ipaddress.IPv6Addressنگاشتشده با IPv4 برای استفادهی سازگار از مقدار مشخصهی آدرس IPv4 نگاشتشده جهت تصمیمگیری دربارهی خصوصیات. خصوصیاتی که رفتارشان اصلاح شده است عبارتند ازis_multicast،is_reserved،is_link_local،is_globalوis_unspecified.gh-112301: افزودن قابلیت نادیده گرفتن هشدارها به ازای هر پرونده همراه با شمارش هشدار در ابزار بررسی هشدار. وصلهی Nate Ohlson.
gh-112301: افزودن پیگیری هشدارهای macOS به ابزار بررسی هشدار. وصلهی Nate Ohlson.
gh-122133: احراز هویت اتصال سوکت برای جایگزین
socket.socketpair()در پلتفرمهایی کهAF_UNIXدر آنها در دسترس نیست مانند ویندوز.وصلهی Gregory P. Smith <greg@krypto.org> و Seth Larson <seth@python.org>. گزارششده توسط Ellie <el@horse64.org>
gh-121957: رفع رویدادهای حسابرسی مفقودشده پیرامون استفادهی تعاملی از پایتون، که اکنون همچنین به درستی برای
python -iو همچنین برایpython -m asyncioاجرا میشوند. رویدادهای مورد نظر عبارتند ازcpython.run_stdinوcpython.run_startup.gh-112301: فعالسازی محافظتهای رانتایم برای glibc جهت متوقف کردن اجرا هنگام مواجهه با رفتار ناامن، برای همهی پلتفرمها به جز ویندوز.
gh-121285: حذف بازگشت به عقب (backtracking) از تجزیه سرآیند tarfile برای
hdrcharset، PAX و سرآیندهای پراکندهی GNU.gh-112301: افزودن گزینههای پیشفرض کامپایلر برای بهبود امنیت. فعالسازی -Wimplicit-fallthrough، -fstack-protector-strong، -Wtrampolines.
gh-118773: اصلاح ایجاد ACLها در
os.mkdir()روی ویندوز بهنحوی که روی رایانههای غیرانگلیسیزبان بهدرستی کار کند.gh-118486: تابع
os.mkdir()در ویندوز اکنون مقدار mode را با مقدار0o700میپذیرد تا پوشهی جدید به کاربر فعلی محدود شود. این مشکل CVE 2024-4030 را که تابعtempfile.mkdtemp()را در سناریوهایی که پوشهی موقت پایه اجازهدهندهتر از حالت پیشفرض است تحت تأثیر قرار میداد، برطرف میکند.
کتابخانه¶
gh-125422: باگی که در آن
pdbوbdbمیتوانستند وارد قاب فراخوانندهی پایینی شوند، رفع شد.gh-100141: باگی که در آن
pdbهنگام اشکالزدایی یک پروندهی خالی در حلقهی بینهایت گیر میافتاد، رفع شد.gh-53203: تابع
time.strptime()برای قالبهای%c،%xو%Xدر بسیاری از تنظیمات محلی (locale) که از ارقام غیر اسکی (non-ASCII) استفاده میکنند، مانند فارسی، برمهای، اودیایی و شان، اصلاح شد.gh-125206: راهکار موقت برای نسخههای قدیمی libffi اضافه شد. ماژول ctypes از double complex فقط با libffi >= 3.3.0 پشتیبانی میکند. وصله توسط Mikhail Efimov.
gh-89967: کلاسهای
WeakKeyDictionaryوWeakValueDictionaryرا در برابر تغییرات همزمان از سایر نخها ایمن کنید. وصله توسط Kumar Aditya.gh-125260: پارامتر mtime در تابع
gzip.compress()اکنون بهطور پیشفرض برای خروجی قابلتکثیر روی 0 تنظیم میشود. وصلهای از Bernhard M. Wiedemann و Adam Turner.gh-125243: رفع رقابت دادهای هنگام ایجاد اشیاء
zoneinfo.ZoneInfoدر ساخت نخبندی آزاد (free threading).gh-125254: رفع باگی که در آن ArgumentError گزینهی مبهم نادرست را در
argparseشامل میشد.gh-125235: مسیرهای TCL مربوط به
tkinterدر محیط مجازی (venv) را طوری نگه دارید که روی ویندوز به نصب پایه اشاره کنند.gh-61011: رفع ارثبری گروههای متقابلاً انحصاری تو در تو از پارسر والد در
argparse.ArgumentParser. پیشتر، تمام گروههای متقابلاً انحصاری تو در تو اتصال خود را به گروه دربردارندهی آنها از دست میدادند و بهعنوان متعلقات مستقیم پارسر نمایش داده میشدند.gh-125118: مقادیر دلخواه را به _Bool در ماژول
structکپی نکنید.gh-125069: رفع مشکلی که در آن ارائهی یک شیء
pathlib.PurePathبه عنوان آرگومان سازنده به شیء دومPurePathبا یکparserمتفاوت، باعث میشد آرگومانهای سازندهی شیء اول با پارسر شیء دوم به هم متصل شوند.gh-125096: اگر متغیر محیطی
PYTHON_BASIC_REPLتنظیم شده باشد، ماژولsiteدیگر ماژول_pyreplرا ایمپورت نمیکند. علاوه بر این، ماژولsiteاکنون گزینههای خط فرمان-Eو-Iرا رعایت میکند: در این صورتPYTHON_BASIC_REPLرا نادیده بگیرید. وصله توسط Victor Stinner.gh-124969: اصلاح
locale.nl_langinfo(locale.ALT_DIGITS). اکنون این تابع تا ۱۰۰ رشته (یک تاپل خالی در بیشتر تنظیمات محلی) برمیگرداند. پیشازاین، اولین آیتم آن تاپل یا یک رشتهی خالی را برمیگرداند.gh-124960: رفع پشتیبانی از پرچم آیندهنگر
barry_as_FLUFLدر REPL جدید.gh-69998: رفع تابع
locale.nl_langinfo()در مواردی که دستههای مختلف دارای تنظیمات محلی (locale) متفاوتی هستند. این تابع اکنون در برخی موارد تنظیمات محلیLC_CTYPEرا بهطور موقت تنظیم میکند. این تغییر موقت سایر نخها را تحت تأثیر قرار میدهد.gh-124958: رفع حلقههای ارجاع (refcycles) در استثناهای پرتابشده از
asyncio.TaskGroupو پیادهسازی پایتونیasyncio.Futuregh-53203: اصلاح
time.strptime()برای قالبهای%cو%xدر بسیاری از تنظیمات محلی (locale): عربی، بیسلاما، برتون، بودو، کاشوبی، چوواش، استونیایی، فرانسوی، ایرلندی، گِعِز، گجراتی، مانکسی، عبری، هندی، چتیسگری، کریول هائیتی، ژاپنی، کانادهای، کرهای، مراتی، مالایی، نروژی، نینورسک، پنجابی، راجستانی، توک پیسین، یوروبا، چینی یوئه، یاو/نونگون و چینی.gh-123961: تبدیل
cursesبه مقداردهی اولیهی چندمرحلهای (PEP 489)، که از این طریق نشتیهای ارجاع در زمان خاموش شدن مفسر اصلاح میشوند. وصلهای از Bénédikt Tran.gh-117151: اندازهی پیشفرض بافر مورد استفاده توسط
shutil.copyfileobj()در پلتفرمهای غیر ویندوزی از ۶۴k به ۲۵۶k افزایش یافته است. این مقدار پیشتر روی ویندوز بزرگتر بود.gh-90102: از فراخوانی سیستمی
isattyدر هنگام open() هنگامی که مشخص است پرونده یک دستگاه نویسهای نیست، صرفنظر کنید. این کار باعث بهبود جزئی در کارایی هنگام خواندن کل پروندهها میشود.gh-124917: اجازهی فراخوانی
os.path.exists()وos.path.lexists()با آرگومانهای کلیدواژهای در ویندوز. یک رگرسیون را در نسخهی ۳.۱۳.۰ برطرف میکند.gh-65865: ماژول
argparseاکنون برای آرگومانهای نامعتبرhelpدر متدهایadd_argument()،add_subparsers()وadd_parser()خطای زودهنگامی را بالا میآورد (raises).gh-124653: رفع تشخیص حداقل API صف مورد نیاز ماژول
logging. وصله توسط Bénédikt Tran.gh-91818: رابط خط فرمان (CLI) بسیاری از ماژولها (
ast،ensurepip،json،pdb،sqlite3،tokenize،venv) اکنون بهجای نمایش سادهی «python»، از نام اجرایی واقعی در پیام استفاده استفاده میکند.gh-124858: اصلاح چرخههای ارجاع باقیمانده در ردگیریها در
asyncio.open_connection()هنگامی که باhappy_eyeballs_delayاستفاده میشودgh-124390: رفع خطای
AssertionErrorهنگام استفاده ازasyncio.staggered.staggered_race()باasyncio.eager_task_factory.gh-85935: متد
argparse.ArgumentParser.add_argument()اکنون اگر یک action که آرگومانها را مصرف نمیکند (مانند 'store_const' یا 'store_true') یا مقدار صریحnargs=0برای آرگومانهای جایگاهی مشخص شده باشد، یک استثنا ایجاد میکند.gh-124835: باعث میشود تابع
tomllib.loads()روی انواع ورودی نامعتبری که ویژگیreplaceرا ندارند، به جایAttributeErrorخطایTypeErrorرا ایجاد کند. پیام خطا هنگام دریافتbytesبهبود یابد.gh-124693: رفع باگی که در آن
argparseاعداد مختلط منفی یا اعداد منفی با استفاده از نمادگذاری علمی را تشخیص نمیداد.gh-124787: رفع مشکل
typing.TypeAliasTypeبا آرگومان نامعتبرtype_params. اکنون وقتی یک پارامتر نوع بدون مقدار پیشفرض، پس از یک پارامتر نوع دارای مقدار پیشفرض میآید، و همچنین زمانی که یک درایه در تاپلtype_paramsیک شیء پارامتر نوع نباشد، خطایTypeErrorایجاد میکند.gh-66436: بهبود مقدار پیشفرض prog برای
argparse.ArgumentParser. اکنون این مقدار شامل نام فایل اجرایی پایتون به همراه نام ماژول یا بسته، یا مسیر یک پوشه، فایل ZIP، یا پوشهای درون یک فایل ZIP خواهد بود (اگر کد به آن شکل اجرا شده باشد).gh-116850: رفع مشکل
argparseبرای فضاهای نامی که دیکشنری آنها مستقیماً قابل نوشتن نیست (مانند کلاسها).gh-101552: افزودن یک پارامتر annoation_format به
inspect.signature(). افزودن یک پارامتر quote_annotation_strings بهinspect.Signature.format(). استفاده از قابلیت جدید برای بهبود نمایش حاشیهنویسیها در امضاها درpydoc. پچ توسط Jelle Zijlstra.gh-58573: رفع تداخلها بین گزینههای بلند مخففشده در پارسر والد و زیرپارسرها در
argparse.gh-124594: تمام اعلانات (prompts) مربوط به REPL در ماژول
asyncioدر یکcontextاجرا میشوند. مشارکت توسط Bartosz Sławecki.gh-61181: رفع پشتیبانی از گزینهها با مقدار رشتهای در
argparse. زیررشتههای رشتهی مشخصشده دیگر به عنوان مقادیر معتبر در نظر گرفته نمیشوند.gh-116750: تابع
sys.monitoring.clear_tool_id()را فراهم میکند تا تمام رویدادها و کالبکهای تعیینشده توسط ابزار لغو ثبت شوند.gh-124552: بهبود دقت بررسی
bdbبرای احتمال وجود نقطهی ایست در یک قاب. این کار امکان غیرفعال کردن رویدادهای غیرضروری را در تابعها فراهم میکند.gh-124538: رفع فروپاشی هنگام استفاده از
gc.get_referents()روی یک شیء کپسول (capsule).gh-80259: رفع پشتیبانی
argparseاز آرگومان جایگاهی باnargs='?'،default=argparse.SUPPRESSوtypeمشخصشده.gh-120378: رفع فروپاشی مربوط به سرریز عدد صحیح در
curses.resizeterm()وcurses.resize_term().gh-124498: اصلاح
typing.TypeAliasTypeبهطوریکه وقتیtype_paramsیک تاپل خالی است، عام نباشد.gh-53834: رفع پشتیبانی از آرگومانها با گزینهها در
argparse. آرگومانهای جایگاهی با nargs برابر با'?'یا'*'دیگر پیشفرض را در برابرchoicesبررسی نمیکنند. آرگومانهای اختیاری باnargsبرابر با'?'دیگر const را در برابرchoicesبررسی نمیکنند.gh-123884: رفع باگ در نحوهی مدیریت سایر ورودیهای tee (یک tee در داخل یک tee) توسط itertools.tee(). خروجی اکنون دارای n پیمایشگر مستقل جدیدِ وعدهدادهشده است. پیشتر، پیمایشگر اول با پیمایشگر ورودی یکسان (و نه مستقل) بود. این موضوع گاهی نتایج غافلگیرکنندهای ایجاد میکرد.
gh-123017: به دلیل نتایج غیرقابلاعتماد در برخی دستگاهها، تابع
time.strftime()دیگر سالهای منفی را در اندروید نمیپذیرد.gh-123014: توابع
os.pidfd_open()وsignal.pidfd_send_signal()اکنون هنگام ساخت در برابر سطوح API اندروید قدیمیتر از ۳۱ در دسترس نیستند، زیرا فرایندهای سیستمی زیرین ممکن است باعث فروپاشی شوند.gh-124176: افزودن پشتیبانی از
dataclasses.dataclass()درunittest.mock.create_autospec(). اکنونcreate_autospecدیتاکلاسهای بالقوه را بررسی میکند و از تابعdataclasses.fields()برای بازیابی اطلاعات مشخصات استفاده میکند.gh-124345: ماژول
argparseاز گزینههای طولانیِ مخفف با یک خط تیره که با=از مقدار خود جدا شدهاند، پشتیبانی میکند.gh-124400: رفع باگ
pdbکه در آنuntilهنگامی که در یک دنبالهیcommandsظاهر میشود، اثری ندارد. همچنین از چاپ اطلاعات قاب در نقطهی ایست که دارای فهرست دستوری شامل یک دستور ازسرگیری اجرا است، جلوگیری میشود.gh-90562: اصلاح دیتاکلاسها برای پشتیبانی از super() بدون آرگومان زمانی که
slots=Trueمشخص شده است. این کار با تغییر تمام ارجاعات به__class__برای اشاره به کلاس تازه ایجادشده انجام میشود.gh-104860: رفع مشکل عدم اجازه برای مخففسازی گزینههای طولانی با یک خط تیره در
argparseبا استفاده ازallow_abbrev=False.gh-63143: رفع تجزیهی آرگومانهای متقابلاً انحصاری در
argparse. آرگومانهایی که مقدارشان با مقدار پیشفرض یکسان است (مانند مقادیر بولی، اعداد صحیح کوچک، رشتههای خالی یا ۱-نویسهای) دیگر «موجود» در نظر گرفته نمیشوند.gh-72795: آرگومانهای جایگاهی با nargs برابر با
'*'یاargparse.REMAINDERدیگر الزامی نیستند. این امر استفاده از آرگومان جایگاهی باnargs='*'و بدونdefaultرا در گروه متقابلاً انحصاری امکانپذیر میکند و پیام خطای مربوط به آرگومانهای الزامی را بهبود میبخشد.gh-59317: رفع تجزیهی آرگومان جایگاهی با nargs برابر با
'?'یا'*'اگر پیش از آن یک گزینه و یک آرگومان جایگاهی دیگر قرار داشته باشد.gh-100980: ویژگی
_fields_ازctypes.StructureوUnionاگر عملیات setattr خطایی ایجاد کند، دیگر تنظیم نمیشود.gh-53780: ماژول
argparseاکنون اولین"--"(خط تیره دوتایی) را بین یک گزینه و دستور نادیده میگیرد.gh-124217: افزودن بلوک IPv6 رزرو شدهی RFC 9637 به نام
3fff::/20در ماژولipaddress.gh-111513: بهبود پیام خطایی که ممکن است توسط
datetime.date.fromtimestamp()ایجاد شود.gh-124248: رفع فروپاشی احتمالی هنگام استفاده از
structبرای پردازش فیلدهای «رشتهی پاسکال» با عرض صفر (0p).gh-81691: رفع مشکل مدیریت چندین
"--"(خط تیره دوگانه) درargparse. اکنون فقط مورد اول حذف میشود و تمامی موارد بعدی به صورت تحتاللفظی در نظر گرفته میشوند.gh-87041: رفع باگی در
argparseکه در آن راهنمای آرگومانهای زیرپارسِر به اشتباه دارای فرورفتگی میشود.gh-84559: متد پیشفرض شروع
multiprocessingدر لینوکس و سایر سیستمهای POSIX از حالت اغلب ناامن"fork"به"forkserver"(هنگامی که پلتفرم از ارسال دستههای پرونده از طریق پایپ پشتیبانی کند، همانطور که بیشترشان پشتیبانی میکنند) یا"spawn"تغییر یافته است. مک و ویندوز بدون تغییر باقی ماندهاند زیرا پیشفرض آنها از قبل"spawn"بوده است.gh-124212: رفع متغیر نامعتبر در مدیریت پیوند نمادین ناموفق در ویندوز توسط
venvgh-124171: افزودن راهحل جایگزین برای پیادهسازیهای خراب
fmod()در ویندوز که علامت صفر را از دست میدهند (به عنوان مثالfmod(-10, 1)مقدار0.0را برمیگرداند). وصله توسط سرگی بی. کیرپیچف (Sergey B Kirpichev).gh-123978: حذف توابع خراب
time.thread_time()وtime.thread_time_ns()در NetBSD.gh-123934: رفع مشکل بازگرداندن مقادیر متدهای جادویی توسط
unittest.mock.MagicMockپس از فراخوانی.reset_mock(return_value=True).gh-124016: بهروزرسانی پایگاهدادهی
unicodedataبه یونیکد 16.0.0.gh-123968: رفع رابط خط فرمان برای ماژول
randomبه طوری که اعداد اعشاری بین ۰ و N را انتخاب کند، نه ۱ و N.gh-123945: رفع باگی که در آن
argparseاعداد منفی دارای زیرخط (underscore) را تشخیص نمیدهد.gh-123935: رفع تشخیص جایگاههای والد (parent slots) برای دیتاکلاسهایی که از کلاسهای دارای
__dictoffset__ارثبری میکنند.gh-123892: افزودن
"_wmi"بهsys.stdlib_module_names. وصله توسط ویکتور استینر (Victor Stinner).gh-84808: رفع مدیریت خطا در متد
connect_ex()ازsocketدر پلتفرمهایی کهerrnoمیتواند منفی باشد.gh-123756: افزودن آرگومان جدید
modeبهpdb.Pdb. فقط بهpdbدر خط فرمان اجازه داده میشود از دستورrestartاستفاده کند.gh-122765: رفع خطاهای نقلقول نامتوازن که هنگام فراخوانی activate.csh در
venvبا یک اعلان سفارشی حاوی نقلقولهای بدون جفت یا نویسههای خط جدید رخ میداد.gh-123657: رفع فروپاشی و نشت حافظه در
decimal.getcontext(). هنگامی که از یک زمینهی نخمحلی با--with-decimal-contextvar=noاستفاده میشد، دچار فروپاشی میشد.gh-123339: رفع
inspect.getsource()برای کلاسهای موجود در ماژولهایcollections.abcوdecimal(برای پیادهسازی خالص پایتون). تابعinspect.getcomments()اکنون اگر مقدار__firstlineno__برای یک کلاس خارج از کران باشد، به جای IndexError خطای OSError را بالا میآورد.gh-123374: بررسی مربوط به درایهی یادداشت بازتعریفشده در
pickletools.dis()حذف شد.gh-123430: صفحاتی که توسط ماژول
http.serverتولید میشوند به مرورگر اجازه میدهند حالت تاریک پیشفرض خود را اعمال کند.gh-123446: رفع مشکل نام تابع خالی در
TypeErrorهنگامی کهcsv.reader()،csv.writer()یاcsv.register_dialect()بدون آرگومانهای لازم استفاده میشوند.gh-123448: با انتقال
typing.NoDefaultبه آرایهی نوع ایستا، نشت حافظهی آن برطرف شد.gh-123409: خروجی
ipaddress.IPv6Address.reverse_pointerمطابق با RFC 3596, §2.5 اصلاح شد. وصلهای از Bénédikt Tran.gh-123089: کلاس
weakref.WeakSetدر برابر تغییرات همزمان در حین پیمایش ایمن شد. وصلهای از Kumar Aditya.gh-123363: مقدار رشتهای آرگومان عملگر
CONTAINS_OPدر خروجیdisنمایش داده شود. وصلهای از Alexandr153.gh-123341: متد
__class_getitem__()برای پشتیبانی از زیرنویس نوع در زمان اجرا (رانتایم) بهtkinter.Eventاضافه شد. وصلهای از Adonis Rakateli.gh-123340: مقدار رشتهای آرگومان عملگر
IS_OPدر خروجیdisنمایش داده شود.gh-119518: با عدم درونیسازی بخشهای رشتهای، نرمالسازی اشیای
pathlib.PurePathوPathسرعت پیدا کرد.gh-123270: یک اصلاح دقیقتر برای بارهای اطلاعاتی بدفرمت در
zipfile.Pathاعمال شد که بدون خراب کردن محتویاتی که از نویسههای مجاز استفاده میکنند، باعث ایجاد حلقههای بیپایان میشود (gh-122905).gh-73991: متدهای
pathlib.Path.copy_into()وmove_into()اضافه شدند که پروندهها و دایرکتوریها را به درون دایرکتوریهای موجود کپی و جابهجا میکنند.gh-123228: نوع بازگشتی برای
_pyrepl.readline._ReadlineWrapper.get_line_buffer()اصلاح شد تاstr()باشد. وصلهای از Sergey B Kirpichev.gh-123240: رویدادهای حسابرسی برای
input()در REPL جدید ایجاد میشوند.gh-76960: توابع
urllib.parse.urljoin()وurllib.parse.urldefrag()برای URIهایی که دارای اجزای خالی هستند، اصلاح شدند. برای مثال، تابعurljoin()با ارجاع نسبی «?» اکنون پرسوجو را خالی میکند و قطعه را حذف میکند. اجزای خالی (مجوز، پارامترها، پرسوجو، قطعه) را درurljoin()حفظ کنید. اجزای خالی (مجوز، پارامترها، پرسوجو) را درurldefrag()حفظ کنید.gh-116810: نشت حافظهای که در ماژول
sslنسخهی ۳.۱۰ سیپایتون هنگام دسترسی به ویژگیssl.SSLSocket.sessionایجاد شده بود، حل شد. با جلوگیری از شبیهسازی غیرضروری اشیای نشست از طریق سریالسازی، دسترسی خواندن و نوشتن به ویژگی مذکور سرعت میگیرد.gh-123243: نشت حافظه در
_decimalبرطرف شد.gh-122546: به طور سازگار از نام پروندهی یکسانی برای استثناهای مختلف در پوسته تعاملی جدید پایتون استفاده شود. وصلهای از Sergey B Kirpichev.
gh-123213: متد
xml.etree.ElementTree.Element.extend()و انتسابElementاگر یک تولیدگر دارای خطا ارسال شود، دیگر استثنای داخلی را پنهان نمیکنند. وصلهای از Bar Harel.gh-85110: حفظ مسیر نسبی در URL بدون netloc در توابع
urllib.parse.urlunsplit()وurllib.parse.urlunparse().gh-123165: افزودن پشتیبانی از رندر کردن
Positionsدر ماژولdis.gh-122909: در urllib.request هنگامی که URLError هنگام باز کردن یک URL از نوع ftp بالا آورده (raise) میشود، آرگومان استثنا اکنون بهطور پایدار یک رشته است. نسخههای قبلی یا یک رشته یا یک نمونهی استثنای ftplib را بهعنوان آرگومان به URLError ارسال میکردند.
gh-123084: منسوخ کردن تابع
shutil.ExecErrorکه از زمان پایتون ۳.۴ توسط هیچ تابعی در ماژولshutilبالا آورده نشده است. این کلاس اکنون یک نام مستعار برایRuntimeErrorاست.gh-123085: در فراخوانی خالی تابع
importlib.resources.files()، اطمینان حاصل کنید که قاب فراخواننده بهanطور صحیح شناسایی شود، زمانی که خود ماژولimportlib.resourcesفقط به صورت یک ماژول کامپایلشده (بدون سورس) در دسترس است.gh-123067: رفع پیچیدگی درجهدوم در تجزیهی مقادیر کوکی نقلقولشده با
"دارای بکاسلش توسط ماژولhttp.cookies.gh-123049: افزودن پشتیبانی از
UNNAMED_SECTIONدر متدconfigparser.ConfigParser.add_section().gh-121735: هنگام کار با آرشیوهای zip، ماژول importlib.resources اکنون بهدرستی به ارجاعات مجاور ماژول احترام میگذارد (مثلاً
files(pkg.mod)و نه فقطfiles(pkg)).gh-122981: رفع تابع
inspect.getsource()برای کلاسهای تولیدشده با کلاسهای پایهی پایتون (مثلاً enumها).gh-122903: عبارت
zipfile.Path.globاکنون بهدرستی با دایرکتوریها مطابقت پیدا میکند و آنها را بهطور صامت حذف نمیکند.gh-122905: اشیاء
zipfile.Pathاکنون نامها را از zipfile پاکسازی میکنند.gh-122873: امکان کارکردن ماژول
jsonبه عنوان یک اسکریپت با استفاده از سوئیچ-m:python -m json. مستندات رابط خط فرمان JSON را ببینید. پچ توسط Trey Hunner.gh-122858: منسوخ کردن تابع
asyncio.iscoroutinefunction()به نفع تابعinspect.iscoroutinefunction().gh-116263: کلاس
logging.handlers.RotatingFileHandlerدیگر روی پروندههای ثبت وقایع (log) خالی چرخش انجام نمیدهد.gh-105376: بازگردانی متد منسوخشدهی
warn()در ماژولlogging. این متد در نسخهی ۳.۱۳ آلفا ۱ پایتون حذف شده بود. متد منسوخشدهیwarn()را در پایتون ۳.۱۳ نگه دارید. پچ توسط Victor Stinner.gh-122311: بهبود خطاهای ماژول
pickle. استثنایPicklingErrorاکنون به جایUnicodeEncodeError،ValueErrorوAttributeErrorبیشتر بالا آورده میشود و استثنای اصلی به آن زنجیر میشود. بهبود و یکپارچهسازی پیامهای خطا در پیادهسازیهای پایتون و C.gh-122744: ارتقای نسخهی pip بستهبندیشده در ensurepip به نسخهی ۲۴.۲.
gh-118761: بهبود زمان ایمپورت ماژول
pprintدر حدود هفت برابر. پچ توسط Hugo van Kemenade.gh-118974: افزودن پارامتر
decoratorبه تابعdataclasses.make_dataclass()برای سفارشیسازی ایجاد تابعی دیتاکلاسها.gh-118814: رفع سازندهی
typing.TypeVarهنگامی که نام به صورت کلیدواژه پاس داده میشود.gh-122637: توابع
cmath.tanh(nanj)وcmath.tanh(infj)را برای استانداردهای جدید C تنظیم کنید.gh-122478: قابهای داخلی را از ردگیریهای نمایشدادهشده در
code.InteractiveInterpreterباsys.excepthook()غیرپیشفرض حذف کنید. ردگیریهای صحیح را درsys.last_tracebackذخیره کنید و ویژگی__traceback__را درsys.last_valueوsys.last_excبهروزرسانی کنید.gh-116622: در اندروید، ثابتهای
FICLONEوFICLONERANGEدیگر توسطfcntlدر معرض نمایش قرار نمیگیرند، زیرا این ioctlها توسط SELinux مسدود شدهاند.gh-82378: مطمئن شوید که REPL جدید،
sys.tracebacklimitرا همانند REPL کلاسیک تفسیر میکند.gh-122334: مشکل فروپاشی هنگام ایمپورت کردن
sslپس از راهاندازی مجدد مفسر اصلی را برطرف کنید.gh-122459: با نامگذاری اشیاء بدون ویژگی
__module__، ماژولpicklingرا بهینه کنید.gh-87320: در
code.InteractiveInterpreter، استثناهای ناشی از فراخوانی یکsys.excepthook()غیرپیشفرض را مدیریت کنید. پیش از این، استثنا به فراخواننده منتقل میشد و به REPL پایان میداد.gh-122272: در برخی پلتفرمها مانند لینوکس، سال همراه با قرن هنگام قالببندی توسط
strftime()با مشخصههای مختص C99 یعنی'%C'یا'%F'با صفر پر نمیشد. رفتار صفرگذاری اکنون در صورت پشتیبانی مشخصههای قالب'%C'و'%F'توسط کتابخانهی C تضمین میشود. اصلاحیه از Ben Hsinggh-122400: استثناهای
ValueErrorایجادشده توسطos.stat()را درfilecmp.dircmpوfilecmp.cmpfiles()مدیریت کنید. اصلاحیه از Bénédikt Tran.gh-121650: سرآیندهای
emailدارای نویسههای خط جدید جاسازیشده، اکنون در خروجی نقلقول میشوند. ماژولgeneratorاکنون از سریالسازی (نوشتن) سرآیندهایی که به طور ناامن قطعهبندی یا محدود شدهاند خودداری میکند؛ نگاه کنید بهverify_generated_headers. (مشارکتکنندگان: Bas Bloemsaat و Petr Viktorin در gh-121650.)gh-122332: مشکل خطای حافظه (segfault) با
asyncio.Task.get_coro()هنگام استفاده از کارخانهی وظیفهی مشتاق (eager task factory) برطرف شد.gh-105733: تابع
ctypes.ARRAY()اکنون منسوخ نرم است: دیگر هشدارهای منسوخشدن را صادر نمیکند و برای حذف زمانبندی نشده است.gh-122213: یادداشتهایی برای خطاهای سریالسازی پیکل اضافه کنید که امکان شناسایی منبع خطا را فراهم میکنند.
gh-119180: به عنوان بخشی از PEP 749، ویژگیهای زیر را برای سفارشیسازی ارزیابی محدودههای حاشیهنویسی اضافه کنید:
evaluate_valueرویtyping.TypeAliasTypeevaluate_bound،evaluate_constraintsوevaluate_defaultرویtyping.TypeVarevaluate_defaultرویtyping.ParamSpecevaluate_defaultرویtyping.TypeVarTuple
gh-119180: نحوهی مدیریت کلاسها با فراکلاسهای سفارشی در
annotationlib.get_annotationsرا اصلاح کنید.gh-122170: مدیریت خطاهای
ValueErrorایجاد شده توسطos.stat()در ماژولlinecache. اصلاحیه توسط Bénédikt Tran.gh-122163: افزودن یادداشتهایی برای خطاهای سریالسازی JSON که امکان شناسایی منبع خطا را فراهم میکنند.
gh-122129: بهبود پشتیبانی از توصیفگرهای متد و پوششها در عنوان راهنما.
gh-122145: رفع مشکلی در هنگام گزارش ردگیریهای مربوط به کد پایتون که بدنه خالی درخت نحوی انتزاعی (AST) را تولید میکند. اصلاحیه توسط Nikita Sobolev و Bénédikt Tran.
gh-121723: باعث میشود
logging.config.dictConfig()هر شیءای را که API عمومی صف را پیادهسازی میکند، بپذیرد. برای جزئیات به بخش پیکربندی صف مراجعه کنید. اصلاحیه توسط Bénédikt Tran.gh-82951: سریالسازی اشیاء با
__qualname__پیچیده (مانند متدهای غیرمتصل و کلاسهای تو در تو) بر اساس نام، دیگر شامل سریالسازی اشیاء والد به روش مقدار در پروتکلهای پیکل < 4 نمیشود.gh-120754: متد
Pathlib.read_bytesدیگر پرونده را در حالت I/O با بافر پایتون باز نمیکند. این کار سربار را کاهش میدهد زیرا کد پرونده را به طور کامل میخواند که منجر به افزایش سرعت متوسطی میشود.gh-113785: ماژول
csvاکنون به درستی فیلدهای عددی (هنگام استفاده باcsv.QUOTE_NONNUMERICیاcsv.QUOTE_STRINGS) را که با یک نویسهی گریز شروع میشوند، تحلیل میکند.gh-122088: دکوراتور
@warnings.deprecatedاکنون وضعیت همروالی توابع و متدها را کپی میکند تا تابعinspect.iscoroutinefunction()نتیجهی درستی را برگرداند.gh-122081: رفع یک فروپاشی در تابع اختیاری
decimal.IEEEContext()که از طریق پرچم پیکربندیEXTRA_FUNCTIONALITYدر دسترس است.gh-73991: افزودن متد
pathlib.Path.move()که یک پرونده یا درخت پوشه را جابهجا میکند.gh-121268: حذف راهحلهای موقت برای سیستمهای غیر IEEE 754 در ماژول
cmath.gh-119698: به دلیل عدم استقبال از
symtable.Class.get_methods()، این متد به عنوان منسوخ علامتگذاری شده است و در پایتون 3.16 حذف خواهد شد. اصلاحیه توسط Bénédikt Tran.gh-121889: تنظیم
cmath.acosh(complex('0+nanj'))برای استانداردهای جدید C.gh-121804: نمایش صحیح مکانهای خطا، زمانی که
SyntaxErrorدر خط فرمان تعاملی جدید رخ میدهد. اصلاحیه توسط Sergey B Kirpichev.gh-121797: افزودن سازندهی جایگزین
FractionیعنیFraction.from_number().gh-121798: افزودن سازندهی جایگزین
DecimalیعنیDecimal.from_number().gh-120930: رفع باگی معرفیشده توسط gh-92081 که یک نویسهی خالی اضافی نادرست را به کلمات کدگذاریشده موجود در سرآیندهای پیچیده اضافه میکرد.
gh-57141: آرگومان shallow برای تابع
filecmp.dircmp(جدید در پایتون 3.13) اکنون فقط کلیدواژهای است.gh-121245: سادهسازی مدیریت پروندهی تاریخچه در کمکی
site.register_readline(). متغیرCAN_USE_PYREPLاکنون هنگام وارد شدن مقداردهی اولیه خواهد شد. اصلاحیه توسط Sergey B Kirpichev.gh-121249: پشتیبانی از انواع دادهی C یعنی float complex و double complex در ماژول
struct، در صورتی که کامپایلر از محاسبات مختلط C11 پشتیبانی کند. توسعه توسط Sergey B Kirpichev.gh-121486: توابع ماژول
mathیعنیisqrt()،log()،log2()وlog10()اکنون از اعداد صحیح بزرگتر از2**2**32در پلتفرمهای ۳۲ بیتی پشتیبانی میکنند.gh-121474: رفع بررسی صحت مفقود برای آرگومان
partiesدر سازندهیthreading.Barrier. توسعه توسط Clinton Christian (pygeek).gh-121450: نقاط توقف سختکدشده (
breakpoint()وpdb.set_trace()) اکنون بهجای ایجاد یک نمونهی جدید در هر بار، جدیدترین نمونهیPdbرا که تابعPdb.set_trace()را فراخوانی میکند، مجدداً استفاده میکنند. در نتیجه، تمام دادههای خاص نمونه مانندdisplayوcommandsدر سراسر نقاط توقف سختکدشده حفظ میشوند.gh-119169: افزایش جزئی سرعت
os.walk()با سادهسازی مدیریت استثناها.gh-121423: بهبود زمان ایمپورت ماژول
socketاز طریق ایمپورت تنبل ماژولها و نوشتنsocket.errorTabبه عنوان یک ثابت.gh-59110: ماژول
zipimportاکنون از بستههای فضای نام در صورت عدم وجود ورودی پوشه پشتیبانی میکند.gh-119004: رفع یک فروپاشی در OrderedDict.__eq__ هنگامی که عملوندها در طول بررسی تغییر میکنند. توسعه توسط Bénédikt Tran.
gh-121313: محدود کردن اندازهی خواندن در کلاس
multiprocessing.connection.Connectionبه ۶۴ کیلوبایت برای جلوگیری از تخصیص بیش از حد حافظه و فراخوانیهای غیرضروری سیستم مدیریت حافظه.gh-121332: رفع سازندهی گرههای
astبا_attributesسفارشی. پیش از این، ارسال ویژگیهای سفارشی یک اخطارDeprecationWarningصادر میکرد. ارسال آرگومانهایی به سازنده که در_fieldsیا_attributesنیستند همچنان منسوخ باقی میماند. توسعه توسط Jelle Zijlstra.gh-121245: رفع یک باگ در مدیریت تاریخچهی دستورات REPL جدید که باعث میشد پروندهی تاریخچه هنگام خروج از REPL پاک شود.
gh-121210: مدیریت گرههای درخت نحوی انتزاعی (AST) با فیلدها یا ویژگیهای زمان اجرای مفقود در
ast.compare(). توسعه توسط Bénédikt Tran.gh-121163: افزودن پشتیبانی از
allبه عنوان یکactionمعتبر برایwarnings.simplefilter()وwarnings.filterwarnings().gh-121151: رفع شکستهشدن متن راهنمای طولانی آرگومانها درون یک گروه متقابلاً انحصاری در ماژول
argparse.gh-121141: افزودن پشتیبانی از
copy.replace()به گرههای درخت نحوی انتزاعی (AST). توسعه توسط Bénédikt Tran.gh-87744: رفع حالت رقابتی waitpid هنگام فراخوانی
send_signal()در asyncio. توسعه توسط Kumar Aditya.gh-121027: افزودن یک اخطار آینده در
functools.partial.__get__(). در نسخههای آیندهی پایتون،functools.partialیک توصیفگر متد خواهد بود.gh-121027: تبدیل شیء
functools.partialبه یک توصیفگر متد.gh-117784: سیپایتون اکنون تشخیص میدهد که آیا کتابخانهی TLS مرتبط با آن از احراز هویت پس از دستدهی TLSv1.3 پشتیبانی میکند یا خیر و در صورت عدم پشتیبانی، آن ویژگی را غیرفعال میکند.
gh-121025: بهبود تابع
__repr__()مربوط بهfunctools.partialmethod. توسعه توسط Bénédikt Tran.gh-121018: رفع مشکلاتی که در آنها
argparse.ArgumentParser.parse_args()مقدارexit_on_error=Falseرا اعمال نمیکرد. بر اساس وصلهی ارائه شده توسط Ben Hsing.gh-119614: رفع برش رشتهها با نویسههای تهی تعبیهشده در برخی عملیات داخلی در
tkinter.gh-120910: هنگام خواندن پروندههای نصبشده از یک egg، از
relative_to(walk_up=True)استفاده کنید تا پروندههای نصبشده در خارج از ریشهی نصب نیز در نظر گرفته شوند.gh-61103: پشتیبانی از انواع دادهی C یعنی float complex، double complex و long double complex در
ctypesبه شکلc_float_complex،c_double_complexوc_longdouble_complexدر صورتی که کامپایلر دارای محاسبات مختلط C11 باشد. وصله توسط Sergey B Kirpichev.gh-120888: ارتقای pip wheel همراه با ensurepip (نسخهی 24.1.1)
gh-101830: دسترسی به بازنمایی رشتهای شیء
tkinterدیگر شیء زیرین Tcl را در ویندوز به رشته تبدیل نمیکند.gh-120678: رفع رگرسیون در REPL جدید که به این معنا بود که متغیرهای سراسری از پروندههای ارائهشده با استفاده از آرگومان
-iدر فضای نام سراسری REPL گنجانده نمیشدند. وصله توسط Alex Waygood.gh-120811: رفع نشت حافظه احتمالی در
contextvars.Context.run().gh-120782: رفع ارجاعات اشتباه انواع دادهی
datetimeپس از بارگذاری مجدد ماژول.gh-120713: متد
datetime.datetime.strftime()اکنون در لینوکس سالهای کمتر از چهار رقم را برای مشخصکنندههای قالب%Yو%Gبا صفر از سمت چپ پر میکند. وصله توسط Ben Hsinggh-120769: کاری کنید که سطر خالی در
pdbآخرین فرمان را تکرار کند، حتی زمانی که فرمان ازcmdqueueآمده باشد.gh-120780: نمایش مقدار رشتهای LOAD_SPECIAL oparg در خروجی
dis.gh-41431: افزودن
datetime.time.strptime()وdatetime.date.strptime(). مشارکتکننده: Wannes Boeykens.gh-120743: منسوخسازی نرم Soft deprecate توابع
os.popen()وos.spawn*. دیگر نباید از آنها برای نوشتن کدهای جدید استفاده شود. در عوض ماژولsubprocessپیشنهاد میشود. وصله توسط Victor Stinner.gh-120732: رفع مشکل ارسال
nameبه شیءunittest.mock.Mockهنگام استفاده ازunittest.mock.create_autospec().gh-111259: ماژول
reاکنون الگوهایی مانند"[\s\S]"یا"\s|\S"را که هر نویسهای را تطبیق میدهند، به همان اندازه مؤثر که یک نقطه با اصلاحگرDOTALL("(?s:.)") عمل میکند، پردازش میکند.gh-120683: رفع یک خطا در
logging.LogRecord، هنگامی که بخش عدد صحیح برچسب زمانی به بالا گرد میشود، در حالی که محاسبهی میلیثانیه برش میخورد، و باعث میشود برچسب زمانی ثبت وقایع تا ۹۹۹ میلیثانیه اشتباه باشد (تقریباً روی ۱ از هر ۸ میلیون برچسب زمانی تأثیر میگذارد).gh-118710: ویژگیهای
versionوmax_prefixlenدرipaddress.IPv4Addressوipaddress.IPv6Addressاکنون روی کلاس در دسترس هستند.gh-120633: جابهجایی نوار پیمایش و حذف منوهای جداشدنی در turtledemo.
gh-120606: به کاربران اجازه دهید از EOF برای خروج از تعریف
commandsدرpdbاستفاده کنند.gh-120284: به متد
asyncio.Runner.run()اجازه دهید تا به جای اشیای coroutine، اشیای انتظارپذیر را بپذیرد.gh-120541: بهبود اعلان در پیجر «less» زمانی که
help()با آرگومان غیررشتهای فراخوانی میشود.gh-120495: رفع مدیریت نادرست استثنا در Tab Nanny. اصلاحیه توسط Wulian233.
gh-120388: بهبود پیام هشدار هنگامی که یک متد آزمون در
unittestچیزی به جزNoneبرمیگرداند. اکنون نوع شیء بازگرداندهشده و نکتهی اختیاری مربوط به asyncio را نمایش میدهیم.gh-120381: اصلاح
inspect.ismethoddescriptor()برای بررسی عدم وجود__delete__()نیز. اصلاحیه توسط Jan Kaliszewski.gh-90425: هنگام استفاده از
gzip.compress()، بایت OS در سرآیندهای gzip اکنون همیشه روی ۲۵۵ تنظیم میشود.gh-120343: رفع گزارش آفست ستون برای توکنهایی که پس از افاسترینگهای چندخطی در ماژول
tokenizeمیآیند.gh-119180: به عنوان بخشی از پیادهسازی PEP 649 و PEP 749، ماژول جدید
annotationlibاضافه شد. افزودن پشتیبانی از ارجاعات پیشروی حلنشده در حاشیهنویسیها بهdataclasses،typing.TypedDictوtyping.NamedTuple.gh-119600: رفع
unittest.mock.patch()به طوری که هنگام تنظیمnew_callable، ویژگیهای هدف را نخواند. اصلاحیه توسط Robert Collins.gh-120289: با غیرمجاز کردن
disable()وclear()در تایمرهای خارجی، مسئلهی استفاده پس از آزادسازی (use-after-free) درcProfileرفع شد.gh-82017: پشتیبانی از تبدیل هر شیءای که دارای متد
as_integer_ratio()است به یکFractionاضافه شد.gh-114053: رفع باگ حالت مرزی که در آن
typing.get_type_hints()نتایج نادرستی تولید میکرد اگر پارامترهای نوع در محدودهی یک کلاس توسط انتسابها در محدودهی کلاس بازنویسی میشدند و معناشناسیfrom __future__ import annotationsفعال بود. اصلاحیه توسط Alex Waygood.gh-114053: رفع خطای
NameErrorنادرست هنگام فراخوانیinspect.get_annotations()باeval_str=Trueروی کلاسی که از پارامترهای نوع PEP 695 در ماژولی استفاده کرده بود کهfrom __future__ import annotationsرا در بالای پرونده داشت. اصلاحیه توسط Alex Waygood.gh-120268: برای دستیابی به سازگاری با پیادهسازی افزونهی C، ارسال
Noneبه متدdatetime.date.fromtimestamp()پایتون خالص ممنوع شد.gh-120244: رفع نشت حافظه در
re.sub()هنگامی که رشتهی جایگزین حاوی بازارجاعات است.gh-120254: آرگومان
commandsبهpdb.set_trace()اضافه شد که به کاربران اجازه میدهد دستورات رفع اشکال را از پروندهی مبدأ ارسال کنند.gh-120211: رفع
tkinter.ttkبا Tcl/Tk 9.0.gh-71587: رفع فروپاشی در نسخهی C متد
datetime.datetime.strptime()هنگامی که مجدداً روی مفسر راهاندازیشدهی مجدد فراخوانی میشود.gh-117983: ایمپورت
threadingدرimportlib.utilتا زمان استفاده از بارگذاری تنبل به تعویق انداخته شود.gh-120157: حذف ثابت استفادهنشدهی
concurrent.futures._base._FUTURE_STATESدر ماژولconcurrent.futures. اصلاحیه توسط Clinton Christian (pygeek).gh-120161: ماژول
datetimeدیگر در برخی وضعیتهای پیچیدهی چرخه ارجاع دچار فروپاشی نمیشود.gh-119698: رفع مشکل
symtable.Class.get_methods()و مستندسازی رفتار آن. وصله توسط Bénédikt Tran.gh-120121: افزودن
concurrent.futures.InvalidStateErrorبه ویژگی__all__ماژول.gh-119933: افزودن شمارش
symtable.SymbolTableTypeبرای نمایش خروجیهای احتمالی متدsymtable.SymbolTable.get_type. وصله توسط Bénédikt Tran.gh-120029: نمایان کردن متدهای
symtable.Symbolیعنیis_free_class()،is_comp_iter()وis_comp_cell(). وصله توسط Bénédikt Tran.gh-120108: رفع مشکل فراخوانی
copy.deepcopy()روی درختهایastکه بهگونهای تغییر یافتهاند که دارای ارجاع به گرههای والد هستند. وصله توسط Jelle Zijlstra.gh-120056: افزودن ثابتهای
socket.IP_RECVERRوsocket.IP_RECVTTL(هر دو از لینوکس نسخه ۲.۲ به بعد در دسترس هستند). و افزودن ثابتsocket.IP_RECVORIGDSTADDR(در دسترس از لینوکس نسخه ۲.۶.۲۹).gh-120057: افزودن متد
os.environ.refresh()برای بهروزرسانیos.environبا تغییرات اعمالشده در محیط توسطos.putenv()،os.unsetenv()، یا تغییرات ایجادشده خارج از پایتون در همان فرایند. وصله توسط Victor Stinner.gh-120029: نمایان کردن
symtable.Symbol.is_type_parameter()در ماژولsymtable. وصله توسط Bénédikt Tran.gh-119819: رفع رگرسیون برای امکانپذیر کردن پیکربندی گزارشگیری با انواعی از صف multiprocessing.
gh-65454: متد
unittest.mock.Mock.attach_mock()دیگر باعث فراخوانی یکPropertyMockدر حال الحاق نمیشود.gh-117142: ماژول
ctypesاکنون ممکن است در تمام زیرمفسرها، از جمله آنهایی که GIL خود را دارند، وارد (import) شود.gh-118835: رفع فروپاشی _pyrepl هنگام استفاده از اعلان سفارشی با کدهای گریز ANSI.
gh-81936: متدهای
help()وshowtopic()اکنون به آرگومان تنظیمشدهی output برایpydoc.Helperاحترام میگذارند و در چنین مواردی از صفحهخوان استفاده نمیکنند. وصله توسط Enrico Tröger.gh-117398: ماژول
_datetime(پیادهسازی به زبان C برایdatetime) اکنون از وارد شدن در چندین مفسر پشتیبانی میکند.gh-119824: چاپ کردن ورودی پشته در ماژول
pdbتنها زمانی که ورودی کاربر مورد نیاز است و دقیقاً در همان زمان.gh-119838: در عملیات محاسباتی ترکیبی بین
Fractionو complex، کسر اکنون به جایcomplexبهfloatتبدیل میشود.gh-119770: مثبت کردن ثابتهای
ioctl()در ماژولtermios. وصله توسط Victor Stinner.gh-89727: رفع مشکل
shutil.rmtree()که در آن یک خطایRecursionErrorروی درختهای پوشهی عمیق بالا میآید.gh-119577: هشدار
DeprecationWarningکه هنگام تست کردن ارزش درستی یکxml.etree.ElementTree.Elementصادر میشود، اکنون به جای بالا آوردن یک استثنا در پایتون ۳.۱۴، بازگرداندن بیشرطTrueرا در نسخهای در آینده توصیف میکند.gh-89727: رفع جزئی مشکل تابع
shutil.rmtree()که در آن خطایRecursionErrorروی درختهای پوشهی عمیق رخ میداد. هنگامی کهrmtree.avoids_symlink_attacksبرابر با نادرست (false) باشد، دیگر خطای بازگشتی (recursion error) رخ نمیدهد.gh-93963: نامهای منسوخ از ماژول
importlib.abcکه درimportlib.resources.abcیافت میشدند، حذف شدند.gh-119118: رفع افت عملکرد (performance regression) در ماژول
tokenizeبا ذخیرهسازی (caching) صفت توکنlineو محاسبهی کارآمدتر آفست ستون.gh-89727: رفع مشکل تابع
os.fwalk()که در آن خطایRecursionErrorروی درختهای پوشهی عمیق رخ میداد، با تغییر پیادهسازی از حالت بازگشتی (recursive) به تکرارشونده (iterative).gh-119594: اگر تابع pow(fractions.Fraction, x, module) با مقداری غیر از None برای modulo فراخوانی شود، پیام خطا اکنون به جای اینکه بگوید تابع pow فقط ۲ آرگومان میپذیرد، اعلام میکند که نوع دادهها ناسازگار هستند. این پچ توسط Wim Jeantine-Glenn و Mark Dickinson تهیه شده است.
gh-119588: متد
zipfile.Path.is_symlinkاکنون بررسی میکند که آیا مسیر دادهشده یک پیوند نمادین است یا خیر.gh-119562: حذف کلاسهای
ast.Num،ast.Str،ast.Bytes،ast.NameConstantوast.Ellipsis. همهی آنها از پایتون ۳.۱۲ به بعد هشدارهای منسوخ شدن را صادر کرده بودند. این پچ توسط Alex Waygood تهیه شده است.gh-119555: گرفتن استثنای
SyntaxErrorناشی ازcompile()در متد runsource() از InteractiveColoredConsole. این پچ توسط Sergey B Kirpichev تهیه شده است.gh-118908: محدود کردن متغیرهای سراسری (globals) در معرض دید از واردات (imports) داخلی و تعاریف در هنگام راهاندازی جدید REPL. این پچ توسط Eugene Triguba و Pablo Galindo تهیه شده است.
gh-117865: بهبود زمان ایمپورت ماژول
astبا به تعویق انداختن ایمپورت ماژولre. این پچ توسط Jelle Zijlstra تهیه شده است.gh-119127: آرگومانهای جایگاهی (positional arguments) اشیاء
functools.partial()اکنون از طریقfunctools.Placeholderاز جاینگهدارها پشتیبانی میکنند.gh-113892: اکنون متد
sock_connectاز کلاسasyncio.ProactorEventLoop، مشابه سایر پیادهسازیهای حلقهها (loops)، در صورتی که سوکت دادهشده در حالت غیرمسدودکننده (non-blocking) نباشد، یک خطایValueErrorایجاد میکند.gh-119506: رفع مشکلی که در آن متد
io.TextIOWrapper.write()هنگام فراخوانی مجدد در حین تخلیهی (flushing) بافر داخلی، آن را خراب میکند.gh-69214: اصلاح پارامتر request در تابع
fcntl.ioctl(): استفاده از یکunsigned longبه جایunsigned intبرای پارامتر request در تابعfcntl.ioctl()جهت پشتیبانی از درخواستهای بزرگتر ازUINT_MAX. این پچ توسط Victor Stinner تهیه شده است.gh-119105: تابع
DIffer.compare()در ماژولdifflib(و در نتیجهndiff) دیگر دچار رفتار زمان مکعبی یا بازگشت نامحدود نمیشود و به طور کلی در موارد عادی نیز باید سریعتر باشد. نتایج ممکن است در برخی موارد تغییر کنند، هرچند این اتفاق نادر خواهد بود. درستی تفاوتها (diffs) تحت تأثیر قرار نمیگیرد. ممکن است برخی سطرهای مشابه که با هم فاصله زیادی دارند، به عنوان حذف یکی و افزودن دیگری گزارش شوند، در حالی که پیشتر در سطرهای خروجی مجاور همراه با نشانهگذاریهایی که تفاوتهای درونسطری را نشان میدادند، نمایش داده میشدند.gh-119443: پوستهی تعاملی (interactive REPL) دیگر با فعال بودن
from __future__ import annotationsاجرا نمیشود. این پچ توسط Jelle Zijlstra تهیه شده است.gh-119461: افزودن ثابت
socket.VMADDR_CID_LOCAL. این پچ توسط Victor Stinner تهیه شده است.gh-117398: اشیاء موجود در C-API تاریخ و زمان (datetime) اکنون همگی به صورت استاتیک تخصیص داده میشوند که این امر به معنای ایمنی حافظهی بهتر، بهویژه هنگام بارگذاری مجدد ماژول است. این تغییر برای کاربران شفاف خواهد بود.
gh-118894: پوستهی REPL ماژول
asyncioاکنون دارای همان قابلیتهای PyREPL است.gh-118911: در PyREPL، منطق
maybe-acceptبهروزرسانی شد تا اگر کاربر کلید Enter را دو بار فشرد، حتی در صورت وجود فضای خالی پایانی، بتواند بلوک را خاتمه دهد. همچنین، اکنون وقتی کاربر کلید جهتنمای بالا را میفشارد، نشانگر روی آخرین سطر کاربردی قرار میگیرد. این رفتار با IPython مطابقت دارد. وصله توسط Aya Elsayed.gh-115225: ایجاد خطا برای رشتههای معتبر از نظر فنی اما ناسازگار با استاندارد ISO 8601 که به متد
datetime.time.fromisoformat()ارسال میشوند و پیشتر به شکل نادرستی تجزیه میشدند.gh-111201: وابستگی به
readlineاز پوسته تعاملی جدید پایتون (REPL) حذف شد.gh-119189: هنگام استفاده از عملگر
**یاpow()باFractionبه عنوان پایه و توان غیرمنطقی، اعشاری یا مختلط، کسر دیگر به عدد اعشاری تبدیل نمیشود.gh-119174: رفع مشکل تار شدن پنجرههای turtledemo (مثالهای گرافیکی لاکپشت) ناشی از DPI بالا. وصله توسط Wulian233 و Terry Jan Reedy
gh-119121: رفع خطای NameError که در
asyncio.staggered.staggered_raceرخ میداد. این تابع اکنون تست میشود.gh-119105: ماژول
difflib.Differبرای برخی موارد تفاوت (diff) که در آنها جفتسطرهای زیادی از شباهت یکسانی برخوردارند، بسیار سریعتر شده است.gh-119113: رفع مشکلی که در آن متد
pathlib.PurePath.with_suffix()در صورت دریافت مقدارNoneبه عنوان پسوند، استثنایTypeErrorرا پرتاب نمیکرد.gh-118643: رفع خطای AttributeError در ماژول
emailهنگام بازپیچی (re-fold) یک فهرست طولانی از آدرسها. همچنین رفع موارد بیشتری از کدگذاری نادرست جداکنندهی آدرس در فهرست آدرسها.gh-73991: افزودن متد
pathlib.Path.copy()که یک پرونده یا پوشه را در دیگری کپی میکند.gh-58933: کاری کنید که
pdbزمانی که فریم فراخواننده دارای ویژگیf_traceتنظیمنشده است، به درستی به فریم فراخواننده بازگرددgh-82805: پشتیبانی از پسوندهای پروندهی تکنقطهای در
pathlib.PurePath.suffixو ویژگیها و متدهای مرتبط. برای مثال، ویژگیsuffixesمربوط بهPurePath('foo.bar.')اکنون به جای[]برابر با['.bar', '.']است. این تغییر، جداسازی پسوند پرونده را با تابعos.path.splitext()همراستا میکند.gh-118924: حذف
versionوversion_infoازsqlite3. وصله توسط Hugo van Kemenade.gh-118928: عدم اجازه برای استفاده از دنبالهای از پارامترها با جاینگهدارهای نامگذاریشده در پرسوجوهای
sqlite3. وصله توسط Erlend E. Aasland.gh-118895: تنظیم ویژگیها روی
typing.NoDefaultاکنون به جایTypeErrorاستثنایAttributeErrorرا پرتاب میکند.gh-118868: رفع مشکلی که در آن آرگومانهای kwargs دیگر به هندلر گزارشگیری QueueHandler ارسالچ نمیشدند
gh-118827: حذف کلاس منسوخ
Quoterازurllib.parse. این کلاس پیشتر از نسخهی ۳.۱۱ پایتون هشدارDeprecationWarningرا صادر میکرد. وصله توسط Nikita Sobolev.gh-118824: حذف توابع منسوخ
pty.master_open()وpty.slave_open(). به جای آن ازpty.openpty()استفاده کنید. وصله توسط Nikita Sobolev.gh-118851: آرگومانهای
ctxبرای سازندههای کلاسهای گرهastاکنون به طور پیشفرض رویast.Load()تنظیم میشوند. وصله توسط Jelle Zijlstra.gh-101588: تابعهای copy، deepcopy و pickle را از itertools حذف کنید. این موارد پیشتر از نسخهی ۳.12 پایتون هشدار DeprecationWarning را فعال میکردند.
gh-118805: حذف پارامترهای type، choices و metavar از کلاس
argparse.BooleanOptionalAction. این پارامترها از نسخهی ۳.12 پایتون منسوخ شده بودند.gh-118803: کلاسهای
typing.ByteStringوcollections.abc.ByteStringحذف شدند. این کلاسها پیشتر از نسخهی ۳.12 پایتون هشدارDeprecationWarningتولید میکردند.gh-118798: پارامتر isdst از تابع
email.utils.localtime()حذف شد. وصله توسط Hugo van Kemenade.gh-118760: بازگرداندن مقدار پیشفرض
tkiter.wantobjectsبه1.gh-118760: رفع خطاهای مربوط به فراخوانی اتصالات Tkinter در سیستمعامل ویندوز.
gh-74033: حذف پشتیبانی از ارسال آرگومانهای کلیدواژهای به
pathlib.Path.gh-101357: سرکوب تمام استثناهای
OSErrorاز متدهایpathlib.Path.exists()وis_*()، به جای مجموعهای از خطاهای رایجتر. رفتار جدید باos.path.exists()،os.path.isdir()و غیره سازگار است. برای بازیابی وضعیت پرونده بدون سرکوب استثناها، ازpathlib.Path.stat()استفاده کنید.gh-78707: حذف پشتیبانی از ارسال آرگومانهای جایگاهی اضافی به
pathlib.PurePath.relative_to()وis_relative_to().gh-118507: رفع تابع
os.path.isfile()روی ویندوز برای پایپها. افزایش سرعتos.path.isjunction()وos.path.lexists()روی ویندوز با یک پیادهسازی بومی.gh-118772: اجازه دادن به نمونههای
typing.TypeVarبدون مقدار پیشفرض تا در برخی موارد از نمونههای بدون مقدار پیشفرض تبعیت کنند. وصله توسط Jelle Zijlstra.gh-118714: اجازه دادن به
restartدر اشکالزدایی پس از خاتمهpdb. حذف پیغام راهاندازی مجدد هنگامی که کاربر pdb را از حالت اشکالزدایی پس از خاتمه خارج میکند.gh-118673: حذف بیتهای اجرایی و خط مفسر از ماژولهای کتابخانهی استاندارد.
gh-110863: تابع
os.path.realpath()اکنون هنگامی که حالت strict غیرفعال است (پیشفرض)، هرگونه استثنایOSErrorرا ازos.readlink()سرکوب میکند.gh-118263: افزایش سرعت
os.path.splitroot()وos.path.normpath()با یک فراخوانی مستقیم C.gh-110190: رفع ساختارهای ctypes با آرایه روی SPARC با تنظیم
MAX_STRUCT_SIZEروی ۳۲ در stgdict. وصله توسط Jakub Kulikgh-118033: رفع مشکل ایجاد نشدن جایگاه
__weakref__توسطdataclasses.dataclass()هنگام زیرکلاسزدن ازtyping.Generic.gh-117766: همیشه از
str()برای چاپchoicesدرargparseاستفاده کنید.gh-106531: در
importlib.resources، همگامسازی با importlib_resources 6.3.2، از جمله:MultiplexedPathاکنون مسیرهایTraversableرا انتظار دارد و آرگومانهای رشتهای را برایMultiplexedPathمنسوخ میکند؛ فعالسازی پشتیبانی از منابع در بستههای فضای نام در پروندههای زیپ؛ رفعNotADirectoryErrorهنگام فراخوانی پروندهها روی یک زیرشاخه از یک بستهی فضای نام.gh-115937: حذف پیشپردازش اضافی برای ویژگی
__signature__: کد فقط بررسی میکند که آیا این یک نمونه ازinspect.Signatureاست یا خیر. وصله توسط Sergey B Kirpichev.gh-115808: افزودن توابع
operator.is_none()وoperator.is_not_none().gh-114264: بهبود کارایی
copy.deepcopy()با افزودن یک مسیر سریع برای انواع دادهی اتمی.gh-113878: افزودن پارامتر doc به
dataclasses.field()، بهطوریکه بتواند ذخیره شده و به عنوان مستندات / فراداده نمایش داده شود. اگر از@dataclass(slots=True)استفاده شود، رشتهی ارائهشده در دیکشنری__slots__در دسترس خواهد بود. در غیر این صورت، رشتهی ارائهشده تنها در شیء متناظرdataclasses.Fieldدر دسترس است.بهمنظور پشتیبانی از این ویژگی، قالب
__slots__را در دیتاکلاسها هنگامی که مستندات / فراداده حضور دارند، ازtupleبهdictتغییر میدهیم.gh-113978: نادیدهگرفتن هشدارها در تکمیل متن داخل REPL.
gh-113008: اصلاح خروجی نحوهی استفادهی argparse برای گروههای الزامی و متقابلاً انحصاری حاوی یک آرگومان جایگاهی
gh-108172: ماژول
webbrowserزمانی که نام ورودی دسکتاپ آن شامل متن یک نام مرورگر شناختهشده باشد، مرورگر ترجیحی سیستمعامل را در لینوکس محترم میشمارد.gh-109109: اکنون میتوانید زنجیرههای گواهی خام TLS را از طریق اتصالات TLS با استفاده از متدهای
ssl.SSLSocket.get_verified_chain()وssl.SSLSocket.get_unverified_chain()دریافت کنید.تهیهشده توسط Mateusz Nowak.
gh-105623: رفع افت کارایی در
logging.handlers.RotatingFileHandler. وصله توسط Craig Robson.gh-102450: افزودن گزینهی جایگزین گمشدهی ISO-8601 یعنی 24:00 برای نیمهشب روز بعد به
datetime.datetime.fromisoformat()وdatetime.time.fromisoformat(). وصله توسط Izan "TizzySaurus" Robinson (tizzysaurus@gmail.com)gh-103956: رفع مشکل کمبود نویسههای سرخط در خروجی ماژول
traceهنگامی که ردیابی سطر فعال است اما سطر کد منبع برای قاب فعلی در دسترس نیست.gh-92081: رفع فضاهای خالی گمشده در سرآیندهای ایمیل هنگامی که فضاهای خالی با نویسههای ۸ بیتی کدگذاریشده ترکیب شدهاند.
gh-103194: آمادهسازی Tkinter برای تغییرات API زبان C در Tcl 8.7/9.0 بهمنظور جلوگیری از بازگردانده شدن غیرمنتظرهی
_tkinter.Tcl_Objبهجایbool،str،bytearrayیاint.gh-87106: اصلاح نحوهی پردازش آرگومانهای کلیدواژهای که دارای نامی یکسان با آرگومانهای صرفاً جایگاهی هستند در
inspect.Signature.bind()، هنگامی که یک آرگومان کلیدواژهای چندآرگومانی (مانند**kwargs) حضور دارد.gh-103134: افزودن متدهای اضافی به اشیای پروکسی در ماژول
multiprocessing:متدهای
clear()وcopy()برای پروکسیهایlistعبارات
fromkeys()،reversed(d)،d | {}،{} | d،d |= {'b': 2}برای پروکسیهایdict
bpo-45767: رفع تبدیل عدد صحیح در
os.major()،os.minor()وos.makedev(). پشتیبانی از شمارههای دستگاه بزرگتر از2**63-1. پشتیبانی از شمارهی دستگاه ناموجود (NODEV).bpo-44864: عدم ترجمهی رشتههای ارائهشده توسط کاربر در
argparse.ArgumentParser.bpo-41843: سیستمعامل Solaris اکنون از سیستکال کپی سریع
os.sendfile()برای توابع مرتبط با کپی پروندهی کارآمدتر درshutilاستفاده میکند.bpo-15987: پیادهسازی
ast.compare()برای مقایسهی دو AST. وصلهای از Batuhan Taskaya با کمکی از Jeremy Hylton.gh-67693: رفع مشکل
urllib.parse.urlunparse()وurllib.parse.urlunsplit()برای URIهایی که مسیر آنها با چندین اسلش آغاز میشود و فاقد مرجع (authority) هستند. بر اساس وصلهای از Ashwin Ramaswami.bpo-14074: رفع پردازش متاوبار
argparseبرای اجازه دادن به آرگومانهای جایگاهی تا یک متاوبار چندتایی (tuple) داشته باشند.
IDLE¶
gh-122392: افزایش فاصلهگذاری عمودی نامناسب فعلی برای مرورگرهای IDLE (مسیر، ماژول و پشته) در نمایشگرهایی با وضوح بالا.
gh-112938: رفع قفلشدگی (hang) غیرقابلوقفهای که وقتی پوسته (Shell) خروجی مداوم و سریعی دریافت میکند، رخ میدهد.
gh-122482: تغییر گزینهی «دربارهی IDLE» برای هدایت کاربران به discuss.python.org بهجای ایمیل و فهرست ایمیل idle-dev که دیگر استفاده نمیشوند.
gh-78889: جلوگیری از فریز شدن پوسته (Shell) با مسدود کردن دسترسی کاربر به ویژگیهای غیرمتد
sys.stdout.shellکه همگی خصوصی هستند.gh-120083: افزودن رنگ پیشزمینهی صریح مشکی برای راهنمای شناور (Hovertip) در IDLE که برای نسخههای اخیر macOS مورد نیاز است. رفع مشکل نمایش متن سفید خوانا روی پسزمینهی زرد کمرنگ در Sonoma. وصلهای از John Riggles.
gh-120104: رفع فاصلهگذاری داخلی (padding) در پنجرههای محاورهای پیکربندی و جستوجو در IDLE.
مستندات¶
gh-124872: تعاریفی برای زمینه، زمینهی جاری و پروتکل مدیریت زمینه اضافه شد، تعاریف مرتبط بهروزرسانی شدند تا سازگار باشند و مستندات
contextvars.Contextگسترش یافتند.gh-125018: مستندات
importlib.metadataاکنون شامل مقصدهای ارجاع متقابل معنایی برای APIهای مستندشدهی مهم است. این یعنی ارجاعهای Intersphinx مانندimportlib.metadata.version()اکنون طبق انتظار کار خواهند کرد.gh-124720: بهروزرسانی بخش «استفاده از پایتون روی مک» از سند «راهاندازی و استفاده از پایتون» و گنجاندن اطلاعاتی دربارهی نصب پشتیبانی از نخکشی آزاد (free-threading).
gh-124457: اسکن Coverity از مخزن سیپایتون حذف شد. این ابزار از سال ۲۰۲۰ استفاده نشده است و در حال حاضر نگهداری نمیشود.
gh-116622: یک راهنمای پلتفرم اندروید اضافه شد و ماژولهایی که روی اندروید در دسترس نیستند، علامتگذاری شدند.
gh-123976: بازسازی مستندات پیرامون ارائهدهندگان سفارشی.
gh-70870: کاربرد دوگانهی اصطلاح «متغیر آزاد» (free variable) شفافسازی شد (هم معنای رسمی هرگونه ارجاع به نامهای تعریفشده در خارج از محدودهی محلی، و هم معنای کاربردی محدودتر متغیرهای غیرمحلی نامگذاریشده در
co_freevars).gh-121277: نویسندگان مستندات سیپایتون اکنون میتوانند از
nextبه عنوان نسخه برای دایرکتیوهایversionchanged،versionaddedوdeprecatedاستفاده کنند.gh-117765: بهبود مستندات برای
unittest.mock.patch.dict()gh-121749: رفع مستندات برای
PyModule_AddObjectRef().gh-120012: روشنسازی رفتارهای متدهای
multiprocessing.Queue.empty()وmultiprocessing.SimpleQueue.empty()روی صفهای بسته. اصلاحیه از Bénédikt Tran.gh-119574: افزودن برخی متغیرهای محیطی گمشده به خروجی
--help-env.bpo-34008: مستندات تابع
Py_Main()از بخش «Very High Level API» به بخش «Initialization and Finalization» منتقل شد.همچنین صراحتاً اعلام کنید که انتظار داریم
Py_Mainبه جای فراخوانی بعد ازPy_Initialize، معمولاً به جای آن فراخوانی شود (از آنجا کهPy_Mainفراخوانی خود را بهPy_Initializeانجام میدهد). مستند کنید که فراخوانی هر دو پشتیبانی میشود، اما به نسخه بستگی دارد که کدام تنظیمات به درستی اعمال خواهند شد.
هسته و توکارها (Core and Builtins)¶
gh-124375: رفع یک فروپاشی در ساخت نخبندی آزاد هنگامی که GC به صورت همگام با شروع یک نخ جدید اجرا میشود.
gh-125221: رفع شرایط رقابت احتمالی هنگام فراخوانی متد
__reduce_ex__()برای اولین بار در ساخت نخبندی آزاد.gh-125174: مقاومسازی مدیریت شمارههای ارجاع اشیای نامیرا. اشیای نامیرایی که شمارهی ارجاع آنها تا یک میلیارد (نیم میلیارد در ساختهای ۳۲ بیتی) با شمارهی ارجاع اصلیشان اختلاف دارد، همچنان به عنوان نامیرا شمرده میشوند.
gh-125039: const کردن
this_instrوprev_instrدر تولیدگر حالات (cases generator).
کتابخانه¶
gh-125008: رفع مشکل تابع
tokenize.untokenize()که برای آکولادهای دوتایی که پیش از آنها کاراکترهای گریز خاصی آمده است، سینتکس نامعتبر تولید میکند.
هسته و توکارها (Core and Builtins)¶
gh-124871: رفع باگ کامپایلر (در برخی نسخههای ۳.۱۳) که در آن یک ادعا (assertion) در طول تحلیل دسترسیپذیری شکست میخورد.
gh-123378: رفع فروپاشی در متد
__str__()از اشیایUnicodeErrorهنگامی که مقادیرUnicodeError.startوUnicodeError.endنامعتبر یا خارج از محدوده هستند. اصلاحیه از Bénédikt Tran.gh-118093: بهبود توانایی کامپایلر آزمایشی JIT برای ماندن «در مسیر» (on trace) هنگام برخورد با شاخههای بسیار جهتدار.
gh-124642: رفع مسئله مقیاسپذیری در ساختهای نخآزاد برای خواندنهای بدون قفل از دیکشنریها در سناریوهای چندنخی
gh-116510: رفع فروپاشی ناشی از به اشتراک گذاشته شدن رشتههای درونیسازیشدهی نامیرا بین مفسرهای فرعی که از مقداردهی اولیه تکفاز پایه استفاده میکنند. در این حالت، رشته میتواند توسط مفسری استفاده شود که عمر طولانیتری نسبت به مفسر ایجادکننده و درونیسازیکنندهی آن دارد. برای مفسرهایی که وضعیت obmalloc را به اشتراک میگذارند، دیکشنری درونیسازیشده را نیز با مفسر اصلی به اشتراک بگذارید.
gh-116510: رفع باگی که میتواند باعث فروپاشی شود وقتی مفسرهای فرعی از ماژولهای توسعهای تکفاز «پایه» استفاده میکنند. اشیای مشترک ممکن است به گرههای PyGC_Head اشاره کنند که به عنوان بخشی از پاکسازی مفسر آزاد شدهاند.
gh-119180: ماژول
__main__دیگر همیشه یک دیکشنری__annotations__را در فضای نام سراسری خود ندارد.gh-124547: هنگام تخصیصزدایی یک شیء دارای مقادیر درونخطی که
__dict__آن هنوز فعال است: اگر تخصیص حافظه برای مقادیر درونخطی شکست بخورد، دیکشنری را پاک کنید. این کار از فروپاشی مفسر جلوگیری میکند.gh-124513: رفع فروپاشی در سازندهی FrameLocalsProxy: بررسی تعداد آرگومانها. اصلاحیه از Victor Stinner.
gh-124442: رفع قطعینبودن (nondeterminism) در کامپایل با مرتبسازی مقدار
__static_attributes__. اصلاحیه از kp2pml30.gh-124285: رفع باگی که در آن
bool(a)میتواند بیش از یک بار در طول ارزیابی یک عبارت بولی مرکب فراخوانی شود.gh-123856: رفع خطای PyREPL هنگامی که یک وقفهی صفحهکلید (KeyboardInterrupt) پس از استفاده از جستجوی تاریخچه فعال میشود.
gh-65961: منسوخ کردن تنظیم و استفاده از
__package__و__cached__.gh-119726: کامپایلر درجا (JIT) اکنون کد کارآمدتری برای فراخوانی تابعهای C تولید میکند که منجر به کاهش حافظه تا ۰.۸ درصد و بهبود سرعت ۱.۵ درصدی روی AArch64 میشود. وصله توسط Diego Russo.
gh-122878: در صورت موجود بودن (مثلاً روی دبیان و مشتقات آن)، از برنامهی دودویی
pagerبرای نمایشhelp()در REPL استفاده کنید.gh-124188: رفع مشکل خواندن و کدگشایی یک سطر از پروندهی منبع با کدگذاری غیر UTF-8 برای خطاهای نِحوی (syntax errors) ایجاد شده در کامپایلر.
gh-124027: پشتیبانی از کلیدهای
<page up>،<page down>و<delete>در REPL پایتون هنگامی که$TERMرویvt100تنظیم شده است.gh-124022: رفع باگی که در آن رشتهمستند (docstring) از کلاسها در حالت تعاملی (interactive mode) حذف میشود.
gh-123958: رشتهمستندها اکنون از درخت نحوی انتزاعی (AST) بهینهشده در سطح بهینهسازی ۲ حذف میشوند.
gh-123923: فیلد
f_executableدر ساختار داخلی_PyInterpreterFrameاکنون از یک اشارهگر برچسبگذاریشده استفاده میکند. پروفایلگیرها و رفعخطاهایی که از این فیلد استفاده میکنند باید کمارزشترین بیت را پاک کنند تا اشارهگر PyObject* بازیابی شود.gh-77894: رفع فروپاشی احتمالی در زبالهروب (garbage collector) هنگامی که سعی میکند یک حلقهی ارجاع حاوی یک شیء
memoryviewرا بشکند. اکنون یک شیءmemoryviewتنها در صورتی میتواند پاکسازی شود که هیچ بافری به آن ارجاع ندهد.gh-120221: وقفههای صفحهکلید (KeyboardInterrupts) در REPL کتابخانهی asyncio اکنون دوباره به درستی تشخیص داده میشوند. نمایش استثناهای رخداده در نخهای ثانویه رفع شده است.
gh-119310: به پوستهی تعاملی جدید اجازه دهید پروندههای تاریخچهی نوشتهشده با کتابخانهی editline را که از ورودیهای یونیکدِ فراریافته (unicode-escaped) استفاده میکنند، بخواند. وصله توسط aorcajo و Łukasz Langa.
gh-123572: رفع نگاشتهای کلید برای کلیدهای مختلف F در ویندوز برای REPL جدید. وصله توسط devdanzin
کتابخانه¶
gh-123614: افزودن
turtle.save()برای ذخیرهسازی آسان نقاشیهای لاکپشت (turtle) به صورت پروندههای PostScript. وصله توسط Marie Roald و Yngve Mardal Moe.
هسته و توکارها (Core and Builtins)¶
gh-123339: تنظیم ویژگی
__module__برای یک کلاس اکنون آیتم__firstlineno__را از دیکشنری نوع (type's dict) حذف میکند، بنابراین آنها دیگر ناسازگار نخواهند بود.gh-119034: تغییر کلیدهای
<page up>و<page down>در REPL پایتون برای جستجوی تاریخچه به جلو/عقب. وصله توسط Victor Stinner.gh-123562: بهبود پیام
SyntaxErrorبرای استفاده ازcase ... as ...با چیزی غیر از یک نام.gh-123545: رفع کاهش دوبرابری شمارش ارجاع (double decref) در موارد نادر روی نسخههای ساخت تجربی JIT.
gh-123484: رفع مشکل
_Py_DebugOffsetsبرای اشیاء طولانی به طوری که نسبت به شروع شیء باشد تا شروع یک زیرشیء.gh-123446: رفع نام تابع خالی در
TypeErrorهنگامی که متدهای جادویی توکار بدون آرگومانهای لازم استفاده میشوند.gh-123440: بهبود پیام
SyntaxErrorبرای استفاده ازexcept asبا چیزی غیر از یک نام.gh-116017: بهبود مصرف حافظهی کامپایلر درجا (JIT) با آزادسازی دورهای حافظهی استفادهشده توسط کدهایی که کمتر اجرا میشوند. این تغییر بهویژه برای بهبود ردپای حافظهی برنامههای طولانیمدت مؤثر است.
gh-123344: افزودن بهینهسازیهای درخت نحوی انتزاعی (AST) برای پیشفرضهای پارامتر نوع.
gh-123321: جلوگیری از خطای شرایط رقابت (race condition) در Parser/myreadline که منجر به خطای تقسیم حافظه (segfault) در استفادهی چندنخی میشود. وصله توسط Bar Harel و Amit Wienner.
gh-123177: رفع باگی که باعث میشد اعلانهای سرگردان در میان سطرهای شکسته شده در REPL جدید ظاهر شوند.
gh-122982: تمدید دورهی منسوخسازی وارونسازی بولی (
~) به مدت دو سال.gh-123271: ایمنسازی پیمایشهای همزمان روی یک پیمایشگر
zip()تحت معماری بدون قفل سراسری (free-threading).gh-123275: پشتیبانی از
-X gil=1وPYTHON_GIL=1در نسخههای غیر نخآزاد (non-free-threaded).gh-123177: غیرفعالسازی شکستن سطر در ترمینال اپل از طریق کد گریز ANSI. وصله توسط Pablo Galindo
gh-123229: رفع هشدار valgrind با مقداردهی اولیهی بافرهای افاسترینگ به صفر در توکنساز. وصله توسط Pablo Galindo
gh-122298: بازیابی چاپ آمار زبالهروب (GC) هنگام فراخوانی تابع
gc.set_debug(gc.DEBUG_STATS). این ویژگی هنگام پیادهسازی زبالهروب افزایشی به طور تصادفی حذف شده بود.gh-121804: نمایش صحیح موقعیتهای خطا هنگامی که یک
SyntaxErrorدر REPL پایهای رخ میدهد. وصله توسط Sergey B Kirpichev.gh-115776: فعالسازی مقادیر درونخطی (معادل پایتونی کلاسهای پنهان) روی هر کلاسی که نمونههای آن دارای اندازهی ثابتی هستند.
gh-123142: رفع موقعیت منبع بیشازحد پهن در ردگیریهای (tracebacks) استثنا که از پیمایشپذیرهای معیوب در درک لیستها (comprehensions) ناشی میشوند.
gh-123048: رفع باگی که در آن کد تطبیق الگو میتوانست یک
JUMP_FORWARDبدون موقعیت منبع صادر کند.gh-118093: شکستن
CALL_ALLOC_AND_ENTER_INITبه ریزعملیاتها و سادهسازی نیازمندی برای آرگومانهای دقیق، به منظور افزایش میزان کد پشتیبانیشده توسط لایهی ۲.gh-123123: رفع نمایش استثناهای
SyntaxErrorکه چندین سطر را پوشش میدهند. وصله توسط Pablo Galindogh-123083: رفع یک مشکل احتمالی استفاده پس از آزادسازی (use-after-free) در
STORE_ATTR_WITH_HINT.gh-123022: رفع خرابی در ساختار نخآزاد هنگام فراخوانی
Py_Initialize()از یک نخ غیر اصلی.gh-118093: افزودن سه تخصصیسازی برای
CALL_KW:CALL_KW_PYبرای فراخوانیهای توابع پایتونCALL_KW_BOUND_METHODبرای فراخوانیهای متدهای کرانشدهCALL_KW_NON_PYبرای تمام فراخوانیهای دیگر
gh-122821: مطمئن شوید که شاخهها در دستورهای
whileدارای آفستهای همسانی برایsys.monitoringهستند. دستورهایwhileاکنون با یک پرش ساده در انتهای بدنه کامپایل میشوند، به جای اینکه آزمون تکرار شود.gh-122907: ساخت با
HAVE_DYNAMIC_LOADINGاکنون به همان خوبی نسخه ۳.۱۲ کار میکند. نواقص موجود بهطور جداگانه بررسی خواهند شد. (به https://github.com/python/cpython/issues/122950 مراجعه کنید.)gh-122888: رفع فروپاشی در برخی فراخوانیها به
str()با آرگومانهای جایگاهی از نوع نادرست. وصله توسط Jelle Zijlstra.gh-118093: بهبود نحوهی مدیریت کد چندریختی (polymorphic) در کامپایلر درجای (JIT) آزمایشی.
gh-122697: رفع نشت حافظه هنگام خاموش شدن مفسر در ساخت نخآزاد (free-threaded)، و همچنین گزارشدهی بلوکهای حافظهی نشتکرده از طریق
-X showrefcount.gh-116622: رفع مشکل قطع شدن یا از دست رفتن پیامهای stdout و stderr در اندروید.
gh-122527: رفع یک فروپاشی که هنگام تخصیصزدایی یک
PyStructSequenceپس از پاک شدن دیکشنری نوع آن توسط زبالهروب (GC) رخ میداد. عضوtp_basicsizeاز این پس فیلدهای غیردنبالهای که درPy_SIZEدنباله گنجانده نشدهاند را در نظر میگیرد.gh-122445: فقط فیلدهایی که از طریق self.* تغییر یافتهاند را به
__static_attributes__اضافه کنید.gh-122417: در ساخت نخآزاد (free-threaded)، شمارههای ارجاع برای اشیاء نوع هیپ (heap type) اکنون بهصورت توزیعشده در آرایههای مختص هر نخ ذخیره میشوند. این کار رقابت بر سر فیلدهای شمارهی ارجاع نوع هیپ را هنگام ایجاد یا نابود کردن همزمان نمونههای یک نوع از چندین نخ کاهش میدهد.
gh-116090: رفع مشکلی در ساختهای JIT که مانع از فعال شدن صحیح رویدادهای نظارتی
RAISEتوسط برخی حلقههایforمیشد.gh-122300: حفظ گرههای AST برای افاسترینگها با مشخصکنندههای قالب تکعنصری. وصله توسط Pablo Galindo
gh-120906: ویژگی
frame.f_localsاکنون از اشیاء هشپذیر دلخواه به عنوان کلید پشتیبانی میکند.gh-122239: هنگامی که یک
list،tupleیاdictبا عناصر بیش از حد باز میشود، طول واقعی را در پیام خطا نشان دهید.gh-122245: تشخیص نوشتن روی
__debug__از مرحلهی تولید کد (codegen) کامپایلر به جدول نمادها (symtable) منتقل شد. این یعنی این خطاها اکنون حتی در کدهایی که قبل از تولید کد بهینهسازی و حذف میشوند (مانند ادعاها با گزینهی خط فرمان-O) نیز تشخیص داده میشوند.gh-122234: تخصصیسازیهای مربوط به جمع با ورودیهای اعشاری و مختلط در
sum()اکنون همیشه از جمع جبرانی (compensated summation) استفاده میکنند. همچنین، برای آیتمهای عدد صحیح در تخصصیسازیهای فوق: به جایPyLong_AsLongAndOverflow()ازPyLong_AsDouble()استفاده میشود. وصله توسط Sergey B Kirpichev.gh-122208: ناظران دیکشنری (Dictionary watchers) اکنون رویداد PyDict_EVENT_ADDED را فقط زمانی ارسال میکنند که درج در یک وضعیت معتبر و شناختهشده برای موفقیت باشد.
gh-122160: حذف آپکد
BUILD_CONST_KEY_MAP. به جای آن ازBUILD_MAPاستفاده کنید.gh-122029: انتشار رویدادهای
c_callدرsys.setprofile()هنگامی که یک شیءPyMethodObjectاشارهکننده به یکPyCFunctionفراخوانی میشود.gh-122026: رفع باگی که باعث میشد توکنساز در برخی شرایط نتواند پرانتزهای ناسازگار را درون افاسترینگها بهدرستی شناسایی کند. وصله توسط Pablo Galindo
gh-99108: کتابخانهی hashlib پایتون اکنون بهطور بیقیدوشراط از کتابخانهی تعبیهشدهی HACL* برای Blake2 استفاده میکند. پایتون دیگر libb2 را به عنوان وابستگی اختیاری برای Blake2 نمیپذیرد.
ما HACL* را به آخرین نسخه بهروزرسانی کردیم و اکنون پیادهسازیهای برداری پهن ۱۲۸ بیتی و ۲۵۶ بیتی HACL* را برای Blake2 درون پایتون قرار میدهیم که روی زنجیرهابزارهای x86/x64 زمانی که ویژگیهای لازم پردازنده در زمان اجرا در دسترس باشند، استفاده میشوند.
پیادهسازی برداری پهن ۱۲۸ بیتی HACL* از Blake2 همچنین میتواند روی ARM NEON و Power8 اجرا شود، اما به دلیل عدم وجود شواهدی از بهبود کارایی، این موارد (هنوز) فعال نشدهاند.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
gh-121860: رفع فروپاشی هنگام بازسازی یک دیکشنری مدیریتشده پس از حذف آن.
gh-121795: بهبود کارایی تست عضویت مجموعه، متدهای
set.remove()وset.discard()زمانی که آرگومان یک مجموعه است.gh-121814: رفع خطای SegFault هنگامی که
PyEval_SetTrace()بدون هیچ قاب پایتون روی پشته استفاده میشود.gh-121295: رفع ورود کنسول PyREPL به وضعیت مسدود پس از متوقف کردن یک الصاق طولانی
gh-121794: رفع باگ در پایتون با رشتهسازی آزاد (free-threaded) که در آن یک شیء احیاشده میتوانست به شکست شرط شمارش ارجاع منفی منجر شود.
gh-121657: بهبود پیام
SyntaxErrorدر صورتی که کاربر سعی کند ازyield fromخارج از یک تابع استفاده کند.gh-121609: رفع مشکل الصاق نویسههای حاوی پیونددهندههای نویسهی یونیکد در پوسته تعاملی پایتون (REPL) جدید. وصله توسط Marta Gomez Macias
gh-121297: پیشتر، استفادهی نادرست از
awaitیا درکهای ناهمگام در کدهایی که توسط گزینهی-Oحذف میشدند، توسط کامپایلر پایتون علامتگذاری نمیشد. اکنون، چنین کدهایی خطایSyntaxErrorرا ایجاد میکنند. وصله توسط Jelle Zijlstra.gh-117482: در زیرمترجمها، دیگر دربرگیرندههای جایگاه (slot wrappers) غیرمنتظره برای انواع ایستای توکار ایجاد نمیشوند.
gh-121562: بهینهسازی کارایی hex_from_char با جایگزینی دستور switch-case با یک جدول جستجو
gh-121499: رفع باگی که روی نحوهی رندر شدن تاریخچهی چندسطری در پوسته تعاملی پایتون (REPL) جدید پس از تعامل با نهانگاه صفحهی جدید تأثیر میگذاشت. وصله توسط Pablo Galindo
gh-121497: رفع باگی که مانع از رعایت درست تاریخچه توسط REPL هنگام تنظیم قلاب ورودی میشد. وصله توسط Pablo Galindo
gh-121012: اجرای لایهی ۲ (Tier 2 execution) اکنون تضمین میکند که پیمایشگرهای فهرست، پس از فرسوده شدن، فرسوده باقی بمانند.
gh-121439: اجازه دادن به تاپلهای با طول ۲۰ در فهرست آزاد (freelist) برای استفادهی مجدد.
gh-121288: پیامهای
ValueErrorبرای متدهایlist.index()،range.index()،deque.index()،deque.remove()وShareableList.index()دیگر حاوی repr مقدار جستوجوشده (که میتواند به طور دلخواهی بزرگ باشد) نیستند و با پیامهای خطا برای سایر متدهایindex()وremove()سازگار هستند.gh-121368: رفع مشکل شرایط مسابقه (race condition) در تابع
_PyType_Lookupدر ساخت نخآزاد (free-threaded build) به دلیل فقدان مانع حافظه. این امر میتواند منجر به بازگرداندن نتایج نادرست توسط_PyType_Lookupروی تراشههای arm64 شود.gh-121149: افزوده شدن تخصیصسازی برای جمع اعداد مختلط، این تغییر همچنین دقت تابع توکار
sum()را برای اینگونه ورودیها بهبود میبخشد. وصلهای از Sergey B Kirpichev.gh-121130: رفع مشکل افاسترینگها با عبارتهای اشکالزدایی در مشخصکنندههای قالب. وصله توسط Pablo Galindo
کتابخانه¶
gh-121381: حذف کد و مستندات مربوط به گریزگاه
subprocess._USE_VFORK(escape hatch). این مورد فقط برای احتیاط اضافه شده بود و هیچ مورد شناختهشدهای که به آن نیاز داشته باشد وجود ندارد.
هسته و توکارها (Core and Builtins)¶
gh-119726: بهینهسازی چیدمان کد برای فراخوانیهای توابع C از کامپایلر درجا (JIT) روی AArch64. وصله توسط Diego Russo.
gh-121115: متد
PyLong_AsNativeBytes()دیگر به طور پیشفرض از متدهای__index__()استفاده نمیکند. پرچمPy_ASNATIVEBYTES_ALLOW_INDEXبرای اجازه دادن به این امر اضافه شده است.gh-120838: توابع
Py_Finalize()وPy_FinalizeEx()اکنون همیشه با مفسر اصلی فعال اجرا میشوند.gh-113433: زیرمفسرها اکنون در طول نهاییسازی رانتایم به صورت خودکار پاکسازی میشوند.
gh-119726: بهبود سرعت و استفاده از حافظه در فراخوانیهای توابع C از کد کامپایلر درجا (JIT) روی AArch64. وصله توسط Diego Russo
gh-116017: سادهسازی مکانیزم گرم کردن (warmup) مورد استفاده برای «خروجهای جانبی» (side exits) در کد کامپایلر درجا (JIT)، که منجر به کارایی کمی بهتر و مصرف حافظه کمی کمتر برای بیشتر پلتفرمها میشود.
gh-98442: رفع موقعیتهای منبع بیش از حد پهن برای دستورات پاکسازی یک دستور with.
gh-120754: کاهش تعداد فراخوانیهای سیستمی هنگام خواندن یک پرونده کامل (به عنوان مثال
open('a.txt').read()). برای یک برنامهی نمونه که محتویات بیش از ۴۰۰ پرونده.rstرا در پوشهیDocمخزن cpython میخواند، بیش از ۱۰ درصد کاهش در تعداد فراخوانیهای سیستمی مشاهده میشود.gh-119462: اطمینان از حفظ ناورداهای (invariants) نسخهسازی نوع: * کلاسهای پایه همیشه شماره نسخهی خود را پیش از کلاسهای مشتقشده اختصاص میدهند * برچسب نسخه همیشه در صورت نامعتبر بودن برچسب، صفر است. * برچسب نسخه همیشه در صورت معتبر بودن برچسب، غیرصفر است.
gh-120437: رفع مشکلات بهینهسازی
_CHECK_STACK_SPACEکه در gh-118322 معرفی شده بودند.gh-120722: تنظیم درست موقعیت بایتکد روی دستورات بازگشت درون توابع لامبدا. وصله توسط Jelle Zijlstra.
gh-120367: رفع باگی که در آن کامپایلر یک پرش اضافی (redundant jump) در طول جایگزینی شبهدستور ایجاد میکند. این مشکل فقط میتواند با یک درخت نحوی انتزاعی (AST) مصنوعی رخ دهد که دارای یک بلوک try در همان سطرِ دستورِ پس از هندلر استثنا است.
gh-120507: حذف دستورات
BEFORE_WITHوBEFORE_ASYNC_WITH. افزودن دستور جدیدLOAD_SPECIAL. تولید کد برای دستوراتwithوasync withبا استفاده از دستور جدید.gh-113993: رشتههای درونیسازیشده با تابع
sys.intern()همانطور که در مستندات آمده است، هنگامی که دیگر استفاده نمیشوند، بار دیگر زبالهروبی میشوند. رشتههای درونیسازیشده با تابع C پیشکارPyUnicode_InternInPlace()همچنان نامیرا هستند. بخشهای داخلی مکانیزم درونیسازی رشتهها تغییر کرده است. این امر ممکن است روی کارایی و هویت شیءهایstrتأثیر بگذارد.
کتابخانه¶
gh-120485: افزودن بازنویسی (override) برای
allow_reuse_portدر کلاسهایی که ازsocketserver.TCPServerارثبری میکنند و در آنهاallow_reuse_addressنیز بازنویسی شده است.
هسته و توکارها (Core and Builtins)¶
gh-120384: رفع یک خطای فروپاشی خارج از کران آرایه در
list_ass_subscriptکه میتوانست از طریق برخی ورودیهای خاص ایجاد شود: از جمله تغییر همزمان یک شیء فهرست که در آن یک نخ یک اسلایس را انتساب میدهد و دیگری آن را پاک میکند.gh-120367: رفع فروپاشی در کامپایلر روی کدی با NOPها و JUMPهای اضافی که پس از انتقال هندلرهای استثنا به انتهای کد ظاهر میشوند.
کتابخانه¶
gh-120380: رفع پیادهسازی پایتون برای
pickle.Picklerجهت اشیاءbytesوbytearrayهنگام استفاده از نسخهی ۵ پروتکل. وصله توسط Bénédikt Tran.
هسته و توکارها (Core and Builtins)¶
gh-120397: بهبود توان عملیاتی تا حداکثر دو برابر برای متدهای
str.count()،bytes.count()وbytearray.count()جهت شمارش نویسههای تکی.gh-120221: ارسال سیگنالهای واقعی در Ctrl-C و Ctrl-Z در REPL جدید. وصله توسط Pablo Galindo
gh-120346: احترام به
PYTHON_BASIC_REPLهنگام اجرای در حالت بررسی تعاملی (python -i). وصله توسط Pablo Galindogh-93691: رفع مکانهای منبع دستورالعملهای تولیدشده برای پیمایشگر یک دستور for.
gh-120198: رفع فروپاشی زمانی که چند نخ به طور همزمان میخوانند و روی
__class__یکسانی از یک شیء مینویسند.gh-120298: رفع خطای استفاده پس از آزادسازی در
list_richcompare_implکه میتواند از طریق برخی ورودیهای مخرب و بهطور خاص طراحیشده فراخوانی شود.gh-119666: رفع فروپاشی کامپایلر در مواردی که دو عبارت درک مطلب در محدودهی کلاس هر دو به
__class__ارجاع میدهند.gh-119726: کامپایلر درجا (JIT): استفادهی مجدد از ترامپولینها روی AArch64 هنگام ایجاد استنسیلها. وصله توسط Diego Russo
gh-120225: رفع فروپاشی در کامپایلر روی بلوک خالی در انتهای هندلر استثنا.
gh-93691: رفع مکانهای منبع دستورات تولیدشده برای دستورات with.
gh-120097: کلاس
FrameLocalsProxyاکنون زیرکلاسی ازcollections.abc.Mappingاست و میتواند به عنوان یک نگاشت در دستوراتmatchمطابقت داده شود.gh-120080: فراخوانی مستقیم متد
int.__round__()اکنونNoneرا به عنوان یک آرگومان معتبر میپذیرد.gh-119933: بهبود پیامهای
SyntaxErrorبرای عبارتهای نامعتبر در کران پارامترهای نوع، یک تاپل محدودیت پارامتر نوع یا یک پارامتر نوع پیشفرض. وصله توسط Bénédikt Tran.gh-119724: بازگردانی بهبودهای انجامشده روی پیامهای خطا برای دستورات
elif/elseکه با هیچ دستور معتبری مطابقت ندارند؛ این بهبودها پیدا کردن خطاهای نحوی را درون آن بلوکهایelif/elseدشوار کرده بودند.gh-119879: جستوجوی رشته اکنون برای موارد خاص کمی سریعتر شده است. این قابلیت اکنون از فاصلهی آخرین نویسه (قاعدهی پسوند خوب) برای الگوهای دوطرفهی متناوب استفاده میکند.
gh-119842: تبعیت از
PyOS_InputHook()در REPL جدید. وصله توسط Pablo Galindogh-119180: توابع
classmethod()وstaticmethod()اکنون ویژگیهای__annotations__و__annotate__شیء قابلفراخوانی زیربنایی خود را به صورت تنبل پوشش میدهند. نگاه کنید به PEP 649. وصله توسط Jelle Zijlstra.gh-119821: رفع اجرای حوزههای حاشیهنویسی در کلاسها هنگامی که مقدار
globalsروی چیزی غیر از دیکشنری تنظیم شده باشد. وصله توسط Jelle Zijlstra.gh-118934: باعث میشود
PyEval_GetLocalsیک ارجاع امانتی برگرداندgh-119740: حذف واگذاریِ از قبل منسوخشدهی
int()به__trunc__().gh-119689: تولید متادیتای اثر پشته (stack effect) برای دستورالعملهای شبه (pseudo instructions) از bytecodes.c.
gh-109218: تابع
complex()اکنون رشته را فقط به عنوان آرگومان جایگاهی میپذیرد. ارسال یک عدد مختلط به عنوان آرگومان «real» یا «imag» منسوخ شده است؛ این کار باید تنها به صورت یک آرگومان جایگاهی منفرد انجام شود.gh-119548: افزودن یک دستور
clearبه پوسته تعاملی پایتون (REPL). وصله توسط Pablo Galindogh-111999: اصلاح امضای
str.format_map().gh-119560: یک assert نامعتبر در نسخهی بتا ۱ حذف شد. اگر
PyState_FindModule()پیش از مقداردهی اولیه شدن تعریف ماژول، در تابع مقداردهی اولیهی یک ماژول توسعهای استفاده میشد، این assert با خطا مواجه میشد.gh-119369: رفع بنبست حین حذف نخ در ساخت نخآزاد (free-threaded build)، که میتواند زمانی رخ دهد که GIL در زمان اجرای برنامهها (runtime) فعال باشد.
gh-119525: رفع بنبست مربوط به نهانگاه
_PyType_Lookup()در ساخت نخآزاد (free-threaded build) هنگامی که GIL به شکل پویا در زمان اجرا فعال میشود.gh-119258: حذف نگبانهای نسخهی نوع (type version guards) در مفسر سطح دو.
توجه داشته باشید که تنظیم دستی
tp_version_tag(که هرگز پشتیبانی نشده است) ممکن است منجر به خرابی (crash) شود.gh-119311: رفع باگی که در آن نامها به شکل غیرمنتظرهای در پایههای کلاسهای عام مانگل (mangled) میشدند.
gh-119395: رفع باگی که در آن نامهای ظاهرشونده پس از یک کلاس عام، طوری مانگل میشوند که گویی درون کلاس عام قرار دارند.
gh-119372: اصلاح حالتهای مرزی نامعتبر در تقسیم اعداد مختلط (که منجر به خروجی
(nan+nanj)میشد)، مانند1/complex('(inf+infj)'). وصله توسط Sergey B Kirpichev.gh-119180: ارزیابی حاشیهنویسیها اکنون به تعویق میافتد. برای جزئیات بیشتر به PEP 649 مراجعه کنید.
gh-119180: جایگزینی آپکد
LOAD_ASSERTION_ERRORباLOAD_COMMON_CONSTANTو افزودن پشتیبانی برایNotImplementedError.gh-119213: ماژولهای غیر توکار (Non-builtin) ساختهشده با آرگومان کلینیک (argument clinic)، اگر در یک زیرمفسر پیش از مفسر اصلی استفاده میشدند، دچار خرابی میشدند. اشیایی که با نشت بیدقت بین مفسرها باعث بروز این مشکل میشدند، اصلاح شدهاند.
gh-119011: اصلاح
type.__type_params__برای برگرداندن یک تاپل خالی به جای یک توصیفگر.gh-118692: جلوگیری از ایجاد نمونههای
StopIterationغیرضروری برای پایش.gh-119180: افزودن یک صفت
__annotate__به تابعها، کلاسها و ماژولها به عنوان بخشی از PEP 649. اصلاح از Jelle Zijlstra.gh-119049: رفع مشکل نمایش سطر منبع برای هشدارهای ایجادشده توسط API زبان C در صورتی که ماژول
warningsهنوز وارد (import) نشده باشد.gh-119057: بهبود پیام خطای
ZeroDivisionError. اکنون تمام پیامهای خطا یکپارچه شدهاند: تمام عملیاتهای/،//و%فقط از پیام «division by zero» استفاده میکنند. و عملیات0 ** -1از پیام «zero to a negative power» استفاده میکند.gh-118844: رفع خطاهای ساخت (build) هنگام پیکربندی با هر دو گزینهی
--disable-gilو--enable-experimental-jit.gh-118921: افزودن متد
copy()برایFrameLocalsProxyکه یکdictاز تصویر لحظهای متغیرهای محلی را برمیگرداند.gh-117657: رفع رقابت دادهای روی فیلدی که اشارهگری به نخ اصلی مفسر را ذخیره میکند و در ساختهای نخآزاد رخ میدهد.
gh-118750: اگر نسخهی C ماژول
decimalموجود باشد،int(str)اکنون از آن برای ارائهی یک تبدیل بهطور مجانبی بسیار سریعتر استفاده میکند. با این حال، این مورد فقط زمانی اعمال میشود که رشته شامل بیش از حدود ۲ میلیون رقم باشد.gh-118767: استفاده از
NotImplementedدر یک زمینهی بولی اکنونTypeErrorرا بالا میآورد (raise میکند). مشارکت از Jelle Zijlstra.gh-118561: رفع شرایط رقابت در ساخت نخآزاد که در آن
list.extend()میتواند حافظهی مقداردهینشده را در معرض خوانندگان همزمان قرار دهد.gh-117139: تبدیل پشتهی ارزیابی پایتون برای استفاده از ارجاعات پشتهی داخلی. هدف، پشتیبانی از اشارهگرهای برچسبدار است. در PEP 703، این امر شکلِ شمارش ارجاعِ معوقِ آن را امکانپذیر میسازد. برای هر دو ساخت پیشفرض و نخآزاد، این کار زیرساخت را برای اعداد صحیح جعبهنشده در آینده فراهم میکند.
کتابخانه¶
gh-115801: بالا آوردن
TypeErrorهنگام ارسال یک رشته بهdifflib.unified_diff()وdifflib.context_diff().
هسته و توکارها (Core and Builtins)¶
gh-117558: بهبود پیامهای خطا هنگامی که یک شیء رشته، bytes یا bytearray با طول ۱ مورد انتظار است.
gh-117195: جلوگیری از شکست ادعا (assertion) برای ساختهای اشکالزدایی هنگام فراخوانی
object.__sizeof__(1)gh-116022: بهبود خروجی
__repr__()گرههایAST.gh-114091: تغییر پیام خطا برای await کردن چیزی که نمیتوان آن را await کرد، از «object <type> can't be used in an await expression» به «'<type>' object can't be awaited».
gh-113190:
Py_Finalize()اکنون تمام رشتههای درونیسازیشده را حذف میکند.gh-84978: افزودن متدهای کلاس
float.from_number()وcomplex.from_number().gh-95144: بهبود پیام خطای حاصل از
a in bوقتیbیک ظرف (container) نیست، به طوری که به اصطلاح «container» اشاره کند.bpo-24766: رفع نحوهی پردازش آرگومان
docبه زیرکلاسهایproperty.
رابط C API¶
gh-123961: تبدیل نوع ایستای curses.window که توسط ماکروی
PyCursesWindow_TypeدرInclude/py_curses.hنمای داده شده است، به یک نوع پشتهای. اصلاح از Bénédikt Tran.gh-124502: اضافه کردن تابع
PyUnicode_Equal()به API محدود C: بررسی برابر بودن دو رشته. وصله توسط Victor Stinner.gh-124296: شیء
PyDictObjectدیگر فیلد برچسب نسخهی خصوصیma_version_tagرا بر اساس PEP 699 نگهداری نمیکند. این فیلد در اصل در نسخهی ۳.۶ پایتون (PEP 509) اضافه شد و در نسخهی ۳.۱۲ پایتون منسوخ گردید.gh-124160: رفع خرابی هنگام ایمپورت کردن ماژولهای حاوی وضعیت و مقداردهی اولیهی تکفاز در یک زیرمفسر.
gh-124153: اضافه کردن تابع
PyType_GetBaseByToken()و جایگاهPy_tp_tokenبرای بررسی نوع آسانتر، مرتبط با PEP 489 و PEP 630.gh-124127: در API محدود C نسخهی ۳.۱۴ و جدیدتر، تابع
Py_REFCNT()اکنون به صورت یک فراخوانی تابع کدر برای پنهان کردن جزئیات پیادهسازی پیادهسازی شده است. وصله توسط Victor Stinner.gh-123880: رفع باگی که مانع از ایمپورتهای دایرهای ماژولهای توسعهای میشد که از مقداردهی اولیهی تکفاز استفاده میکنند.
gh-123909: توابع
PyType_FromSpec()،PyType_FromSpecWithBases()وPyType_FromModuleAndSpec()اکنون اگر فراکلاس نوع جدید دارایtp_newسفارشی باشد، با خطا مواجه خواهند شد.gh-107954: اضافه کردن توابعی برای پیکربندی مقداردهی اولیهی پایتون (PEP 741):
توسط Victor Stinner وصل شد.
gh-107954: افزودن توابع برای دریافت و تنظیم پیکربندی فعلی رانتایم پایتون:
توسط Victor Stinner وصل شد.
gh-123465: حالا
Py_RELATIVE_OFFSETدرPyMemberDefبرای عضو آفست خاص"__vectorcalloffset__"و همچنین اعضای آفست خاصی که استفاده از آنها توصیه نمیشود یعنی"__dictoffset__"و"__weaklistoffset__"مجاز استgh-100554: افزودن یک جایگاه
Py_tp_vectorcallبرای تنظیمtp_vectorcallاز طریق خانوادهی توابعPyType_FromSpec(). افزودنیهای API محدود میتوانند از این ویژگی برای ارائهی پیادهسازی کارآمدتری مبتنی بر فراخوانی برداری برای__new__و__init__استفاده کنند.gh-122854: افزودن
Py_HashBuffer()برای محاسبه و برگرداندن مقدار هش یک بافر. پچ توسط Antoine Pitrou و Victor Stinner.gh-122728: رفع
PyEval_GetLocals()برای جلوگیری ازSystemError(«آرگومان نامعتبر برای تابع داخلی»). پچ توسط Victor Stinner.gh-116622: اصلاح
PyObject_Printبرای رفع باگی در اندروید و OpenBSD که مانع از پرتاب استثنا هنگام تلاش برای نوشتن روی یک جریان فقطخواندنی میشد.gh-105201: افزودن
PyIter_NextItem()برای جایگزینیPyIter_Next()که دارای مقدار بازگشتی مبهمی است. پچ توسط Irit Katriel و Erlend Aasland.gh-121489: اکسپورت مجدد تابع خصوصی
_PyBytes_Join().gh-121645: افزودن تابع
PyBytes_Join(sep, iterable)، مشابهsep.join(iterable)در پایتون. پچ توسط Victor Stinner.gh-89364: اکسپورت کردن تابع
PySignal_SetWakeupFd(). پیشتر این تابع مستند شده بود اما نمیشد از آن در کد شخص ثالث استفاده کرد. پچ توسط Victor Stinner.gh-113993: تابع
PyUnicode_InternInPlace()دیگر مانع جمعآوری زباله از آرگومان خود نمیشود.چندین تابع که
char *میپذیرند، اکنون به عنوان توابعی مستند شدهاند که ممکن است مانع از جمعآوری زبالهی اشیاء رشتهای شوند؛ برای جزئیات به مستندات آنها مراجعه کنید:PyUnicode_InternFromString()،PyDict_SetItemString()،PyObject_SetAttrString()،PyObject_DelAttrString()،PyUnicode_InternFromString()و توابع کمکیPyModule_Add*.gh-113601: حذف ادعاهای ساخت دیباگ مرتبط با درونیسازی رشتهها، که به اشتباه توسط افزونههای ABI پایدار فعال میشدند.
gh-112136: بازیابی ساختار خصوصی
_PyArg_Parserو تابع خصوصی_PyArg_ParseTupleAndKeywordsFast()که پیشتر در نسخهی ۳.۱۳ آلفا ۱ حذف شده بودند. پچ توسط Victor Stinner.gh-120642: نوع خصوصی
_Py_CODEUNITاز API عمومی C حذف شد. سرآیند داخلیpycore_code.hاکنون باید برای دسترسی به این نوع داخلی استفاده شود. وصله توسط Victor Stinner.gh-120858: تابع
PyDict_Next()دیگر دیکشنری را در ساخت نخآزاد قفل نمیکند. قفلگذاری باید توسط فراخواننده در اطراف کل حلقهی پیمایش انجام شود.gh-120642: توابع ناپایدار زیر حذف شدند:
PyUnstable_Replace_Executor()PyUnstable_SetOptimizer()PyUnstable_GetOptimizer()PyUnstable_GetExecutor()PyUnstable_Optimizer_NewCounter()PyUnstable_Optimizer_NewUOpOptimizer()
توسط Victor Stinner وصل شد.
gh-120389: افزودن توابع جدید برای تبدیل اعداد
<stdint.h>زبان C از/بهintپایتون:توسط Victor Stinner وصل شد.
gh-120600: در API محدود C نسخهی 3.14 و جدیدتر، تابع
Py_TYPE()اکنون به عنوان یک فراخوان تابع کدر برای پنهان کردن جزئیات پیادهسازی پیادهسازی شده است. وصله توسط Victor Stinner.gh-70278: تابع
PyUnicode_FromFormat()دیگر نویسهی پایانی\ufffdرا برای رشتهی C قطعشده هنگام استفاده از دقت با%sو%Vتولید نمیکند. این تابع اکنون رشته را پیش از شروع دنبالههای چندبایتی قطعشده، برش میدهد.gh-119771: مقداردهی
errnoدر_Py_c_pow()هنگام سرریز. ارسال وصله توسط Sergey B Kirpichev.gh-119182: افزودن یک API جدید به نام
PyUnicodeWriterبرای ایجاد یکstrدر پایتون:توسط Victor Stinner وصل شد.
gh-119613: منسوخسازی ملایم کلاندستور
Py_MEMCPY: به جای آن مستقیماً ازmemcpy()استفاده کنید. ارسال وصله توسط Victor Stinner.gh-119775: ایجاد
انواع تغییرناپذیربا پایههای تغییرپذیر از نسخهی ۳.۱۲ منسوخ شده بود و اکنون یکTypeErrorبالا میآورد.gh-119585: رفع خرابی هنگامی که یک وضعیت نخ که توسط
PyGILState_Ensure()ایجاد شده است، یک مخرب را در طولPyThreadState_Clear()فراخوانی میکند که مجدداً بهPyGILState_Ensure()وPyGILState_Release()بازمیگردد. این امر ممکن است در نسخهی با نخهای آزاد (free-threaded) یا هنگام استفاده از متغیرهای نخمحلی که مخربهایشانPyGILState_Ensure()را فراخوانی میکنند، رخ دهد.gh-119613: کلاندستورهای
Py_IS_NAN،Py_IS_INFINITYوPy_IS_FINITEمنسوخسازی ملایم شدهاند.gh-119336: بازیابی تابع حذفشدهی
_PyLong_NumBits(). این تابع توسط پروژهی pywin32 استفاده میشود. ارسال وصله توسط Ethan Smithgh-119344: رابط برنامهنویسی کاربردی (API) بخش بحرانی اکنون به عنوان بخشی از API غیرمحدود C عمومی شده است.
gh-119333: افزودن رابطهای برنامهنویسی
PyContext_AddWatcher()وPyContext_ClearWatcher()برای ثبت کردن فراخوانیهای بازگشتی جهت دریافت اعلان در هنگام ورود و خروج از اشیای زمینه.gh-119247: افزودن کلاندستورهای
Py_BEGIN_CRITICAL_SECTION_SEQUENCE_FASTوPy_END_CRITICAL_SECTION_SEQUENCE_FASTبرای امکان استفادهی ایمن از رابطهای برنامهنویسی PySequence_Fast در حالت نخآزاد، و بهروزرسانی str.join برای کار بدون GIL با استفاده از آنها.gh-111389: افزودن ثابت
PyHASH_MULTIPLIER: ضریب اول مورد استفاده در رشته و سایر هشهای مختلف. وصله توسط Victor Stinner.gh-118771: چندین اعلان C با نامهایی که با پیشوندهای
Pyیا_Pyشروع نمیشدند و به اشتباه در نسخههای آلفا و بتای ۳.۱۳ اضافه شده بودند، به سرآیندهای داخلی منتقل شدند.gh-116984: نسبی کردن فراخوانیهای mimalloc نسبت به پروندهی فعلی برای جلوگیری از نیاز تعبیهکنندگان یا افزونهها به گنجاندن
Internal/mimallocدر صورتی که از قبل سرآیندهای داخلی سیپایتون را وارد میکنند.gh-118789: افزودن
PyUnstable_Object_ClearWeakRefsNoCallbacks()که ارجاعات ضعیف را بدون فراخوانی فراخوانیهای بازگشتی آنها پاکسازی میکند.gh-118789: بازیابی
_PyWeakref_ClearRefکه پیشتر در پایتون ۳.۱۳ آلفا ۱ حذف شده بود.gh-117511: عمومی کردن
PyMutexدر رابط برنامهنویسی C غیرمحدود.gh-116560: افزودن تابع
PyLong_GetSign(). وصله توسط Sergey B Kirpichev.gh-97588: رفع مشکل ایجاد فیلدهای بیتی در ساختارها و اتحادهای
ctypes. فیلدها دیگر همپوشانی ندارند.gh-87135: تلاش برای بهدست آوردن GIL پس از آغاز نهاییسازی رانتایم در یک نخ دیگر، اکنون باعث متوقف شدن نخ (hang) بهجای خاتمه یافتن آن میشود، که از خرابیهای احتمالی یا فساد حافظه ناشی از تلاش برای خاتمه دادن به نخی که در حال اجرای کدی است که بهطور خاص برای پشتیبانی از خاتمه طراحی نشده است، جلوگیری میکند. در بیشتر موارد، این توقف بیخطر است زیرا فرایند به هر حال بهزودی خارج خواهد شد.
تابع
PyThread_exit_threadاکنون منسوخ شده است. رفتار آن در پلتفرمهای مختلف یکسان نیست و فقط در حالت بعیدی که تمام توابع موجود در پشتهی فراخوانی برای پشتیبانی از مکانیسم خاتمهی وابسته به پلتفرم طراحی شده باشند، میتوان با اطمینان از آن استفاده کرد. به کاربران این تابع توصیه میشود طراحی خود را تغییر دهند تا نیازی به خاتمهی نخ نداشته باشند. در صورت بعیدی که خاتمهی نخ مورد نیاز باشد و بتوان آن را با اطمینان انجام داد، کاربران میتوانند مستقیماً به فراخوانی رابطهای برنامهنویسی خاص پلتفرم مانندpthread_exit(در POSIX) یا_endthreadex(در ویندوز) مهاجرت کنند.bpo-34008: افزودن
Py_IsInitializedبه فهرست رابطهای برنامهنویسی که فراخوانی آنها پیش از مقداردهی اولیه مفسر امن است، و بهروزرسانی آزمونهای تعبیه برای پوشش آن.
ساخت¶
gh-125269: رفع تشخیص نیاز به
-latomicهنگام کامپایل متقابل سیپایتون با استفاده از اسکریپت configure.gh-123990: حذف کلاندستور
WITH_FREELISTSو پیکربندی ساخت--without-freelistsgh-124102: بهروزرسانی مستندات داخلی تحت PCbuild، به طوری که اکنون به درست بیان میکند که ویندوز به VS2017 یا جدیدتر و پایتون ۳.۱۰ یا جدیدتر نیاز دارد
gh-124043: ساخت با استفاده از
--with-trace-refsهنگامی که GIL غیرفعال است (بهطور موقت) مجاز نیست.gh-123418: بهروزرسانی ساخت اندروید برای استفاده از OpenSSL 3.0.15.
gh-123297: انتقال دادن مقدار
LDFLAGSبهLDCXXSHAREDدرsysconfig. وصله توسط Pablo Galindogh-121634: امکان مشخص کردن سهگانه کامپایل هدف برای WASI.
gh-122578: استفاده از WASI SDK 24 برای آزمایش.
gh-116622: تغییر نام متغیر ساخت
MODULE_LDFLAGSبهLIBPYTHON، چرا که توسط سیستمهای ساخت بسته (مانند Meson) استفاده میشود.gh-118943: رفع مشکلی که در آن کامپایلر درجا (JIT) آزمایشی ممکن بود چندین بار توسط هدف
make regen-allساخته شود و در ساختهای با موازیسازی سنگین به شرایط رقابت (race conditions) احتمالی منجر شود.gh-121996: معرفی گزینههای ./configure --disable-safety و --enable-slower-safety. وصله توسط Donghee Na.
gh-120522: افزودن گزینهی
--with-app-store-complianceبرای رفع مشکلات شناختهشده با فرایندهای بررسی اپ استور macOS/iOS.gh-120371: پشتیبانی از WASI SDK 22 با نادیدهگرفتن صریح توابعی که صرفاً stub در wasi-libc هستند.
gh-121731: رفع خطای کامپایل mimalloc روی GNU/Hurd
gh-121487: رفع هشدار منسوخسازی برای ATOMIC_VAR_INIT در mimalloc.
gh-121467: رفع یک باگ Makefile که مانع از نصب پروندههای سرآیند mimalloc میشد.
gh-121103: روی سیستمهای POSIX، به استثنای نصبهای چارچوب macOS، پوشهی lib برای ساخت نخآزاد اکنون شامل پسوند «t» است تا از تداخل با یک نصب ساخت پیشفرض هممکان جلوگیری شود.
gh-120831: حداقل نسخهی پیشفرض iOS به ۱۳.۰ افزایش یافت.
gh-121082: رفع شکست ساخت هنگامی که توسعهدهنده از آرگومانهای
--enable-pystatsدر دستور پیکربندی پس از #118450 استفاده میکند.gh-120671: رفع آزمونهای پیکربندی ناموفق به دلیل نبود فاصله هنگام الحاق به CFLAGS.
gh-120602: مدیریت صحیح نصبهای LLVM با
LLVM_VERSION_SUFFIXهنگام ساخت با--enable-experimental-jit.gh-120688: روی WASI در حالت اشکالزدایی، پایتون اکنون به جای
-Ogبا پرچم کامپایلر-O3ساخته میشود تا از فراخوانیهای بازگشتی بیشتری پشتیبانی کند. وصله توسط Victor Stinner.gh-118943: رفع یک وضعیت رقابت احتمالی که ساختهای موازی پیکربندیشده با
--enable-experimental-jitرا تحت تأثیر قرار میدهد، که در آنFileNotFoundErrorممکن است توسط فرایند دیگری که در حال انتقالjit_stencils.h.newبهjit_stencils.hاست ایجاد شود.gh-120326: روی ویندوز، رفع خطای ساخت هنگامی که گزینههای
--disable-gilو--experimental-jitبا هم ترکیب میشوند.gh-120291: سازگار کردن اسکریپت پوسته
python-configبا پوستههای غیر bash.gh-113565: بهبود بررسیهای وابستگی
cursesوcurses.panelدر configure.gh-119729: در سیستمهای POSIX، نامپروندههای pkg-config (
.pc) اکنون شامل پرچمهای ABI میشوند، که ممکن است شامل اشکالزدایی («d») و نخبندی آزاد («t») باشد. به عنوان مثال: *python-3.14.pc(پیشفرض، ساخت غیر اشکالزدایی) *python-3.14d.pc(پیشفرض، ساخت اشکالزدایی) *python-3.14t.pc(ساخت با نخبندی آزاد)gh-119400:
make_ssl_certs، اسکریپتی که دادههای گواهی را برای مجموعهی آزمون آماده میکند، اکنون اجازه میدهد تاریخهای انقضا مشخص شوند.gh-115119: در صورت یافت نشدن نسخهی سیستمی، به کتابخانهی bundled libmpdec بازگردید.
gh-119132: بهروزرسانی
sys.versionبرای تشخیص اینکه ساخت پیشفرض است یا ساخت نخآزاد. وصله توسط Donghee Na.gh-118836: رفع یک
AssertionErrorهنگام ساخت با--enable-experimental-jitو هنگامی که کامپایلر یک بخشSHT_NOTEصادر میکند.gh-118943: رفع یک شرایط رقابت احتمالی که ساختهای موازی پیکربندیشده با
--enable-experimental-jitرا تحت تأثیر قرار میدهد؛ در این وضعیت، خطاهای کامپایل ممکن است توسط یک پروندهی سرآیندِ بهطور ناقصتولیدشده ایجاد شوند.
Python 3.13.0 بتا ۱¶
تاریخ انتشار: ۲۰۲۴-۰۵-۰۸
امنیت¶
gh-116741: بهروزرسانی کتابخانهی داخلی libexpat به نسخهی 2.6.2
gh-117233: تشخیص پشتیبانی از BLAKE2، SHA3، Shake و SHA512 ناقص در کتابخانهی libcrypto مشابه OpenSSL در زمان ساخت. این کار به
hashlibاجازه میدهد با کتابخانههایی استفاده شود که از تمام الگوریتمهایی که OpenSSL بالادستی پشتیبانی میکند، پشتیبانی نمیکنند.
هسته و توکارها (Core and Builtins)¶
gh-118414: افزودن آپکدهای ابزاربندیشده به ادعای YIELD_VALUE برای موارد ردیابی.
gh-117953: هنگامی که یک ماژول داخلی یا توسعهای برای نخستین بار ایمپورت میشود، در حالی که یک زیرمفسر فعال است، تابع init ماژول اکنون ابتدا توسط مفسر اصلی اجرا میشود و سپس ایمپورت در زیرمفسر ادامه مییابد. در نتیجه، ماژولهای init تکفاز اکنون در یک زیرمفسر ایزوله بدون اجرای تابع init تحت آن مفسر با شکست مواجه میشوند، در حالی که پیشتر تحت زیرمفسر پیش از شکست اجرا میشدند و بهطور بالقوه حالت و کالبکهای سراسری را باقی میگذاشتند و ماژول را در وضعیتی ناهمگون قرار میدادند.
gh-117549: از نحو مقداردهی اولیهی تعیینشده در توابع درونخطی در سرآیندهای داخلی استفاده نکنید. آنها برای کاربران C++ یا MSVC که هنوز از آخرین استاندارد C++ (C++20) استفاده نمیکنند، مشکلاتی ایجاد میکنند. اگرچه pycore_backoff.h داخلی است، اما (بهطور غیرمستقیم، از طریق pycore_code.h) توسط برخی نرمافزارهای کلیدی شخص ثالث که برای سرعت این کار را میکنند، گنجانده میشود.
کتابخانه¶
gh-95382: بهبود کارایی
json.dumps()وjson.dump()هنگام استفاده از آرگومان indent. بسته به دادهها، کدگذاری با استفاده ازjson.dumps()همراه با indent میتواند تا ۲ تا ۳ برابر سریعتر باشد.
هسته و توکارها (Core and Builtins)¶
gh-116322: در ساختهای
--disable-gil، قفل GIL هنگام بارگذاری ماژولهای توسعهای C فعال خواهد شد. اگر ماژول نشان دهد که از اجرای بدون GIL پشتیبانی میکند، پس از اتمام بارگذاری، قفل GIL غیرفعال خواهد شد. در غیر این صورت، قفل GIL برای بقیهی عمر مفسر فعال باقی خواهد ماند. این رفتار در صورتی که GIL بهطور صریح باPYTHON_GILیا-Xgilفعال یا غیرفعال شده باشد، اعمال نمیشود.gh-118513: رفع خطای نادرست
UnboundLocalErrorزمانی که دو درک مجموعه در همان تابع به یک نام ارجاع میدهند و در یکی از درک مجموعهها نام کران است در حالی که در دیگری یک متغیر سراسری ضمنی است.gh-118518: اجازه دادن به پشتیبانی perf لینوکس برای کارکرد بدون اشارهگرهای قاب با استفاده از پشتیبانی پیشرفتهی JIT در perf. این ویژگی هنگام استفاده از متغیر محیطی
PYTHON_PERF_JIT_SUPPORTیا هنگام اجرای پایتون با-Xperf_jitفعال میشود. وصله توسط Pablo Galindo.gh-117514: افزودن تابع
sys._is_gil_enabled()که مشخص میکند آیا قفل GIL در حال حاضر فعال است یا خیر. در ساخت پیشفرض، این تابع همیشه مقدارTrueرا برمیگرداند زیرا قفل GIL همیشه فعال است. در ساخت نخآزاد، ممکن است مقدارTrueیاFalseرا برگرداند.gh-118164: شکستن حلقهی بین پیادهسازی پایتونی ماژول
decimalو کد پایتون برای تبدیل عدد صحیح به رشته. همچنین بهینهسازی تبدیل عدد صحیح به رشته برای مقادیر در بازهی ۹۰۰۰ تا ۱۳۵۰۰۰ رقم دهدهی.gh-118473: رفع مشکل
sys.set_asyncgen_hooks()بهطوریکه هنگام بالا آمدنTypeErrorبهطور جزئی تنظیم نشود.gh-118465: کامپایلر فیلد جدید
__firstlineno__را روی یک کلاس با شمارهی سطرِ نخستین سطر از تعریف کلاس مقداردهی میکند.gh-118492: رفع مشکلی که در آن نهانگاه نوع (type cache) میتواند هنگام اجرای یک نهاییساز (finalizer)، یک ویژگی (attribute) دسترسیپذیرِ قبلی را آشکار کند.
gh-117714: بهروزرسانی
async_generator.athrow().close()وasync_generator.asend().close()برای بستن بخش مربوط به خود در تولیدگر ناهمگام زیرینgh-111201: مفسر تعاملی اکنون با زبان پایتون پیادهسازی شده است که به ویژگیهای جدیدی مانند رنگها، ورودی چندخطی، مشاهدهی تاریخچه و حالت چسباندن اجازهی فعالیت میدهد. این تغییر توسط پابلو گالیندو، لوکاش لانگا و لیساندروس نیکولاو بر اساس کدهای پروژهی PyPy مشارکت داده شده است.
gh-74929: پیادهسازی PEP 667: تبدیل
FrameType.f_localsوPyFrame_GetLocals()بهطوریکه وقتی قاب به یک تابع یا درک (comprehension) ارجاع میدهد، یک شیء پراکسی با قابلیت نوشتنهمزمان (write-through) برگرداند.gh-116767: رفع فروپاشی (crash) در کامپایلر هنگام کار با 'async with' که مدیر زمینههای (context manager) زیادی دارد.
gh-118335: تغییر نحوهی استفاده از مفسر لایهی ۲. بهجای اجرای پایتون با
-X uopsیا تنظیم متغیر محیطیPYTHON_UOPS=1، اکنون این انتخاب در زمان ساخت (build) با پیکربندی--enable-experimental-jit=interpreterانجام میشود.احتیاط! این تغییر، متغیر محیطی برای فعال یا غیرفعال کردن ریزعملیاتها را به
PYTHON_JITتغییر میدهد. متغیر قدیمیPYTHON_UOPSدیگر استفاده نمیشود.gh-118306: بهروزرسانی کامپایلر درجا (JIT) برای استفاده از LLVM 18
gh-118160: محدودههای تفسیر درون کلاسها اکنون میتوانند شامل درکها (comprehensions) باشند. با این حال، اینگونه درکها در زمان اجرا (runtime) درون محدودهی والد خود اینلاین (inlined) نمیشوند. وصله (patch) توسط ژل زیلسترا.
gh-118272: رفع باگی که در آن
generator.closeمقادیر محلی (locals) قاب تولیدگر را آزاد نمیکند.gh-118216: عدم در نظر گرفتن ایمپورتهای
__future__که پیش از نام ماژول دارای نقطه هستند.gh-118074: اطمینان از اینکه شیءهای Executor در آرایهی COLD_EXITS به عنوان قابلجمعآوری زباله (GC-able) فرض نمیشوند (که این امر باعث دسترسی به بایتهای خارج از شیء میشد).
gh-107674: بارگذاری تنبل (lazy load) شماره سطر قاب برای بهبود عملکرد ردیابی
gh-118082: بهبود پیام
SyntaxErrorبرای ایمپورتهای بدون نام، مانند مواردی چونfrom x importوimport. اکنون به کاربران یادآور میشود کهimportپس از خود حداقل به یک نام نیاز دارد.gh-118090: بهبود پیام
SyntaxErrorبرای براکتهای پارامتر نوع خالی.gh-117958: افزودن متد
get_jit_code()برای دسترسی به کد ماشین کامپایلشدهی JIT از اجراکنندهی UOp هنگامی که کامپایلر درجای (JIT) آزمایشی فعال است. وصله (patch) توسط آنتونی شاو.gh-117901: افزودن گزینهای برای تولید کد (codegen) کامپایلر جهت ذخیرهسازی دنبالههای دستورات تو در تو برای مقاصد دروننگری (introspection).
gh-116622: هدایت مجدد stdout و stderr به لاگ سیستم هنگام تعبیه در یک برنامهی اندروید.
gh-109118: محدودههای تفسیر درون محدودههای کلاس اکنون میتوانند شامل توابع لامبدا باشند.
gh-117894: جلوگیری از استفادهی مجدد شیءهای
agen.aclose()پس از فراخوانی.throw().gh-117881: جلوگیری از دسترسی همزمان به یک تولیدگر ناهمگام از طریق athrow().throw() یا asend().throw()
gh-117536: رفع خطای
RuntimeWarningهنگام فراخوانیagen.aclose().throw(Exception).gh-117755: رفع تخصیصدهندهی mimalloc برای تخصیص حافظهی بسیار بزرگ (حدود ۸٬۵۸۹٬۹۳۴٬۵۹۲ گیگابایت) روی s390x. وصله توسط Victor Stinner.
gh-117750: رفع مشکلی که در آن دیکشنری یک شیء هنگام پاکسازی، از حالت هماهنگی با مقادیر داخلی شیء خارج میشد. دستور
obj.__dict__.clear()اکنون مقادیر داخلی را پاک میکند، اما دیکشنری را به شیء متصل نگه میدارد.gh-117431: بهبود کارایی متدهای
bytesوbytearrayزیر از طریق انطباق آنها با قرارداد فراخوانیMETH_FASTCALL:count()find()index()rfind()rindex()
gh-117709: افزایش سرعت فراخوانیهای
str()با آرگومان صرفاً جایگاهی، با استفاده از قرارداد فراخوانیvectorcallدر PEP 590. وصله توسط Erlend Aasland.gh-117680: اختصاص یک رابط پایتونی به
_PyInstructionSequenceو استفاده از آن در آزمونها.gh-115776: اشیاء تخصیصیافتهی ایستا طبق تعریف نامیرا هستند، بنابراین صرفنظر از اینکه در ماژولهای توسعهای قرار دارند یا خیر، باید به همین صورت علامتگذاری شوند.
gh-117385: حذف رویدادهای مدیریتنشدهی
PY_MONITORING_EVENT_BRANCHوPY_MONITORING_EVENT_EXCEPTION_HANDLEDازsys.settrace().gh-116322: ماژولهای توسعهای میتوانند به رانتایم نشان دهند که میتوانند بدون GIL اجرا شوند. ماژولهای مقداردهی اولیهی چندمرحلهای با فراهم کردن
Py_MOD_GIL_NOT_USEDبرای جایگاهPy_mod_gilاین کار را انجام میدهند، در حالی که ماژولهای مقداردهی اولیهی تکمرحلهایPyUnstable_Module_SetGIL(mod, Py_MOD_GIL_NOT_USED)را از تابع مقداردهی اولیهی خود فراخوانی میکنند.gh-116129: پیادهسازی PEP 696 و افزودن پشتیبانی از مقادیر پیشفرض برای پارامترهای نوع. وصله توسط Jelle Zijlstra.
gh-93502: افزودن دو تابع جدید به C-API، یعنی
PyRefTracer_SetTracer()وPyRefTracer_GetTracer()، که امکان ردیابی ایجاد و تخریب شیء را دقیقاً مانند ماژولtracemallocفراهم میکنند. وصله توسط Pablo Galindogh-107674: بهبود چشمگیر کارایی
sys.settrace()gh-95754: بهبود پیام خطا هنگامی که یک اسکریپت که ماژولی را از کتابخانهی استاندارد میپوشاند باعث ایجاد
AttributeErrorمیشود. به همین ترتیب، بهبود پیام خطا هنگامی که یک اسکریپت که ماژول شخص ثالثی را میپوشاند در حالی که هنوز در حال مقداردهی اولیه است، تلاش میکند به ویژگیای از آن ماژول شخص ثالث دسترسی پیدا کند.gh-99180: حذف نشانگرهای ردگیری غیرآموزنده در دستورات
returnوassignmentساده. وصله توسط Pablo Galindo.gh-105879: امکان ارسال آرگومانهای globals و locals به توابع
exec()وeval()بهصورت کلیدواژه فراهم شد.
کتابخانه¶
gh-118418: اگر نتوانید مقداری را به پارامتر جدید type_params در
typing._eval_type()یاtyping.ForwardRef._evaluate()ارسال کنید، اکنون یکDeprecationWarningصادر میشود. (استفاده از هر یک از این توابع خصوصی و مستندنشده از ابتدا توصیه نمیشود، اما ارسال نکردن مقدار به پارامترtype_paramsممکن است به رفتار نادرستی در پایتون ۳.۱۲ یا نسخههای جدیدتر منجر شود.)gh-118660: افزودن یک پارامتر نوع اختیاری دوم به
typing.ContextManagerوtyping.AsyncContextManagerکه به ترتیب نمایانگر مقادیر بازگشتی__exit__()و__aexit__()است. مقدار پیشفرض این پارامترbool | Noneاست.gh-118650: ماژول
enumاجازه میدهد متدهایی با نام_repr_*روی انواعEnumتعریف شوند.gh-118648: افزودن مقادیر پیشفرض پارامتر نوع به
typing.Generatorوtyping.AsyncGenerator.gh-101137: نوع
text/x-rstاکنون توسطmimetypesپشتیبانی میشود.gh-118164: پیادهسازی پایتونی ماژول
decimalممکن است در موارد توانرسانی نسبتاً کوچک (مانند2**117) در صورتی که دقت زمینه روی مقدار بسیار بالایی تنظیم شده بود، بهنظر برسد که متوقف شده (hang) است. اکنون از روش متفاوتی برای بررسی نتایج دقیقاً قابلنمایش استفاده میشود که به محاسبهی10**precisionمتکی نیست (که ممکن است برای محاسبه عملاً بیش از حد بزرگ باشد).gh-111744: توابع
breakpoint()وpdb.set_trace()اکنون بلافاصله پس از فراخوانی، و نه قبل از اجرای سطر بعدی، وارد اشکالزدا میشوند.gh-118406: افزودن امضا (signature) برای اشیای
sqlite3.Connection.gh-101732: در صورت در دسترس بودن، از یک تابع زمان openssl سازگار با Y2038 استفاده کنید.
gh-118404: رفع
inspect.signature()برای موارد فراخوانیپذیر غیرقابلمقایسه.gh-118402: رفع
inspect.signature()برای نتیجهی فراخوانیfunctools.cmp_to_key().gh-116622: در اندروید، تابع
sysconfig.get_platformاکنون قالب مشخصشده توسط PEP 738 را برمیگرداند.gh-118285: امکان مشخص کردن امضای نمونههای فراخوانیپذیر سفارشی از نوع افزونه با استفاده از صفت
__text_signature__. مشخص کردن امضای نمونههایoperator.attrgetter،operator.itemgetterوoperator.methodcaller.gh-118314: رفع یک حالت مرزی (edge case) در حالت سختگیرانهی
binascii.a2b_base64()، که در آن پُرکنندهی اضافی در صورت عدم نیاز به پُرکننده تشخیص داده نمیشود.gh-118271: افزودن متد
read()بهPhotoImageبرای خواندن تصویر از یک پرونده و متدdata()برای دریافت دادههای تصویر. افزودن پارامترهای background و grayscale به متدwrite()درPhotoImage.gh-118225: افزودن متد
copy_replace()بهPhotoImageبرای کپی کردن ناحیهای از یک تصویر به تصویری دیگر، احتمالاً همراه با بزرگنمایی پیکسل و/یا نمونهبرداری فرعی (subsampling). افزودن پارامتر from_coords به متدهایcopy()،zoom()وsubsample()درPhotoImage. افزودن پارامترهای zoom و subsample به متدcopy()درPhotoImage.gh-118221: رفع باگی که در آن تابع
sqlite3.Connection.iterdump()در صورت استفاده از یک کارخانهی سطر سفارشی (row factory) ممکن بود با خطا مواجه شود. وصله توسط Erlend Aasland.gh-118013: رفع رگرسیون ایجادشده در gh-103193 که به این معنا بود که فراخوانی
inspect.getattr_static()روی یک نمونه باعث میشد ارجاع قوی به کلاس آن نمونه در یک نهانگاه داخلی در ماژولinspectباقی بماند. اگر کلاس بهصورت پویا ایجاد میشد، کلاس ارجاعات قوی به اشیای دیگری نگه میداشت که مقدار قابلتوجهی از حافظه را اشغال میکردند، و نهانگاه حاوی تنها ارجاع قوی به کلاس بود، این امر باعث مصرف غیرمنتظرهی حافظه میشد. رفع این رگرسیون منجر به کاهش سرعت درgetattr_static()میشود، اما این تابع همچنان باید بهطور قابلتوجهی سریعتر از پایتون ۳.۱۱ باشد. وصله توسط Alex Waygood.gh-118218: افزایش سرعت
itertools.pairwise()در حالت رایج تا ۱.۸ برابر.gh-117486: بهبود رفتار زیرکلاسهای تعریفشدهی کاربر از
ast.AST. این کلاسها اکنون در حالت عادی به هیچ تغییری نیاز ندارند تا با تغییرات رفتاری ماژولastدر پایتون ۳.۱۳ سازگار شوند. توسط Jelle Zijlstra.gh-90848: رفع مشکل
unittest.mock.create_autospec()برای پیکربندی ماک والد با آرگومانهای کلیدواژهای.gh-118168: رفع جایگزینی نادرست آرگومان زمانی که
typing.Unpackباtupleتوکار استفاده میشود.typing.Unpackاکنون هنگام استفاده با برخی انواع نامعتبر،TypeErrorبالا میآورد (raise میکند). توسط Jelle Zijlstra.gh-118131: افزودن رابط خط فرمان برای ماژول
random. توسط Hugo van Kemenade.gh-118107: رفع مشکل خواندن پروندههای ZIP64 توسط
zipimportدر مواردی که ورودیهای پرونده بسیار بزرگ هستند یا آفست آنها بیش از حد دور است.gh-102511: رفع مشکل
os.path.normpath()برای مسیرهای UNC در ویندوز. افزایش سرعتos.path.splitroot()با یک پیادهسازی بومی.gh-117535: تغییر نام پروندهی ناشناخته در ماژول
warningsازsysبه<sys>برای روشن ساختن این موضوع که این یک نام پروندهی واقعی نیست.gh-114053: رفع خطای نامعتبر
NameErrorهنگام فراخوانیtyping.get_type_hints()روی کلاسی که از پارامترهای نوع PEP 695 در ماژولی استفاده کرده است کهfrom __future__ import annotationsرا در بالای پروندهی خود دارد. توسط Alex Waygood.gh-116931: افزودن بررسی پارامتر fileobj برای
tarfile.TarFile.addfile()gh-117995: عدم ایجاد
DeprecationWarningزمانی که از دنباله پارامترها برای مقید کردن جاینگهدارهای نمایهگذاریشده و بینام استفاده میشود. همچنین نگاه کنید به gh-100668.gh-80361: رفع خطای TypeError در
email.message.Message.get_payload()هنگامی که مجموعه نویسهها با RFC 2231 کدگذاری شده است.gh-86650: رفع خطای IndexError هنگام تجزیهی برخی ایمیلها با Message-ID نامعتبر (از جمله آدرسهای یکبارمصرف تولیدشده توسط مایکروسافت اوتلوک).
gh-117691: بهبود پیامهای خطای صادرشده توسط هشدارهای منسوخسازی ماژول
tarfileمربوط به PEP 706. اگر آرگومانfilterبهextract()یاextractallارائه نشود، هشدار منسوخسازی اکنون به سطری در کد کاربر اشاره میکند که تابع مربوطه در آن فراخوانی شده است. توسط Alex Waygood.gh-115874: رفع خطای احتمالی segfault در طول زبالهروبی شیءهای
_asyncio.FutureIter. توسط Savannah Ostrowski.gh-115060: افزایش سرعت
pathlib.Path.glob()با حذف فراخوانی اولیهis_dir(). در نتیجهی این تغییر،glob()دیگر نمیتواندOSErrorایجاد کند.gh-77102: ماژول
siteاکنون ابتدا پروندهی.pthرا با UTF-8 و در صورت بروز خطایUnicodeDecodeErrorبا کدگذاری محلی تجزیه میکند. این ماژول پیشتر فقط از کدگذاری محلی پشتیبانی میکرد.gh-76785: ما ماژول سطح پایین
_interpretersرا به خاطر پیادهسازی PyPI برای PEP 734 در معرض دید قرار دادهایم. این ماژول گاهی به عنوان ماژول_xxsubinterpretersدر دسترس بود و پیشتر فقط برای آزمایش استفاده میشد. در بیشتر موارد، این ماژول باید یک ماژول داخلی مانند_threadو_impدر نظر گرفته شود. نگاه کنید به https://discuss.python.org/t/pep-734-multiple-interpreters-in-the-stdlib/41147/26.gh-115060: افزایش سرعت
pathlib.Path.glob()با عدم پایش پوشهها برای بخشهای الگوی فاقد وایلدکارد (*).gh-117727: افزایش سرعت
pathlib.Path.iterdir()با استفادهی داخلی ازos.scandir().gh-117586: افزایش سرعت متد
pathlib.Path.walk()از طریق کار با رشتهها بهصورت داخلی.gh-117722: تغییر پشتیبانی از جداکنندههای چندگانه در متد
asyncio.StreamReader.readuntil()بهطوریکه فقط تاپلهای جداکنندهها را بپذیرد و نه اشیاء پیمایشپذیر دلخواه را.gh-117692: رفع یک باگ که در آن کلاس
doctest.DocTestFinderرویbuiltin_function_or_methodبستهبندیشده (wrapped) دچار خطا میشد.gh-117348: بهبود قابلتوجه کارایی زمان ایمپورت ماژول configparser با اجتناب از دیتاکلاسها.
gh-117641: افزایش سرعت تابع
os.path.commonpath()روی سیستمعامل یونیکس.gh-117663: اصلاح
_simple_enumبرای تشخیص نامهای مستعار هنگامی که چندین آرگومان وجود دارد اما فقط یکی از آنها مقدار عضو است.gh-117636: افزایش سرعت تابع
os.path.join().gh-117618: پشتیبانی از
package.moduleبه عنوانfilenameبرای فرمانbreakدر ماژولpdbgh-102247: enum کدهای وضعیت با ثابتهای موجود در http.HTTPStatus بهروزرسانی شدهاند تا شامل نامهای RFC9110 شوند. این RFC شامل برخی از وضعیتهای HTTP است که پیشتر فقط برای WEBDAV استفاده میشدند و نامهای عامتری به آنها اختصاص میدهد.
ثابتهای قدیمی برای سازگاری با نسخههای قبلی حفظ شدهاند.
gh-117607: افزایش سرعت تابع
os.path.relpath().gh-117586: افزایش سرعت متد
pathlib.Path.glob()از طریق کار با رشتهها بهصورت داخلی.gh-117225: افزودن رنگ به خروجی doctest. وصله توسط Hugo van Kemenade.
gh-117566: متد
ipaddress.IPv6Address.is_loopback()از این پس برای آدرسهای loopback نگاشتشده با IPv4، یعنی آدرسهای واقع در فضای آدرس::ffff:127.0.0.0/104، مقدارTrueرا برمیگرداند.gh-117546: رفع مشکلی که در آن تابع
os.path.realpath()پس از مواجهه با یک حلقه پیوند نمادین در POSIX، متوقفسازی حلوفصل پیوندهای نمادین را متوقف میکرد.gh-116720: بهبود رفتار کلاس
asyncio.TaskGroupزمانی که یک لغو خارجی با یک لغو داخلی تداخل پیدا میکند. برای مثال، هنگامی که دو گروه وظیفه تو در تو هستند و هر دو بهطور همزمان در یک وظیفه فرزند دچار استثنا میشوند، ممکن بود گروه وظیفه بیرونی بهخوبی عمل نکند؛ زیرا لغو داخلی آن توسط گروه وظیفه درونی بلعیده شده بود.در حالتی که یک گروه وظیفه بهصورت خارجی لغو میشود و همچنین باید یک
ExceptionGroupرا بالا بیاورد، از این پس متدcancel()وظیفه والد را فراخوانی خواهد کرد. این کار تضمین میکند که یکasyncio.CancelledErrorدر دستورawaitبعدی بالا آورده شود، بنابراین لغو شدن وظیفه گم نمیشود.یکی دیگر از مزایای این تغییرات این است که گروههای وظیفه اکنون شمارشگر لغو (
asyncio.Task.cancelling()) را حفظ میکنند.بهمنظور مدیریت برخی حالات خاص، متد
asyncio.Task.uncancel()ممکن است اکنون پرچم مستندنشده_must_cancelرا زمانی که شمارشگر لغو به صفر میرسد، بازنشانی کند.gh-117516: افزودن
typing.TypeIsو پیادهسازی PEP 742. وصله توسط Jelle Zijlstra.gh-117503: رفع پشتیبانی از نامهای کاربری غیر اسکی (non-ASCII) در مسیرهای بایت (bytes paths) در
os.path.expanduser()روی Posix.gh-117394: تابع
os.path.ismount()اکنون در صورت داشتن دسترسیهای لازم توسط کاربر، ۲ تا ۳ برابر سریعتر شده است.gh-117313: در بازتا کردن (re-folding) پیامهای ماژول
email، تنها کاراکترهای'\n'،'\r'و'\r\n'به عنوان جداکنندههای سطر در نظر گرفته شوند. نویسههای کنترلی'\v'،'\f'،'\x1c'،'\x1d'و'\x1e'و جداکنندههای خط یونیکد (Unicode) یعنی'\x85'،'\u2028'و'\u2029'به همان شکل حفظ شوند.gh-117142: تبدیل
_ctypesبه مقداردهی اولیه چندمرحلهای (PEP 489).gh-66543: افزودن تابع
mimetypes.guess_file_type()که با مسیر پرونده کار میکند. ارسال مسیر پرونده به جای نشانیوب (URL) در تابعguess_type()به صورت منسوخ نرم است.gh-68583: رابط خط فرمان (CLI) نرمافزار webbrowser: جایگزینی getopt با argparse، افزودن گزینههای طولانی. وصلهای از Hugo van Kemenade.
gh-116871: پیشنهادهای نام برای
AttributeErrorوImportErrorاکنون تنها در صورتی شامل نامهای دارای زیرخط (underscored) میشوند که نام اصلی دارای زیرخط بوده باشد.gh-116023: فیلدهای خالی (مقدار
Noneیا[]) به طور پیشفرض درast.dump()نمایش داده نشوند. افزودن پارامترshow_empty=Falseبرای نمایش اختیاری آنها.gh-115961: افزودن ویژگیهای
nameوmodeبرای اشیاء شبهپروندهی فشرده و آرشیو شده در ماژولهایbz2،lzma،tarfileوzipfile. مقدار ویژگیmodeدرgzip.GzipFileاز عدد صحیح (1یا2) به رشته ('rb'یا'wb') تغییر یافت. مقدار ویژگیmodeبرای شیء شبهپروندهی قابل خواندنی که توسطzipfile.ZipFile.open()برگردانده میشود، از'r'به'rb'تغییر یافت.gh-82062: رفع اشکال
inspect.signature()برای مدیریت درست مقادیر پیشفرض پارامترها در متدهای ماژولهای توسعهای که از نامهای تعریفشده در فضای نام ماژول استفاده میکنند.gh-83856: رعایت
atexitبرای تمام روشهای شروعmultiprocessinggh-113081: چاپ استثنای رنگی درست مانند traceback توکار در
pdbgh-112855: افزایش سرعت پیکل کردن (pickling) اشیاء
pathlib.PurePath. وصلهای از Barney Gale.gh-109617: بخش
ncurses: رفع فروپاشی (crash) که ممکن بود در macOS 13 یا نسخههای قدیمیتر هنگام ساخت پایتون با SDK نسخهی ۱۵ از Xcode اپل رخ دهد.gh-83151: فعالسازی دستورات و ارزیابیهای دلخواه در پوستهی
pdbبرای دسترسی به متغیرهای محلی قاب فعلی، که امکان کارکرد کدهای چندمحدودهای (multi-scope) مانند مولدها (generators) یا توابع تو در تو را فراهم کرد.gh-110209: افزودن
__class_getitem__()بهtypes.GeneratorTypeوtypes.CoroutineTypeبرای اهداف راهنمایی نوع (type hinting). وصلهای از James Hilton-Balfe.gh-108191: کلاس
types.SimpleNamespaceاکنون یک آرگومان جایگاهی اختیاری را میپذیرد که مقادیر اولیهی ویژگیها را به صورت یک دیکشنری یا یک شیء پیمایشپذیر از جفتکلیدومقادیر مشخص میکند.gh-62090: رفع خطاهای ادعا (assertion errors) ناشی از فضای خالی در متارویشهها یا گروههای حذفشده با
SUPPRESSدرargparseبا سادهسازی قالببندی استفاده. وصلهای از Ali Hamdan.gh-102402: تنظیم
logging.LogRecordبرای استفاده ازtime.time_ns()و رفع باگ جزئی مربوط به محاسبات ممیز شناور (floating-point).gh-100242: پیادهسازی خالص پایتونی
functools.partial.__new__را با بررسی نکردن مداوم وجود ویژگی'func'روی آرگومان اولpartial، بیشتر با پیادهسازی C هماهنگ کنید. در عوض، هم نسخهی پایتون و هم نسخهی C بررسیisinstance(func, partial)را روی آرگومان اولpartialانجام میدهند.gh-99730: درخواستهای HEAD دیگر در طول تغییر مسیرها در urllib به درخواستهای GET ارتقا نمییابند.
gh-66410: تنظیم متغیر سراسری ماژول
tkinterیعنیwantobjectsروی2پیش از ایجاد شیءTkیا فراخوانی متدwantobjects()شیءTkبا آرگومان2، اکنون باعث میشود آرگومانهای ارسالی به کالبکهای ثبتشده در ماژولtkinterبسته به نمایش داخلیشان در Tcl، به عنوان شیءهای مختلف پایتون (int،float،bytes،tuple) ارسال شوند، نه همیشه به عنوانstr. متغیرtkinter.wantobjectsاکنون به طور پیشفرض روی2تنظیم میشود.bpo-40943: رفع چندین خطای IndexError هنگام تجزیه ایمیلهای دارای Message-ID، آدرس، مسیرها و غیرهی ناقص، به عنوان مثال
example@.bpo-39324: افزودن نگاشت نوع برای .md <-> text/markdown
bpo-18108: تابع
shutil.chown()اکنون از آرگومانهای کلیدواژهای dir_fd و follow_symlinks پشتیبانی میکند.bpo-30988: رفع تجزیهی ایمیلهای دارای سرآیند آدرس نامعتبر که دارای نقطه در ابتدا یا انتها هستند. وصله توسط tsufeki.
bpo-32839: افزودن متد
after_info()برای ابزارکهای Tkinter.
مستندات¶
gh-117928: حداقل نسخهی مورد نیاز Sphinx برای مستندات اکنون ۶.۲.۱ است.
ساخت¶
gh-118734: رفع ساخت (build) ویندوز هنگامی که مستقیماً (و نه از طریق اسکریپت
build.bat) بدون مشخص کردن مقداری برایUseTIER2فراخوانی میشود.gh-115119: گزینهی
configureیعنی--with-system-libmpdecاکنون به طور پیشفرض رویyesتنظیم میشود. نسخهی بستهبندیشدهیlibmpdecimalدر پایتون ۳.۱۵ حذف خواهد شد.gh-117845: رفع مشکل ساخت در برابر نسخههای اخیر libedit با شناسایی امضاهای قلاب readline در configure.
gh-116622: یک پروژهی بستر آزمون برای اجرای مجموعهآزمونها روی اندروید اضافه شد.
gh-117645: افزایش اندازهی پشتهی WASI از ۵۱۲ کیلوبایت به ۸ مگابایت و حافظهی اولیه از ۱۰ مگابایت به ۲۰ مگابایت. وصله توسط Victor Stinner.
gh-115119: برنامهی configure اکنون از pkg-config برای شناسایی وابستگیهای
decimalدر صورت ارائهی گزینهی--with-system-libmpdecاستفاده میکند.
Windows¶
gh-115119: بهروزرسانی نصبکنندهی ویندوز برای استفاده از libmpdecimal 4.0.0.
gh-118486: تابع
os.mkdir()اکنون mode برابر با0o700را میپذیرد تا پوشهی جدید را به کاربر فعلی محدود کند.gh-118347: رفع نصبنشدن بهروزرسانیهای راهانداز (launcher).
gh-118293: ماژول
multiprocessingاکنون هنگام ایجاد فرایندها، پرچمSTARTF_FORCEOFFFEEDBACKرا ارسال میکند تا به ویندوز بگوید نشانگر ماوس را تغییر ندهد.gh-115009: بهروزرسانی نصبکنندهی ویندوز برای استفاده از SQLite 3.45.3.
gh-90329: هشدار نمایشدادهشده هنگام ایجاد محیط مجازی را زمانی که مسیرهای درخواستشده و ایجادشده فقط در یک نام کوتاه (سبک 8.3) تفاوت دارند، سرکوب کنید. اگر یک اتصال یا پیوند نمادین در مسیر باعث شود که venv در مکانی متفاوت از آنچه در ابتدا درخواست شده بود ایجاد شود، هشدارها همچنان نمایش داده خواهند شد.
gh-117786: رفع مشکل اجرا نشدن صحیح محیطهای مجازی هنگامی که از طریق نصبکنندهی Store ایجاد شدهاند.
مکاواس¶
gh-115119: بهروزرسانی نصبکنندهی macOS برای استفاده از libmpdecimal 4.0.0.
gh-114099: استفاده از نماد پیشپردازنده در iOS با SDKهای قدیمیتر macOS سازگار شد.
gh-115009: بهروزرسانی نصبکنندهی macOS برای استفاده از SQLite 3.45.3.
gh-91629: هنگام نصب برای پوستهی Fish، از تنظیمات
~/.config/fish/conf.dو fish_add_path برای تنظیمPATHاستفاده کنید.
IDLE¶
bpo-34774: استفاده از تم رنگی انتخابشده توسط کاربر برای Help => IDLE Doc.
رابط C API¶
gh-118124: رفع
Py_BUILD_ASSERTوPy_BUILD_ASSERT_EXPRبرای عبارتهای غیرثابت: استفاده ازstatic_assert()در C11 و نسخههای جدیدتر. اصلاحیه از Victor Stinner.gh-110850: افزودن نوع «خام» (Raw) از عملکردهای PyTime
توسط Victor Stinner وصل شد.
gh-117987: بازیابی توابع حذفشده در نسخهی ۳.۱۳ آلفا ۱:
توسط Victor Stinner وصل شد.
gh-117929: بازیابی تابع حذفشدهی
PyEval_InitThreads(). اصلاحیه از Victor Stinner.gh-117534: بهبود منطق اعتبارسنجی در پیادهسازی C از
datetime.datetime.fromisoformat()برای مدیریت بهتر سالهای نامعتبر. اصلاحیه از Vlad Efanov.gh-68114: نحوهی مدیریت قالببندهای قدیمی 'w' و 'w#' در skipitem() اصلاح شد. این موارد دیگر پشتیبانی نمیشوند و در صورت استفاده، اکنون یک استثنا ایجاد میکنند.
gh-111997: افزودن یک C-API برای فعالسازی رویدادهای پایش.
Python 3.13.0 alpha 6¶
Release date: 2024-04-09
هسته و توکارها (Core and Builtins)¶
gh-117494: ساختار دادهی دنبالهی دستورات از compile.c به instruction_sequence.c بازطراحی شد.
gh-116968: معرفی یک نوع شمارندهی عقبنشینی ۱۶ بیتی واحد (
_Py_BackoffCounter) که بین تخصیصدهندهی تطبیقی سطح ۱ و بهینهساز سطح ۲ مشترک است. API مورد استفاده برای شمارندههای تخصیص تطبیقی تغییر کرده است، اما رفتار آن (ظاهراً) یکسان است.رفتار شمارندههای سطح ۲ تغییر کرده است:
آستانههای پویای دیگر وجود ندارند (ما هرگز آنها را تغییر ندادیم).
اکنون همهی شمارندهها از همان عقبنشینی نمایی استفاده میکنند.
شمارنده برای
JUMP_BACKWARDشمارش معکوس را از ۱۶ شروع میکند.پارامتر
temperatureدر خروجیهای جانبی شمارش معکوس را از ۶۴ شروع میکند.
gh-117431: بهبود کارایی متدهای
bytesوbytearrayزیر از طریق انطباق آنها با قرارداد فراخوانیMETH_FASTCALL:endswith()startswith()
gh-117431: بهبود کارایی متدهای
strزیر با تطبیق دادن آنها با قرارداد فراخوانیMETH_FASTCALL:gh-117411: انتقال
PyFutureFeaturesبه یک سرآیند داخلی و خصوصیسازی آن.gh-109120: افزودن مدیریت عبارات ستارهای نادرست، برای مثال
f(3, *). وصله توسط Grigoryev Semyongh-117266: رفع فروپاشیها برای برخی از زیرکلاسهای ایجادشده توسط کاربر از
ast.AST. اکنون انتظار میرود این کلاسها صفت_field_typesرا مقداردهی کنند.gh-99108: بهروزرسانی کد C پروژهی HACL* project مربوط به ماژول توکار
hashlibاز مخزن بالادستی که برای بسیاری از پیادهسازیها در صورت عدم وجود از طریق OpenSSL در یک ساخت مشخص استفاده میکنیم. این کار همچنین احتمال نادر بروز مشکل اتصال قانون یکتعریفی (one definition rule) برای نام نماد C را کاهش میدهد.gh-117108: تغییر بیت فضای قدیمی شیءها در نسل جوان از 0 به gcstate->visited، به طوری که هر شیء ایجادشده در طول GC اگر به نسل قدیمی منتقل شود، بیت قدیمیاش به درستی تنظیم شود.
gh-117108: جمعآوریکنندهی زبالهی چرخهای اکنون اندازهی گامها را بر اساس اندازهی کل هیپ انتخاب میکند، نه نرخ ایجاد شیءها. این کار تضمین میکند که میتواند همگام با رشد هیپ پیش برود.
gh-116735: برای
INSTRUMENTED_CALL_FUNCTION_EX، برای رویدادCALLمقدارarg0را به جایNoneبرابر باsys.monitoring.MISSINGقرار دهید.gh-113964: شروع نخهای جدید و ایجاد فرایند از طریق
os.fork()اکنون تنها پس از خروج تمام نخهای غیردیمن متوقف میشود.gh-116626: اطمینان حاصل کنید که
INSTRUMENTED_CALL_FUNCTION_EXهمیشه رویدادCALLرا منتشر میکندgh-116554: تابع
list.sort()اکنون از موارد بیشتری از ترتیبهای جزئی، بهویژه مواردی با اجراهای نزولی طولانی همراه با اجراهای فرعی از مقادیر مساوی، بهرهبرداری میکند. این موارد اکنون به عنوان اجراهای واحد شناخته میشوند (پیش از این، هر بلوک از مقادیر تکرارشده باعث ایجاد یک اجرای جدید میشد).gh-114099: افزودن یک بارگذار که میتواند ماژولهای توسعهای را در پوشهی چارچوب سبک iOS کشف کند.
gh-115775: کامپایلر فیلد جدید
__static_attributes__را روی یک کلاس با نام صفتهای این کلاس که از طریق self.X از هر تابعی در بدنه آن دسترسی میشوند، پر میکند.gh-115776: آرایهی مقادیر، ساختار
PyDictValuesاکنون در طول تخصیص در شیء تعبیهشده است. این کار عملکرد بهتری را در حالت رایج فراهم میکند و زمانی که ویژگی__dict__شیء مادیسازی میشود، افت عملکرد کمتری دارد.gh-108362: پیادهسازی یک جمعآوریکنندهی زبالهی چرخهای افزایشی. با جمعآوری نسل قدیمی به صورت افزایشی، نیازی به پیمایش کامل هیپ نیست. این کار میتواند زمان مکث حداکثری را برای برنامههای دارای هیپهای بزرگ به شدت کاهش دهد.
کاهش تعداد نسلها از سه به دو. نسل قدیمی به دو فضا به نامهای «بازدیدشده» (visited) و «معلق» (pending) تقسیم میشود.
جمعآوری در دو مرحله انجام میشود:: * یک گام از نسل جوان و بخش کوچکی از فضای معلق تشکیل میشود. * این گام پیمایش میشود و بازماندگان به انتهای فضای بازدیدشده منتقل میشوند.
هنگامی که فضای جمعآوری خالی میشود، این دو فضا با یکدیگر جابهجا میشوند.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
bpo-24612: بهبود خطای
SyntaxErrorکه وقتی کلمهی 'not' پس از یک عملگر میآید رخ میدهد. وصله توسط Pablo Galindo
کتابخانه¶
gh-117648: بهبود کارایی
os.path.join()وos.path.expanduser().gh-117584: ایجاد خطای
TypeErrorبرای ورودیهای غیرمسیر درposixpath.relpath.gh-117467: حفظ مالکیت صندوق پستی به هنگام بازنویسی در
mailbox.mbox.flush. وصلهای از Tony Mountifield.gh-114848: بالا آوردن خطای
FileNotFoundErrorزمانی کهgetcwd()مقدار '(unreachable)' را برمیگرداند؛ این اتفاق میتواند روی لینوکس >= 2.6.36 با glibc < 2.27 رخ دهد.gh-117459: متد
asyncio.asyncio.run_coroutine_threadsafe()اکنون ردگیریCancelledError،TimeoutErrorوInvalidStateErrorرا که در همروال ایجاد میشوند، نگه میدارد.gh-117381: رفع پیام خطا برای
ntpath.commonpath().gh-117337: منسوخ کردن توابع مستندنشدهی
glob.glob0()وglob.glob1(). بهجای آن ازglob.glob()استفاده کنید و یک پوشه را به آرگومان root_dir آن پاس دهید.gh-117348: بازطراحی
configparser.RawConfigParser._read()برای کاهش پیچیدگی سیکلوماتیک و بهبود قابلیت فهم.gh-117335: ایجاد خطای TypeError برای دنبالههای غیرمجاز در
ntpath.commonpath().gh-66449: کلاس
configparser.ConfigParserاکنون در صورت پیکربندی، بخشهای بدون نام را قبل از بخشهای نامگذاریشده میپذیرد.gh-88014: در مستندات
gzip.GzipFileدر ماژول gzip، نوع دادهی آرگومان اختیاری سازنده mtime را توضیح دهید وmtime = 0را برای تولید جریانهای قطعی توصیه کنید.gh-117310: رفع یک فروپاشی نادر زودهنگام و اضافی ناشی از
Py_DECREFدرsslهنگام ایجاد یک_ssl._SSLContextجدید، در صورتی که سیپایتون بهگونهای غیرممکن ساخته شده باشد که فهرست رمز پیشفرض خالی باشد یا کتابخانهی SSL که به آن پیوند خورده است، خطایی را از API CSSL_CTX_set_cipher_list()خود گزارش کند.gh-117294: یک
DocTestCaseاکنون در صورت رد شدن تمام نمونههای موجود در doctest، بهعنوان ردشده گزارش میشود.gh-98966: در
subprocess، هنگامstdout=STDOUTپیام آموزندهتری ایجاد کنید.gh-117225: doctest: فقط وقتی غیرصفر است "and X failed" را چاپ کنید و "1 items" را جمع ببندید. وصلهای از Hugo van Kemenade.
gh-117205: با افزایش
chunksizeهنگام استفاده از چندپردازشی (multiprocessing)، سرعتcompileall.compile_dir()را 20 درصد افزایش دهید.gh-117178: رفع رگرسیون در بارگذاری تنبل ماژولهای خودارجاع، که در gh-114781 معرفی شده بود.
gh-112383: رفع نحوهی پردازش دستورات
ENTER_EXECUTORتوسط ماژولdis.gh-117182: بارگذاری تنبل ماژولهایی که
__class__خود را تغییر میدهند، دیگر__class__را بهtypes.ModuleTypeبرنمیگرداند.gh-117084: اصلاح استخراج در
zipfileبرای درایههای پوشهای که نام آنها در ویندوز حاوی بکاسلش است.gh-117114: فراهم کردن تابع
os.path.isdevdrive()روی تمام پلتفرمها. برای پلتفرمهایی که Dev Drives را ارائه نمیدهند، این تابع همیشهFalseرا برمیگرداند.gh-117110: رفع باگی که مانع از نمونهسازی زیرکلاسهای
typing.Anyبا آرگومانها میشود. وصله توسط Chris Fu.gh-109653: به تعویق انداختن ایمپورتها در importlib.metadata و importlib.resources برای افزایش سرعت ۱۴ درصدی.
gh-70647: آغاز دورهی منسوخسازی برای رفتار فعلی
datetime.datetime.strptime()وtime.strptime()که همیشه در تجزیه کردن یک رشتهی تاریخی با یکValueErrorشامل روز ماه مانندstrptime("02-29", "%m-%d")هنگامی که سال مشخص نشده است و تاریخ مصادف با ۲۹ فوریه میشود، شکست میخورد. این کار به جلوگیری از مواجه شدن کاربران با باگهای جدید هر چهار سال یکبار به دلیل فرض اشتباه طبیعی دربارهی API هنگام تجزیهی مقادیر تاریخ جزئی کمک میکند.gh-116987: اصلاح
inspect.findsource()برای اشیاء کد کلاس.gh-114099: تغییر کتابخانهی استاندارد برای پشتیبانی از تفاوتهای پلتفرم iOS.
gh-90872: در ویندوز، متد
subprocess.Popen.wait()دیگرWaitForSingleObject()را با یک مهلت زمانی منفی فراخوانی نمیکند: اگر مهلت زمانی منفی باشد،0میلیثانیه را رد کنید. وصله توسط Victor Stinner.gh-116957: configparser: مقادیر ConfigParser را پس از اینکه خواندن قبلی خطای DuplicateSectionError یا DuplicateOptionError را ایجاد کرد، در یک وضعیت نامعتبر (ذخیرهشده به عنوان یک فهرست بهجای یک str) رها نکنید.
gh-115538: کلاس
_io.WindowsConsoleIOاکنون اگر یک مقدار بولی به عنوان آرگومان توصیفگر فایل (filedescriptor) ارسال شود، یک هشدار صادر میکند.gh-90095: نادیده گرفتن سطرهای خالی و کامنتها در
.pdbrcgh-106531: بروزرسانی zipfile._path از zipp 3.18، که سازگاری بهتری برای PyPy فراهم میکند، عملکرد glob بهتری را برای فایلهای zip با تو در تویی عمیق ارائه میدهد، و دسترسی داخلی به
CompleteDirs.injectرا برای استفاده در آزمونهای دیگر (مانند importlib.resources) فراهم میکند.gh-63207: در ویندوز، تابع
time.time()اکنون از ساعتGetSystemTimePreciseAsFileTime()استفاده میکند تا دقتی بهتر از ۱ میکروثانیه داشته باشد، بهجای ساعتGetSystemTimeAsFileTime()که دقت ۱۵.۶ میلیثانیهای دارد. وصله توسط Victor Stinner.gh-116764: بازیابی پشتیبانی از
Noneو سایر مقادیر نادرست در توابعurllib.parseیعنیparse_qs()وparse_qsl(). همچنین، آنها اکنون برای اعداد صحیح غیرصفر و دنبالههای غیرخالی یک TypeError ایجاد میکنند.gh-116811: در
PathFinder.invalidate_caches، تفویض اختیار بهMetadataPathFinder.invalidate_caches.gh-116647: اصلاح فرزند بازگشتی در دیتاکلاسها
gh-113171: اصلاح موارد مثبت کاذب و منفی کاذب مختلف در
ipaddress.IPv4Address.is_private(برای جزئیات این مستندات را ببینید)
همچنین در ویژگیهای متناظر
ipaddress.IPv4Networkوipaddress.IPv6Network.gh-63283: در
encodings.idna، هرگونه استفاده از حروف بزرگ در پیشوند ACE (xn--) اکنون قابل قبول است. وصله توسط Pepijn de Vos و Zackery Spytz.gh-71042: تابع
platform.android_ver()اضافه شد که اطلاعات دستگاه و سیستمعامل را در اندروید فراهم میکند.gh-73468: تابع جدید
math.fma()اضافه شد که عملیاتfma()در C99 را بستهبندی میکند: تابع ضرب و جمع ادغامشده (fused multiply-add). وصله توسط Mark Dickinson و Victor Stinner.gh-116608: توابع
importlib.resourcesیعنیis_resource()،open_binary()،open_text()،path()،read_binary()وread_text()از حالت منسوخ خارج شدند و از زیرپوشهها از طریق چندین آرگومان جایگاهی پشتیبانی میکنند. تابعcontents()نیز به زیرپوشهها اجازه میدهد، اما همچنان منسوخ باقی میماند.gh-116484: نام ابزارکهای خودکار تولیدشدهی
tkinter.Checkbuttonرا تغییر دهید تا از تداخل با نام ابزارکهای خودکار تولیدشدهیtkinter.ttk.Checkbuttonدر همان ابزارک والد جلوگیری شود.gh-114314: در
ctypes، دادههای ctype اکنون مستقیماً در شیءهای نوع ذخیره میشوند تا در یک زیرکلاس dict. این یک تغییر داخلی است که نباید روی استفاده تأثیر بگذارد.gh-116401: مسدود شدن توابع
os.fwalk()وshutil.rmtree()هنگام باز کردن پایپ نامگذاریشده رفع شد.gh-71052: تابع
ctypes.util.find_library()روی اندروید پیادهسازی شد.gh-90535: پشتیبانی از مقادیر interval > ۱ در
logging.TimedRotatingFileHandlerبرایwhen='MIDNIGHT'وwhen='Wx'اصلاح شد.gh-113308: برخی بخشهای محافظتشدهی داخلی از
uuidحذف شدند:_has_uuid_generate_time_safe،_netbios_getnode،_ipconfig_getnodeو_load_system_functions. آنها استفاده نمیشدند.gh-115627: مدیریت خطای ماژول
sslبرای قطع اتصال توسط همتادا (peer) اصلاح شد. این ماژول اکنون به جای یک EOFError، یک OSError با کد خطای مناسب پرتاب میکند.gh-114847: سرعت تابع
os.path.realpath()روی پلتفرمهای غیر ویندوزی افزایش یافت.gh-114271: یک شرط رقابت (race) در
threading.Thread.join()اصلاح شد.کلاس
threading._MainThreadاکنون همیشه نمایانگر نخ اصلی مفسر اصلی است.موارد
PyThreadState.on_deleteوPyThreadState.on_delete_dataحذف شدهاند.gh-113538: متدهای
asyncio.Server.close_clients()وasyncio.Server.abort_clients()اضافه شدند که اجازه میدهند سرور asyncio با قدرت بیشتری بسته شود.gh-85287: کُدکهای یونیکد را تغییر میدهد تا به جای فقط UnicodeError، خطای UnicodeEncodeError یا UnicodeDecodeError را برگردانند.
gh-113548: ماژول
pdbاکنون به آرگومانهای CLI برایpdb -mاجازه میدهد.gh-105866: رفع باگ
_get_slotsکه هنگام تعریف دیتاکلاسها با جایگاهها (slots) و یک weakref_slot باعث بروز خطا میشد.gh-96471: افزودن قابلیت خاتمه دادن به
asyncio.Queueبا استفاده از متدshutdown().gh-89739: ماژول
zipimportاکنون میتواند پروندههای ZIP64 را بخواند.bpo-33533: تابع
asyncio.as_completed()اکنون شیءای را برمیگرداند که هم پیمایشگر ناهمگام و هم پیمایشگر ساده است. الگوی پیمایش ناهمگام جدید امکان همبستگی آسانتر بین وظایف قبلی و نتایج تکمیلشده آنها را فراهم میکند. این تطابق نزدیکتری با الگوی پیمایشconcurrent.futures.as_completed()است. وصل توسط جاستین آرتور.bpo-27578: تابع
inspect.getsource()(و توابع مرتبط با آن) با پروندههای ماژول خالی کار میکنند و بهجای بالا آوردن خطایOSError، مقدار'\n'(یا معادل منطقی آن) را برمیگردانند. اصلاحیه از Kernc.bpo-37141: پذیرش یک مجموعهی پیمایشپذیر از جداکنندهها در
asyncio.StreamReader.readuntil()، که با برخورد به یکی از آنها متوقف میشود.gh-66543: اصلاح تحلیل (parsing) URLها در
mimetypes.guess_type()که تنها دارای نام میزبان، حاوی بخش قطعه (fragment) یا پرسوجو (query)، و نام پروندههای دارای فقط یک نقطهی اشتراک UNC در ویندوز هستند. بر اساس اصلاحیهی دانگ-هی نا (Dong-hee Na).bpo-15010: متد
unittest.TestLoader.discover()اکنون مقدار اصلیunittest.TestLoader._top_level_dirرا ذخیره کرده و در انتهای فراخوانی بازیابی میکند.
مستندات¶
آزمونها¶
gh-83434: غیرفعال کردن خروجی XML مربوط به JUnit (گزینهی خط فرمان
--junit-xml=FILE) در regrtest هنگام جستجوی نشتی ارجاعات (گزینهی-R). اصلاحیه از ویکتور استینر (Victor Stinner).gh-117187: رفع آزمونهای XML برای نسخهی خام Expat <2.6.0.
gh-116333: آزمونهای موارد مرتبط با TLS (کدهای خطا و غیره) بهروزرسانی شدند تا در خصوص رشتههای پیام خطا و رفتارهای خاص (همانطور که در انشعابهای BoringSSL و AWS-LC از OpenSSL دیده میشود) انعطافپذیرتر باشند.
gh-117089: یکپارچهسازی آزمونهای مربوط به importlib.metadata در بستهی
metadataمختص به خودشان.gh-115979: بهروزرسانی test_importlib به طوری که تحت WASI SDK 21 با موفقیت اجرا شود.
gh-112536: افزودن --tsan به test.regrtest جهت اجرای آزمونهای TSAN در زمانهای اجرای منطقی. اصلاحیه از Donghee Na.
gh-116307: افزودن کمکی ایمپورت
isolated_modulesاز آنجا کهCleanImportماژولهای ایمپورتشده در طول زمینه را حذف نمیکند. از آن در آزمونهای importlib.resources استفاده کنید تا از باقی ماندنmodبرای مختل کردن آزمونهای importlib.metadata جلوگیری شود.
ساخت¶
Windows¶
gh-117267: اطمینان حاصل کنید که
DirEntry.stat().st_ctimeدر طول دورهی منسوخسازیst_ctime، با داشتن همان مقدارst_birthtime، رفتاری سازگار باos.stat()از خود نشان میدهد. پس از دورهی منسوخسازی،st_ctimeزمان تغییر فراداده (یا غیرقابل دسترس از طریقDirEntry) خواهد بود و تنهاst_birthtimeشامل زمان ایجاد خواهد بود.gh-116195: بهبود عملکرد
os.getppid()با استفاده از یک API سیستمی جایگزین در صورت دسترسی. مشارکت توسط vxiiduu.gh-88494: در سیستمعامل ویندوز،
time.monotonic()اکنون از ساعتQueryPerformanceCounter()برای داشتن دقتی بهتر از ۱ میکروثانیه استفاده میکند، بهجای ساعتGetTickCount64()که دقت ۱۵.۶ میلیثانیهای دارد. وصله توسط Victor Stinner.gh-116773: نمونههای
<_overlapped.Overlapped object at 0xXXX> still has pending operation at deallocation, the process may crashبرطرف شدند.gh-91227: پیادهسازی ProactorEventLoop در asyncio به شکلی اصلاح شد که ارسال یک دیتاگرام به آدرسی که شنود نمیکند، مانع از دریافت دیتاگرامهای بیشتر نشود.
gh-115119: هنگام ساخت ماژول
_decimal، از کُدِ همراهِlibmpdecimalبه یک بستهی خارجیِ میزبانیشدهی جداگانه در مخزنcpython-source-depsکوچ شد.
رابط C API¶
gh-87193:
_PyBytes_Resize()اکنون میتواند برای اشیاء bytes با شمارهی ارجاع بزرگتر از ۱، از جمله اشیاء bytes تکبایتی، فراخوانی شود. این تابع یک شیء bytes جدید ایجاد میکند و شیء قدیمی را در صورتی که شمارهی ارجاع بزرگتر از ۱ داشته باشد، نابود میکند.gh-117021: سرریز عدد صحیح در
PyLong_AsPid()روی پلتفرمهای ۶۴ بیتی غیر ویندوزی اصلاح شد.gh-115756:
PyCode_GetFirstFree()اکنون یک API ناپایدار است و بهPyUnstable_Code_GetFirstFree()تغییر نام داده است. (مشارکت توسط Bogdan Romanyuk در gh-115781)gh-116869: افزودن آزمون
test_cext: ساخت یک افزونهی C برای بررسی اینکه آیا API زبان C پایتون هشدارهای کامپایلر C را تولید میکند یا خیر. وصله توسط Victor Stinner.gh-116869: سازگار کردن مجدد API زبان C با پرچم کامپایلر
-Werror=declaration-after-statement. وصله توسط Victor Stinner.gh-116936: افزودن تابع
PyType_GetModuleByDef()به API محدود C. وصله توسط Victor Stinner.gh-116809: بازیابی تابع خصوصی حذفشدهی
_PyErr_ChainExceptions1(). وصله توسط Victor Stinner.gh-115754: در نسخهی ۳.۱۳ از API محدود C، دریافت تکنمونههای
Py_None،Py_False،Py_True،Py_EllipsisوPy_NotImplementedاکنون به عنوان فراخوانیهای تابع در سطح ABI پایدار برای پنهان کردن جزئیات پیادهسازی پیادهسازی شده است. دریافت این ثابتها همچنان ارجاعات امانتی برمیگرداند. وصله توسط Victor Stinner.gh-115754: توابع
Py_GetConstant()وPy_GetConstantBorrowed()برای دریافت ثابتها اضافه شدند. برای مثال،Py_GetConstant(Py_CONSTANT_ZERO)یک strong reference به ثابت صفر برمیگرداند. وصله توسط Victor Stinner.gh-111696: افزودن پشتیبانی از قالبهای
%T،%T#،%Nو%N#بهPyUnicode_FromFormat(): قالببندی نام کامل یک نوع شیء و یک نوع: فراخوانیPyType_GetModuleName(). برای اطلاعات بیشتر PEP 737 را ببینید. وصله توسط Victor Stinner.gh-111696: افزودن تابع
PyType_GetModuleName()برای دریافت نام ماژول نوع. معادل با دریافت صفتtype.__module__. وصله توسط Eric Snow و Victor Stinner.gh-111696؛ افزودن تابع
PyType_GetFullyQualifiedName()برای دریافت نام کامل نوع. معادلf"{type.__module__}.{type.__qualname__}"یاtype.__qualname__اگر مقدارtype.__module__رشته نباشد یا برابر با"builtins"باشد. تهیه شده توسط Victor Stinner.gh-85283: افزونههای C به نامهای
fcntl،grp،pwd،termios،_statisticsو_testconsoleاکنون با limited C API ساخته میشوند. تهیه شده توسط Victor Stinner.gh-111140: افزودن پرچمهای اضافی به
PyLong_AsNativeBytes()وPyLong_FromNativeBytes()به منظور امکانسنجی برای فراخواننده جهت تعیین نحوهی مدیریت موارد خاص پیرامون مقادیری که تمام بافر را پر میکنند.gh-113024: افزودن تابع
PyObject_GenericHash().
پایتون 3.13.0 آلفا 5¶
تاریخ انتشار: ۲۰۲۴-۰۳-۱۲
امنیت¶
gh-115398: امکان کنترل به تعویق انداختن بازپارزش Expat نسخهی >=2.6.0 (CVE 2023-52425) با افزودن پنج متد جدید:
gh-114572: متدهای
ssl.SSLContext.cert_store_stats()وssl.SSLContext.get_ca_certs()اکنون زمانی کهssl.SSLContextدر میان چندین نخ به اشتراک گذاشته میشود، دسترسی به انبار گواهی را به درستی قفل میکنند.
هسته و توکارها (Core and Builtins)¶
gh-116604: احترام به وضعیت جمعآوریکنندهی زباله هنگامی که فراخوانیهای غیرمستقیم از طریق
PyErr_CheckSignals()و شکستن ارزیابی انجام میشود. تهیه شده توسط Pablo Galindogh-112087: کلاس
listاکنون با پیادهسازی PEP 703 سازگار است.gh-116381: افزودن تخصصیسازی برای
CONTAINS_OP.gh-116296: رفع نشت حافظهی احتمالی در مدیریت خطای داخلی
object.__reduce__().gh-115823: محاسبهی صحیح بازههای خطا در پارسر هنگام بالا آوردن استثناهای
SyntaxErrorکه توسط دنبالههای بایت نامعتبر ایجاد شدهاند. تهیه شده توسط Pablo Galindogh-115778: افزودن حاشیهنویسی
tierNبرای تعریف دستورالعمل در DSL مفسر.gh-115733: رفع فروپاشی هنگام فراخوانی
next()روی پیمایشگرهای فهرست تمامشده.gh-115700: مرحلهی ساخت regen-cases اکنون روی ویندوز کار میکند.
gh-115347: رفع باگی که در آن رشته مستند با یک NOP اضافی جایگزین میشد هنگامی که پایتون با
-OOاجرا میشود.gh-115323: معنیدارتر کردن پیام خطا برای هنگامی که
bytearray.extend()با یک شیءstrفراخوانی میشود.gh-112175: اکنون هر
PyThreadStateدارایeval_breakerمخصوص به خود است که به نخهای خاص اجازه میدهد متوقف شوند.
کتابخانه¶
gh-115154: رفع باگی که باعث میشد تابع
tokenize.untokenize()مقادیر لفظی نامگذاری شدهی یونیکد را به شکل نادرستی مدیریت کند. وصله توسط پابلو گالیندو (Pablo Galindo)
هسته و توکارها (Core and Builtins)¶
gh-112433: اضافه کردن قابلیت مجبور کردن همراستاسازی
ctypes.Structureاز طریق ویژگی جدید_align_روی کلاس.
کتابخانه¶
gh-104090: ردیاب منابع multiprocessing اکنون اگر نشت منبعی شناسایی شود، با کد وضعیت غیرصفر خارج میشود. در غیر این صورت همچنان با کد وضعیت ۰ خارج میشود.
هسته و توکارها (Core and Builtins)¶
gh-105858: بهبود سازندهها برای گرههای
ast. آرگومانهای از نوع فهرست اکنون اگر حذف شوند به طور پیشفرض یک فهرست خالی در نظر گرفته میشوند و فیلدهای اختیاری به طور پیشفرض رویNoneتنظیم میشوند. گرههای درخت نحوی انتزاعی (AST) اکنون دارای یک ویژگی__annotations__با انواع مورد انتظار ویژگیهای خود هستند. ارسال آرگومانهای اضافی ناشناخته به گرههای درخت نحوی انتزاعی (AST) منسوخ شده است و در پایتون ۳.۱۵ به خطا تبدیل خواهد شد. حذف یک آرگومان ضروری از یک گره درخت نحوی انتزاعی (AST) منسوخ شده است و در پایتون ۳.۱۵ به خطا تبدیل خواهد شد. وصله توسط یل زیلسترا (Jelle Zijlstra).gh-101860: نمایان کردن ویژگی
__name__روی ویژگی.gh-96497: رفع حل نادرست متغیرهای کلاس مخدوششده (mangled) که در عبارتهای انتساب در درکها (comprehensions) استفاده میشوند.
کتابخانه¶
gh-116349: تابع
platform.java_ver()منسوخ شده است و در نسخهی ۳.۱۵ حذف خواهد شد. این تابع تا حد زیادی آزمایش نشده بود، یک API گیجکننده داشت و فقط برای پشتیبانی از Jython مفید بود.gh-116143: رفع یک رقابت (race) در
_start_serverبخش pydoc، و حذف بازهای که در آن_start_serverمیتواند نخی را برگرداند که «در حال سرویسدهی» است اما هیچdocserverتنظیمشدهای ندارد.gh-116127:
typing: پیادهسازی PEP 705 که پشتیبانی ازtyping.ReadOnlyرا بهtyping.TypedDictاضافه میکند.gh-116325:
typing: پرتابSyntaxErrorبه جایAttributeErrorدر ارجاعات پیشرو به عنوان رشتههای خالی.gh-115957: هنگامی که
asyncio.TaskGroup.create_taskروی یکasyncio.TaskGroupغیرفعال فراخوانی میشود، همروال دادهشده بسته خواهد شد (که از یکRuntimeWarningجلوگیری میکند).gh-115978: غیرفعال کردن preadv(), readv(), pwritev(), و writev() روی WASI.
تحت wasmtime برای WASI 0.2، این توابع test_posix را با موفقیت پشت سر نمیگذارند (https://github.com/bytecodealliance/wasmtime/issues/7830).
gh-88352: رفع محاسبهی زمان چرخش بعدی در هندلر
logging.TimedRotatingFileHandler. متدcomputeRollover()اکنون همیشه یک برچسب زمانی بزرگتر از زمان مشخصشده برمیگرداند و در طول تغییر زمان صرفهجویی در نور روز (DST) به درستی کار میکند. متدdoRollover()دیگر روی پروندهی از پیش چرخیدهشده بازنویسی نمیکند و از از دست رفتن دادهها هنگام اجرا در نیمهشب یا در طول زمان تکراری در تغییر زمان صرفهجویی در نور روز (DST) جلوگیری میکند.gh-87115: تنظیم
__main__.__spec__رویNoneهنگام اجرای یک اسکریپت باpdbgh-76511: رفع خطای UnicodeEncodeError در
email.Message.as_string()که وقتی پیامی ادعا میکند در مجموعهنویسهی ascii است اما در واقع نویسههای غیر ascii دارد رخ میدهد. نویسههای غیر ascii اکنون مانند هندلر خطایreplaceبا نویسهی جایگزین U+FFFD جایگزین میشوند.gh-89547: افزودن پشتیبانی از اشکال خاص تایپینگ تو در تو مانند Final[ClassVar[int]].
gh-116040: [Enum] اصلاح فراخوانیهای مبتنی بر مقدار زمانی که مقدار دوم falsy است؛ به عنوان مثال Cardinal(1, 0)
gh-115821: [Enum] بهبود پیام خطا هنگام فراخوانی super().__new__() در __new__ سفارشی.
gh-85644: استفاده از متغیر محیطی
XDG_CURRENT_DESKTOPدرwebbrowserبرای بررسی دسکتاپ. ترجیح دادن آن بهGNOME_DESKTOP_SESSION_IDمنسوخ برای تشخیص GNOME.gh-75988: اصلاح
unittest.mock.create_autospec()برای ارسال فراخوانی به شیء بستهبندیشده به منظور بازگرداندن نتیجهی واقعی.gh-115881: رفع مشکلی که در آن
ast.parse()مدیرهای زمینهی شرطی (مانندwith (x() if y else z()): ...) را در صورت ارسالfeature_version=(3, 8)به اشتباه به عنوان سینتکس نامعتبر علامتگذاری میکرد. این تغییرات گرامری ایجاد شده به عنوان بخشی از gh-94949 را بازنشانی میکند.gh-115886: رفع برش بیصدای نام با یک نویسهی تهی تعبیهشده در
multiprocessing.shared_memory.SharedMemory.gh-115532: افزودن برآورد چگالی هسته به ماژول statistics.
gh-115714: در WASI، ماژول
timeدیگر زمان فرایند را با استفاده ازtimes()یاCLOCK_PROCESS_CPUTIME_IDدریافت نمیکند، زیرا این API سیستمی غیرقابل اعتماد است و احتمالاً از WASI حذف خواهد شد. توابع ساعت تحت تأثیر به فراخوانیclock()بازمیگردند.gh-115809: بهبود الگوریتم برای محاسبهی اینکه کدام پروندههای گزارش چرخاندهشده در
logging.TimedRotatingFileHandlerحذف شوند. این مکانیسم اکنون برای هندلرهای بدونnamerو باnamerقطعی دلخواه که بخش تاریخ و زمان را در نام پرونده دستنخورده باقی میگذارد، قابل اعتماد است.gh-74668: توابع
urllib.parseیعنیparse_qs()وparse_qsl()اکنون از آرگومانهای باینری حاوی دادههای خام و غیر ASCII کدگذاریشده با درصد پشتیبانی میکنند.gh-67044: تابع
csv.writer()اکنون صرف نظر از مقدار lineterminator، همیشه'\r'و'\n'را نقلقول یا خنثی میکند.gh-115712: بازیابی پشتیبانی از جداکنندهی فضا با
skipinitialspace=Trueدرcsv. تابعcsv.writer()اکنون اگر جداکننده یک فاصله باشد و skipinitialspace برابر با true باشد، فیلدهای خالی را نقلقول میکند و در صورت عدم امکان نقلقول، استثنا ایجاد میکند.gh-112364: اصلاح
ast.unparse()برای مدیریت format_spec با"،'یا\\. اصلاحشده توسط Frank Hoffmann.gh-112997: متوقف کردن گزارشگیری از آرگومانهای کالبک بالقوه حساس در
asyncioمگر اینکه حالت رفع اشکال فعال باشد.gh-114914: رفع مشکلی که در آن یک
StreamWriterرهاشده جمعآوری زباله (garbage collected) نمیشد.gh-111358: رفع اشکال در
asyncio.BaseEventLoop.shutdown_default_executor()برای اطمینان از اینکه مهلت زمانی ارسالشده به همروال مطابق انتظار رفتار میکند.gh-115618: رفع کاهش نادرست تعداد ارجاع برای آرگومان
Noneدر متدهایpropertyیعنیgetter()،setter()وdeleter().gh-112720: بازسازی
dis.ArgResolverبرای امکان زیرکلاسسازی و تغییر نحوهی تفسیر آرگومانهای پرش (jump args).gh-112006: اصلاح
inspect.unwrap()برای انواع دادهی دارای توصیفگر (descriptor) دادهی__wrapper__. اصلاحinspect.Signature.from_callable()برایclassmethod()وstaticmethod()توکار.gh-101293: پشتیبانی از اشیاء فراخوانیپذیر با متد
__call__()و انواع دادهی دارای متدهای__new__()و__init__()که روی متدهای کلاس، متدهای ایستا، متدهای کراندار، توابع جزئی و سایر انواع متدها و توصیفگرها درinspect.Signature.from_callable()تنظیم شدهاند.gh-113942: ماژول
pydocدیگر توابع سراسری پیادهسازیشده به عنوان متدهای توکار، مانندMethodDescriptorTypeوWrapperDescriptorTypeرا رد نمیکند.gh-115256: افزودن DeprecationWarning هنگام دسترسی به ویژگی tarfile در شیءهای TarInfo. این ویژگی هرگز بهصورت داخلی استفاده نمیشود و فقط زمانی به TarInfoها متصل میشود که tarfile در حالت نوشتن (write-mode) باز شود، نه در حالت خواندن. این ویژگی یک چرخه ارجاع غیرضروری ایجاد میکند که ممکن است هنگام نبستن دسته (handle) پس از نوشتن یک tarfile باعث خرابی شود.
gh-115197: ماژول
urllib.requestدیگر پیش از بررسی نام میزبان (hostname) در فهرست رد کردن پروکسی سیستم در macOS و ویندوز، آن را حل (resolve) نمیکند.gh-113812: متد
DatagramTransport.sendto()اکنون اگر با یک شیء bytes خالی فراخوانی شود، بستههای دادهی (datagram) با طول صفر ارسال میکند. کنترل جریان انتقال (flow control) اکنون هنگام محاسبهی اندازهی بافر، سرآیند بسته داده را نیز در نظر میگیرد.gh-114763: محافظت از ماژولهای بارگذاریشده با
importlib.util.LazyLoaderدر برابر شرایط رقابت (race conditions) هنگامی که چندین نخ (thread) تلاش میکنند پیش از اتمام بارگذاری به ویژگیها دسترسی پیدا کنند.gh-114709: تابع
posixpath.commonpath()اکنون هنگام دریافت یک پیمایشپذیر خالی، یک استثنایValueErrorپرتاب میکند. پیشتر، استثنایIndexErrorپرتاب میشد.posixpath.commonpath()اکنون هنگام دریافت مقدارNone، یک استثنایTypeErrorپرتاب میکند. پیشتر، استثنایValueErrorپرتاب میشد.gh-114610: رفع باگی که در آن متد
pathlib.PurePath.with_stem()هنگام دریافت آرگومان stem خالی، پسوند مسیر غیرخالی را به یک ساقه (stem) تبدیل میکرد. این متد اکنون درست مانند کاری کهpathlib.PurePath.with_suffix()هنگام فراخوانی روی مسیری با ساقه خالی و با دریافت آرگومان suffix غیرخالی انجام میدهد، استثنایValueErrorپرتاب میکند.gh-107361: افزودن
ssl.VERIFY_X509_PARTIAL_CHAINوVERIFY_X509_STRICTبه زمینهی پیشفرض SSL ایجاد شده باssl.create_default_context().gh-112281: امکان ایجاد اتحاد انواع داده برای
typing.Annotatedبا فرادادهی (metadata) هشناپذیر.gh-111775: رفع مشکل
importlib.resources.simple.ResourceHandle.open()برای حالت متنی، و افزودن آرگومان گمشدهیstream.gh-90095: امکان کار کردن .pdbrc و -c را با هر دستور معتبر pdb فراهم کنید.
gh-107625: اگر کلیدی بدون مقدار متناظر ادامه یابد (یعنی توسط یک سطر دارای تورفتگی دنبال شود)، از متدهای
read()وread_file()ازconfigparser.ConfigParserاستثنایconfigparser.ParsingErrorرا پرتاب کنید.gh-107155: اصلاح خروجی نادرست تابع
help(x)در حالتی کهxیک تابعlambdaاست و یک ویژگی دیکشنری__annotations__با کلید"return"دارد.gh-57141: افزودن گزینه برای مقایسههای غیرسطحی (non-shallow) به
filecmp.dircmpمشابهfilecmp.cmp(). وصلهی اصلی توسط Steven Ward. بهبودیافته توسط Tobias Rautenkranzgh-69990: متد
Profile.print_stats()بهبود یافته است تا چندین آرگومان مرتبسازی را بپذیرد. اصلاحشده توسط Chiu-Hsiang Hsu و Furkan Onder.gh-104061: افزودن ثابت
socket.SO_BINDTOIFINDEX.gh-60346: رفع عدم سازگاری ArgumentParser با parse_known_args.
gh-102389: افزودن
windows_31jبه نامهای مستعار کُدکcp932gh-72249: همیشه نام ماژول را در
repr()شیءهایfunctools.partial()بگنجانید. وصله از Furkan Onder و Anilyka Barry.gh-100985: بهروزرسانی HTTPSConnection برای دربرگرفتن مداوم آدرسهای IPv6 هنگام استفاده از پراکسی.
gh-100884: email: رفع خطای تاشدگی کاما در فهرست آدرسها در چند سطر در ترکیب با کدگذاری یونیکد.
gh-95782: رفع مشکل توانایی بازگرداندن آفستهای منفی توسط
io.BufferedReader.tell()،io.BufferedReader.seek()،_pyio.BufferedReader.tell()،io.BufferedRandom.tell()،io.BufferedRandom.seek()و_pyio.BufferedRandom.tell().gh-96310: رفع یک ردگیری در
argparseهنگامی که تمام گزینهها در یک گروه متقابلاً انحصاری حذف شدهاند.gh-93205: رفع اشکالی در
logging.handlers.TimedRotatingFileHandlerکه در آن چندین نمونه هندلر چرخان که به پروندههایی با نام یکسان اما پسوندهای مختلف اشاره میکردند، تداخل ایجاد کرده و پروندههای درست را حذف نمیکردند.bpo-31116: افزودن کدگذاری Z85 به
base64.bpo-44865: افزودن فراخوانی گمشده به تابع محلیسازی در
argparse.bpo-43952: رفع
multiprocessing.connection.Listener.accept()برای پذیرش بایتهای خالی به عنوان کلید احراز هویت. نپذیرفتن بایتهای خالی به عنوان کلید باعث میشود که متوقف شده و به صورت نامحدود معلق بماند.bpo-42125: linecache: نام ماژول را از
__spec__در صورت موجود بودن دریافت کنید. این کار امکان دریافت کد منبع را برای ماژول__main__هنگامی که از یک بارگذار سفارشی استفاده میشود، فراهم میکند.bpo-41122: عدم ارسال درست آرگومانها به
functools.singledispatchmethod()اکنون به جای برخورد با خطای خروج اندیس از کرانها در داخل، یک TypeError پرتاب میکند.bpo-40818: پوسته تعاملی asyncio یا همان REPL اکنون
sys.__interactivehook__را در هنگام راهاندازی اجرا میکند. پیادهسازی پیشفرضsys.__interactivehook__امکان تکمیل خودکار را برای REPL asyncio فراهم میکند. وصله مشارکتدادهشده توسط Rémi Lapeyre.bpo-33775: افزودن متن راهنمای 'default' و 'version' برای محلیسازی در argparse.
مستندات¶
gh-115399: مستندسازی CVE 2023-52425 مربوط به Expat <2.6.0 تحت بخش "XML vulnerabilities".
آزمونها¶
gh-71052: افزودن استثناهای آزمون برای پشتیبانی از اجرای مجموعه آزمونها در اندروید.
gh-71052: فعالسازی
test_concurrent_futuresروی پلتفرمهایی که از نخکشی (threading) پشتیبانی میکنند اما از پردازش چندگانه (multiprocessing) پشتیبانی نمیکنند.gh-115796: کاری کنید که تابع '_testinternalcapi.assemble_code_object' جدول استثنا را برای شیء کد بسازد.
gh-115720: آزمونهای نشت (
-R،--huntrleaks) اکنون خلاصهای از تعداد نشتهای پیدا شده در هر پیمایش را نمایش میدهند.gh-115122: افزودن گزینهی
--bisectبه اجراکنندهی آزمون regrtest: اجرای آزمونهای ناموفق باtest.bisect_cmdبرای شناسایی آزمونهای دارای خطا. وصله توسط Victor Stinner.gh-115596: رفع مشکل
ProgramPriorityTestsدرtest_osکه به طور دائمی اولویت فرایند را تغییر میداد.gh-115556: در ویندوز، کاماهای ارسالشده در آرگومانها به
Tools\buildbot\test.batوPCbuild\\rt.batاکنون به درستی مدیریت میشوند.gh-115420: رفع ترجمهی اهداف هندلر استثنا توسط
_testinternalcapi.optimize_cfg.gh-115376: رفع خطای segfault در
_testinternalcapi.compiler_codegenهنگام دریافت ورودی نامعتبر.
ساخت¶
gh-116313: فراهم کردن امکان اجرای ساختهای WASI تحت wasmtime 18 با پریمیتیوهای WASI 0.2/preview2.
gh-71052: تغییر دادن
sys.platformاندروید از"linux"به"android".gh-116117: بکپورت کردن PR شمارهی 42 کتابخانهی
libb2برای رفع مشکل کامپایل سیپایتون روی ویندوز ۳۲ بیتی باclang-cl.gh-71052: رفع چندین مسئلهی ساخت اندروید
gh-114099: یک پروژهی بستهی آزمون برای اجرای مجموعهی آزمون روی iOS اضافه شد.
gh-115350: رفع مشکل ساخت ماژول ctypes با تعریف -DWIN32_LEAN_AND_MEAN
gh-111225: لینک کردن ماژولهای توسعهای با libpython در اندروید.
gh-115737: نام نصب برای libPython اکنون به درستی برای ساختهای غیر فریمورک macOS تنظیم میشود.
gh-114099: اهداف Makefile برای پشتیبانی از کامپایل یک ساخت فریمورک سازگار با iOS اضافه شدند.
Windows¶
gh-116012: اطمینان حاصل کنید که مقدار
GetLastError()در طول عملیاتهای GIL حفظ میشود.gh-115582: ساخت افزونههای در نظر گرفته شده برای ساخت نخآزاد سیپایتون اکنون نیازمند کامپایل دستی با
/DPy_GIL_DISABLEDهنگام استفاده از نصب معمولی است. انتظار میرود این رفتار در نسخههای آینده تغییر کند.gh-115554: برنامهی نصب اکنون قوانین سختگیرانهتری دربارهی بهروزرسانی مدیر نصب پایتون دارد. به طور کلی، بیشتر کاربران تنها یک اجراکننده نصبشده دارند و تفاوتی مشاهده نخواهند کرد. هنگامی که چندین اجراکننده نصب شده باشند، گزینهی نصب اجراکننده تا زمانی که همه به جز یکی حذف شوند، غیرفعال است. پایین آوردن نسخهی اجراکننده (که هرگز مجاز نبود) اکنون به طور واضحتری مسدود شده است.
gh-115543: مدیر نصب پایتون اکنون میتواند پایتون ۳.۱۳ را هنگام نصب از مایکروسافت استور شناسایی کند و هنگامی که
PYLAUNCHER_ALLOW_INSTALLتنظیم شده باشد، پایتون ۳.۱۲ را به طور پیشفرض نصب خواهد کرد.
مکاواس¶
gh-116145: بهروزرسانی نصبکنندهی مکاوس (macOS) به Tcl/Tk نسخه ۸.۶.۱۴.
IDLE¶
gh-88516: در سیستمعامل مکاوس (macOS)، برای تطابق با رفتار سکو، یک آیکون پراکسی در نوار عنوان پنجرههای ویرایشگر نمایش داده شود.
Tools/Demos¶
رابط C API¶
gh-114626: افزودن مجدد نام
_PyCFunctionFastWithKeywordsکه به اشتباه در پایتون ۳.۱۳ آلفا ۴ حذف شده بود. نام خصوصی قدیمی_PyCFunctionFastWithKeywords(پایتون ۳.۷) را به عنوان یک نام مستعار برای نام عمومی جدیدPyCFunctionFastWithKeywords(پایتون ۳.۱۳a4) حفظ کنید. وصله توسط Victor Stinner.gh-111418: افزودن ماکروهای C به نامهای
PyHASH_MODULUS،PyHASH_BITS،PyHASH_INFوPyHASH_IMAG. وصله توسط Sergey B Kirpichev.
Python 3.13.0 alpha 4¶
Release date: 2024-02-15
امنیت¶
gh-115399: بهروزرسانی libexpat همراه به نسخه ۲.۶.۰
gh-115243: رفع فروپاشیهای احتمالی در
collections.deque.index()هنگامی که صف دوطرفه به طور همزمان تغییر میکند.
هسته و توکارها (Core and Builtins)¶
gh-112087: پیمایشگر معکوس خالی برای فهرست به
reversed()کاهش مییابد. توسط Donghee Nagh-114570: افزودن استثنای
PythonFinalizationError. این استثنا که ازRuntimeErrorمشتق شده است، زمانی که یک عملیات در طول پایاندهی پایتون مسدود شود، بالا برده میشود. وصله توسط Victor Stinner.gh-114695: افزودن تابع
sys._clear_internal_caches()که تمام نهانگاههای داخلی مرتبط با کارایی را پاک میکند (و تابع کمعمومیتترsys._clear_type_cache()را منسوخ میکند).gh-114828: رفع فروپاشیهای کامپایل در نمونهکدهای غیرمعمول با استفاده از
super()در داخل یک درک (comprehension) در بدنه یک کلاس.gh-112069: انطباق متدهای
setوfrozensetبا Argument Clinic.gh-115011: مقداردهندههای اعضا با نوع دادهی عدد صحیح بدون علامت (unsigned)، اکنون از همان محدوده مقادیر معتبر برای اشیایی که دارای متد
__index__()هستند، درست مانندintپشتیبانی میکنند.gh-114887: تغییر اعتبارسنجی نوع سوکت در
create_datagram_endpoint()برای پذیرش تمام سوکتهای غیرجریانی. این کار یک رگرسیون در سازگاری با سوکتهای خام را برطرف میکند.gh-114944: رفع یک شرایط رقابت بین
PyParkingLot_Parkو_PyParkingLot_UnparkAll.gh-113462: محدود کردن تعداد نسخههایی که یک کلاس منفرد میتواند استفاده کند. از استفادهی تعداد زیادی کلاس خودسر از تمام شمارههای نسخه جلوگیری میکند.
gh-76763: تابع توکار
chr()اکنون همیشه برای مقادیر خارج از محدوده معتبر استثنایValueErrorرا بالا میبرد. پیشتر برای مقادیر بسیار بزرگ یا کوچک استثنایOverflowErrorرا بالا میبرد.gh-114806: فراخوانیها به کلاسها، در صورتی که آن کلاسها فراکلاس داشته باشند، دیگر اختصاصی نمیشوند. باگ مربوط به فراخوانی نشدن متد
__call__فراکلاس رفع شد.gh-107944: بهبود پیام خطا برای فراخوانیهای تابع با آرگومان کلیدواژهای نامعتبر از طریق getargs
gh-112529: ساخت نخآزاد دیگر فضایی را برای ساختار
PyGC_Headدر اشیاء پشتیبان زبالهروبی چرخهای تخصیص نمیدهد. تعداد زیادی از فیلدها و ساختارهای دادهی دیگر بهعنوان جایگزین استفاده میشوند، از جملهob_gc_bits،ob_tidو ساختارهای دادهی داخلی mimalloc.gh-114456: کاهش حد بازگشتی در ساخت اشکالزدایی WASI.
gh-114083: کامپایلر تا کردن (folding) دستور LOAD_CONST را همراه با دستور بعدی در یک پاس جداگانه قبل از سایر بهینهسازیها اعمال میکند. این کار رشتهبندی پرش (jump threading) را در شرایط خاصی امکانپذیر میکند.
gh-114388: رفع یک
RuntimeWarningکه هنگام انتساب مقداری شبیه به عدد صحیح که نمونهای ازintنیست به ویژگیای که با عضو ساختار C از نوع type T_UINT و T_ULONG مطابقت دارد، صادر میشود. رفع یکRuntimeWarningمضاعف که هنگام انتساب مقدار عدد صحیح منفی به ویژگیای که با عضو ساختار C از نوع T_UINT مطابقت دارد، صادر میشود.gh-114265: کامپایلر شماره سطرها را پیش از بهینهسازی منتقل میکند، که منجر به فرصتهای بهینهسازی بیشتر شده و نیاز به هک
guarantee_lineno_for_exitsرا برطرف میکند.gh-112529: ساخت نخآزاد اکنون پیادهسازی GC نخایمن خود را دارد که از mimalloc برای یافتن اشیاء ردیابیشده توسط GC استفاده میکند. برخلاف پیادهسازی موجود GC، این پیادهسازی نسلی (generational) نیست.
gh-114050: رفع خطای قطعهبندی (segmentation fault) ناشی از رشتهی قالب نادرست در استثنای
TypeErrorهنگامی که بیش از دو آرگومان بهintارسال میشود.gh-112354: دستور
END_FORاکنون تنها یک مقدار را خارج میکند. این کار برای پشتیبانی بهتر از خروجهای جانبی در حلقهها است.gh-113884: هنگامی که GIL غیرفعال است،
queue.SimpleQueueرا نخایمن کنید.gh-114058: پیادهسازی پایههای حذفکنندهی زائدات ردیف ۲.
gh-113939: frame.clear(): فریم frame.f_locals را نیز پاک کنید، نه فقط محلیهای سریع را. این امر پس از دسترسی به frame.f_locals مرتبط است، زیرا حاوی ارجاعاتی به تمام متغیرهای محلی نیز خواهد بود.
gh-112050: تبدیل
collections.dequeبرای استفاده از Argument Clinic.gh-112050: هنگامی که GIL غیرفعال است، متدها را روی
collections.dequeنخایمن کنید.gh-113464: افزودن یک گزینه (
--enable-experimental-jitبرای ساختهای مبتنی برconfigureیا--experimental-jitبرای ساختهای مبتنی برPCbuild) برای ساخت یک کامپایلر درجا (JIT) آزمایشی، بر اساس copy-and-patchgh-113055: متغیر interp->obmalloc را به یک اشارهگر تبدیل کنید. برای مفسرهایی که وضعیت را با مفسر اصلی به اشتراک میگذارند، این به همان ساختار حافظهی ایستا اشاره دارد. برای مفسرهایی با وضعیت obmalloc خاص خود، در هیپ تخصیص مییابد. تابع free_obmalloc_arenas() را اضافه کنید که آرناهای obmalloc و ساختارهای درخت رادیکس را برای مفسرهایی با وضعیت obmalloc خودشان آزاد میکند.
gh-55664: افزودن هشدار هنگام ایجاد
typeبا استفاده از دیکشنری فضای نام با کلیدهای غیررشتهای. پچشده توسط Daniel Urban و Furkan Onder.gh-104530: استفاده از متغیرهای شرطی بومی Win32.
کتابخانه¶
gh-115392: رفع باگی در
doctestکه در آن شماره سطرهای نادرستی برای توابع دکوراتورشده گزارش میشد.gh-114563: برطرف کردن چندین باگ
format()هنگام استفاده از پیادهسازی C ازDecimal: * نشتی حافظه در برخی موارد نادر هنگام استفاده از گزینهی قالببندیz(اجبار صفر منفی) * خروجی نادرست هنگام اعمال گزینهی قالببندیzبه نوعF(ممیز ثابت باNAN/INFبزرگ) * خروجی نادرست هنگام اعمال گزینهی قالببندی#(شکل جایگزین)gh-102840: برطرف کردن ردگیری گیجکننده هنگامی که عملیاتهای floordiv، mod یا divmod بین نمونههای
fractions.Fractionوcomplexرخ میدهد.gh-115165: اکثر استثناها اکنون هنگام تلاش برای تنظیم ویژگی
__orig_class__روی شیءهای بازگرداندهشده هنگام فراخوانی مستعار عامهایtyping(از جمله مستعار عامهای ایجادشده با استفاده ازtyping.Annotated) نادیده گرفته میشوند. پیش از این فقطAttributeErrorنادیده گرفته میشد. وصلهای توسط Dave Shawley.gh-112903: برطرف کردن خطاهای "issubclass() arg 1 must be a class" در موارد خاصی از وراثت چندگانه با مستعار عامها (رگرسیون در نسخههای آلفای اولیهی ۳.۱۳).
gh-115133: برطرف کردن آزمونها برای
XMLPullParserبا Expat نسخه ۲.۶.۰.gh-115059: متد
io.BufferedRandom.read1()اکنون بافر نوشتن زیرین را تخلیه میکند.gh-79382: استفاده از
**در انتها دیگر امکان تطبیق پروندهها و مسیرهای ناموجود را درglob()بازگشتی فراهم نمیکند.gh-67837: جلوگیری از شرایط رقابت در ایجاد پوشهها در طول استخراج همزمان در
tarfileوzipfile.gh-115060: افزایش سرعت
pathlib.Path.glob()با حذف تطبیق عبارت منظم اضافی.gh-97928: بازگرداندن نسبی رفتار
tkinter.Text.count(). به طور پیشفرض، رفتار نسخههای قدیمیتر پایتون را حفظ میکند، به جز اینکه تنظیمwantobjectsروی 0 دیگر اثری ندارد. افزودن یک پارامتر جدید return_ints: مشخص کردنreturn_ints=Trueباعث میشودText.count()همیشه تعداد واحد را به عنوان یک عدد صحیح به جای یک تاپل ۱-تایی یاNoneبازگرداند.gh-114628: هنگامی که csv.Error در حین مدیریت TypeError بالا آورده میشود، ردگیری TypeError را چاپ نکنید.
gh-85984: اضافهشدن
_POSIX_VDISABLEاز<unistd.h>زبان C بهtermios.gh-114965: بهروزرسانی pip بستهبندیشده به نسخه ۲۴.۰
gh-114959: ماژول
tarfileدیگر هنگام تلاش برای استخراج یک پوشه بر روی یک پرونده، خطاها را نادیده نمیگیرد.gh-114894: افزودن
array.array.clear().gh-114071: پشتیبانی از زیرکلاسهای tuple با استفاده از auto() برای مقدار عضو enum.
gh-109475: برطرف کردن پشتیبانی از مقدار گزینهی صریح "--" در
argparse(به عنوان مثال--option=--).gh-49766: برطرف کردن مقایسهی
date-datetime. اکنون متدهای مقایسهی ویژهای مانند__eq__و__lt__اگر یکی از عملوندهاdateو دیگریdatetimeباشد، به جای نادیده گرفتن قسمت زمان و منطقهی زمانی یا بازگرداندن اجباری "not equal" یا بالا آوردنTypeError، مقدارNotImplementedرا بازمیگردانند. این کار مقایسهی زیرکلاسهایdateوdatetimeرا تقارنپذیرتر میکند و به شما اجازه میدهد رفتار پیشفرض را با بازنویسی متدهای مقایسهی ویژه در زیرکلاسها تغییر دهید.gh-110190: برطرف کردن ساختارهای ctypes با آرایه روی سکوی ویندوز ARM64 با تنظیم
MAX_STRUCT_SIZEروی 32 در stgdict. وصلهای توسط Diego Russogh-114678: اطمینان از اینکه هشدار منسوخشدن برای مشخصکنندهی 'N' در قالب
Decimalبرای مواردی که 'N' در جاهای دیگری در مشخصکنندهی قالب ظاهر میشود، بالا آورده نمیشود. بر اساس وصلهای از Stefan Krah.gh-70303: اگر الگو با "
**" به پایان برسد، هم پروندهها و هم پوشهها ازpathlib.Path.glob()برگردانده میشوند. پیشتر تنها پوشهها برگردانده میشدند.gh-109653: بهبود زمان ایمپورت ماژولهای
importlib.metadataوemail.utils.gh-113280: رفع نشت سوکت باز در موارد نادر هنگام بروز خطا در ایجاد
ssl.SSLSocket.gh-77749: متد
email.policy.EmailPolicy.fold()اکنون اگرutf8برابر با نادرست (false) باشد، همیشه نویسههای غیر اسکی را در سرآیندها رمزگذاری میکند.gh-83383: همگامسازی پایگاه دادهی
dbm.dumbاکنون اگر از زمان باز شدن یا آخرین همگامسازی تغییری ایجاد نشده باشد، یک عملیات بیاثر (no-op) است. پروندهی پوشهی (directory file) یک پایگاه دادهیdbm.dumbخالی که بهتازگی ایجاد شده است، اکنون بلافاصله پس از باز شدن ایجاد میشود و ایجاد آن تا زمان همگامسازی یا بستن به تعویق نمیافتد.gh-91602: افزودن پارامتر فقط-کلیدواژهی filter به
sqlite3.Connection.iterdump()برای فیلتر کردن اشیاء پایگاهداده جهت برونریزی. وصله توسط Mariusz Felisiak.gh-112451: ممنوعیت زیرکلاسسازی از
datetime.timezoneخالصپایتونی. این رفتار با پیادهسازی افزونهی C سازگار است. وصله توسط Mariusz Felisiak.gh-69893: افزودن متد
close()برای پیمایشگر بازگرداندهشده توسطxml.etree.ElementTree.iterparse().gh-109653: کاهش زمان ایمپورت ماژول
threadingبه میزان حدود ۵۰٪. وصله توسط Daniel Hollas.gh-114492: قابلتولید مجدد ساختن نتیجهی
termios.tcgetattr()روی Alpine Linux. پیشتر ممکن بود مقداری دادهی آشغال تصادفی در برخی فیلدها باقی بگذارد.gh-114315: کلاس
threading.Lockرا به یک کلاس واقعی تبدیل کنید، نه یک تابع کارخانهای. متد__new__را به نوع_thread.lockاضافه کنید.gh-100414: ماژول
dbm.sqlite3را به عنوان یک بکاند بهdbmاضافه کنید و آن را به عنوان بکاند پیشفرض جدیدdbmقرار دهید. این وصل توسط Raymond Hettinger و Erlend E. Aasland ارائه شده است.gh-113267: تغییرات ایجاد شده در gh-106584 را که باعث نامتوازن شدن فراخوانی متدهای
startTest()وstopTest()درTestResultشده بودند، برگردانید.gh-75128: در صورت در دسترس بودن IPv6 اما پشتیبانی نکردن واقعی رابط از آن، خطای
OSErrorرا درasyncio.BaseEventLoop.create_server()نادیده بگیرید.gh-114423: شناسههای
_DummyThreadدرthreading._activeاکنون هنگام مرگ نخ مربوطه به طور خودکار حذف میشوند.gh-114257: خطای
FileNotFoundرا درctypes.util.find_library()نادیده بگیرید و در لینوکس مقدارNoneرا برگردانید.gh-114321: ارائهی ثابتهای بیشتر مختص به پلتفرم در ماژول
fcntlروی لینوکس، macOS، FreeBSD و NetBSD.gh-114328: توابع
tty.setcbreak()و تابع جدیدtty.cfmakecbreak()دیگر پرچم ICRLF ورودی ترمینال را پاک نمیکنند. این کار یک رگرسیون معرفیشده در نسخهی 3.12 را رفع میکند که دیگر با نحوهی تعریف حالت cbreak توسط سیستمعاملها در صفحات راهنمایstty(1)مطابقت نداشت.gh-114281: راهنماهای نوع را از
Lib/asyncio/staggered.pyحذف کنید. در عوض باید از حاشیهنویسیهای موجود در پروژهی typeshed استفاده شود.gh-101438: جلوگیری از چرخه ارجاع در ElementTree.iterparse. پیمایشگر بازگرداندهشده توسط
ElementTree.iterparseممکن است یک توصیفگر پرونده را نگه دارد. چرخه ارجاع مانع از پاکسازی سریع توصیفگر پرونده میشود اگر پیمایشگر بازگرداندهشده تمام نشده باشد.gh-114198: امضا (signature) برای متد
__replace__درdataclassesاکنون دارای اولین آرگومانی به نامselfاست، نهobj.gh-104522: خطای
OSErrorکه هنگام اجرای یک زیرفرایند (subprocess) صادر میشود، اکنون تنها در صورتی ویژگی filename را روی cwd تنظیم میکند که خطا به دلیل تلاش ناموفق برای تغییر پوشهی جاری ایجاد شده باشد.gh-114149: کلاس Enum: مدیریت صحیح زیرکلاسهای tuple در
__new__سفارشی.gh-83648: پشتیبانی از منسوخسازی گزینهها، آرگومانهای جایگاهی و زیردستورها در
argparse.gh-114087: افزایش سرعت
dataclasses.asdictتا ۱.۳۵ برابر.gh-109534: رفع نشت ارجاع در
asyncio.selector_events.BaseSelectorEventLoopهنگام شکست دستدهیهای (handshake) SSL. وصله (patch) ارائه شده توسط جیمی فان (Jamie Phan).gh-79634: پذیرش اشیاء شبهمسیر به عنوان الگوها در
pathlib.Path.glob()وrglob().gh-112202: اطمینان از اینکه فراخوانی
asyncio.Condition.notify()در صورت لغو همزمان یا بروز هر خطای دیگری درTaskبیدارشده، از دست نرود.gh-113951: اصلاح رفتار متدهای
tag_unbind()در کلاسهایtkinter.Textوtkinter.Canvasبا سه آرگومان. پیش از این،widget.tag_unbind(tag, sequence, funcid)اتصال جاری برای sequence را از بین میبرد، sequence را بدون اتصال رها میکرد و دستور funcid را حذف مینمود. اکنون این متد فقط funcid را از اتصال مربوط به sequence حذف کرده، سایر دستورات را حفظ میکند و دستور funcid را حذف مینماید. این متد sequence را تنها در صورتی بدون اتصال باقی میگذارد که funcid آخرین دستور متصلشده بوده باشد.gh-97959: رفع مشکل رندر کردن متدهای کلاس، متدهای کراندار، نامهای مستعار (alias) متدها و تابعها در
pydoc. متدهای کلاس دیگر یادداشت «method of builtins.type instance» را ندارند. یادداشتهای متناظر اکنون برای متدهای کلاس و متدهای بیکران اضافه شدهاند. نامهای مستعار متدها و تابعها اکنون دارای ارجاعاتی به ماژول یا کلاسی هستند که مبدأ در آن تعریف شده است، اگر با مورد جاری تفاوت داشته باشد. متدهای کراندار اکنون در بخش متدهای ایستا فهرست میشوند. متدهای کلاسهای توکار (builtin) و همچنین متدهای کلاسهای پایتون اکنون پشتیبانی میشوند.gh-113796: افزودن بررسیهای اعتبارسنجی بیشتر در سازندهی
csv.Dialect. اگر نویسهی یکسانی در نقشهای مختلف استفاده شود، خطایValueErrorصادر میشود.gh-113732: رفع پشتیبانی از
QUOTE_NOTNULLوQUOTE_STRINGSدرcsv.reader().gh-113225: افزایش سرعت
pathlib.Path.walk()با استفاده ازos.DirEntry.pathدر صورت امکان.gh-89039: هنگامی که متد replace() روی یک زیرکلاس از datetime، date یا time فراخوانی میشود، سازندهی مشتقشده به درستی فراخوانی شود. پیش از این، تنها سازندهی کلاس پایه فراخوانی میشد.
همچنین، مطمئن شوید که هنگام ایجاد زیرکلاسها در متدهای مختلف، مقادیر fold غیرصفر را ارسال میکنید. پیش از این، fold به طور بیصدا نادیده گرفته میشد.
gh-112919: افزایش سرعت
datetime.datetime.replace()،datetime.date.replace()وdatetime.time.replace().gh-59013: تنظیم نقطهی توقف (breakpoint) روی اولین سطر قابل اجرای تابع، به جای سطر تعریف تابع هنگامی که کاربر با استفاده از
pdbدستورbreak funcرا اجرا میکند.gh-112343: بهبود مدیریت متغیرهای کمکی pdb برای جلوگیری از جایگزینی محتوای رشتهها.
gh-112240: افزودن گزینه به رابط خط فرمان ماژول تقویم برای مشخص کردن روز هفته جهت شروع هر هفته. وصله (patch) توسط استیون وارد (Steven Ward).
gh-111741: شناسایی
image/webpبه عنوان یک قالب استاندارد در ماژولmimetypes.gh-43457: اصلاح متد ابزارک
tkinterیعنیwm_attributes(). این متد اکنون نام ویژگی را بدون پیشوند منفی میپذیرد تا ویژگیهای پنجره را دریافت کند و اجازه میدهد ویژگیها و مقادیر را برای تنظیم به عنوان آرگومانهای کلیدواژهای مشخص کنید. افزودن آرگومان کلیدواژهای اختیاری جدید return_python_dict: فراخوانیw.wm_attributes(return_python_dict=True)ویژگیها را به جای یک تاپل به عنوان یک دیکشنری برمیگرداند. فراخوانیw.wm_attributes()اکنون اگر wantobjects روی 0 تنظیم شده باشد، به جای رشته، یک تاپل برمیگرداند.gh-82626: بسیاری از توابع اکنون در صورت ارسال یک مقدار بولی به عنوان آرگومان توصیفگر پرونده، یک هشدار صادر میکنند.
gh-111051: بررسی تغییر پرونده در طول اشکالزدایی با
pdbاضافه شد.gh-110345: نمایش سطح پچ Tcl/Tk (به جای نسخه) در
tkinter._test().gh-38807: رفع وضعیت رقابت در
trace. به جای بررسی وجود پوشه و ایجاد آن، مستقیماًos.makedirs()را با آرگومان کلیدواژهایexist_ok=Trueفراخوانی کنید.gh-75705: تنظیم پاکت unixfrom در
mailbox.mboxوmailbox.MMDF.gh-106233: اصلاح stacklevel در
InvalidTZPathWarningدر طول ایمپورت ماژولzoneinfo.gh-105102: اجازه دادن به
ctypes.Unionبرای قرارگیری تو در تو درctypes.Structureهنگامی که ترتیب بایت سیستم مخالف کلاسها است.gh-104282: رفع واگردانی اشارهگر تهی در
lzma._decode_filter_properties()به دلیل مدیریت نادرست فیلترهای BCJ با ویژگیهای با طول صفر. پچ توسط Radislav Chugunov.gh-96471: افزودن خاتمه دادن به
queue.Queueباshutdown().gh-101599: قالببندی گزینههای پرچم argparse برای حذف تکرار تغییر یافت.
gh-85984: افزودن توابع شبهپایانه POSIX یعنی
os.posix_openpt()،os.grantpt()،os.unlockpt()وos.ptsname().gh-102512: هنگامی که
os.fork()از یک نخ خارجی (معروف به_DummyThread) فراخوانی میشود، نوع نخ در یک فرایند فرزند به_MainThreadتغییر میکند. همچنین نام و وضعیت دیمون آن تغییر میکند، اکنون میتوان آن را join کرد.gh-88569: افزودن
os.path.isreserved()، که مسیرنامهای رزرو شده مانند "NUL"، "AUX" و "CON" را شناسایی میکند. این تابع فقط در ویندوز در دسترس است.منسوخ کردن
pathlib.PurePath.is_reserved().bpo-38364: توابع
inspectیعنیisgeneratorfunction،iscoroutinefunction،isasyncgenfunctionاکنون از توابع پیچیده شده باfunctools.partialmethodبه همان روشی که ازfunctools.partialپشتیبانی میکنند، پشتیبانی میکنند.
مستندات¶
gh-115233: اصلاح یک نمونه برای
LoggerAdapterدر کتابچه راهنمای گزارشگیری.gh-114123: انتقال رشته مستند ماژول
csvبه ماژولcsvبه جای صادر کردن مجدد آن از ماژول داخلی_csv، و حذف__doc__ازcsv.__all__.انتقال
csv.__version__به ماژولcsvبه جای صادر کردن مجدد آن از ماژول داخلی_csv، و حذف__version__ازcsv.__all__.
آزمونها¶
ساخت¶
gh-115167: جلوگیری از قرارگیری بستهی
vcruntime140_threads.dllهنگام ساخت با Visual Studio 2022 نسخهی 17.8.gh-113632: ارتقای WASI به سطح پلتفرم ۲ و حذف Emscripten از سطح ۳ در configure.ac.
gh-114099: پروندههای configure و Makefile بازسازی شدند تا از ساختهای چارچوب در پلتفرمهای اپل بهجز macOS پشتیبانی کنند.
gh-114875: افزودن
getgrent()به عنوان پیشنیازی برای ساخت ماژولgrp.
Windows¶
gh-115049: رفع خطای راهانداز
py.exeهنگام اجرا توسط کاربرانی که پروفایل کاربری ندارند.gh-115009: بهروزرسانی نصبکنندهی ویندوز برای استفاده از SQLite 3.45.1.
gh-109991: بهروزرسانی ساخت ویندوز برای استفاده از OpenSSL 3.0.13.
gh-111239: بهروزرسانی ساختهای ویندوز برای استفاده از zlib v1.3.1.
gh-100107: راهانداز
py.exeدیگر هنگام اجرای اسکریپتی حاوی خط مفسر/usr/bin/envسعی نخواهد کرد هدایتکنندهی فروشگاه مایکروسافت (Microsoft Store redirector) را اجرا کند.gh-112984: افزودن باینریهای نخآزاد به نصبکنندهی ویندوز به عنوان یک جزء اختیاری.
gh-89240: به
multiprocessingاجازه میدهد تا استخرهایی با بیش از ۶۲ فرایند ایجاد کند.
مکاواس¶
gh-115009: بهروزرسانی نصبکنندهی macOS برای استفاده از SQLite 3.45.1.
gh-109991: بهروزرسانی نصبکنندهی macOS برای استفاده از OpenSSL 3.0.13.
gh-114490: افزودن پشتیبانی پیوند Mach-O برای
platform.architecture().gh-87804: در macOS نتیجهی
os.statvfsوos.fstatvfsاکنون اندازهی دیسکهای بسیار بزرگ را به درستی گزارش میکند؛ در نسخههای قبلی، تعداد بلوکهای گزارششده برای دیسکهایی با حداقل 2**32 بلوک اشتباه بود.
IDLE¶
Tools/Demos¶
gh-113516: تنظیم نکردن
LDSHAREDهنگام ساخت برای WASI.gh-109991: بهروزرسانی جریانهای کاری GitHub CI برای استفاده از OpenSSL 3.0.13 و multissltests برای استفاده از 1.1.1w، 3.0.13، 3.1.5 و 3.2.1.
gh-115015: رفع یک باگ در Argument Clinic که کد نادرستی را برای متدهایی بدون پارامتر که از همقرارداد فراخوانی METH_METHOD | METH_FASTCALL | METH_KEYWORDS استفاده میکنند، تولید میکرد. فقط تعداد پارامتر جایگاهی بررسی میشد؛ هر آرگومان کلیدواژهای ارسالی بهصورت بیصدا پذیرفته میشد.
رابط C API¶
gh-111140: توابع
PyLong_AsNativeBytes()،PyLong_FromNativeBytes()وPyLong_FromUnsignedNativeBytes()را اضافه میکند.gh-114685: تابع
PyBuffer_FillInfo()اکنون اگر با پرچمهایPyBUF_READیاPyBUF_WRITEفراخوانی شود، یکSystemErrorبالا میآورد. این پرچمها فقط باید با API مربوط بهPyMemoryView_*C استفاده شوند.gh-114685: تابع
PyObject_GetBuffer()اکنون اگر با پرچمهایPyBUF_READیاPyBUF_WRITEفراخوانی شود، یکSystemErrorبالا میآورد. این پرچمها فقط باید با API مربوط بهPyMemoryView_*C استفاده شوند.gh-114626: اضافه کردن تعریف نوعهای (typedef)
PyCFunctionFastوPyCFunctionFastWithKeywords(دقیقاً مشابه تعریف نوعهای موجود_PyCFunctionFastو_PyCFunctionFastWithKeywords، فقط بدون پیشوند_در ابتدا).gh-114329: اضافه کردن
PyList_GetItemRef()که مشابهPyList_GetItem()است، اما به جای یک ارجاع امانتی، یک ارجاع قوی برمیگرداند.gh-110850: اضافه کردن PyTime C API:
نوع دادهی
PyTime_t.ثابتهای
PyTime_MINوPyTime_MAX.توابع
PyTime_AsSecondsDouble()،PyTime_Monotonic()،PyTime_PerfCounter()وPyTime_Time().
توسط Victor Stinner وصل شد.
gh-112066: اضافه کردن
PyDict_SetDefaultRef(): اگر کلید از قبل موجود نباشد، یک کلید و مقدار را در دیکشنری درج کنید. این شبیه بهdict.setdefault()است، اما یک مقدار عدد صحیح برمیگرداند که نشان میدهد آیا کلید از قبل وجود داشته است یا خیر. همچنین شبیه بهPyDict_SetDefault()است، اما به جای ارجاع امانتی، یک ارجاع قوی برمیگرداند.
پایتون ۳.۱۳.۰ آلفا ۳¶
تاریخ انتشار: ۲۰۲۴-۰۱-۱۷
امنیت¶
هسته و توکارها (Core and Builtins)¶
gh-107901: کامپایلر بلوکهای پایهای را که دارای بررسی شکنندهی ارزیابی (eval breaker check)، بدون شماره سطر و دارای چندین پیشین هستند، تکثیر میکند.
gh-107901: پرشی که از یک کنترلکنندهی استثنا به کد عادی برمیگردد، دیگر شکنندهی ارزیابی را بررسی نمیکند.
gh-113655: حد بازگشتی C را روی ویندوز روی ۴۰۰۰ و روی لینوکس/OSX روی ۱۰۰۰۰ تنظیم کنید. به نظر میرسد این مقدار نزدیک به نقطهی بهینه برای حفظ ایمنی باشد، بدون اینکه سازگاری با نسخههای قبلی به خطر بیفتد.
gh-113710: افزودن اثرات پشتهی نوعدهیشده به DSL مفسر، به همراه حاشیهنویسیهای مختلف دستورالعمل.
gh-77046: روی ویندوز، توصیفگرهای پرونده که دستههای ویندوز را بستهبندی میکنند، اکنون بهطور پیشفرض غیرقابل ارثبری ایجاد میشوند (PEP 446). پچ توسط Zackery Spytz و Victor Stinner.
gh-113853: تضمین این که تمام اجراکنندهها پیشرفت کنند. این موضوع سپس تضمین میکند که اجرای سطح ۲ همیشه پیشرفت میکند.
gh-113753: رفع مشکلی که در آن ممکن بود نهاییساز شیءهای
PyAsyncGenASendدر صورت تخصیص از یک فهرست آزاد فراخوانی نشود.gh-107901: کامپایلر به گونهای تغییر یافت که پرشهای مصنوعی که در انتهای حلقه قرار ندارند، دیگر شکنندهی ارزیابی (eval breaker) را بررسی نکنند.
gh-113703: رفع یک رگرسیون در ماژول
codeopکه باعث میشد افاسترینگهای ناقص به اشتباه شناسایی شوند. وصله توسط Pablo Galindogh-89811: بررسی معتبر بودن
tp_version_tagپیش از انجام تخصصیسازیهای بایتکد که به قابل استفاده بودن این مقدار وابستهاند.gh-111488: تغییر پیغام خطا در صورت نبودن کلیدواژهی 'in' پس از 'for' در درکهای فهرستی
gh-113657: رفع مشکلی که باعث میشد بهروزرسانیهای مهم اشارهگر دستور از ردهای سطح دوم بهینهسازی و حذف شوند.
gh-113603: رفع باگی که در آن یک NOP اضافی حذف نمیشد و باعث شکست خوردن یک شرط در کامپایلر در حالت دیباگ میشد.
gh-113602: رفع خطایی که باعث میشد پارسر تلاش کند خطاهای موجود را بازنویسی کند و در این فرایند دچار از کارافتادگی (Crash) شود. وصله توسط Pablo Galindo
gh-113486: دیگر رویدادهای اضافی
PY_UNWINDبرای فراخوانیهای بهینهسازیشده به کلاسها صادر نمیشوند.gh-113297: رفع خطای قطعی حافظه (segfault) در کامپایلر روی دستور با با ۱۹ مدیر زمینه.
gh-111375: استفاده از
NULLدر پشتهی استثنا صرفاً برای نشان دادن این که یک استثنا مدیریت شده است. وصله توسط Carey Metcalfe.gh-112215: افزایش حد بازگشت C به میزان ضریب ۳ برای ساختهای غیردیباگ، به جز پلتفرمهای وبآسمبلی و s390 که بدون تغییر ماندهاند. این کار برخی از رگرسیونها را در نسخهی ۳.۱۲ با بازگشت عمیق که کدهای توکار (C) و پایتون را ترکیب میکنند، کاهش میدهد.
gh-113054: رفع باگی که در آن یک NOP اضافی حذف نمیشد و باعث شکست خوردن یک شرط در کامپایلر در حالت دیباگ میشد.
gh-106905: استفاده از وضعیت مخصوص به هر پارسر درخت نحوی انتزاعی (AST) به جای وضعیت سراسری برای ردیابی عمق بازگشت در پارسر درخت نحوی انتزاعی (AST) جهت جلوگیری از بروز شرط رقابت بالقوه به دلیل تجزیه همزمان.
این مسئله عمدتاً در نسخهی ۳.۱۱ توسط کاربران چندرشتهای
ast.parse()نمایان شد. در نسخهی ۳.۱۲، تغییری در زمانبندی فعالسازی زبالهروبی مانع از وقوع شرط رقابت شد.gh-108866: تغییر API و قرارداد
_PyExecutorObjectبرای بازگرداندن اشارهگر next_instr به جای قاب (frame)، و اجرای همیشه حداقل یک دستور.gh-112943: محاسبهی صحیح آفستهای ستون پایانی برای توکنهای چندخطی در ماژول
tokenize. وصله توسط Pablo Galindogh-112125: رفع این مشکل که
None.__ne__(None)بهجایFalseمقدارNotImplementedبرمیگرداند.gh-74616: تابع
input()اکنون اگر اعلان شامل نویسههای تهی تعبیهشده باشد، هنگام خروجی گرفتن روی پایانه بهجای قطع بیصدا، یک ValueError بالا میآورد.gh-112716: رفع خطای SystemError در دستور
importو در متدهای__reduce__()از انواع توکار هنگامی که__builtins__یک دیکشنری نیست.gh-112730: استفاده از رنگ برای برجستهسازی مکانهای خطا در ردگیریها. وصله توسط پابلو گالیندو (Pablo Galindo)
gh-112625: رفع باگی که در آن یک شیء bytearray میتواند در حین پیمایش روی یک آرگومان در متد
bytearray.join()پاکسازی شود که این امر ممکن است منجر به خواندن حافظه پس از آزاد شدن آن شود.gh-112660: پاک نکردن خطاهای غیرمنتظره در حین قالببندی پیامهای خطا برای ImportError و AttributeError در ماژولها.
gh-105967: دور زدن باگی در کتابخانهی zlib پلتفرم macOS اپل که در آن
zlib.crc32()وbinascii.crc32()میتوانند نتایج نادرستی روی ورودیهای چند گیگابایتی تولید کنند. از جمله هنگام استفاده ازzipfileروی فایلهای زیپ حاوی دادههای حجیم.gh-95754: ارائه یک پیام خطای بهتر هنگام دسترسی به ویژگیهای نامعتبر روی ماژولهای تا حدی مقداردهی اولیه شده. منبع ماژول مورد دسترسی اکنون برای کمک به مسئلهی رایج پوشاندن سایر ماژولها در پیام گنجانده شده است.
gh-112217: افزودن بررسی برای نوع
__cause__بازگردانده شده از فراخوانی نوعTدرraise from T.gh-111058: تغییر coro.cr_frame/gen.gi_frame به طوری که پس از بسته شدن همروال/تولیدگر،
Noneبرگرداند. این کار باگی را برطرف میکند که در آنgetcoroutinestate()وgetgeneratorstate()وضعیت اشتباهی را برای یک همروال/تولیدگر بسته برمیگردانند.gh-112388: رفع خطایی که باعث میشد پارسر تلاش کند خطاهای توکنساز را بازنویسی کند. وصله توسط پابلو گالیندو (Pablo Galindo)
gh-112387: رفع موقعیتهای خطا برای رشتههای رمزگشاییشده با خطاهای توکنسازی معکوس. وصله توسط پابلو گالیندو (Pablo Galindo)
gh-99606: یکسانسازی کد تولیدشده برای یک افاسترینگ خالی با کد یک رشتهی معمولی خالی.
gh-112367: جلوگیری از رفتار تعریفنشده هنگام استفاده از ترامپولینهای perf با آزاد نکردن آرناهای کد تا زمان خاموش شدن. وصله توسط پابلو گالیندو (Pablo Galindo)
gh-112320: مترجم لایه ۲ اکنون سطح اطمینان برای ماندن «روی رد» (یعنی خارج نشدن به مفسر لایه ۱) را برای دستورات شاخه بر اساس تعداد بیتهای تنظیم شده در «شمارنده» شاخه ردیابی میکند. ترجمه رد زمانی پایان مییابد که سطح اطمینان به زیر ۱/۳ افت کند.
gh-109598: توابع
PyComplex_RealAsDouble()/PyComplex_ImagAsDouble()اکنون تلاش میکنند پیش از بازگشت به متد__float__()، با استفاده از متد__complex__()یک شیء را به یک نمونهcomplexتبدیل کنند. وصله توسط سرگی بی. کیرپیچف (Sergey B Kirpichev).gh-94606: رفع خطای UnicodeEncodeError زمانی که
email.message.get_payload()پیامی را با یک نویسهی جانشین یونیکد میخواند و محتوای پیام برای کدگذاری surrogateescape به خوبی فرمت نشده است. وصله توسط سیدنی مارکوویتز (Sidney Markowitz).bpo-21861: استفاده از نام کلاس واقعی شیء در
_io.FileIO.__repr__()،_io._WindowsConsoleIO()و_io.TextIOWrapper.__repr__()، برای سازگار کردن این متدها با زیرکلاسها.bpo-34392: تابع
sys._is_interned()اضافه شد.
کتابخانه¶
gh-114077: رفع خطای احتمالی
OverflowErrorدر متدsocket.socket.sendfile()هنگامی که مقدار count بزرگتر از 2 گیگابایت در سکوی 32 بیتی ارسال میشود.gh-111803: ماژول
plistlibاکنون از بارگذاری فهرستهای با تو در تویی بیشتر در قالب دودویی پشتیبانی میکند.gh-114014: رفع باگی در
fractions.Fractionکه در آن یک رشتهی نامعتبر با استفاده ازdدر بخش اعشاری، خطای متفاوتی را در مقایسه با سایر حروف/نویسههای نامعتبر ایجاد میکند. وصله توسط Jeremiah Gabriel Pascual.gh-108364: متد
sqlite3.Connection.iterdump()اکنون تضمین میکند که پیش از تخلیهی طرحوارهی پایگاه داده، در صورتی که هرگونه نقض کلید خارجی وجود داشته باشد، پشتیبانی از کلید خارجی غیر فعال شود. وصله توسط Erlend E. Aasland و Mariusz Felisiak.gh-113971: ویژگی
._compresslevelکه پیشتر درzipfile.ZipInfoمحافظت میشد، به عنوان.compress_levelعمومی شده است و نام قدیمی_compresslevelبرای حفظ سازگاری همچنان به عنوان یک ویژگی (property) در دسترس باقی میماند.gh-113877: رفع متد
winfo_pathname()درtkinterروی ویندوز 64 بیتی.gh-113868: مقادیر
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_UNIX03وmmap.MAP_TPROاضافه شدند. همهی آنها پرچمهایmmap(2)روی سیستمعامل macOS هستند.gh-113848: مدیران زمینهی
asyncio.TaskGroup()وasyncio.timeout()اکنون زیرکلاسهایCancelledErrorو همچنین خودCancelledErrorدقیق را مدیریت میکنند.gh-113661: اجراکنندهی آزمون unittest: اگر آزمونها نادیده گرفته شدند، با کد 5 خارج نشوید. هدف از خروج با کد 5 تشخیص مشکلاتی بود که در آنها مجموعه آزمون اصلاً کشف نشده بود. اگر آزمونها را نادیده گرفتهایم، به درستی کشف شده است.
gh-96037: قرار دادن
TimeoutErrorدر زمینهی استثنایی که هنگام خروج از یک بلوک منقضی شدهیasyncio.timeout()ایجاد شده است.gh-113781: سکوت در برابر خطای غیرقابلپرتاب AttributeError هنگام انتشار هشدارها در طول نهاییسازی پایتون.
gh-113238: افزودن
Anchorبهimportlib.resources(بهمنظور تطابق کد با مستندات)gh-111693: تابع
asyncio.Condition.wait()اکنون همان نمونهیCancelledErrorرا که ممکن است باعث قطع آن شده باشد، دوباره بالا میآورد. رفع شرایط رقابت در تابعasyncio.Semaphore.acquire()هنگام قطع شدن با یکCancelledError.gh-113791: افزودن
CLOCK_MONOTONIC_RAW_APPROXوCLOCK_UPTIME_RAW_APPROXبه ماژولtimeدر سیستمعامل macOS. اینها ساعتهایی هستند که در macOS نسخهی 10.12 یا جدیدتر در دسترس هستند.gh-112932: بازیابی توانایی
zipfileبرای استفاده ازextractallبرای پروندههای فشردهای که حاوی یک ورودی پوشهی "/" هستند، همانطور که معمولاً توسط برخی از صادرکنندگان دادهی ویکی یا سیستمهای پیگیری باگ به پروندههای فشرده اضافه میشود.gh-113568: بالا آوردن هشدارهای منسوخسازی از
pathlib.PurePathو نه کلاس پایهی خصوصی آن یعنیPurePathBase.gh-113594: رفع خطای
UnicodeEncodeErrorدر ماژولemailهنگام بستهبندی مجدد سطرهایی که شامل یک بخش رمزگذاریشدهی unknown-8bit هستند و پس از آن یک بخش رمزگذاریشدهی غیر unknown-8bit قرار دارد.gh-113538: در
asyncio.StreamReaderProtocol.connection_made()، یک فراخوانی بازگشتی وجود دارد که اگر وظیفهی پوششدهندهی «فراخوانی بازگشتی متصلشده» با شکست مواجه شود، خطایی را ثبت میکند. این فراخوانی بازگشتی خود در صورت لغو شدن وظیفه با شکست مواجه میشد. با بررسی اینکه آیا وظیفه ابتدا لغو شده است یا خیر، از این امر جلوگیری کنید. اگر چنین است، ترانسپورت را ببندید اما خطایی ثبت نکنید.gh-113626: افزودن پشتیبانی از آرگومان allow_code در ماژول
marshal. ارسالallow_code=Falseمانع از سریالسازی و واسریالسازی شیءهای کد میشود که بین نسخههای پایتون سازگار نیستند.gh-85567: رفع هشدارهای منابع برای پروندههای بستهنشده در رابطهای خط فرمان
pickleوpickletools.gh-113537: پشتیبانی از بارگذاری
strدرplistlib.loads().gh-89850: افزودن پیادهسازیهای پیشفرض متدهای
pickle.Pickler.persistent_id()وpickle.Unpickler.persistent_load()در پیادهسازی C. فراخوانیsuper().persistent_id()وsuper().persistent_load()در زیرکلاسهای پیادهسازی C از کلاسهایpickle.Picklerوpickle.Unpicklerدیگر موجب بازگشتی بینهایت نمیشود.gh-113569: مشخص کردن اینکه آیا هیچ فراخوانی واقعی در خطای
assert_has_calls()مربوط به unittest وجود داشته است یا خیر.gh-101225: افزایش صف انتظار (backlog) برای شیءهای
multiprocessing.connection.Listenerایجادشده توسطmultiprocessing.managerوmultiprocessing.resource_sharerبهمنظور کاهش چشمگیر خطر دریافت خطای رد اتصال (connection refused) هنگام ایجاد یکmultiprocessing.connection.Connectionبه آنها.gh-113568: ایجاد رویدادهای حسابرسی از
pathlib.Pathو نه کلاس پایه خصوصی آن یعنیPathBase.gh-113543: اطمینان از اینکه
webbrowser.MacOSXOSAScriptرویداد حسابرسیwebbrowser.openرا ارسال میکند.gh-113028: هنگامی که ارجاع دوم به یک رشته در ورودی
pickleظاهر میشود و پیادهسازی پایتون در حال استفاده است، تضمین میشود که یک کپی منفرد پیکل (pickle) شود و یک شیء واحد هنگام بارگذاری مجدد به اشتراک گذاشته شود. پیشتر، در پروتکل 0، هنگامی که یک رشته حاوی نویسههای خاصی (مانند نویسهی خط جدید) بود، به ایجاد شیءهای تکراری منجر میشد.gh-113421: رفع مشکل گزارشگیر multiprocessing برای
%(filename)s.gh-111784: رفع خطاهای حافظه (segfaults) در ماژول
_elementtree. رفع نخستین خطای حافظه در حین تخصیصزدایی نمونههای_elementtree.XMLParserبا نگهداری ارجاع قوی به ماژولpyexpatدر وضعیت ماژول برای طول عمر کپسول (capsule). رفع دومین خطای حافظه که در همان فرایند تخصیصزدایی رخ میدهد با نگهداری ارجاع قوی به ماژول_elementtreeدر ساختارXMLParserبرای طول عمر ماژول_elementtree.gh-113407: رفع ایمپورت ماژول
unittest.mockهنگامی که سیپایتون بدون رشتههای مستند (docstrings) ساخته شده است.gh-113320: اصلاح رگرسیون در نسخهی ۳.۱۲ پایتون که در آن کلاسهای
Protocolکه به عنوانruntime-checkableعلامتگذاری نشده بودند، به طور غیرضروری مورد وارسی دروننگر قرار میگرفتند و در صورت داشتن اعضای مشکلساز، بهطور بالقوه باعث پرتاب استثناها میشدند. وصله توسط Alex Waygood.gh-53502: افزودن یک گزینهی جدید
aware_datetimeدرplistlibبرای بارگذاری یا برونریزی تاریخساعتهای آگاه (aware datetime).gh-113358: اصلاح رندر کردن ردگیریها (tracebacks) با استثناهایی که دارای یک متد __getattr__ معیوب هستند.
gh-113214: رفع یک
AttributeErrorدر طول لغو پروتکل SSL در asyncio در سناریوهای SSL روی SSL.gh-113246: بهروزرسانی pip بستهبندیشده به نسخهی ۲۳.۳.۲.
gh-87264: اصلاح متد list() در tarfile برای نمایش نوع پرونده.
gh-112182: متد
asyncio.futures.Future.set_exception()اکنون به جای معلق ماندن یا سایر رفتارهای نادرست،StopIterationرا بهRuntimeErrorتبدیل میکند. وصلهی ارائه شده توسط Jamie Phan.gh-113225: افزایش سرعت
pathlib.Path.glob()با استفاده ازos.DirEntry.pathدر صورت امکان.gh-113149: بهبود پیام خطا هنگامی که یک آرایه یا شیء JSON حاوی یک کامای اضافی (trailing comma) است. وصله توسط Carson Radtke.
gh-113117: ماژول
subprocessاکنون میتواند از تابعos.posix_spawn()باclose_fds=Trueدر پلتفرمهایی کهposix_spawn_file_actions_addclosefrom_npدر آنها موجود است، استفاده کند. وصله توسط Jakub Kulik.gh-113199: هنگامی که طول محتوا مشخص است، متدهای
http.client.HTTPResponse.read1وhttp.client.HTTPResponse.readlineرا وادار کنید پس از خواندن تمام دادهها، IO را ببندند. این وصله توسط Illia Volochii تهیه شده است.gh-113191: افزودن پشتیبانی از
os.fchmod()و توصیفگر پرونده درos.chmod()روی ویندوز.gh-113188: رفع مشکل
shutil.copymode()وshutil.copystat()روی ویندوز. پیشتر اگر dst یک پیوند نمادین بود، آنها به شکل متفاوتی عمل میکردند: اگر follow_symlinks برابر با مقداری درست (true) بود یا src یک پیوند نمادین نبود، بیتهای دسترسی خودِ dst (بهجای پروندهای که به آن اشاره میکند) را تغییر میدادند، و اگر follow_symlinks برابر با مقداری نادرست (false) بود و src یک پیوند نمادین بود، بیتهای دسترسی را تغییر نمیدادند.gh-113119: تابع
os.posix_spawn()اکنونenv=Noneرا میپذیرد که باعث میشود فرایند تازه ایجاد شده از محیط فرایند جاری استفاده کند. این وصله توسط Jakub Kulik تهیه شده است.gh-113202: افزودن یک گزینهی
strictبه تابعbatched()در ماژولitertools.gh-61648: شناسایی شمارهی سطرهای ویژگیها در آزمونهای مستنداتی (doctests).
gh-113175: هگامسازی با importlib_metadata 7.0، شامل بهبود حاشیهنویسیهای نوع، رفع مشکل مربوط به بستههای دارای پیوند نمادین در
package_distributions، افزودنEntryPoints.__repr__، معرفی اسکریپتdiagnose، افزودن ویژگیDistribution.origin، و حذف دسترسی منسوخ بهEntryPointاز طریق اندیس عددی (رفتار تاپل).gh-59616: افزودن پشتیبانی از
os.lchmod()و آرگومان follow_symlinks درos.chmod()روی ویندوز. توجه داشته باشید که مقدار پیشفرض follow_symlinks در تابعos.lchmod()روی ویندوز برابر باFalseاست.gh-112559: توابع
signal.signal()وsignal.getsignal()دیگر تابعreprرا روی هندلرهای فراخوانیپذیر فراخوانی نمیکنند. توابعasyncio.run()وasyncio.Runner.run()دیگر تابعreprرا روی نتایج وظیفه فراخوانی نمیکنند. این وصله توسط Yilei Yang تهیه شده است.gh-112962: توابع ماژول
disبه جای ایجاد نمونههای جعلیInstructionبرای نمایش درگاههای نهانگاه (cache entries)، اطلاعات نهانگاه را به نمونهیInstructionاضافه میکنند.gh-112989: کاهش سربار اتصال سوکتها با استفاده از SelectorEventLoop در ماژول
asyncio.gh-112970: استفاده از تابع
closefrom()روی لینوکس در صورت وجود (مانند glibc-2.34)، بهجای محدود شدن به FreeBSD.gh-110190: رفع مشکل ساختارهای (structs) زبان C در ctypes به همراه آرایه روی سکوی PPC64LE با تنظیم
MAX_STRUCT_SIZEروی ۶۴ در stgdict. این وصله توسط Diego Russo تهیه شده است.gh-112540: تابع statistics.geometric_mean() اکنون برای مجموعهدادههای حاوی عدد صفر، مقدار صفر برمیگرداند. پیش از این، یک استثنا ایجاد میکرد.
gh-87286: افزودن
LOG_FTP،LOG_NETINFO،LOG_REMOTEAUTH،LOG_INSTALL،LOG_RASوLOG_LAUNCHDبه ماژولsyslogکه همگی ثابتهایی هستند که روی سیستمعامل macOS استفاده میشوند.gh-112800: رفع مشکل متد
asyncioSubprocessTransport.close()به طوری که هنگام استفاده با فایلهای اجرایی setuid خطایPermissionErrorپرتاب نکند.gh-51944: افزودن ثابتهای زیر به ماژول
termios. این مقادیر در سرآیندهای سیستم 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: رفع خطای بازگشتی بینهایت در پاکسازی
tempfile.TemporaryDirectory()روی ویندوز.gh-94692: تابع
shutil.rmtree()اکنون فقط استثناهای OSError را میگیرد. پیشتر، نسخهای ازshutil.rmtree()که در برابر حملات پیوند نمادین مقاوم است، ممکن بود هنگام ارائهی آرگومانهای نامعتبر، استثناهای دلخواه را نادیده بگیرد یا به هندلر خطا ارسال کند.gh-112736: نحوهی استفاده از نمادهای امن در برابر حذف (del-safe symbols) در
subprocessبازطراحی شد تا امکان استفاده از آن در محیطهای ساخت چندسکویی فراهم شود.gh-112727: افزایش سرعت
pathlib.Path.absolute(). وصلهی نوشتهشده توسط Barney Gale.gh-74690: افزایش سرعت بررسیهای
issubclass()در برابرruntime-checkable protocolsساده به میزان حدود ۶٪. وصلهای از الکس ویگود (Alex Waygood).gh-74690: افزایش سرعت بررسیهای
isinstance()به میزان تقریباً ۲۰ درصد برایپروتکلهای قابل فراخوانی در زمان اجراکه تنها یک عضو فراخوانیپذیر دارند. افزایش سرعت بررسیهایissubclass()برای این پروتکلها به میزان تقریباً ۱۰ درصد. وصله توسط Alex Waygood.gh-112645: حذف خطای انقضا هنگام ارسال
onerrorبهshutil.rmtree().gh-112640: افزودن پارامتر
kwdefaultsبهtypes.FunctionTypeبرای تعیین مقدارهای پیشفرض آرگومان کلیدواژهای.gh-112622: اطمینان از ارسال پارامتر
nameبه حلقهی رویداد درasyncio.create_task().gh-112618: رفع یک باگ کشسازی مربوط به
typing.Annotated. عبارتAnnotated[str, True]دیگر باAnnotated[str, 1]یکسان نیست.gh-112334: رفع یک رگرسیون عملکردی در
subprocessنسخهی 3.12 در لینوکس؛ جایی که به دلیل یک باگ منطقی، هنگام امکانپذیر بودن، دیگر از مسیر سریع سیستمیvfork()استفاده نمیکرد و در عوض به فراخوانی امنتر اما کندترfork()بازمیگشت.همچنین یک باگ امنیتی بالقوهی دیگر در نسخهی 3.12.0 رفع شد. اگر مقداری مانند
extra_groups=[]بهsubprocess.Popenیا APIهای مرتبط ارسال میشد، فراخوانی سیستمی زیرینsetgroups(0, NULL)برای پاک کردن فهرست گروهها پیش ازexec()در فرایند فرزند انجام نمیشد.این مورد در جریان روند رفع باگ اول، از طریق بررسی کد شناسایی شد.
gh-110190: رفع ساختارهای ctypes همراه با آرایه روی پلتفرم Arm با تنظیم
MAX_STRUCT_SIZEبه ۳۲ در stgdict. وصلهی نوشتهشده توسط Diego Russo.gh-81194: رفع فروپاشی در
socket.if_indextoname()با مقدار خاص (UINT_MAX). رفع سرریز عدد صحیح درsocket.if_indextoname()روی پلتفرمهای ۶۴ بیتی غیرویندوزی.gh-112578: رفع یک
RuntimeWarningکاذب هنگام اجرای ماژولzipfile.gh-112516: بهروزرسانی نسخهی بستهبندیشدهی pip به نسخهی 23.3.1.
gh-112510: افزودن
readline.backendبرای بکئندی که readline استفاده میکند (editlineیاreadline).gh-112328: [Enum] عمومی کردن
EnumDict،EnumDict.member_names،EnumType._add_alias_وEnumType._add_value_alias_.gh-112509: رفع حالات مرزی که میتوانستند باعث حضور یک کلید در هر دو ویژگی
__required_keys__و__optional_keys__از یکtyping.TypedDictشوند. وصلهی نوشتهشده توسط Jelle Zijlstra.gh-101336: افزودن پارامتر کلیدواژهای
keep_aliveبرایAbstractEventLoop.create_server()وBaseEventLoop.create_server().gh-63284: افزودن پشتیبانی از حالت TLS-PSK (کلید ازپیشاشتراکگذاشتهشده) به ماژول
ssl.gh-112414: رفع رگرسیون در پایتون 3.12 که در آن فراخوانی
repr()روی ماژولی که با استفاده از یک بارگذار سفارشی وارد (import) شده بود، ممکن بود با خطایAttributeErrorبا شکست مواجه شود. وصلهی نوشتهشده توسط Alex Waygood.gh-112358: بازگردانی تغییر اعمال شده به مقداردهی اولیهی
struct.Structکه در برخی مواردِ زیرکلاسسازی باعث بروز خطا میشد.gh-112405: بهینهسازی
pathlib.PurePath.relative_to(). توسعه توسط Alex Waygood.gh-94722: رفع باگی که در آن مقایسه بین نمونههای
DocTestدر صورتی که یکی از آنها مقدارNoneرا به عنوان شماره سطر (lineno) داشته باشد، با شکست مواجه میشود.gh-112361: افزایش سرعت تعداد کمی از متدهای
pathlibبا حذف برخی اشیاء موقت.gh-112345: بهبود پیام خطا هنگام تلاش برای فراخوانی
issubclass()در برابر یکtyping.Protocolکه دارای اعضای غیرمتد است. توسعه توسط Randolf Scholz.gh-112137: تغییر خروجی
disبرای نمایش مقادیر فاقد شماره سطر به صورت "--" به جای "None".gh-112332: منسوخ کردن فیلد
exc_typeازtraceback.TracebackException. افزودنexc_type_strبرای جایگزینی آن.gh-81620: افزودن آزمونهای اضافی برای
random.binomialvariate()gh-112292: رفع خرابی (crash) در
readlineهنگام ایمپورت شدن از یک زیرمفسر. توسعه توسط Anthony Shawgh-77621: بهبود جزئی زمان ایمپورت ماژول
pathlibبا به تعویق انداختن برخی ایمپورتها. توسعه توسط Barney Gale.gh-112137: تغییر خروجی
disجهت نمایش برچسبهای منطقی برای مقاصد پرش به جای آفستها.gh-112139: افزودن
Signature.format()برای قالببندی امضاها به صورت رشته با گزینههای اضافی. و استفاده از آن درpydocجهت رندر کردن امضاهای خواناتر که دارای سطرهای جدید بین پارامترها هستند.gh-112105: سازگار کردن
readline.set_completer_delims()با libeditgh-106922: نمایش چندین سطر با
tracebackهنگامی که خطاها چندین سطر را در بر میگیرند.gh-111874: هنگام ایجاد یک کلاس
typing.NamedTuple، اطمینان حاصل کنید که__set_name__()روی تمام اشیایی که__set_name__را تعریف میکنند و در مقادیر دیکشنری کلاسِ کلاسِNamedTupleوجود دارند، فراخوانی میشود. توسعه توسط Alex Waygood.gh-68166: افزودن پشتیبانی از نوع عنصر "vsapi" در
tkinter.ttk.Style.element_create().gh-110275: متدهای
_replace()و__replace__()از تاپل نامدار اکنون به جای ValueError برای آرگومانهای کلیدواژهای نامعتبر، TypeError بالا میآورند.gh-99367: عدم دستکاری
sys.path[0]درpdbاگر safe_path تنظیم شده باشدgh-111615: رفع یک رگرسیون ناشی از اصلاحیهی gh-93162 که به واسطهی آن نمیتوانستید یک
QueueHandlerرا بدون مشخص کردن هندلرها پیکربندی کنید.gh-75666: رفع رفتار متد
unbind()در ابزارکtkinterبا دو آرگومان. پیش از این،widget.unbind(sequence, funcid)پیوند فعلی برای sequence را نابود میکرد و sequence را بدون پیوند رجا میگذاشت و دستور funcid را حذف میکرد. اکنون تنها funcid را از پیوندِ مربوط به sequence حذف میکند، سایر دستورات را حفظ کرده و دستور funcid را حذف میکند. این کار sequence را تنها در صورتی بدون پیوند رها میکند که funcid آخرین دستور پیوندخورده بوده باشد.gh-67790: پیادهسازی پشتیبانی از قالببندی پایه (حداقل عرض، همراستا کردن، پُر کردن) برای
fractions.Fraction.gh-111049: رفع فروپاشی حین زبالهروبی شیء بافر
io.BytesIO.gh-102980: هدایت خروجی دستور
interactمربوط بهpdbبه همان کانالِ رفعاشکالکننده. افزودن آزمونها و بهبود مستندات.gh-102988: توابع
email.utils.getaddresses()وemail.utils.parseaddr()اکنون در موقعیتهای بیشتری که نشانیهای ایمیل نامعتبر یافت میشوند، بهجای مقادیر احتمالاً نادرست، ۲-تاپلهای('', '')برمیگردانند. افزودن پارامتر اختیاری strict به این دو تابع: ازstrict=Falseبرای دریافت رفتار قدیمی و پذیرش ورودیهای ناسازگار استفاده کنید. ازgetattr(email.utils, 'supports_strict_parsing', False)میتوان برای بررسی در دسترس بودن پارامتر strict استفاده کرد. وصله توسط Thomas Dwyer و Victor Stinner برای بهبود رفع مسئلهی CVE 2023-27043.gh-52161: متد
cmd.Cmd.do_help()اکنون پیش از نوشتن رشتههای مستند، آنها را باinspect.cleandoc()پاکسازی میکند. وصله توسط Filip Łapkiewicz.gh-82300: افزودن پارامتر
trackبهmultiprocessing.shared_memory.SharedMemoryکه امکان استفاده از بلوکهای حافظهی مشترک را بدون نیاز به ثبت در ردیاب منابع POSIX (که آنها را پس از خروج فرایند بهطور خودکار آزاد میکند) فراهم میکند.gh-110109: افزودن کلاس خصوصی
pathlib._PurePathBase: یک کلاس پایه برایpathlib.PurePathکه برخی متدهای جادویی را حذف میکند. ممکن است در آینده (به همراه_PathBase) عمومی شود.gh-109858: محافظت از
zipfileدر برابر بمب زیپ «quoted-overlap». این ماژول اکنون هنگام تلاش برای خواندن ورودیای که با ورودی دیگر یا پوشه مرکزی همپوشانی دارد، BadZipFile را بالا میآورد.gh-109786: رفع نشتیهای احتمالی ارجاع و فروپاشی هنگام ورود مجدد به متد
__next__()درitertools.pairwise.gh-91539: بهبود عملکرد کوچک (۱۰ تا ۲۰ درصد) و جزئی
urllib.request.getproxies_environment()، که معمولاً وقتی متغیرهای محیطی زیادی برای بررسی وجود دارند مفید است.gh-103363: افزودن آرگومان صرفاً کلیدواژهای follow_symlinks به
pathlib.Path.owner()وgroup()که مقدار پیشفرض آنTrueاست.gh-102130: پشتیبانی از تکمیل تب (tab completion) در
cmdبرایeditline.gh-99437: تابع
runpy.run_path()اکنون اشیاء شبهمسیر را رمزگشایی میکند و اطمینان مییابد که __file__ و sys.argv[0] ماژولی که در حال اجراست همیشه رشته باشند.gh-104003: افزودن
warnings.deprecated()، یک آراینده برای نشانهگذاری عملکردهای منسوخشده برای بررسیکنندگان ایستای نوع و هشدار دربارهی استفاده از کلاسها و توابع منسوخشده. PEP 702 را ببینید. وصله توسط Jelle Zijlstra.gh-103708: نام سختکدشدهی پایتون را به یک پارامتر قابل تنظیم تبدیل کنید تا پیادهسازیهای مختلف پایتون بتوانند بهجای ایجاد تفاوتهای بزرگ (diffs) در sysconfig.py، آن را بازنویسی کنند.
gh-66515: کلاس
mailbox.MHاکنون از پوشههایی که شامل پروندهی.mh_sequencesنیستند (مانند پوشههای نهانگاه Claws Mail IMAP) پشتیبانی میکند. وصله توسط Serhiy Storchaka.gh-83162: برای وضوح بیشتر، نام
re.errorبهPatternErrorتغییر یافت وre.errorبرای سازگاری عقبگرد حفظ شد. وصله توسط Matthias Bussonnier و Adam Chhina.gh-91133: رفع باگ در پاکسازی
tempfile.TemporaryDirectoryکه اکنون هنگام کار با خطاهای مجوز سیستم پرونده، دیگر پیوندهای نمادین را رفع ارجاع نمیکند.bpo-43153: در ویندوز،
tempfile.TemporaryDirectoryپیشتر خطایPermissionErrorرا در حین پاکسازی پوشه با خطایNotADirectoryErrorپنهان میکرد. این کلاس اکنون اگر خطاها نادیده گرفته نشوند، به درستی خطایPermissionErrorرا بالا میآورد. وصله توسط Andrei Kulakov و Ken Jin.bpo-32731: تابع
getpass.getuser()اکنون در تمام خرابیها بهجایImportErrorدر سیستمهای فاقد ماژولpwdیاKeyErrorدر صورت خالی بودن پایگاه دادهی رمز عبور، استثناءOSErrorرا بالا میآورد.bpo-34321: کلاس
mmap.mmapاکنون در سیستمعامل یونیکس دارای یک پارامتر trackfd است؛ اگر این پارامترFalseباشد، توصیفگر پرونده مشخصشده توسط fileno تکثیر نخواهد شد.bpo-35332: تابع
shutil.rmtree()اکنون وقتی پارامتر ignore_errors برابر باTrueاست، خطاهای هنگام فراخوانیos.close()را نادیده میگیرد وos.close()دیگر پس از خطا دوباره تلاش نمیکند.bpo-35928: کلاس
io.TextIOWrapperاکنون بافر کدگشایی را پس ازread()وwrite()به درستی مدیریت میکند.bpo-26791: تابع
shutil.move()اکنون یک پیوند نمادین را هنگامی که آن پوشه هدف پیوند نمادین است، به درون پوشه منتقل میکند. این رفتار همانند رفتار دستور پوسته mv است. رفتار قبلی یک استثنا ایجاد میکرد. وصله از Jeffrey Kintscher.bpo-41422: رفع نشت حافظهی
pickle.Picklerوpickle.Unpicklerکه شامل ارجاعات چرخهای از طریق نگاشت memo داخلی بودند.bpo-19821: تابع
pydoc.ispackage()منسوخ شده است.bpo-40262: متد
ssl.SSLSocket.recv_into()دیگر برای آرگومان buffer نیازی به پیادهسازی__len__ندارد و از بافرهایی با اندازهی آیتم دلخواه پشتیبانی میکند.bpo-39912: توابع
warnings.filterwarnings()وwarnings.simplefilter()اکنون بهجایAssertionErrorاستثناهای مناسبی را بالا میآورند. وصلهای از Rémi Lapeyre.bpo-37260: رفع یک شرط رقابت در
shutil.rmtree()که در آن ورودیهای پوشه که توسط یک فرایند یا نخ دیگر در هنگام اجرایshutil.rmtree()حذف میشوند، میتوانند باعث ایجاد خطای FileNotFoundError شوند. وصلهای از Jeffrey Kintscher.bpo-36959: اصلاح برخی پیامهای خطا برای ترکیبهای رشتهای نامعتبر قالب ISO در
strptime()که به دایرکتیوهای موجود در رشتهی قالب اشاره نمیکردند. وصلهای از Gordon P. Hemsley.bpo-18060: رفع یک مشکل ارثبری کلاس که میتواند هنگام مشتق کردن دو یا چند سطح زیرکلاس از یک کلاس پایهی Structure یا Union باعث خطای دسترسی غیرمجاز (segfault) شود.
bpo-29779: افزودن یک
PYTHON_HISTORYجدید برای تنظیم مکان یک پروندهی.python_history.bpo-21360: کلاس
mailbox.Maildirاکنون پروندههایی را که با یک نقطه آغاز میشوند نادیده میگیرد.
مستندات¶
gh-111699: انتقال اعلان منسوخسازی
smtpdبه بخش اختصاصی خود به جای قرار گرفتن تحتlocaleدر سند «چیزهای جدید در پایتون ۳.۱۲»gh-110746: بهبود نشانهگذاری برای گزینهها/مقادیر معتبر در متدهای ttk.treeview.column و ttk.treeview.heading، و برای طرحبندیها (Layouts).
gh-95649: مستندسازی کنید که ماژول
asyncioحاوی کدی است که از نسخهی v0.16.0 پروژهی uvloop <https://github.com/MagicStack/uvloop/tree/v0.16.0>`_ و همچنین اطلاعات مجوز ضروری MIT گرفته شده است.
آزمونها¶
gh-111798: غیرفعال کردن
test_super_deep()ازtest_callتحت ساختهای pydebug روی WASI؛ عمق پشته برای مفید بودن آزمون بسیار کوچک است.gh-111801: کاهش حد بازگشت در
test_isinstanceبرایtest_infinitely_many_bases(). این کار از سرریز پشته روی یک ساخت pydebug از WASI جلوگیری میکند.gh-111802: مشخص کردن عمق بازگشت کم برای
test_bad_getattr()درtest.pickletesterجهت جلوگیری از اتمام پشته تحت یک ساخت pydebug برای WASI.gh-44626: رفع مشکل
os.path.isabs()که هنگام دریافت مسیری که با دقیقاً یک اسلش یا اسلش معکوس روی ویندوز شروع میشود، به اشتباهTrueبرمیگرداند.برطرف کردن مشکلی که در آن
pathlib.PureWindowsPath.is_absolute()برای برخی مسیرهای شروعشده با دو اسلش (یا اسلش معکوس) به اشتباه مقدارFalseرا برمیگرداند.gh-113633: استفاده از وضعیت ماژول برای ماژول توسعهای _testcapi.
gh-109980: رفع مشکل
test_tarfile_vs_tarدرtest_shutilبرای سیستمعامل macOS، بهطوریکه tar سیستمی ممکن است اطلاعات بیشتری نسبت بهshutil.make_archiveدر آرشیو قرار دهد.gh-112769: آزمونها اکنون زمانی که
zlib.ZLIB_RUNTIME_VERSIONحاوی پسوندهای غیرعدد صحیح باشد، نسخهی zlib را به درستی مقایسه میکنند. برای نمونه، zlib-ng نسخه را به صورت1.3.0.zlib-ngتعریف میکند.gh-112334: افزودن یک آزمون رگرسیون برای اطمینان از اینکه
vfork()در صورت انتظار توسطsubprocessدر سیستمهای POSIX پشتیبانیکنندهی vfork (مانند لینوکس) استفاده میشود.gh-108927: رفع وابستگی به ترتیب در اجرای آزمونها در یک فرایند واحد؛ زمانی که آزمونی دارای زیرماژولها (مانند test_importlib) پس از آزمونی که زیرماژول خود را ایمپورت میکند (مانند test_importlib.util) اجرا شده و پیش از آزمونی (مانند test_unittest یا test_compileall) قرار میگیرد که از آن زیرماژول استفاده میکند.
bpo-40648: بررسی حالتهای پرونده که میتوان با تابع chmod() در ویندوز به دست آورد.
ساخت¶
gh-114013: اصلاح پروندهی
Tools/wasm/wasi.pyبهطوریکه مسیرpython.wasmرا به عنوان بخشی ازHOSTRUNNERشامل نشود. این متغیر محیطی تنها برای تعیین نحوهی اجرای میزبان WASI در نظر گرفته شده است وpython.wasmو پرچمهای مربوطه بهHOSTRUNNERاضافه میشوند. این کار باعث رفع مشکل اجرایmake testمیشود.gh-113258: تغییر ساخت ویندوز به منظور نوشتن ماژولهای فریزشدهی تولیدشده در درخت ساخت به جای درخت منابع.
gh-112305: رفع مرحلهی
check-clean-srcاجرا شده در ساختهای خارج از درخت منابع، جهت شناسایی پروندههای خطای$(srcdir)/Python/frozen_modules/*.hو ارائهی توصیههای لازم برای پاکسازی درخت منابع جهت دستیابی مجدد به یک ساخت قابلکار.gh-112536: افزودن پشتیبانی برای ابزار ضدعفونیکنندهی نخ (TSAN)
gh-112867: اصلاح ساخت برای حالتی که WITH_PYMALLOC_RADIX_TREE=0 تنظیم شده است.
gh-103065: معرفی
Tools/wasm/wasi.pyبرای سادهسازی انجام ساخت WASI.bpo-11102: توابع
os.major()،os.makedev()وos.minor()اکنون روی HP-UX v3 در دسترس هستند.bpo-36351: عدم تنظیم ipv6type هنگام کامپایل متقاطع.
Windows¶
gh-114096: امتیازات فرایند که برای ایجاد اتصالهای پوشه فعال شده بودند، اکنون پس از آن بازیابی میشوند تا از تغییرات رفتار در سایر قسمتهای برنامه جلوگیری شود.
gh-111877: فراخوانیهای
os.stat()مقادیر زمانی نادرستی را برای پروندههایی که مستقیماً قابل دسترسی نبودند برمیگرداندند.gh-111973: بهروزرسانی نصبکنندهی ویندوز برای استفاده از SQLite 3.44.2.
gh-113009:
multiprocessing: در ویندوز، یک شرایط رقابت درProcess.terminate()را برطرف کنید: دیگر ویژگیreturncodeرا به گونهای تنظیم نکنید که همیشهWaitForSingleObject()درProcess.wait()فراخوانی شود. پیش از این، گاهی اوقات فرایند پس ازTerminateProcess()همچنان در حال اجرا بود، حتی اگرGetExitCodeProcess()برابر باSTILL_ACTIVEنباشد. تکه کد (Patch) توسط Victor Stinner.gh-86179: رفع محاسبات مسیر هنگام اجرای پایتون در ویندوز از طریق یک پیوند نمادین.
gh-71383: بهروزرسانی Tcl/Tk در نصبکنندهی ویندوز به نسخهی 8.6.13 همراه با یک وصله برای سرکوب کردن هخطاهای نادرست ThemeChanged.
gh-111650: تضمین میکند که متغیر پیشپردازندهی
Py_GIL_DISABLEDدرpyconfig.hتعریف شده است تا ماژولهای توسعهای نوشتهشده به زبان C بتوانند از آن استفاده کنند.gh-112278: کاهش هزینهی زمانی برخی از تابعها در
platformروی ویندوز در صورتی که کاربر فعلی دسترسی به WMI نداشته باشد.gh-73427: منسوخ کردن
sys._enablelegacywindowsfsencoding(). بهجای آن ازPYTHONLEGACYWINDOWSFSENCODINGاستفاده کنید. وصله توسط Inada Naoki.gh-87868: مرتبسازی صحیح و حذف متغیرهای محیطی تکراری در
_winapi.CreateProcess().bpo-37308: رفع مشکل mojibake در
mmap.mmapهنگام استفاده از یک آرگومان tagname غیر اسکی (non-ASCII) روی ویندوز.
مکاواس¶
gh-113666: افزودن ثابتهای زیر به ماژول
stat:UF_SETTABLE،UF_TRACKED،UF_DATAVAULT،SF_SUPPORTED،SF_SETTABLE،SF_SYNTHETIC،SF_RESTRICTED،SF_FIRMLINKوSF_DATALESS. مقادیرUF_SETTABLE،SF_SUPPORTED،SF_SETTABLEوSF_SYNTHETICتنها روی macOS در دسترس هستند.gh-113536: تابع
os.waitid()اکنون روی macOS در دسترس استgh-110459: اجرای دستور
configure ... --with-openssl-rpath=X/Y/Zدیگر در تشخیص OpenSSL روی macOS دچار خطا نمیشود.gh-74573: مستندسازی این موضوع که
dbm.ndbmمیتواند هنگام بهروزرسانی در صورت تجاوز از محدودیتهای اعلامنشدهی سکو، پروندههای DBM را بهطور صامت خراب کند و هنگام خواندن چنین پروندهی خرابی دچار فروپاشی (خطای قطعهبندی (segmentation fault)) شود. (FB8919203)gh-65701: ابزار freeze با نسخههای ساختهشدهی چارچوبپایه (framework builds) پایتون کار نمیکند. این موضوع مستند شده و هنگام اجرای ابزار با چنین ساختی، کار متوقف میشود.
gh-87277: webbrowser: مرورگرهای X11 را روی macOS جستجو نکنید. آن مرورگرها معمولاً استفاده نمیشوند و کاوش برای آنها میتواند منجر به راهاندازی XQuartz شود، حتی اگر در غیر این صورت استفاده نشود.
gh-111973: بهروزرسانی نصبکنندهی macOS برای استفاده از SQLite 3.44.2.
gh-108269: تنظیم
CFBundleAllowMixedLocalizationsروی مقدار true در پروندهی Info.plist برای چارچوب، برنامهی تعبیهشدهی Python.app و IDLE.app با نصبهای چارچوب روی macOS. این امر به برنامهها اجازه میدهد تا زمانی که locale ترجیحی کاربر با انگلیسی متفاوت است، آن را اعمال کنند.gh-102362: اطمینان حاصل کنید که نتیجهی
sysconfig.get_plaform()شامل حداقل یک نسخهی اصلی (major) و فرعی (minor) باشد، حتی اگرMACOSX_DEPLOYMENT_TARGETدر طول ساخت تنها روی یک نسخهی اصلی تنظیم شده باشد تا با قالب مورد انتظار pip مطابقت داشته باشد.gh-110017: غیرفعال کردن آزمون تنش مدیریت سیگنال روی macOS به دلیل وجود باگی در macOS (FB13453490).
gh-110820: اطمینان حاصل کنید که تعاریف پیشپردازنده برای
ALIGNOF_MAX_ALIGN_T،SIZEOF_LONG_DOUBLEوHAVE_GCC_ASM_FOR_X64برای ساختهای همگانی ۲ (Universal 2 builds) روی macOS درست هستند.gh-109981: استفاده از
/dev/fdروی macOS برای تعیین تعداد پروندههای باز درtest.support.os_helper.fd_countجهت جلوگیری از فروپاشی با توصیفگرهای پروندهی «محافظتشده» هنگام کاوش برای پروندههای باز.
IDLE¶
gh-72284: بهبود فهرست ویژگیها، کلیدهای میانبر ویرایشگر و کلیدهای میانبر پوسته در مستندات IDLE.
gh-113903: رفع خطای نادر آزمون test.test_idle در test_configdialog.
gh-113729: اصلاح باگ منوی «Help -> IDLE Doc» در نسخههای ۳.۱۱.۷ و ۳.۱۲.۱.
gh-113269: رفع معلق ماندن test_editor در macOS Catalina.
gh-112898: اصلاح پردازش پروندههای ذخیرهنشده هنگام خروج از IDLE در سیستمعامل macOS.
bpo-13586: وارد کردن متن انتخابشده هنگام باز کردن محاورهی «Replace».
رابط C API¶
gh-106560: رفع تعاریف اضافی در API عمومی C. توابع PyBool_Type، PyLong_Type و PySys_Audit() را فقط یک بار تعریف کنید. وصله توسط Victor Stinner.
gh-112438: اصلاح پشتیبانی از واحدهای قالببندی «es»، «et»، «es#» و «et#» در تاپلهای تو در تو در توابع شبیه
PyArg_ParseTuple().gh-111545: افزودن تابع
Py_HashPointer()برای محاسبهی هش یک اشارهگر. وصله توسط Victor Stinner.gh-65210: تغییر اعلان پارامتر keywords در
PyArg_ParseTupleAndKeywords()وPyArg_VaParseTupleAndKeywords()برای سازگاری بهتر با C++.
پایتون ۳.۱۳.۰ آلفا ۲¶
تاریخ انتشار: ۲۰۲۳-۱۱-۲۲
هسته و توکارها (Core and Builtins)¶
gh-112243: عدم گنجاندن کامنتها در عبارات دیباگ افاسترینگ. وصله توسط Pablo Galindo
gh-112287: بهینهسازی جزئی مفسر ردهی ۲ (uop) با بارگذاری
opargوoperandفقط در صورت نیاز. همچنین، محدودیت اندازهی رد دوباره دو برابر شده و این بار به ۵۱۲ رسیده است.gh-111807: کاهش حداکثر عمق پشتهی پارسر به ۱۰۰۰ در نسخههای ساخت دیباگ WASI.
gh-111798: هنگامی که پایتون در حالت دیباگ ساخته میشود، حد بازگشتی C را به جای ۱۵۰۰ روی ۵۰۰ تنظیم کنید. ساخت دیباگ احتمالاً با سطح بهینهسازی پایینتری ساخته شده است که این به معنای استفادهی بیشتر از حافظهی پشته نسبت به ساخت انتشار است. وصله توسط Victor Stinner.
gh-106529: فعالسازی ترجمهی
FOR_ITERتخصیصنیافته به ردهی ۲.gh-111916: ایمنسازی ماژولهای مرتبط با هشلیب در برابر نخ بدون استفاده از GIL
gh-81137: منسوخ کردن انتساب به فیلد
__code__تابع هنگامی که شیء کد جدید از نوع ناسازگاری باشد (مثلاً از یک تولیدگر به یک تابع ساده).gh-79932: اگر متد
frame.clear()روی یک قاب معلق فراخوانی شود، استثنا ایجاد کن.gh-81925: پیادهسازی شناسههای نخ بومی برای GNU KFreeBSD.
gh-111843: استفاده از عقبنشینی نمایی (exponential backoff) برای کاهش تعداد تلاشهای ناموفق بهینهسازی ردیف ۲ به میزان بیش از %۹۹.
gh-110829: پیوستن به یک نخ اکنون تضمین میکند که نخ زیرین سیستمعامل خارج شده است. این کار برای انجام ایمنتر fork() در فرآیندهای چندنخی ضروری است.
gh-109369: اطمینان حاصل کنید که در صورت ابزارگذاری کد، ردهای (traces) ردیف ۲ بهینهسازیزدایی شوند.
gh-111772: اختصاصیسازی بارگذاریها و ذخیرهسازیهای جایگاه (slot) برای _Py_T_OBJECT و همچنین Py_T_OBJECT_EX
gh-111666: افزایش سرعت
BaseExceptionGroup.derive()،BaseExceptionGroup.subgroup()وBaseExceptionGroup.split()با تغییر نحوهی تجزیهی آرگومانهای ارسالشده.gh-111654: رفع خرابی رانتایم هنگام بروز برخی خطاها در آپکد
LOAD_FROM_DICT_OR_DEREF.gh-111623: افزودن پشتیبانی برای اشتراکگذاری تاپلها بین مفسرها با استفاده از API بینمفسری. وصله (patch) توسط Anthony Shaw.
gh-111354: آرگومان عملیاتی (oparg) مربوط به
YIELD_VALUEاکنون در صورتی که دستور بخشی از یک yield-from یا await باشد برابر با1و در غیر این صورت0است.وضعیت قاب SUSPENDED اکنون به
SUSPENDEDوSUSPENDED_YIELD_FROMتقسیم شده است. این کار کد موجود در_PyGen_yfرا سادهتر میکند.gh-111520: ادغام مفسرهای ردیف ۱ (بایتکد) و ردیف ۲ (ریزعملورها یا micro-ops) با یکدیگر، انتقال حلقه و سویچ مفسر ردیف ۲ به داخل
_PyEval_EvalFrameDefault()درPython/ceval.c. پروندهیPython/executor.cحذف شده است. همچنین کلاندستورهای (macros)TIER_ONEوTIER_TWOاکنون توسط تولیدگر کد مدیریت میشوند.مواظب باشید! این تغییر، متغیرهای محیطی برای فعالسازی ریزعملورها و اشکالزدایی آنها را به
PYTHON_UOPSوPYTHON_LLTRACEتغییر میدهد.gh-109181: افزایش سرعت ایجاد شیء
Tracebackبا محاسبهی تنبلانهی شماره سطر. وصله توسط Pablo Galindogh-111420: اجازه دادن به کامنتهای نوع داده در دستورات
withپرانتزدارgh-111438: افزودن پشتیبانی برای اشتراکگذاری اعداد اعشاری بین مفسرها با استفاده از API بینمفسری. وصله توسط Anthony Shaw.
gh-111435: افزودن پشتیبانی برای اشتراکگذاری مقادیر
TrueوFalseبین مفسرها با استفاده از API بینمفسری. وصله توسط Anthony Shaw.gh-102388: رفع باگی که در آن کدکهای
iso2022_jp_3وiso2022_jp_2004خارج از کران (out of bounds) خوانش انجام میدادندgh-111366: رفع مشکلی در ماژول
codeopکه باعث میشد استثناهایSyntaxErrorپرتابشده در حضور نحو نامعتبر، حاوی پیامهای خطای دقیقی نباشند. وصله توسط Pablo Galindogh-111380: رفع باگی که باعث میشد
SyntaxWarningهنگام تجزیه، در صورت مواجهه با نحو نامعتبر در ادامه، دو بار ظاهر شود. وصله توسط Pablo galindogh-111374: افزودن یک متغیر محیطی جدید به نام
PYTHON_FROZEN_MODULES. این متغیر تعیین میکند که آیا ماژولهای فریزشده توسط مکانیسم ایمپورت نادیده گرفته شوند یا خیر، که معادل گزینهی خط فرمان-X frozen_modulesاست.gh-111354: حذف
opargازYIELD_VALUE. تغییرopargدرRESUMEجهت گنجاندن اطلاعاتی دربارهی عمق استثنا (except-depth). این تغییرات امکان سادهسازی کد در بستن تولیدگر (generator close) را فراهم میکنند.gh-94438: یک رگرسیون را برطرف کرد که در هنگام اشکالزدایی مانع از پرش در اطراف
is Noneوis not Noneمیشد. بستهی اصلاحی از Savannah Ostrowski.gh-67224: هنگام اجرای پایتون با استفاده از گزینهی
-c، سطرهای مبدأ را در ردگیریها نمایش دهید. بستهی اصلاحی از Pablo Galindogh-111123: باگی را برطرف کرد که در آن اعلان
globalدرون یک بلوکexceptدر صورت استفاده از متغیر سراسری در بلوکelseرد میشد.gh-110938: پیامهای خطا را برای بلوکهای دارای تورفتگی با توابع و کلاسهای دارای پارامترهای نوع عام اصلاح کرد. بستهی اصلاحی از Pablo Galindo
gh-109214: بهروزرسانیهای غیرضروری اشارهگر دستورالعمل را پیش از بازگشت از قابها حذف کنید.
gh-110912: ردگیری مربوط به استثناهای
MemoryErrorرا با استفاده از ماژولtracebackبه درستی نمایش دهید. بستهی اصلاحی از Pablo Galindogh-109894: فروپاشی ناشی از
MemoryErrorایستا که به درستی مقداردهی اولیه نشده بود در زیرمفسر برطرف شد.gh-110892: مقدار
NULLرا برای رویدادهایPyTrace_RETURNکه توسط یک استثنا ایجاد شدهاند برگردانیدgh-110864: تجزیه آرگومان توسط
_PyArg_UnpackKeywordsWithVarargرا برای توابعی که پارامترهای موقعیتی یا کلیدواژهای، آرگومان متغیر (vararg) و فقط کلیدواژهای را تعریف میکنند، اصلاح کنید.gh-109094: مقدار
prev_instrرا در قاب مفسر باinstr_ptrجایگزین کنید که به آغاز دستورالعمل در حال اجرا (یا دستوری که پس از ازسرگیری قاب اجرا خواهد شد) اشاره میکند.gh-110805: به REPL اجازه دهید کد منبع و ردگیریهای کامل را نمایش دهد. بستهی اصلاحی از Pablo Galindo
gh-110722: گزینهی
PYTHON_PRESITE=package.moduleرا اضافه کنید تا یک ماژول در چرخهی حیات مفسر پیش از اجرایsite.pyبه طور اولیه ایمپورت شود. پایتون باید برای وجود این گزینه در حالت اشکالزدایی ساخته شود.gh-110481: شمارش ارجاع متمایل را در ساختهای
--disable-gilپیادهسازی کنید.gh-110543: رگرسیون پایتون ۳.۱۲ را برطرف کرد که در آن
types.CodeType.replace()در صورت فراخوانی روی یک شیء کد ماژول یا کلاس حاوی یک درک (comprehension)، یک شیء کد معیوب تولید میکرد. بستهی اصلاحی از Jelle Zijlstra.gh-89519: توصیفگرهای زنجیرهای
classmethod(که در bpo-19072 معرفی شدند) حذف شدند. دیگر نمیتوان از این مورد برای پوشش دادن سایر توصیفگرها مانندpropertyاستفاده کرد. طراحی اصلی این ویژگی دارای اشکال بود و باعث بروز تعدادی مشکل در پاییندست شد. برای «عبور دادن» یکclassmethod، استفاده از ویژگی__wrapped__که در پایتون ۳.۱۰ اضافه شد را در نظر بگیرید.gh-103615: استفاده از رویدادهای محلی برای ردیابی آپکد
bpo-46657: پشتیبانی از تخصیصدهندهی حافظهی mimalloc را اضافه کنید.
gh-106718: هنگامی که PyConfig.stdlib_dir به صراحت تنظیم شود، اکنون به آن احترام گذاشته میشود و توسط PyConfig.home بازنشانی نخواهد شد.
gh-106905: خطای نادرست SystemError مربوط به عدم تطابق عمق بازگشت سازندهی AST را برطرف کنید.
gh-100445: پیام خطا را برای رشتههای خاتمهنیافته دارای کاراکترهای گریز بهبود دهید.
bpo-45759: بهبود پیامهای خطا برای دستورهای
elif/elseکه با هیچ دستور معتبری تطابق ندارند. اصلاحیه از Jeremiah Vivian.
کتابخانه¶
gh-111942: رفع خطای SystemError در سازندهی TextIOWrapper با آرگومان «errors» غیرقابلکدگذاری در حالت غیردیباگ.
gh-111995: ثابت
NI_IDNهنگام حضور در زبان C در زمان ساخت، برای استفاده باsocket.getnameinfo()به ماژولsocketاضافه شد.gh-109538: در صورتی که حلقهی رویداد قبلاً در
StreamWriter.__del__()بسته شده باشد، بهجای نمایشRuntimeError، پیام هشدار صادر میشود.gh-111942: رفع فروپاشیها در
io.TextIOWrapper.reconfigure()هنگام ارسال آرگومانهای نامعتبر، مانند کدگذاری غیررشتهای.gh-111460:
curses: بازیابی پشتیبانی از نویسههای پهن (از جملهcurses.unget_wch()وget_wch()) روی سیستمعامل macOS که به دلیل یک رگرسیون در پایتون ۳.۱۲ غیرقابلدسترس شده بود.gh-103791:
contextlib.suppressاکنون علاوه بر پشتیبانی اخیر ازExceptionGroup، از سرکوب استثناوهایی که به عنوان بخشی از یکBaseExceptionGroupبالا میآیند نیز پشتیبانی میکند.gh-111835: کلاس
mmap.mmapاکنون دارای یک متدseekable()است که میتوان آن را هنگامی که یک شیء شبهپروندهی قابلجستجو مورد نیاز است، استفاده کرد. متدseek()اکنون موقعیت مطلق جدید را برمیگرداند. اصلاحیه از Donghee Na.gh-111804: حذف posix.fallocate() تحت WASI به این دلیل که posix_fallocate() زیرین در WASI preview2 در دسترس نیست.
gh-111841: رفع برش آرگومانها روی یک نویسهی تهی تعبیهشده در
os.putenv()وos.unsetenv()روی ویندوز.gh-111768: تابع
wsgiref.util.is_hop_by_hop()اکنون به درستی در__all__قرار میگیرد.gh-80731: جلوگیری از اجرای تابع پیشفرض در
cmd.Cmdدر یک بلوک exceptgh-111541: رفع ماژول
doctestبرای زیرکلاسهای غیرتوکارSyntaxError.gh-111719: افزودن اعتبارسنجی آرگومان اضافی برای دستور
aliasدر ماژولpdbgh-111482: ماژول
time: توابعtime.clock_gettime()وtime.clock_gettime_ns()را با استفاده از قرارداد فراخوانی سریعتر، تا دو برابر سریعتر کنید. اصلاحیه از Victor Stinner.gh-110894: فراخوانی هندلر استثنای حلقه برای استثناها در
client_connected_cbازasyncio.start_server()بهطوریکه برنامهها بتوانند آن را مدیریت کنند. اصلاحیه از Kumar Aditya.gh-111531: رفع نشت ارجاع در متدهای
bind_class()وbind_all()ابزارکهای ماژولtkinter.gh-111246: متد
asyncio.loop.create_unix_server()اکنون بهطور خودکار سوکت Unix را هنگام بسته شدن سرور حذف میکند.gh-111356: توابع
io.text_encoding()،io.DEFAULT_BUFFER_SIZEوio.IncrementalNewlineDecoderبهio.__all__اضافه شدند.gh-66425: حذف کد مربوط به تنظیم سرآیند REMOTE_HOST از ماژول wsgiref، به این دلیل که قابلدسترس نیست. این سرآیند به دلایل کارایی استفاده میشود که در ماژول wsgiref ضروری نیست.
gh-111429: افزایش سرعت
pathlib.PurePath.relative_to()وis_relative_to().gh-111342: اصلاح خطای تایپی در
math.sumprod().gh-68166: حذف اشاره به نوع عنصر «vsapi» که دیگر پشتیبانی نمیشود در
tkinter.ttk.Style.element_create(). افزودن آزمونها برایelement_create()و سایر متدهایttk.Style. افزودن مثالهایی برایelement_create()در مستندات.gh-111388: افزودن پارامتر
show_groupبهtraceback.format_exception_only()که امکان قالببندی نمونههایExceptionGroupرا فراهم میکند.gh-79033: تلاشی دیگر برای اصلاح
asyncio.Server.wait_closed(). این تابع اکنون تا زمانی که هر دو شرط برقرار شوند مسدود میماند: سرور بسته شده باشد، و هیچ اتصال فعالی باقی نمانده باشد. (این یعنی در برخی موارد که در نسخهی ۳.۱۲.۰ این تابع بهاشتباه بلافاصله برمیگشت، اکنون مسدود خواهد شد؛ بهویژه زمانی که هیچ اتصال فعالی وجود ندارد اما سرور هنوز بسته نشده است.)gh-111295: رفع مشکل بررسی نکردن خطاها هنگام مقداردهی اولیه در
time.gh-111253: افزودن بررسی خطا در طول مقداردهی اولیهی ماژول
_socket.gh-111251: رفع مشکل بررسی نکردن خطاها هنگام مقداردهی اولیه در
_blake2.gh-111233: رفع مشکل بررسی نکردن خطاها هنگام مقداردهی اولیه در
select.gh-111230: رفع مشکل بررسی نکردن خطاها هنگام مقداردهی اولیه در
ssl.gh-111174: رفع فروپاشی در
io.BytesIO.getbuffer()هنگامی که بهصورت مکرر برای یک BytesIO خالی فراخوانی میشود.gh-111187: به تعویق انداختن نسخهی حذف locale.getdefaultlocale() به پایتون ۳.۱۵.
gh-111159: اصلاح مقایسهی خروجی
doctestبرای استثناهای دارای یادداشت.gh-110910: اصلاح مدیریت وضعیت نامعتبر در
asyncio.TaskGroupوasyncio.Timeout. این کلاسها اکنون در صورت استفادهی نادرست، RuntimeError مناسبی را پرتاب میکنند و پس از آن در وضعیت سازگاری باقی میمانند.gh-111092: امکان اجرای turtledemo بدون فعال بودن ریشه پیشفرض.
gh-110944: پشتیبانی از نامهای مستعار و متغیرهای کمکی برای تکمیلسازی
pdbgh-110745: افزودن پارامتر newline به
pathlib.Path.read_text(). پچ توسط Junya Okabe.gh-84583: وادار کردن
pdbبه ورود به حالت پس از مرگ حتی برایSyntaxErrorgh-80675: تنظیم
f_trace_lines = Trueروی همهی فریمها به محض فراخوانیpdb.set_trace()gh-110771: بخشهای راهاندازی و پاکسازی
asyncio.run_forever()را به صورت متدهای مستقلasyncio.run_forever_setup()وasyncio.run_forever_cleanup()ارائه دهید. این کار امکان یکپارچهسازی بهتر با حلقههای رویداد GUI را فراهم میکند.gh-110774: پشتیبانی از تنظیم آرگومان کلیدواژهی loop_factory در
asyncio.Runnerدرونunittest.IsolatedAsyncioTestCasegh-110392: رفع مشکل
tty.setraw()وtty.setcbreak(): پیشتر آنها فهرستی نیمهتغییریافته از ویژگیهای اصلی tty را برمیگرداندند. توابعtty.cfmakeraw()وtty.cfmakecbreak()اکنون پیش از اعمال تغییرات، یک نسخه از فهرست نویسههای خاص تهیه میکنند.gh-59013: دقیقتر کردن شمارهی سطر نقطهی ایست (breakpoint) تابع در
pdbgh-88434: انتشار هشدار منسوخسازی برای اعداد غیرصحیح در توابع و متدهای
gettextکه فرمهای جمع را حتی در صورت پیدا نشدن ترجمه بررسی میکنند.gh-110395: اطمینان از اینکه شیءهای
select.kqueue()به درستی در فرزندان فورکشده به عنوان بسته ظاهر میشوند تا از انجام عملیات روی یک توصیفگر پرونده نامعتبر جلوگیری شود.gh-110196: افزودن متد
__reduce__بهIPv6Addressبه منظور حفظscope_idgh-109747: بهبود خطاهای الگوهای جستجوی رو به عقب (look-behind) پشتیبانینشده. اکنون به جای OverflowError یا RuntimeError برای عرض بسیار زیاد الگوی جستجوی رو به عقب، خطای re.error بالا آورده میشود.
gh-109466: افزودن ویژگی
ipaddress.IPv4Address.ipv6_mappedکه آدرس IPv6 نگاشتشده با IPv4 را برمیگرداند.gh-85098: پیادهسازی رابط خط فرمان، CLI ماژول
symtableو بهبود نمایش (repr)Symbol.gh-108791: بهبود مدیریت خطا در رابط خط فرمان
pdb، بهگونهای که پیامهای خطای خلاصهتری تولید کند.gh-105931: تغییر
compileallبه گونهای که پیشوند stripdir را فقط زمانی از مسیر کامل ثبتشده در پروندهی کامپایلشدهی.pycحذف کند که پیشوند به طور کامل با ابتدای مسیر کامل مطابقت داشته باشد. هنگامی که پیشوند مطابقت نداشته باشد، هیچ حذفی انجام نمیشود و هشداری در این خصوص نمایش داده میشود.پیشتر تمام اجزای مسیر پیشوند stripdir که با مسیر کامل مطابقت داشتند حذف میشدند، در حالی که اجزایی که مطابقت نداشتند به همان صورت باقی میماندند (از جمله اجزایی که بین اجزای منطبق قرار داشتند).
gh-107431: تبدیل انواع
DictProxyوListProxyدرmultiprocessing.managersبه Generic Alias Types برای استفاده از[]در زمینههای تایپ.gh-72904: افزودن
glob.translate(). این تابع یک مسیرنام با کاراکترهای بدل (wildcards) سبک پوسته را به یک عبارت باقاعده تبدیل میکند.gh-90026: تعریف
USE_XATTRSروی Cygwin به طوری که توابع مربوط به XATTR در ماژولosدر دسترس قرار گیرند.gh-90890: متدهای جدید
mailbox.Maildir.get_info()،mailbox.Maildir.set_info()،mailbox.Maildir.get_flags()،mailbox.Maildir.set_flags()،mailbox.Maildir.add_flag()،mailbox.Maildir.remove_flag(). این متدها دسترسی به اطلاعات و/یا پرچمهای یک پیام را تسریع میکنند و زمانی مفید هستند که نیازی به دسترسی به محتوای پیام نباشد؛ مانند هنگام پیمایش یک Maildir برای یافتن پیامهایی با پرچمهای خاص.gh-102956: رفع مشکل بازگرداندن رشتههای بایت خالی پس از مکانیابی کردن (seek) در ماژول zipfile
gh-102895: افزودن پارامتر
local_exitبرایcode.interact()جهت جلوگیری از بسته شدنsys.stdinتوسطexit()وquitو بالا آوردنSystemExit.gh-97928: تغییر رفتار
tkinter.Text.count(). این متد اکنون اگر یک یا تعداد کمتری گزینه شمارش مشخص شده باشد، همیشه یک عدد صحیح برمیگرداند. پیشتر ممکن بود یک شمارش منفرد را به صورت یک تاپل ۱-تایی، یک عدد صحیح (فقط در صورتی که گزینهی"update"مشخص شده بود) یا اگر هیچ آیتمی پیدا نمیشدNoneبرگرداند. نتیجه اکنون در صورتی کهwantobjectsروی0تنظیم شده باشد یکسان است.gh-96954: تغییر ذخیرهسازی نامهای نقطهی کد یونیکد برای استفاده از یک ساختار دادهی متفاوت، یعنی یک گراف جهتدار بدون دور واژه. این کار کتابخانهی مشترک unicodedata را حدود ۴۴۰ کیلوبایت کوچکتر میکند. مشارکت توسط کارل فریدریش بولز-ترایک با استفاده از کد پروژهی PyPy.
gh-73561: حذف محدوده رابط از یک آدرس IPv6 هنگامی که بهعنوان سرآیند میزبان توسط
http.clientاستفاده میشود.gh-86826: ماژول
zipinfoاکنون از بازهی کامل مقادیر در رشتهی TZ تعیینشده توسط RFC 8536 پشتیبانی میکند و تمام قالبهای نامعتبر را شناسایی میکند. هر دو پیادهسازی پایتون و C اکنون استثناهایی از یک نوع روی دادههای نامعتبر بالا میآورند.
آزمونها¶
gh-111808: مقدار پیشفرض تابع
test.support.infinite_recursion()را مشروط به این کنید که آیا هنگام کامپایل مفسر از بهینهسازیها استفاده شده است یا خیر. این کار به پلتفرمهایی مانند WASI کمک میکند که اندازهی پشتهی آنها در نسخههای دیباگ بسیار محدود است.gh-110722: جمعآوری پوشش خطی کتابخانههای استاندارد در مجموعهی آزمونهای رگرسیون اکنون دقیقتر و همچنین بسیار سریعتر شده است. وصلهای توسط لوکاش لانگا.
gh-110367: گزینهی
--verbose3در regrtest را با گزینههای--huntrleaks -jNسازگار کنید. دستور./python -m test -j1 -R 3:3 --verbose3اکنون همانطور که انتظار میرود کار میکند. وصلهای توسط ویکتور استینر.gh-111165: توابع دیگر استفادهنشدهی
run_unittest()وrun_doctest()را از ماژولtest.supportحذف کنید.gh-110932: رفع مشکل regrtest در صورت تعریف متغیر محیطی
SOURCE_DATE_EPOCH: از مقدار متغیر به عنوان بذر تصادفی استفاده کنید. وصلهای توسط ویکتور استینر.gh-110995: test_gdb: رفع مشکل تشخیص gdb ساختهشده بدون پشتیبانی از اسکریپتنویسی پایتون. وصلهای توسط ویکتور استینر.
gh-110918: الگوهای تطبیق مورد آزمون مشخصشده توسط گزینههای
--match،--ignore،--matchfileو--ignorefileاکنون به ترتیب مشخصشدن آزمایش میشوند و آخرین تطابق تعیین میکند که مورد آزمون اجرا شود یا نادیده گرفته شود.gh-108747: افزودن آزمون واحد برای قلابهای
usercustomizeوsitecustomizeازsite.
ساخت¶
gh-96954: باعث شوید دستور
make regen-unicodedataبرای ساختهای خارج از درخت (out-of-tree) سیپایتون کار کند.gh-112088: افزودن اسکریپت
Tools/build/regen-configure.shبرای بازسازیconfigureبا یک تصویر ظرف اوبونتو. تصویر ظرفquay.io/tiran/cpython_autoconf:271(tiran/cpython_autoconf) دیگر استفاده نمیشود. وصلهای توسط ویکتور استینر.gh-111046: برای نخهای wasi، حافظه اکنون صادر میشود تا مشکلات سازگاری با برخی از رانتایمهای wasm برطرف شود.
gh-110828: سیستم AIX نسخهی ۳۲ بیتی برای ساخت ماژول توسعهای
_testcapiبه-latomicنیاز دارد.gh-85283: افزونههای C به نامهای
errno،md5،resource،winsound،_ctypes_test،_multiprocessing.posixshmem،_scproxy،_stat،_testimportmultipleو_uuidاکنون با limited C API ساخته میشوند. وصلهای توسط ویکتور استینر.
Windows¶
gh-111856: رفع مشکل
fstat()روی سامانههای پروندهای که از درخواستهای شناسه پرونده پشتیبانی نمیکنند. این موارد شامل FAT32 و exFAT میشود.gh-111293: رفع مشکل
os.DirEntry.inodeکه در برخی از سامانههای پرونده در ویندوز، بیتهای بالاتر ۶۴ یک شناسهی پرونده را حذف میکرد.gh-110913: بخش WindowsConsoleIO اکنون بافرهای بزرگ را بهدرستی و بدون تقسیم کردن دنبالههای UTF-8 قطعهبندی میکند.
مکاواس¶
gh-59703: برای ساختهای چارچوب macOS، در پروندهی
getpath.cاز تابعdladdrسیستمی برای یافتن مسیر کتابخانهی مشترک استفاده کنید، به جای اینکه به APIهای منسوخ macOS وابسته باشید.gh-110950: بروزرسانی برنامهی نصب macOS برای گنجاندن اصلاحیهی بالادستی Tcl/Tk جهت رفع خطای
Secure coding is not enabled for restorable state!که در Tkinter روی سیستمعامل macOS 14 Sonoma رخ میدهد.gh-111015: اطمینان حاصل کنید که IDLE.app و Python Launcher.app با مجوزهای مناسب در ساختهای macOS نصب میشوند.
gh-71383: بروزرسانی برنامهی نصب macOS برای گنجاندن اصلاحیهی بالادستی Tcl/Tk جهت رفع خطای
ttk::ThemeChangedکه در Tkinter رخ میدهد.gh-92603: بروزرسانی برنامهی نصب macOS برای گنجاندن اصلاحیهای که توسط Tcl/Tk بالادستی پذیرفته شده است، برای رفع فروپاشیای که پس از نابود شدن اولین نمونهی
tkinter.Tk()رخ میدهد.
IDLE¶
bpo-35668: افزودن رشته مستندها به ماژول اشکالزدای IDLE. رفع دو باگ: مقداردهی اولیه به
Idb.botframe(باید در Bdb باشد)؛ درIdb.in_rpc_code، پیش از تلاش برای استفاده ازprev_frame، بررسی کنید که آیاNoneاست یا خیر. گسترش چشمگیر test_debugger.
Tools/Demos¶
gh-111903: آرگومان کلینیک اکنون از دایرکتیو
@critical_sectionپشتیبانی میکند که به آرگومان کلینیک دستور میدهد یک بخش بحرانی پیرامون فراخوانی تابع ایجاد کند، که شیءselfرا در ساختهای--disable-gilقفل میکند. وصله توسط Sam Gross.
رابط C API¶
gh-112026: افزودن مجدد تابع خصوصی
_PyThreadState_UncheckedGet()به عنوان نام مستعاری برای تابع عمومی جدیدPyThreadState_GetUnchecked(). وصله توسط Victor Stinner.gh-112026: بازیابی تابع حذفشدهی
_PyDict_GetItemStringWithError(). این تابع توسط numpy استفاده میشود. وصله توسط Victor Stinner.gh-112026: بازیابی توابع، ماکروها و ساختارهای خصوصی حذفشدهی API که در حال حاضر جایگزین سادهای ندارند:
_PyDict_GetItem_KnownHash()
_PyDict_NewPresized()
_PyHASH_BITS
_PyHASH_IMAG
_PyHASH_INF
_PyHASH_MODULUS
_PyHASH_MULTIPLIER
_PyLong_Copy()
_PyLong_FromDigits()
_PyLong_New()
_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()
ساختار _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()
توسط Victor Stinner وصل شد.
gh-112026: افزودن مجدد شاملهای
<ctype.h>و<unistd.h>درPython.h، اما آنها را در نسخهی ۳.۱۳ و جدیدتر API محدود C قرار ندهید. وصله توسط Victor Stinner.gh-111956: افزودن API مقداردهی اولیهی یکبارهی فقط-داخلی:
_PyOnceFlagو_PyOnceFlag_CallOnce.gh-111262: افزودن توابع
PyDict_Pop()وPyDict_PopString(): حذف یک کلید از یک دیکشنری و بهطور اختیاری برگرداندن مقدار حذفشده. این شبیه بهdict.pop()است، اما بدون مقدار پیشفرض و اگر کلید وجود نداشته باشد خطایKeyErrorرا بالا نمیآورد. وصله توسط Stefan Behnel و Victor Stinner.gh-111863: تغییر نام
Py_NOGILبهPy_GIL_DISABLED. وصله توسط Hugo van Kemenade.gh-111138: افزودن توابع
PyList_Extend()وPyList_Clear(): مشابه متدهایlist.extend()وlist.clear()در پایتون. وصله توسط Victor Stinner.gh-108765: در سیستمعامل ویندوز، پروندهی سرآیند
Python.hدیگر به طور خودکار پروندهی سرآیند استاندارد<stddef.h>را شامل نمیشود. در صورت نیاز، اکنون باید به صورت صریح اضافه شود. وصلهای از Victor Stinner.gh-111569: پیادهسازی «بخشهای بحرانی پایتون» از PEP 703. این موارد ماکروهایی هستند که به جایگزینی GIL با قفلِ مخصوص هر شیء در ساختِ
--disable-gilسیپایتون کمک میکنند. این ماکروها در ساخت پیشفرض عملیات بیاثر هستند.gh-111506: در نسخهی API محدود ۳.۱۳، تابع
Py_SET_REFCNT()اکنون به صورت یک فراخوان تابع کدر پیادهسازی شده است. وصلهای از Victor Stinner.gh-108082: افزودن تابع
PyErr_FormatUnraisable().gh-110964: انتقال توابع خصوصی و مستندسازینشدهی _PyArg و ساختار _PyArg_Parser به API داخلی (
pycore_modsupport.h). وصلهای از Victor Stinner.gh-110815: پشتیبانی از نامهای کلیدواژهی غیر اسکی در
PyArg_ParseTupleAndKeywords().gh-109587: توابع
PyUnstable_PerfTrampoline_CompileCode()،PyUnstable_PerfTrampoline_SetPersistAfterFork()وPyUnstable_CopyPerfMapFile()اضافه شدند. این توابع به ماژولهای توسعهای اجازه میدهند تا پس از «گرم شدن» برنامه، ترامپولینها را به صورت مشتاقانه مقداردهی اولیه کنند. این کار باعث میشود ترامپولینهای عملکردی به صورت همیشه فعال اجرا شوند.gh-85283: افزودن تابع
PySys_Audit()به API محدود. وصلهای از Victor Stinner.gh-85283: افزودن
PyMem_RawMalloc()،PyMem_RawCalloc()،PyMem_RawRealloc()وPyMem_RawFree()به API محدود. وصلهای از Victor Stinner.gh-106672: توابع
PyDict_GetItem()،PyDict_GetItemString()،PyMapping_HasKey()،PyMapping_HasKeyString()،PyObject_HasAttr()،PyObject_HasAttrString()وPySys_GetObject()که تمام خطاهای رخداده در حین فراخوانی تابع را پاک میکنند، اکنون آنها را با استفاده ازsys.unraisablehook()گزارش میدهند.gh-67565: حذف بررسی پیوستگی C اضافی در
getargs.c،binascii،sslو Argument Clinic. وصلهشده توسط Stefan Krah و Furkan Onder
Python 3.13.0 alpha 1¶
Release date: 2023-10-13
امنیت¶
gh-108310: رفع مشکلی که در آن نمونههای
ssl.SSLSocketدر برابر دور زدن دستدهی TLS و محافظتهای گنجاندهشده (مانند تأیید اعتبار گواهی) آسیبپذیر بودند و دادههای رمزنشدهی ارسالی را مانند دادههای رمزنگاریشدهی TLS پس از دستدهی رفتار میکردند. مسئلهی امنیتی توسط Aapo Oksman با شناسه CVE 2023-40217 گزارش شد. وصلهای از Gregory P. Smith.gh-107774: پیشنهاد بهبود پایتون ۶۶۹ مشخص میکند که
sys.monitoring.register_callbackیک رویداد حسابرسی تولید خواهد کرد. نسخههای پیش از انتشار پایتون ۳.۱۲ رویداد حسابرسی را تولید نمیکردند. این مشکل اکنون برطرف شده است.gh-102988: بازگردانی تغییر بهبود امنیتی
email.utilsکه در 3.12beta4 منتشر شد و به طور ناخواسته باعث شدemail.utils.getaddressesدر تجزیهی نشانیهای ایمیل با یک کاما در فیلد نام نقلقولشده با خطا مواجه شود. نگاه کنید به gh-106669.gh-99108: بهروزرسانی کد جدید توکار HACL* ماژول
hashlibاز مخزن بالادستی. کد توکار SHA2 باید سریعتر باشد و مشکلی با SHA3 روی پلتفرمهای ۳۲ بیتی برطرف شده است.gh-102509: شروع مقداردهی اولیهی
ob_digitدر طول ایجاد شیءهایPyLongObject. وصلهای از Illia Volochii.
هسته و توکارها (Core and Builtins)¶
gh-110782: برطرف کردن فروپاشی هنگام ساخت
typing.TypeVarبا یک آرگومان کلیدواژهای. وصلهای از Jelle Zijlstra.gh-110752: بازنشانی
ceval.eval_breakerدرinterpreter_clear()gh-110721: استفاده از پیادهسازی
tracebackبرای قابلیت پیشفرضPyErr_Display(). وصلهای از Pablo Galindogh-110696: رفع پیام خطای نادرست برای بازکردن بستهی نامعتبر آرگومان. وصلهای از Pablo Galindo
gh-104169: تقسیم توکنساز به دو پوشهی مجزا: - بخش اول شامل منطق اصلی تولیدکنندهی lexeme است و در
Parser/lexerقرار دارد. - بخش دوم، توکنساز را بر اساس حالتهای مختلف توکنسازی که داریم (رشته، utf-8، پرونده، تعاملی، readline) دربرمیگیرد و درParser/tokenizerقرار دارد.gh-110688: حذف متد مستندنشدهی
test_c_apiازsetکه فقط برای مقاصد آزمون تحتPy_DEBUGتعریف شده بود. اکنون آزمونهای CAPI مناسبی داریم.gh-104584: رفع نشت ارجاع هنگام اجرا با فعال بودن
PYTHONUOPSیا-X uops.gh-110514: افزودن
PY_THROWبه رویدادهایsys.setprofile()gh-110489: بهینهسازی
math.ceil()هنگامی که ورودی دقیقاً یک عدد اعشاری است، که به بهبودی در حدود ۱۰ درصد منجر میشود.gh-110455: محافظت از
assert(tstate->thread_id > 0)با#ifndef HAVE_PTHREAD_STUBS. این کار باعث میشود نسخههای ساختی pydebug تحت WASI که (در حال حاضر) فاقد پشتیبانی از نخ است، کار کنند.gh-110309: حذف گرههای ثابت خالی غیرضروری در ast مربوط به مشخصات افاسترینگ.
gh-110259: شناسایی صحیح مشخصات قالب در افاسترینگها (با نقلقولهای تک یا سهگانه) که در بخش عبارت دارای چندین سطر هستند و شامل مشخصات قالببندی میشوند. وصلهای از Pablo Galindo
gh-110237: رفع بررسیهای خطای مفقود برای فراخوانیهای
PyList_Appendدر_PyEval_MatchClass.gh-110164: ابزار regrtest: اگر متغیر محیطی
SOURCE_DATE_EPOCHتعریف شده باشد، regrtest اکنون تصادفیسازی آزمونها را غیرفعال میکند. وصلهای از Victor Stinner.gh-109889: رفع الگوریتم تشخیص NOP زائد کامپایلر برای رد کردن NOPهای بدون شمارهسطر هنگام جستجو برای شمارهسطر دستور بعدی.
gh-109853: متغیر
sys.path[0]اکنون به درستی برای زیرمفسرها تنظیم میشود.gh-109923: تنظیم شمارهسطر روی
POP_TOPکه پس از یکRETURN_GENERATORمیآید.gh-105716: زیرمفسرها اکنون به درستی حالتی را مدیریت میکنند که در پسزمینه دارای نخهای در حال اجرا هستند. پیش از این، چنین نخهایی با پاکسازی و نابود کردن آنها تداخل ایجاد میکردند و مانع از اجرای اسکریپتی دیگر میشدند.
gh-109369: متغیر داخلی eval_breaker و پرچمهای پشتیبان، به همراه نسخهی نظارت برای تسریع بررسیها در یک عدد صحیح اتمی واحد ادغام شدهاند.
gh-109823: رفع باگی که در آن کامپایلر هنگام حذف یک بلوک پایه خالی که هدف پرش است، برچسبها را تنظیم نمیکند.
gh-109793: نخ اصلی دیگر هنگامی که یک زیرمفسر در طول نهاییسازی رانتایم پاکسازی میشود، زودتر از موعد خارج نمیشود. این باگ به این دلیل مشکلساز بود که وقتی فعال میشد، فرایند پایتون همیشه با یک کد خروج 0 بازمیگشت، حتی اگر شکست میخورد.
gh-109719: رفع برچسبهای هدف پرش مفقود هنگامی که کامپایلر بلوکهای سرد/گرم را مرتبسازی مجدد میکند.
gh-109595: اضافهکردن سوئیچ خط فرمان
-X cpu_countبرای بازنویسی نتایج بازگشتیos.cpu_count()وos.process_cpu_count(). این گزینه برای کاربرانی مفید است که باید منابع پردازندهی یک سیستم کانتینر را بدون نیاز به تغییر دادن کانتینر (کد برنامه) محدود کنند. وصل توسط Donghee Na.gh-109627: رفع باگی که در آن کامپایلر برچسب هدف پرش جدیدی را به یک بلوک خروج کوچک تکراری اختصاص نمیدهد.
gh-109596: اصلاح برخی توکنها در گرامر که به اشتباه به عنوان کلیدواژههای نرم علامتگذاری شده بودند. همچنین اصلاح برخی نامهای قوانین تکرارشده و اطمینان از اینکه قوانین تکرارشده مجاز نیستند. وصل توسط Pablo Galindo
gh-109496: در حالت اشکالزدایی داخلی پایتون،
Py_DECREF()اکنون اگر شیء یک اشارهگر معلق به حافظهی آزادشده باشد، تابع_Py_NegativeRefcount()را فراخوانی میکند: حافظهای که توسط قلاب اشکالزدایی در تخصیصدهندههای حافظه با بایت مردهی0xDDپر شده است. راهحل این است که شمارهی ارجاع پیش از بررسی_Py_IsImmortal()بررسی شود. وصل توسط Victor Stinner.gh-107265: رفع آپکدهای بهینهنشده (Deopt) که توسط اجراکننده پنهان شده بودند، در مواقعی که آپکد پایه مورد نیاز است
gh-109371: بهینهسازی صحیح دستورات برای راهاندازی ابزار و اصلاح شرط نادرست در ابزارگذاری، هنگامی که ابزار قبلی از قبل رویدادهای INSTRUCTION را تنظیم کرده است
gh-105658: رفع باگی که در آن رد خطِ یک بلوک except که با یک شرط پایان مییابد، شامل یک رویداد اضافی با سطر عبارت شرطی است.
gh-109219: رفع مشکل کامپایل محدودههای پارامتر نوع که از نامی استفاده میکنند که در یک محدودهی داخلی نیز آزاد است.
gh-109351: رفع خرابی هنگام کامپایل یک AST نامعتبر که شامل یک عبارت نامگذاریشده (walrus) است.
gh-109341: رفع خرابی هنگام کامپایل یک AST نامعتبر که شامل یک
ast.TypeAliasاست.gh-109195: اصلاح مکان منبع برای دستور
LOAD_*پیش ازLOAD_SUPER_ATTRجهت بارگذاری متغیر سراسریsuper(یا متغیر سایهکننده) به طوری که فقط نامsuperرا در بر گیرد و شامل پرانتزهای بعدی نشود.gh-109256: شناسهی آپکدها برای آپکدهای تخصصی در محدودهی خود تخصیص داده میشوند تا پایداری شناسهها برای آپکدهای «واقعی» بهبود یابد.
gh-109207: رفع یک خطای SystemError در
__repr__شیء ورودی جدول نماد (symtable).gh-109179: رفع باگی که در آن نمایش ردگیری C یادداشتها را از
SyntaxErrorحذف میکند.gh-109118: عدم اجازه به محدودههای تودرتو (عبارتهای لامبدا، عبارتهای تولیدگر، و درککنندهها) در محدودههای حاشیهنویسی PEP 695 که در داخل کلاسها تودرتو شدهاند.
gh-109156: افزودن آزمونها برای حذف ابزارگذاری دستورات در حالی که ابزارگذاری برای سطرها حفظ میشود
gh-109114: تسهیل تشخیص پیام خطا برای لامبداهای نامعتبر درون افاسترینگها به طوری که برای جلوگیری از مثبتهای کاذب، به دنبال فیلدهای جایگزینی دلخواه نگردد. وصل توسط Pablo Galindo
gh-105848: افزودن یک آپکد جدید
CALL_KW، که برای فراخوانیهای حاوی آرگومانهای کلیدواژهای استفاده میشود. همچنین، رفع خرابی احتمالی هنگام پرش از روی فراخوانی متدها در یک اشکالزدای.gh-109052: استفاده از آپکد پایه هنگام مقایسهی اشیای کد برای جلوگیری از تداخل ابزارگذاری
gh-109118: رفع فروپاشی مفسر هنگامی که یک NameError در پارامترهای نوع یک کلاس عام ایجاد میشود.
gh-88943: بهبود خطای سینتکس برای نویسهی غیر اسکی که پس از یک مقدار لفظی عددی میآید. اکنون به نویسهی غیر اسکی نامعتبر اشاره میکند، نه به مقدار لفظی عددی معتبر.
gh-108976: رفع فروپاشی که پس از جداسازی ابزارکسازی (de-instrumenting) یک شیء کد در یک فراخوانی بازگشتی نظارت رخ میدهد.
gh-108732: قابل مشاهده کردن دوبارهی متغیرهای پیمایش در درککنندههای دارای محدودهی ماژول و کلاس برای pdb و سایر ابزارهایی که از
frame.f_localsاستفاده میکنند.gh-108959: رفع مکاننمایی کارِت برای موقعیتهای خطا در زیرنویس و عملیات دودویی که شامل پرانتزها و فضاهای غیرمعنایی هستند. وصله توسط پابلو گالیندو (Pablo Galindo)
gh-104584: رفع فروپاشی هنگام اجرا با فعال بودن
PYTHONUOPSیا-X uopsو بروز خطا در طول بهینهسازی.gh-108727: تعریف
tp_deallocبرایCounterOptimizer_Type. این کار یک خطای حافظه (segfault) را هنگام آزادسازی حافظه رفع میکند.gh-108520: اصلاح تابع
multiprocessing.synchronize.SemLock.__setstate__()برای مقداردهی اولیهی درستmultiprocessing.synchronize.SemLock._is_fork_ctx. این کار یک رگرسیون را هنگام ارسال یک SemLock بین فرایندهای تو در تو رفع میکند.تغییر نام
multiprocessing.synchronize.SemLock.is_fork_ctxبهmultiprocessing.synchronize.SemLock._is_fork_ctxبرای جلوگیری از قرار گرفتن آن به عنوان یک API عمومی.gh-108654: بازیابی متغیرهای محلی پوششدادهشده توسط یک درککنندهی درونخطی (inlined) اگر درککننده یک استثنا ایجاد کند.
gh-108488: تغییر مقداردهی اولیهی شناسههای نهانگاه درونخطی به طوری که شناسهی نهانگاه برای
JUMP_BACKWARDبه جای مقدارadaptive_counter_warmup()که برای سایر دستورات استفاده میشود، روی صفر مقداردهی اولیه شود. این شمارنده، که در میان دستورات منحصربهفرد است، از صفر بالا میشمارد.gh-108716: غیرفعال کردن فریز عمیق اشیای کد. ماژولها همچنان فریزشده باقی میمانند، به طوری که برای ماژولهای رایج نیازی به جستجوی سامانه پرونده نیست.
gh-108614: افزودن دستور RESUME_CHECK، برای اجتناب از نیاز به مدیریت ابزارکسازی، سیگنالها و تعویض زمینهها در موتور اجرای سطح ۲.
gh-108487: جابجایی یک ادعا (assert) که باعث فروپاشی ساختگی در یک حالت پیچیده میشود که فقط باید باعث بهینهسازیزدایی شود.
gh-106176: استفاده از یک
WeakValueDictionaryبرای ردیابی فهرستهای حاوی ماژولهایی که هر نخ در حال حاضر در حال ایمپورت کردن آنها است. این کار کمک میکند از نشت ارجاع ناشی از نگه داشتن فهرست بیش از حد لازم جلوگیری شود. از ارجاعات ضعیف (Weakrefs) استفاده میشود زیرا جمعآور زباله (GC) نمیتواند پاکسازی را متوقف کند.gh-105481: مرحلهی ساخت regen-opcode حذف شد و کار آن اکنون در regen-cases انجام میشود.
gh-107901: رفع شماره سطر مفقود شده در
JUMP_BACKWARDدر انتهای یک حلقهی for.gh-108113: تابع توکار
compile()اکنون میتواند پرچم جدیدی به نامast.PyCF_OPTIMIZED_ASTرا بپذیرد که شبیه بهast.PyCF_ONLY_ASTاست، با این تفاوت کهASTبازگرداندهشده با توجه به مقدار آرگومانoptimizeبهینهسازی میشود.تابع
ast.parse()اکنون یک آرگومان اختیاریoptimizeرا میپذیرد که به تابع توکارcompile()منتقل میشود. این کار امکان به دست آوردن یکASTبهینهسازیشده را فراهم میکند.gh-107971: شناسههای آپکد به جای اینکه به صورت سختکد شده در opcode.py باشند، از bytecodes.c تولید میشوند.
gh-107944: بهبود پیام خطا برای فراخوانیهای تابع با آرگومانهای کلیدواژهای نادرست. وصله توسط Pablo Galindo
gh-108390: در صورتی که یک رویداد غیرمحلی (
RAISE،EXCEPTION_HANDLEDو غیره) درsys.monitoring.set_local_eventsتنظیم شود، یک استثنا ایجاد میکند.رفع فروپاشی هنگام ردیابی در فراخوانیهای بازگشتی به کلاسهای پایتون.
gh-108035: حذف ساختار
_PyCFrameو بازگرداندن اشارهگر به قاب مفسر فعلی به threadstate، همانطور که در نسخهی ۳.۱۰ و نسخههای قبلی بود. ساختار_PyCFrameبهعنوان یک بهینهسازی کارایی برای ردیابی وجود داشت. از زمان پیادهسازی PEP 669، این بهینهسازی دیگر اعمال نمیشود.gh-91051: رفع توقف ناگهانی / خطای segmentation fault هنگام استفاده از هر هشت جایگاه ردیاب نوع، در پلتفرمهایی که در آنها
charبهطور پیشفرض علامتدار است.gh-106581: رفع خطاهای احتمالی شرط (assertion) و رویدادهای ابزارگذاری ازدسترفته زمانی که
PYTHONUOPSیا-X uopsفعال است.gh-107526: بازگرداندن تبدیل
vars،dir،next،getattrوiterبه argument clinic.gh-84805: تولید خودکار امضا برای توابع افزونهی
METH_NOARGSوMETH_O.gh-107758: مقاومسازی روال
dump_stack()مورد استفاده توسط ویژگیlltrace(اشکالزدایی سطح پایین مفسر) در برابر بازگشت، با اطمینان از اینکه هرگز متد__repr__پیادهسازیشده در پایتون را فراخوانی نمیکند. همچنین باعث میشود خروجی مشابه برای uopsهای سطح ۲ رویstdout(بهجایstderr) ظاهر شود تا با کدlltraceدر ceval.c مطابقت داشته باشد.gh-107659: افزودن رشتههای مستند (docstring) برای
ctypes.pointer()وctypes.POINTER().gh-105848: اصلاح بایتکد بهطوریکه فراخوانیپذیر واقعی برای یک
CALLدر موقعیتی ثابت روی پشته قرار داشته باشد (صرفنظر از اینکه بهینهسازیهای فراخوانی متد کراندار فعال باشند یا خیر).gh-107674: رفع پسرفت کارایی در
sys.settrace.gh-107724: در نسخههای پیشانتشار ۳.۱۲، تا نسخه نامزدی اول (rc1)، تابع فراخوانی بازگشتی sys.monitoring برای رویداد
PY_THROWآرگومان سوم یعنی استثنا را نداشت. این مورد اکنون رفع شده است.gh-84436: رد کردن اصلاحات شمارش ارجاع برای بسیاری از اشیاء نامیرای شناختهشده.
gh-107596: اختصاصی کردن زیرنویسدهی اشیاء
strبر اساس اندیسهایint.gh-107080: نسخههای ساخت ردیابی ارجاعات (
--with-trace-refs) هنگام استفاده با زیرمفسرهای ایزوله دچار فروپاشی میشدند. وضعیت سراسری مسئلهساز به هر مفسر ایزوله شده است. به غیر از رفع فروپاشیها، این تغییر تاثیری روی کاربران ندارد.gh-107557: تولید موارد لازم برای مفسر انتزاعی سطح ۲ ساده (barebones) جهت مراحل بهینهسازی در سیپایتون.
gh-106608: متغیر ساختن طول متغیر
_PyUOpExecutorObject.gh-100964: پاکسازی وضعیت استثنای تولیدگرها پس از
returnبرای شکستن چرخههای ارجاع.gh-107455: بهبود پیامهای خطا هنگام تبدیل یک نوع ناسازگار به
ctypes.c_char_p،ctypes.c_wchar_pوctypes.c_void_p.gh-107263: حد بازگشتی C برای توابع به غیر از مفسر اصلی را از ۸۰۰ به ۱۵۰۰ افزایش دهید. این کار باید به توابع مانند
list.__repr__وjson.dumpsاجازه دهد تا تمام ورودیهایی را که پیش از نسخهی ۳.۱۲ میتوانستند، مدیریت کنند.gh-104584: رفع مشکلی که باعث میشد هنگام اجرا با
PYTHONUOPSیا-X uopsفعال، نهانگاههای درونخطی نادرست خوانده شوند.gh-104432: رفع دسترسی به حافظهی همترازنشدهی احتمالی در APIهای C مربوط به دنبالههای بازگرداندهشده از اشارهگرهای
char *در ماژولهایgrpوsocket. این موارد با استفاده از ساخت-fsaniziter=alignmentروی ARM macOS آشکار شدند. وصلهای از کریستوفر چاوز (Christopher Chavez).gh-106078: ایزوله کردن ماژول
_decimal(اعمال PEP 687). وصلهای از چارلی ژائو (Charlie Zhao).gh-106898: افزودن استثنا به عنوان آرگومان سوم به کالبکهای
PY_UNINDدرsys.monitoring. این کار کالبکPY_UNWINDرا با سایر کالبکهای مدیریت استثنا سازگار میکند.gh-106895: هنگامی که یک تابع کالبک مانیتورینگ مقدار
DISABLEرا برای رویدادهایی که نمیتوانند بهصورت محلی غیرفعال شوند برمیگرداند، یکValueErrorایجاد کنید.gh-106897: افزودن یک رویداد
RERAISEبهsys.monitoringکه وقتی رخ میدهد که یک استثنا مجدداً ایجاد شود؛ چه بهطور صریح توسط یک دستورraiseساده و چه بهطور ضمنی در یک بلوکexceptیاfinally.gh-77377: اطمینان حاصل کنید که اشیاء همگامسازی multiprocessing که در یک زمینهی انشعاب ایجاد شدهاند، به یک پردازش متفاوت ایجاد شده در زمینهی spawn ارسال نمیشوند. این تغییر باعث تبدیل شدن یک خطای segmentation fault به یک خطای RuntimeError قابل پیگیری در پردازش والد میشود.
gh-106931: اشیاء رشتهای تخصیصیافتهی ایستا اکنون بهجای هر مفسر، بهطور سراسری درونیسازی میشوند. این امر وضعیتی را اصلاح میکند که در آن چنین رشتهای فقط در یک مفسر منفرد درونیسازی میشد. اشیاء رشتهای معمولی تحت تأثیر قرار نمیگیرند.
gh-104621: ماژولهای پشتیبانینشده اکنون همیشه در وارد کردن شکست میخورند.
gh-107122: افزودن
dbm.ndbm.ndbm.clear()بهdbm.ndbm. وصلهای از دونگهی نا (Donghee Na).gh-107122: افزودن
dbm.gnu.gdbm.clear()بهdbm.gnu. وصلهای از دونگهی نا (Donghee Na).gh-107015: توکنهای ASYNC و AWAIT از دستورزبان (Grammar) حذف شدند، که امکان تبدیل
asyncوawaitبه کلیدواژههای نرم را هنگام استفاده ازfeature_version<7درast.parse()حذف میکند.gh-106917: اصلاح فراخوانیهای متد
super()به سبک classmethod (یعنی زمانی که آرگومان دوم بهsuper()، یا آرگومان دوم ضمنی گرفته شده ازself/clsدر صورت استفاده از super بدون آرگومان، یک نوع است) هنگامی که هدف فراخوانی یک classmethod نیست.gh-105699: پایتون دیگر به دلیل یک وضعیت رقابت نادر هنگام مقداردهی اولیه رشتههای درونیسازیشدهی هر مفسر، دچار فروپاشی نمیشود. این فروپاشی زمانی آشکار میشد که مفسر نهایی میشد.
gh-105699: پایتون دیگر به دلیل یک وضعیت رقابت نادر در تنظیم
Py_FileSystemDefaultEncodingوPy_FileSystemDefaultEncodeErrors(هر دو منسوخ شدهاند)، هنگام مقداردهی اولیه همزمان دو زیرمفسر ایزوله، دچار فروپاشی نمیشود. اکنون آنها فقط در طول مقداردهی اولیهی رانتایم تنظیم میشوند.gh-106908: رفع انواع توقفها، نشتیهای ارجاع، خرابیهای آزمون و باگهای ردیابی/دروننگری هنگام اجرا با
PYTHONUOPSیا-X uopsفعال.gh-106092: رفع یک خطای قطعهبندی (segmentation fault) ناشی از یک باگ استفاده پس از آزادسازی (use-after-free) در
frame_deallocهنگامی که trashcan آزادسازی یکPyFrameObjectرا به تأخیر میاندازد.gh-106485: کاهش تعداد دیکشنریهای نمونههای مادیشده با نامادیسازی آنها در صورت امکان.
gh-106719: دیگر خطاهای دلخواه در getter و setter ویژگی
__annotations__در نوعهای type و module سرکوب نمیشوند.gh-106723: انتقال
frozen_modulesبه مفسرهای فرایند ایجادشدهی multiprocessing.gh-104909: تجزیهی
LOAD_ATTR_INSTANCE_VALUEبه ریزعملها.gh-104909: تجزیهی تخصیصهای
LOAD_GLOBALبه ریزعملها.gh-106597: ساختار اشکالزدایی جدیدی از آفستها به
_PyRuntimeStateاضافه شده است که به دیباگرها و پروفایلگیرهای خارج از فرایند کمک میکند تا آفستها را به ساختارهای مفسر مربوطه به روشی مستقل از نحوهی کامپایل شدن پایتون و بدون نیاز به کپی کردن سرآیندها به دست آورند. وصل توسط Pablo Galindogh-106487: اجازه دادن به آرگومان count متد
str.replace()تا به عنوان کلیدواژه استفاده شود. وصل توسط Hugo van Kemenade.gh-96844: بهبود پیام خطای
list.remove(). وصل توسط Donghee Na.gh-81283: کامپایلر اکنون تورفتگیها را از رشتههای مستند حذف میکند. هنگامی که ماژول به شدت مستند شده باشد، این کار اندازهی پروندهی
pycرا ۵ درصد کاهش میدهد. این تغییر روی__doc__تأثیر میگذارد، بنابراین ابزارهایی مانند doctest تحت تأثیر قرار خواهند گرفت.gh-106396: هنگامی که مشخصات قالب یک عبارت افاسترینگ خالی است، پارسر اکنون به جای یک
ast.JoinedStrتکعنصری با یکast.Constantرشتهی خالی، یک گرهیast.JoinedStrخالی برای آن تولید میکند.gh-100288: تخصصیسازی
LOAD_ATTRبرای غیرتوصیفگرها در کلاس. افزودنLOAD_ATTR_NONDESCRIPTOR_WITH_VALUESوLOAD_ATTR_NONDESCRIPTOR_NO_DICT.gh-106008: رفع نشت ارجاع احتمالی در هنگام شکست در بهینهسازی مقایسهها با
Noneدر کامپایلر بایتکد.gh-106145: الزامی کردن
end_linenoوend_col_offsetروی گرههای ast باtype_param.gh-106213: تغییر نحوهی کارکرد ترامپولینهای فراخوانی Emscripten برای سازگاری با یکپارچهسازی Promise در Wasm/JS.
gh-106182: توابع
sys.getfilesystemencoding()وsys.getfilesystemencodeerrorsاکنون شیء یونیکد درونیسازیشدهای را برمیگردانند.gh-106210: حذف ترامپولین ایمپورت Emscripten زیرا دیگر برای Pyodide ضروری نبود.
gh-104584: افزودن یک بهینهساز و مفسر ردیابی جدید و آزمایشی (معروف به «لایه ۲» یا "tier 2"). این مورد در حال حاضر باعث افت عملکرد میشود، بنابراین هنوز از آن استفاده نکنید -- این زیرساختی است تا بتوانیم روی پاسهای بهینهسازی آزمایش کنیم. برای فعال کردن آن،
-Xuopsرا ارسال کنید یاPYTHONUOPS=1را تنظیم کنید. برای دریافت خروجی اشکالزدایی،PYTHONUOPSDEBUG=Nرا تنظیم کنید که در آنNسطح اشکالزدایی است (۰ تا ۴، که در آن ۰ یعنی بدون خروجی اشکالزدایی و ۴ یعنی بسیار پرجزئیات).gh-105775: دستور
LOAD_CLOSUREاکنون یک شبهدستور (pseudo-op) است.gh-105730: اجازه دادن به هر شیء فراخوانیپذیری به غیر از اشیاء نوع به عنوان محمول شرط در
BaseExceptionGroup.split()وBaseExceptionGroup.subgroup().gh-105979: رفع فروپاشی در
_imp.get_frozen_object()به دلیل مدیریت نامناسب استثنا.gh-106003: افزودن یک دستور جدید
TO_BOOLکه تبدیلهای بولی را برایPOP_JUMP_IF_TRUE،POP_JUMP_IF_FALSEوUNARY_NOTانجام میدهد (که اکنون همگی مقادیر دقیقboolرا انتظار دارند). همچنین، تغییر oparg مربوط بهCOMPARE_OPبرای گنجاندن یک پرچم «تبدیل بولی» اختیاری.gh-98931: اطمینان از اینکه پیامهای خطای سفارشی
SyntaxErrorبرای ایمپورتهای نامعتبر با چندین هدف بالا آورده میشوند. وصل توسط Pablo Galindogh-105724: بهبود پیامهای خطای
assertبا ارائهی محدودهی دقیق خطا.gh-105908: رفع باگی که در آن gh-99111 ایمپورت مستقبل
barry_as_FLUFLرا در REPL پایتون خراب میکند.gh-105840: رفع فروپاشیهای احتمالی هنگام تخصصیسازی فراخوانیهای تابع با تعداد زیادی
__defaults__.gh-105831: رفع باگ افاسترینگی که در آن استفاده از یک عبارت دیباگ (علامت
=) در آخرین سطر یک پرونده باعث میشود بافر دیباگی که متن عبارت را نگه میدارد، به اندازهی یک نویسه کوچکتر باشد.gh-105800: صدور درست
SyntaxWarningدر افاسترینگها در صورت استفاده از دنبالههای نامعتبر. وصله توسط پابلو گالیندو (Pablo Galindo)gh-105340: گنجاندن متغیر پیمایش درک مطلب در
locals()درون یک درک مطلب با محدودهی ماژول یا کلاس.gh-105331: ایجاد استثنای
ValueErrorاگر آرگومانdelayبرای تابعasyncio.sleep()برابر با NaN باشد (مطابق باtime.sleep()).gh-105587: رانتایم نمیتواند تضمین کند که اشیای نامیرا توسط افزونهها جهش پیدا نکنند. بنابراین، این مورد _PyStaticObject_CheckRefcnt را تغییر میدهد تا به جای assert، اخطار صادر کند.
gh-105564: عدم گنجاندن کاراکترهای خطجدید ساختگی در صفت
lineاز توکنها در APIهای ماژولtokenize. وصله توسط پابلو گالیندوgh-105549: توکنسازی جداگانهی توکنهای
NUMBERوNAMEکه مبهم نیستند. وصله توسط پابلو گالیندو.gh-105588: رفع مشکلی که میتوانست به فروپاشی هنگام کامپایل گرههای معیوب
astمنجر شود.gh-100987: اجازه دادن به اشیایی غیر از اشیای کد به عنوان «فایل اجرایی» در فریمهای داخلی. در بلندمدت، این امر میتواند به ابزارهایی مانند Cython و PySpy کمک کند تا با کارایی بیشتری تعامل داشته باشند. در کوتاهمدت، به ما اجازه میدهد برخی بهینهسازیها را سادهتر انجام دهیم.
gh-105375: رفع باگهای موجود در ماژول
builtinsکه در آنها استثناها ممکن است در نهایت بازنویسی شوند.gh-105375: رفع باگ در کامپایلر که در آن یک استثنا ممکن است در نهایت بازنویسی شود.
gh-105375: بهبود مدیریت خطا در
PyUnicode_BuildEncodingMap()که در آن یک استثنا ممکن است در نهایت بازنویسی شود.gh-105486: تغییر repr فهرست آرگومانهای
ParamSpecدرtypes.GenericAlias.gh-105678: شکستن دستور
MAKE_FUNCTIONبه دو قسمت،MAKE_FUNCTIONکه تابع را میسازد وSET_FUNCTION_ATTRIBUTEکه صفتها را روی تابع تنظیم میکند. این کار اثر پشتهیMAKE_FUNCTIONرا منظم میکند تا بهینهسازی و تولید کد تسهیل شود.gh-105435: رفع نویسهی خطجدید اضافی اگر پرونده به یک کامپایت بدون خطجدید ختم شود. وصله توسط پابلو گالیندو
gh-105390: ایجاد درست استثناهای
tokenize.TokenErrorبه جایSyntaxErrorبرای خطاهای توکنسازی مانند ورودی ناقص. وصله توسط پابلو گالیندوgh-105259: عدم گنجاندن نویسهی خطجدید برای توکنهای پایانی
NEWLINEکه در ماژولtokenizeصادر میشوند. وصله توسط پابلو گالیندوgh-104635: حذف دستورات
STORE_FASTاضافی در کامپایلر. وصله توسط Donghee Na و Carl Meyer.gh-105324: رفع مشکل تابع اصلی
tokenizeهنگام خواندن ازsys.stdin. وصله توسط Pablo Galindogh-33092: سادهسازی و افزایش سرعت مفسر برای افاسترینگها. دستورالعمل
FORMAT_VALUEرا حذف میکند. دستورالعملهایCONVERT_VALUE،FORMAT_SIMPLEوFORMAT_WITH_SPECرا اضافه میکند. کامپایلر دنبالهی کارآمدتری برای هر عبارت قالببندی منتشر میکند.gh-105229: حذف دستورات فوقالعاده (superinstructions) دو کدونیتی باقیمانده. تمام دستورات فوقالعادهی باقیمانده اکنون فقط یک کدونیت میگیرند که ابزارگذاری و سرعتبخشیدن را سادهتر میکند.
gh-105235: جلوگیری از دسترسی به حافظهی خارج از کران (out-of-bounds) طی فراخوانیهای
mmap.find().gh-98963: بازیابی قابلیت زیرکلاس
propertyبرای تعریف__slots__یا بدون دیکشنری بودن از طریق نادیدهگرفتن شکستها در تنظیم رشته مستند روی چنین کلاسی. این رفتار در نسخهی 3.12beta1 پسرفت کرده بود. بروز یکAttributeErrorدر جایی که قبلاً وجود نداشت، برای کد موجود مختلکننده بود.gh-104812: سازوکار «فراخوانی معلق» (pending call) اکنون برای تمام مفسرها، نه فقط مفسر اصلی، کار میکند و در تمام نخها، نه فقط نخ اصلی، اجرا میشود. برخی فراخوانیها همچنان فقط در نخ اصلی و در نتیجه در مفسر اصلی انجام میشوند. این تغییر بر مدیریت سیگنالها یا API عمومی موجود (
Py_AddPendingCall()) تأثیری نمیگذارد، که هر دو همچنان فقط نخ اصلی را هدف قرار میدهند. قابلیت جدید فعلاً صرفاً برای استفادهی داخلی در نظر گرفته شده است، زیرا پیامدهای استفاده از آن هنوز خارج از برخی موارد بسیار محدود به خوبی شناخته نشده است. این تغییر قابلیت را با هدفی که سالها پیش هنگام مستقل کردن وضعیت برای هر مفسر وجود داشت، همراستا میکند.gh-105194: مشخصکنندههای قالب افاسترینگ را با بکاسلشها خنثی نکنید (escape نکنید). وصله توسط Pablo Galindo
gh-105229: جایگزینی برخی دستورات فوقالعادهی پویا با معادلهای تکدستوری.
gh-105162: رفع باگ در generator.close()/throw() که در آن یک پیمایشگر داخلی هنگام ابزارگذاری پیمایشگر بیرونی نادیده گرفته میشد.
gh-105164: اطمینان از تنظیم درست حاشیهنویسیها اگر تنها حاشیهنویسی در یک بلوک درون یک بلوک
matchباشد. وصله توسط Jelle Zijlstra.gh-105148: داخلی کردن
_PyASTOptimizeStateبرای ast_opt.c. باعث شود_PyAST_Optimizeبه جای اشارهگر به این struct، دو عدد صحیح بگیرد. این کار نیاز به گنجاندن pycore_compile.h در ast_opt.c را از بین میبرد.gh-104799: ویژگیهای گرههای
astکه فهرست هستند، اکنون در صورت حذفشدن بهطور پیشفرض به فهرست خالی تبدیل میشوند. این بدان معناست که برخی از کدهایی که قبلاً هنگام استفاده از گره AST خطایTypeErrorایجاد میکردند، اکنون با فهرست خالی ادامه خواهند داد. وصله توسط Jelle Zijlstra.gh-105111: حذف ماکروهای قدیمی سطل زباله
Py_TRASHCAN_SAFE_BEGINوPy_TRASHCAN_SAFE_END. آنها باید با ماکروهای جدیدPy_TRASHCAN_BEGINوPy_TRASHCAN_ENDجایگزین شوند.gh-105035: رفع فراخوانیهای
super()روی انواع با پیادهسازی سفارشیtp_getattro(مانند انواع متا).gh-105017: نمایش خطوط CRLF در ویژگی رشتهی tokenize در هر دو توکن NL و NEWLINE. وصله توسط Marta Gómez.
gh-105013: رفع نحوهی پردازش لامبداهای پرانتزدار چندخطی در
inspect.getsource(). وصله توسط Pablo Galindogh-105017: هنگام تجزیهی پروندههای دارای خطوط CRLF، توکن نهایی اضافی
NLرا اضافه نکنید. وصله توسط Marta Gómez.gh-104976: اطمینان از اینکه اشیاء
tokenize.TokenInfoمربوط بهDEDENTپایانی که توسط ماژولtokenizeصادر میشوند، درست مانند پایتون ۳.۱۱ گزارش شوند. وصله توسط Pablo Galindogh-104972: اطمینان از اینکه ویژگی
lineدر اشیاءtokenize.TokenInfoدر ماژولtokenizeهمیشه درست باشد. وصله توسط Pablo Galindogh-104955: اصلاح امضا برای جایگاه جدید
__release_buffer__(). وصلهای از Jelle Zijlstra.gh-104690: شروع نخهای جدید و ایجاد فرایند از طریق
os.fork()هنگام خاموش شدن مفسر (مانند هندلرهایatexit) دیگر پشتیبانی نمیشود. این کار میتواند منجر به شرایط رقابت بین نخ اصلی رانتایم پایتون که در حال آزاد کردن وضعیتهای نخ است و روالهای داخلیthreadingکه تلاش میکنند وضعیت نخهای تازه ایجادشده را تخصیص دهند و استفاده کنند، شود. یا فرزندان فورکشده سعی میکنند در فرایند فرزند از رانتایم و وضعیت نخ در میانهی خاموش شدن استفاده کنند.gh-104879: رفع فروپاشی هنگام دسترسی به ویژگی
__module__مستعارهای نوع که خارج از یک ماژول تعریف شدهاند. وصلهای از Jelle Zijlstra.gh-104825: توکنهای تولیدشده توسط ماژول
tokenizeدیگر شامل یک نویسهی ضمنی\nدر ویژگیlineنیستند. وصلهای از Pablo Galindo.gh-104770: اگر یک تولیدگر هنگام بسته شدن مقداری را بازگرداند، آن مقدار اکنون توسط
generator.close()برگردانده میشود.gh-89091: بالا بردن
RuntimeWarningبرای متدهای تولیدگر ناهمگام منتظرمانده نشده مانندasend()،athrow()وaclose(). وصلهای از Kumar Aditya.gh-96663: افزودن پیام خطای بهتر و با قابلیت درونپویی بیشتر هنگام تنظیم ویژگیها روی کلاسهایی که فاقد
__dict__و بدون عضو جایگاه برای ویژگی هستند.gh-93627: بهروزرسانی پیادهسازی ماژول pickle پایتون برای تطبیق با پیادهسازی C ماژول pickle. برای اشیایی که متدهای کاهشی مانند
__reduce_ex__()یا__reduce__()را رویNoneتنظیم میکنند، پیکلسازی منجر به یکTypeErrorخواهد شد.gh-91095: تخصصیسازی فراخوانیها برای بیشتر کلاسهای پایتون. بهطور خاص، هر کلاسی که از
objectیا کلاس دیگری در پایتون ارثبری میکند و__new__را بازنویسی نمیکند.دستورالعمل تخصصیسازی کارهای زیر را انجام میدهد:
شیء را ایجاد میکند (با فراخوانی
object.__new__)یک فریم شیم (shim) را به پشتهی فریم میپوشاند (برای پاکسازی پس از
__init__)فریم مربوط به
__init__را به پشتهی فریم میپوشاند
سرعت نمونهسازی بیشتر کلاسهای پایتون را افزایش میدهد.
کتابخانه¶
gh-110786: رابط خط فرمان
sysconfigاکنونBrokenPipeErrorرا نادیده میگیرد و اگر خروجی آن پایپ شود و پایپ بسته شود، به طور عادی خارج میشود.gh-103480: ماژول
sysconfigاکنون به جای یک ماژول تکپروندهای، یک بسته است.gh-110733: ریزبهینهسازی: جلوگیری از فراخوانی
min()وmax()درBaseEventLoop._run_once().gh-94597: اضافه شدن
asyncio.EventLoopبرای استفاده با آرگومان کلیدواژهای loop_factory درasyncio.run()جهت جلوگیری از فراخوانی سیستم خطمشی asyncio.gh-110682:
پروتکلهای قابل بررسی در زمان اجراپیشتر__match_args__را در صورتی که روی پروتکل موجود بود، به عنوان عضوی از پروتکل در__instancecheck__در نظر میگرفتند. اکنون، اگر این ویژگی موجود باشد، نادیده گرفته میشود.gh-110488: رفع چند مشکل در
pathlib.PurePath.with_name(): یک نقطهی تکی به اشتباه به عنوان نام معتبر در نظر گرفته میشد، و درPureWindowsPath، نامی دارای جریان دادهی جایگزین NTFS، مانندa:b، به اشتباه نامعتبر در نظر گرفته میشد.gh-110590: رفع باگی در
_sre.compile()که در آن هنگامی که آرگومان code فهرستی از مقادیر غیرعدد صحیح بود، خطایTypeErrorتوسطOverflowErrorبازنویسی میشد.gh-65052: جلوگیری از کرش کردن
pdbهنگام تلاش برای نمایش شیءهای غیرقابلنمایشgh-110519: هشدار منسوخسازی دربارهی عدد غیرصحیح در
gettextاکنون همیشه به سطری در کد کاربر اشاره میکند که تابع یا متد gettext در آن استفاده شده است. پیشتر ممکن بود به سطری در کدgettextاشاره کند.gh-89902: منسوخ کردن مشخصکنندهی قالب غیر استاندارد "N" برای
decimal.Decimal. این مورد مستند نشده بود و فقط در پیادهسازی C پشتیبانی میشد.gh-110378: مدیرهای زمینهی
contextmanager()وasynccontextmanager()اکنون یک شیء تولیدگر زیرین نامعتبر را که بیش از یک مقدار تولید (yield) میکند، میبندند.gh-106670: در
pdb، متغیر کمکی$_exceptionرا برای اشکالزدایی پس از مرگ (post mortem) تنظیم کنید.gh-110365: رفع باگ
termios.tcsetattr()که خطاهای موجود را در طول تجزیه اعداد صحیح از فهرستtermبازنویسی میکرد.gh-109653: بهبود جزئی زمان ایمپورت چندین ماژول کتابخانهی استاندارد با به تعویق انداختن ایمپورتهای
warningsدر آن ماژولها. وصله توسط Alex Waygood.gh-110273: تابع
dataclasses.replace()اکنون اگر آرگومان کلیدواژهای برای فیلدی که با init=False اعلام شده است مشخص شود یا آرگومان کلیدواژهای برای فیلد ضروری InitVar جا بماند، به جای ValueError خطای TypeError را بالا میآورد.gh-110249: افزودن پرچم
--inline-cachesبه خط فرمانdis.gh-109653: رفع یک رگرسیون در پایتون ۳.۱۲ در زمان ایمپورت
random. وصله توسط Alex Waygood.gh-110222: افزودن پشتیبانی از اشیاء دنباله ساختاری در
copy.replace(). وصله شده توسط Xuehai Pan.gh-109649: ماژولهای
multiprocessing،concurrent.futures،compileall: جایگزینیos.cpu_count()باos.process_cpu_count()برای انتخاب تعداد پیشفرض نخها و فرایندهای کارگر. دریافت وابستگی CPU (Affinity) در صورت پشتیبانی. وصله توسط Victor Stinner.gh-110150: رفع مدیریت حالت پایه در statistics.quantiles. اکنون به یک نقطهدادهی واحد اجازه میدهد.
gh-110036: در ویندوز، تابع multiprocessing
Popen.terminate()اکنون خطایPermissionErrorرا مدیریت کرده و کد خروج فرایند را دریافت میکند. اگر فرایند همچنان در حال اجرا باشد، دوباره خطایPermissionErrorرا بالا میآورد (raise). در غیر این صورت، فرایند طبق انتظار خاتمه یافته است: کد خروج آن را ذخیره کنید. وصله توسط Victor Stinner.gh-110038: رفع مسئلهای که باعث میشد
KqueueSelector.select()در برخی موارد هنگامی که یک توصیفگر پرونده برای هر دو حالت خواندن و نوشتن ثبت شده است، تمام رویدادهای آماده را برنگرداند.gh-110045: بهروزرسانی ماژول
symtableبرای پشتیبانی از محدودههای جدید معرفیشده توسط PEP 695.gh-88402: افزودن متغیرهای جدید به
sysconfig.get_config_vars()در ویندوز:LIBRARY،LDLIBRARY،LIBDIR،SOABIوPy_NOGIL.gh-109631: توابع ماژول
reمانندre.findall()،re.split()،re.search()وre.sub()که تطابقهای کوتاه تکرارشونده را انجام میدهند، اکنون میتوانند توسط کاربر متوقف شوند.gh-109653: زمان ایمپورت
email.utilsرا حدود ۴۳ درصد کاهش دهید. این کار باعث میشود زمان ایمپورتemail.messageحدود ۱۸ درصد کاهش یابد، که به نوبهی خود زمان ایمپورتimportlib.metadataرا حدود ۶ درصد کاهش میدهد. وصلهای از الکس ویگود (Alex Waygood).gh-109818: رفع این مشکل که
reprlib.recursive_repr()ویژگی__type_params__را از تابع تزئینشده کپی نمیکرد.gh-109047:
concurrent.futures: نخ مدیر اجراکننده اکنون هنگام افزودن یک آیتم به صف فراخوانی، استثناها را میگیرد. در طول نهاییسازی پایتون، ایجاد یک نخ جدید اکنون میتواندRuntimeErrorایجاد کند. در این صورت، استثنا را بگیرید وterminate_broken()را فراخوانی کنید. وصلهای از ویکتور استینر (Victor Stinner).gh-109782: مطمئن شوید امضای
os.path.isdir()در تمام پلتفرمها یکسان است. وصلهای از امین علایی.gh-109653: زمان ایمپورت
functoolsرا حدود ۱۳ درصد بهبود دهید. وصلهای از الکس ویگود (Alex Waygood).gh-109590: تابع
shutil.which()پروندههای دارای پسوند درPATHEXTرا ترجیح خواهد داد اگر حالت دادهشده شاملos.X_OKروی win32 باشد. اگر هیچ تطابقی باPATHEXTپیدا نشود، ممکن است پروندهای بدون پسوند درPATHEXTبازگردانده شود. این تغییر باعث میشود تابعshutil.which()عملکردی مشابه رفتار قبلی در پایتون ۳.۱۱ داشته باشد.gh-109653: زمان ایمپورت
enumرا بیش از ۵۰ درصد کاهش دهید. وصلهای از الکس ویگود (Alex Waygood).gh-109593: از ایجاد بنبست در فراخوانی بازورودپذیر به ردیاب منبع چندپردازشی جلوگیری کنید. چنین فراخوانی بازورودپذیری، هرچند بعید، میتواند زمانی رخ دهد که یک مرحلهی زبالهروب (GC)، نهاییسازی را برای یک شیء چندپردازشی مانند SemLock فراخوانی کند.
gh-109653: زمان ایمپورت
typingرا حدود یک سوم کاهش دهید. وصلهای از الکس ویگود (Alex Waygood).gh-109649: تابع
os.process_cpu_count()را برای بهدست آوردن تعداد CPUهای منطقی قابل استفاده توسط نخ فراخوانندهی فرایند فعلی اضافه کنید. وصلهای از ویکتور استینر (Victor Stinner).gh-74481: ثابتهای مرتبط با
set_error_modeرا در ماژولmsvcrtدر نسخه دیباگ پایتون اضافه کنید.gh-109613: رفع توابع
os.stat()وos.DirEntry.stat(): بررسی برای استثناها. پیشتر، در نسخهی ساختهشدهی پایتون در حالت دیباگ، این توابع میتوانستند هنگام موفقیت یک تابع با یک مجموعهاستثنا، یک خطای مهلک در پایتون ایجاد کنند (و فرایند را متوقف کنند). وصلهای از ویکتور استینر (Victor Stinner).gh-109599: نوع اشیای PyCapsule را به عنوان
types.CapsuleTypeدر معرض دید قرار دهید.gh-109109: اکنون میتوانید زنجیرههای گواهی خام TLS را از طریق اتصالات TLS با استفاده از متدهای
ssl.SSLSocket.get_verified_chain()وssl.SSLSocket.get_unverified_chain()دریافت کنید.تهیهشده توسط Mateusz Nowak.
gh-109559: پایگاهدادهی
unicodedataرا به یونیکد ۱۵.۱.۰ بهروزرسانی کنید.gh-109543: حذف بررسی غیرضروری
hasattr()در طول ایجادtyping.TypedDict.gh-109495: حذف ویژگیهای اضافی غیرضروری
__slots__در پیادهسازی خالص پایتونیdatetimeبه منظور کاهش حجم حافظه، از آنجا که آنها در کلاس والد تعریف شدهاند. وصلهای از جیمز هیلتون-بالف (James Hilton-Balfe)gh-109461:
logging: استفاده از یک مدیر زمینه برای بهدست آوردن قفل.gh-109096: کلاس
http.server.CGIHTTPRequestHandlerبرای حذف در نسخهی ۳.۱۵ منسوخ شده است. طراحی آن قدیمی است و دنیای وب مدتهاست که از CGI عبور کرده است.gh-109409: رفع خطایی که در آن ارثبری یک دیتاکلاس فریزشده از چند والد که برخی از آنها احتمالاً فریزنشده بودند، امکانپذیر بود.
gh-109375: دستور
aliasدرpdbاکنون از ثبت نام مستعار بدون آرگومان جلوگیری میکند.gh-109319: منسوخسازی فیلد
dis.HAVE_ARGUMENTبه نفعdis.hasarg.gh-107219: رفع یک شرایط رقابت (race condition) در
concurrent.futures. هنگامی که یک فرایند در استخر فرایندها به طور ناگهانی متوقف شد (در حالی که آینده (future) در حال اجرا یا در انتظار بود)، انتهای نوشتن اتصال بسته شود. اگر صف فراخوانی در حال ارسال بایتها به یک فرایند کارگر مسدود شده باشد، بستن انتهای نوشتن اتصال، ارسال را قطع میکند تا صف بتواند بسته شود. وصله توسط Victor Stinner.gh-66143: شیء
codecs.CodecInfoقابلیت کپی شدن و پیکل شدن را پیدا کرده است. وصله شده توسط Robert Lehmann و Furkan Onder.gh-109187: متد
pathlib.Path.resolve()اکنون حلقههای پیوند نمادین را مانند سایر خطاها مدیریت میکند: در حالت سختگیرانه، استثنایOSErrorپرتاب میشود و در حالت غیرسختگیرانه، هیچ استثنایی پرتاب نمیشود.gh-50644: تلاش برای پیکل کردن یا ایجاد یک کپی سطحی یا عمیق از استریمهای
codecsاکنون یک TypeError پرتاب میکند. پیش از این، کپیسازی با یک RecursionError با شکست مواجه میشد، در حالی که پیکل کردن نتایج نادرستی ایجاد میکرد که در نهایت باعث میشد پیکلزدایی با یک RecursionError با شکست مواجه شود.gh-109174: افزودن پشتیبانی از
types.SimpleNamespaceدرcopy.replace().gh-109164: ماژول
pdb: جایگزینیgetoptباargparseبرای تجزیهی آرگومانهای خط فرمان.gh-109151: فعالسازی ویژگیهای ویرایشی
readlineدر رابط خط فرمان sqlite3 (python -m sqlite3).gh-108987: رفع شرایط رقابت در
_thread.start_new_thread(). اگر نخی در طول نهاییسازی پایتون ایجاد شود، نخ تازه ایجاد شده اکنون به جای تلاش برای دسترسی به حافظهی آزادشده و منجر شدن به فروپاشی، بلافاصله خارج میشود. وصله توسط Victor Stinner.gh-108682: شمارشی (Enum): نیازمند
names=()یاtype=...برای ایجاد یک enum خالی با استفاده از نحو تابعی است.gh-109033: استثناوهای پرتاب شده توسط تابع توکار os.utime اکنون شامل نام پروندهی مرتبط هستند.
gh-108843: رفع مشکلی در
ast.unparse()هنگام تجزیهی معکوس افاسترینگهای حاوی انواعی از نقلقولها.gh-108469: تابع
ast.unparse()اکنون از سینتکس جدید افاسترینگ معرفیشده در پایتون ۳.۱۲ پشتیبانی میکند. توجه داشته باشید که نقلقولهای افاسترینگ برای سادگی تحت سینتکس جدید مجدداً انتخاب میشوند. (وصلهای از Steven Sun)gh-108751: افزودن تابع
copy.replace()که امکان ایجاد یک کپی اصلاحشده از یک شیء را فراهم میکند. این تابع از تاپلهای نامدار، دیتاکلاسها و بسیاری از اشیاء دیگر پشتیبانی میکند.gh-108682: شمارشی (Enum): اگر
super().__new__()از درون یک__new__سفارشی فراخوانی شود، استثنایTypeErrorرا پرتاب کند.gh-108278: منسوخسازی ارسال فراخوانیپذیر فراخوانی بازگشتی (callback) به صورت کلیدواژهای برای APIهای زیر در
sqlite3.Connection:پارامترهای تحت تأثیر در پایتون ۳.۱۵ صرفاً جایگاهی (positional-only) خواهند شد.
توسط Erlend E. Aasland وصل شد.
gh-105829: رفع بنبست در concurrent.futures.ProcessPoolExecutor
gh-108295: رفع فروپاشیهای مربوط به استفاده از weakrefs روی
typing.TypeVar.gh-108463: کار کردن عبارتها/دستورها مطابق انتظار در pdb
gh-108277: اضافه کردن
os.timerfd_create()،os.timerfd_settime()،os.timerfd_gettime()،os.timerfd_settime_ns()وos.timerfd_gettime_ns()برای فراهم کردن یک رابط سطح پایین برای توصیفگر پروندهی اعلان تایمر لینوکس.gh-107811: ماژول
tarfile: استخراج اعضا با UID یا GID بسیار بزرگ (مثلاً روی یک سیستمعامل باid_tسیودوبیتی) اکنون درست مانند شکست در تنظیم شناسه با شکست مواجه میشود.gh-64662: رفع پشتیبانی از جدولهای مجازی در
sqlite3.Connection.iterdump(). وصله توسط Aviv Palivoda.gh-108111: رفع یک رگرسیون ایجادشده در gh-101251 برای نسخهی ۳.۱۲ که منجر به محاسبهی نادرست آفست در
gzip.GzipFile.seek()میشد.gh-108294: تابع
time.sleep()اکنون یک رویداد حسابرسی را ایجاد (raise) میکند.gh-108278: منسوخ کردن ارسال نام، تعداد آرگومانها و شیء فراخوانیپذیر به عنوان آرگومانهای کلیدواژهای برای APIهای
sqlite3.Connectionزیر:پارامترهای تحت تأثیر در پایتون ۳.۱۵ صرفاً جایگاهی (positional-only) خواهند شد.
توسط Erlend E. Aasland وصل شد.
gh-108322: افزایش سرعت NormalDist.samples() با استفاده از روش معکوس CDF به جای فراخوانی random.gauss().
gh-83417: امکان ایجاد یک پروندهی
.gitignoreرا به venv اضافه میکند که باعث میشود محیط ایجادشده توسط Git نادیده گرفته شود. این ویژگی هنگام فراخوانی venv از طریق رابط خط فرمان (CLI) به طور پیشفرض فعال است.gh-105736: نسخهی پایتون خالص
OrderedDictبا نسخهی C هماهنگ شد. اکنون، هر دو نسخه وضعیت داخلی خود را در__new__تنظیم میکنند. پیش از این، نسخهی پایتون خالص تنظیمات را در__init__انجام میداد.gh-108083: رفع باگهای سازندهی
sqlite3.Connectionوsqlite3.Connection.close()که در آنها ممکن است استثناها نشت کنند. وصله توسط Erlend E. Aasland.gh-107932: رفع ماژول
disبرای گزارش و نمایش درست بایتکدهایی که خطوط منبع ندارند.gh-105539: ماژول
sqlite3اکنون اگر یک شیءsqlite3.Connectionبه طور صریحclosedنشود، یکResourceWarningصادر میکند. وصله توسط Erlend E. Aasland.gh-107995: ویژگی
__module__روی نمونههایfunctools.cached_propertyاکنون به جای "functools" روی نام ماژولی که cached_property در آن تعریف شده است تنظیم میشود. این بدان معناست که آزمونهای مستند (doctests) موجود در رشتههای مستند (docstrings) مربوط بهcached_propertyاکنون به درستی توسط ماژولdoctestجمعآوری میشوند. وصله توسط Tyler Smart.gh-107963: رفع تابع
multiprocessing.set_forkserver_preload()برای بررسی فهرست دادهشده از نام ماژولها. وصله توسط Donghee Na.gh-106242: اصلاح
os.path.normpath()برای مدیریت نویسههای خالی تعبیهشده بدون قطع کردن مسیر.gh-81555: ماژول
xml.dom.minidomاکنون فقط"را در ویژگیها نقلقول میکند.gh-50002: ماژول
xml.dom.minidomاکنون فاصلههای سفید را در ویژگیها حفظ میکند.gh-93057: ارسال بیش از یک آرگومان جایگاهی به
sqlite3.connect()و سازندهیsqlite3.Connectionمنسوخ شده است. پارامترهای باقیمانده در نسخهی ۳.۱۵ پایتون به صورت فقط-کلیدواژه درخواهند آمد. وصله توسط Erlend E. Aasland.gh-76913: افزودن پارامتر/ویژگی merge_extra به
logging.LoggerAdaptergh-107913: اصلاح از دست رفتن احتمالی مقادیر
errnoوwinerrorدر استثناهایOSErrorاگر پیش از ایجاد شیء استثنا، توسط کد پاکسازی پاک یا اصلاح شده باشند.gh-107845: تابع
tarfile.data_filter()اکنون هنگام تعیین هدف پیوندهای نمادین، مکان آنها را در نظر میگیرد؛ بنابراین دیگر برخی از tarballهای معتبر را با خطایLinkOutsideDestinationErrorرد نخواهد کرد.gh-107812: گسترش پشتیبانی سوکت از netlink به سکوی FreeBSD.
gh-107805: اصلاح امضاهای توابع تولیدشدهی سطح-ماژول در
turtle.gh-107782: ماژول
pydocاکنون قادر است امضاهایی را که در پایتون قابلنمایش نیستند (به عنوان مثال برایgetattrوdict.pop) نمایش دهد.gh-56166: منسوخ کردن ارسال آرگومانهای اختیاری maxsplit، count و flags به صورت جایگاهی در توابع سطح-ماژول
re.split()،re.sub()وre.subn(). آنها باید فقط به صورت کلیدواژه ارسال شوند.gh-107710: افزایش سرعت
logging.getHandlerNames().gh-107715: اصلاح
doctest.DocTestFinder.find()در حضور نامهای کلاس با نویسههای خاص. وصله توسط Gertjan van Zwieten.gh-100814: ارسال یک شیء فراخوانیپذیر به عنوان مقدار گزینه به یک تصویر Tkinter اکنون به جای یک AttributeError، خطای مورد انتظار TclError را ایجاد میکند.
gh-72684: افزودن متدهای ابزارک
tkinter:tk_busy_hold()،tk_busy_configure()،tk_busy_cget()،tk_busy_forget()،tk_busy_current()وtk_busy_status().gh-106684: ایجاد
ResourceWarningهنگامی کهasyncio.StreamWriterبسته نشده است که منجر به نشت حافظه میشود. وصله توسط Kumar Aditya.gh-107465: افزودن متد کلاس
pathlib.Path.from_uri().gh-107077: به نظر میرسد در شرایطی خاص، OpenSSL هنگامی که تأیید اعتبار گواهی با شکست مواجه میشود، به جای
SSL_ERROR_SSLمقدارSSL_ERROR_SYSCALLرا برمیگرداند، اما پارامترهای خطا همچنان حاویERR_LIB_SSLوSSL_R_CERTIFICATE_VERIFY_FAILEDخواهند بود. ما اکنون در حال شناسایی این وضعیت و ایجاد خطای مناسبssl.SSLCertVerificationErrorهستیم. وصله توسط Pablo Galindogh-107576: اصلاح
types.get_original_bases()به طوری که فقط در صورتی__orig_bases__را برگرداند که مستقیماً رویclsوجود داشته باشد. وصله توسط James Hilton-Balfe.gh-105481: حذف
opcode.is_pseudo،opcode.MIN_PSEUDO_OPCODEوopcode.MAX_PSEUDO_OPCODEکه در نسخهی ۳.۱۲ اضافه شده بودند، هرگز مستند نشده بودند و قرار نبود به طور خارجی استفاده شوند.gh-105481: عبارت
opcode.ENABLE_SPECIALIZATION(که در نسخهی 3.12 اضافه شده بود اما هرگز مستندنشده یا برای استفادهی خارجی در نظر گرفته نشده بود) به_opcode.ENABLE_SPECIALIZATIONمنتقل شد تا آزمونها بتوانند به آن دسترسی داشته باشند.gh-107396: پروندههای tar؛ رفع استفاده پیش از مقداردهی اولیهی self.exception برای واگشایی gzip
gh-107409: تنظیم ویژگی
__wrapped__درreprlib.recursive_repr().gh-107406: پیادهسازی متد جدید
__repr__()برایstruct.Struct. اکنون این متدStruct(<format repr>)را برمیگرداند.gh-107369: بهینهسازی
textwrap.indent(). این تابع برای ورودیهای بزرگ حدود ۳۰ درصد سریعتر است. وصله توسط Inada Naoki.gh-78722: رفع مشکلی که در آن
pathlib.Path.iterdir()تا زمان پیمایش، استثنایOSErrorرا بالا نمیآورد (raise نمیکرد).gh-105578: منسوخ کردن
typing.AnyStrبه نفع نحو (syntax) پارامتر نوع جدید. نگاه کنید به PEP 695.gh-62519: کاری کنید که
gettext.pgettext()هنگامی که ترجمه پیدا نمیشود، تعاریف جمع را جستجو کند.gh-107089: قفسههایی که با
shelve.open()باز میشوند، متدclear()بسیار سریعتری دارند. وصله توسط James Cave.gh-82500: رفع سرریز در سیستمهای ۳۲ بیتی با پیادهسازی
os.sendfile()درasyncio.gh-83006: مستندسازی رفتار
shutil.disk_usage()برای سامانههای فایلبندی غیرمتصل (non-mounted) در یونیکس.gh-65495: استفاده از حروف کوچک
mail fromوrcpt toدرsmptlib.SMTP.gh-106186: عدم گزارش نقص
MultipartInvariantViolationDefectهنگامی که از کلاسemail.parser.Parserبرای تحلیل ایمیلها باheadersonly=Trueاستفاده میشود.gh-105002: رفع نتیجهی نامعتبر از متد
PurePath.relative_to()هنگام تلاش برای پیمایش بخش ".." در other با فعال بودن walk_up. در این حالت اکنون یک استثنایValueErrorبالا برده میشود.gh-106739: افزودن
rtype_cacheبه پیام هشدار (بهعنوان افزونهای بر نوع اشیاء نشتکرده و تعداد اشیاء نشتکرده که از پیش در پیام گنجانده شدهاند) تا اشکالزدایی اشیاء نشتکرده هنگام یافتن آنها توسط فرایند ردیاب منابع multiprocessing در هنگام خاموش شدن، آسانتر شود. این کار به شناسایی سریعتر علت نشت و/یا دلیل عدم پاکسازی صحیح شیء نشتکرده کمک میکند.gh-106751: بهینهسازی
SelectSelector.select()برای حالت پیمایشهای زیاد. وصله توسط Donghee Na.gh-106751: بهینهسازی
_PollLikeSelector.select()برای حالت پیمایشهای زیاد.gh-106751: بهینهسازی
KqueueSelector.select()برای حالت پیمایشهای زیاد. وصله توسط Donghee Na.gh-106831: رفع بررسی احتمالی مفقود شدهی
NULLبرای نتیجهیd2i_SSL_SESSIONدر_ssl.c.gh-105481: فهرستهای مختلف آپکد در ماژول
disاکنون بهجای ساخت صریح در opcode.py، از bytecodes.c تولید میشوند.gh-106727: هوشمندتر کردن
inspect.getsource()برای کلاسهای دارای تعاریف همنامgh-105726: افزودن
__slots__بهcontextlib.AbstractContextManagerوcontextlib.AbstractAsyncContextManagerتا کلاسهای فرزند بتوانند از__slots__استفاده کنند.gh-106774: بهروزرسانی نسخهی بستهبندیشدهی pip به نسخهی 23.2.1.
gh-106751:
selectors: بهینهسازی کدEpollSelector.select()با انتقال برخی از کدهای خارج از حلقه.gh-106752: رفع چند باگ در zipfile.Path، از جمله: در
zipfile.Path.match()، جداکنندههای ویندوز دیگر پشتیبانی نمیشوند (و هیچوقت قرار نبود بشوند)؛ رفع عملگرهایname/suffix/suffixes/stemهنگامی که هیچ نامپروندهای وجود ندارد و Path در ریشهی zipfile قرار ندارد؛ بازنویسی glob برای عملکرد و رفتار تطبیق صحیحتر.gh-105293: حذف فراخوانی
SSL_CTX_set_session_id_contextدر طول ایجاد زمینهی سمت کلاینت در ماژولssl.gh-105481: عرضهی فرادادهی آپکد از طریق
_opcode.gh-106670: افزودن دستور جدید
exceptionsبه دیباگر Pdb. این کار امکان جابهجایی بین استثناهای زنجیرهای را هنگام استفاده از اشکالزدایی پس از مرگ فراهم میکند.gh-106664:
selectors: افزودن متد_SelectorMapping.get()و بهینهسازی_SelectorMapping.__getitem__().gh-106628: افزایش سرعت تجزیهی ایمیلها به میزان حدود ۲۰ درصد با کامپایل نکردن یک عبارت باقاعدهی جدید برای هر ایمیل تک.
gh-89427: تنظیم متغیر محیطی
VIRTUAL_ENV_PROMPTدر فعالسازیvenv، حتی زمانی کهVIRTUAL_ENV_DISABLE_PROMPTتنظیم شده باشد.gh-106530: برگرداندن تغییر در
colorsys.rgb_to_hls()که باعث تقسیم بر صفر برای برخی ورودیهای تقریباً سفید میشد. وصله توسط Terry Jan Reedy.gh-106584: رفع کد خروج برای
unittestاگر تمام آزمونها رد شوند. وصله توسط Egor Eliseev.gh-106566: بهینهسازی
(?!)(الگویی که همیشه شکست میخورد) در عبارتهای باقاعده.gh-106554:
selectors: کاهش سربار Selector با استفاده ازdict.get()برای جستجوی توصیفگرهای پرونده.gh-106558: حذف چرخهی ارجاع در فراخوانندگان
convert_to_error()با حذفresultاز محدوده در یک بلوکfinally.gh-100502: افزودن ویژگی کلاس
pathlib.PurePath.pathmodکه پیادهسازیos.pathمورد استفاده برای عملیاتهای سطحپایین مسیر را ذخیره میکند: یاposixpathیاntpath.gh-106527: کاهش سربار برای افزودن و حذف خوانندهها و نویسندهها در
asyncio.gh-106524: رفع فروپاشی در
_sre.template()با الگوهایی که حاوی اندیسهای گروه نامعتبر هستند.gh-106531: حذف
_legacyو نامهایی که فراهم میکرد ازimportlib.resources: مواردResource،contents،is_resource،open_binary،open_text،path،read_binaryوread_text.gh-106052: ماژول
re: رفع تطبیق کمیتگذارهای انحصاری (possessive quantifiers) در مواردی که یک زیرالگو شامل عقبگرد (backtracking) است.gh-106510: بهبود خروجی اشکالزدایی برای گروههای اتمی در عبارتهای باقاعده.
gh-106503: رفع چرخهی ارجاع در
asyncio._SelectorSocketTransportبا حذف_write_readyدرclose.gh-105497: رفع معکوسسازی ماسک پرچم هنگامی که پرچمهای بدون نام وجود دارند.
gh-90876: جلوگیری از شکست خوردن
multiprocessing.spawnدر ایمپورت کردن در محیطهایی کهsys.executableمقدارNoneدارد. این مشکل در نسخهی ۳.۱۱ با افزودن پشتیبانی از اشیاء شبهمسیر در چندپردازشی (multiprocessing) ایجاد شده بود.gh-106403: نمونههای
typing.TypeVar،typing.ParamSpec،typing.ParamSpecArgs،typing.ParamSpecKwargsوtyping.TypeVarTupleبار دیگر از ارجاعات ضعیف پشتیبانی میکنند که این امر رگرسیون معرفیشده در نسخهی ۳.۱۲.۰ بتا ۱ را برطرف میکند. وصله توسط Jelle Zijlstra.gh-89812: افزودن کلاس خصوصی
pathlib._PathBaseکه پشتیبانی آزمایشی از سامانههای فایلبندی مجازی را فراهم میکند و ممکن است در نسخهای در آینده از پایتون به صورت عمومی عرضه شود.gh-106292: بررسی مقدار کششدهی دیکشنری نمونه در متد
__get__()ازfunctools.cached_property(). این کار تطابق بهتری با رفتار قبل از نسخهی ۳.۱۲ دارد و سازگاری را برای کاربرانی که ازfunctools.cached_property()زیرکلاسسازی میکنند و متد__set__()را اضافه مینمایند، بهبود میبخشد.gh-106350: تشخیص خطای احتمالی تخصیص حافظه در تابع libtommath یعنی
mp_init()که توسط ماژول_tkinterاستفاده میشود.gh-106330: رفع تطبیق نادرست مسیرهای خالی در
pathlib.PurePath.match(). این باگ در نسخهی ۳.۱۲.۰ بتا ۱ معرفی شده بود.gh-106309: منسوخ کردن
typing.no_type_check_decorator(). هیچ بررسیکنندهی نوع مهمی هرگز از این دکوراتور پشتیبانی نکرد. وصله توسط Alex Waygood.gh-102541: وادار کردن
pydoc.doc()به گرفتن خطای ماژول بد یعنیImportErrorهنگامی که جریان خروجیNoneنیست.gh-106263: رفع فروپاشی هنگام فراخوانی
reprبا یک شیء SignalDict که به صورت دستی ساخته شده است. وصله توسط Charlie Zhao.gh-106236: جایگزینی دستورهای
assertباraise RuntimeErrorدر ماژولthreading، به طوری که_DummyThreadحتی با-OOنیز نتواند joined شود.gh-106238: رفع باگ نادر همگامسازی در اکتساب قفل توسط بستهی گزارشگیری.
gh-106152: افزودن قلاب رویداد PY_THROW برای
cProfileبرای تولیدگرها.gh-106075: افزودن
asyncio.taskgroups.__all__بهasyncio.__all__برای اکسپورت در ایمپورتهای ستارهای (star imports).gh-104527: ابزار Zipapp از این پس الحاق یک آرشیو به خودش را رد خواهد کرد.
gh-106046: بهبود پیام خطای
os.fspath()در صورتی که روی یک شیء فراخوانی شود که در آن مقدار__fspath__رویNoneتنظیم شده است. اصلاحیه از Alex Waygood.gh-105987: رفع خرابی ناشی از شمارش نامناسب ارجاعها در توابع داخلی کارخانه وظیفه مشتاق
asyncio.gh-105974: رفع باگی که در آن یک کلاس
typing.Protocolدارای یک یا چند عضو غیرقابلفراخوانی، هنگام فراخوانیissubclass()روی آن،TypeErrorپرتاب میکرد، حتی اگر یک متد__subclasshook__سفارشی تعریف کرده بود. رفتار در پایتون ۳.۱۱ و پایینتر — که اکنون بازیابی شده است — به این صورت بود که در این موقعیتها اگر متد__subclasshook__سفارشی تعریف شده بود، خطایTypeErrorپرتاب نشود. اصلاحیه از Alex Waygood.gh-96145: بازگردانی افزودهشدن
json.AttrDict.gh-89812: افزودن
pathlib.UnsupportedOperationکه به جایNotImplementedErrorزمانی که یک عملیات مسیر پشتیبانی نمیشود، پرتاب میشود.gh-105808: رفع یک رگرسیون ایجادشده در gh-101251 برای نسخهی ۳.۱۲ که باعث میشد
gzip.GzipFile.flush()فشردهساز را فلاش نکند (و آرگومانzip_modeرا نیز منتقل نکند).gh-105481: تابع
stack_effect()دیگر اگر برای یکopcodeکه از آرگومان خود استفاده نمیکند، یکopargفراهم شود، یا زمانی که برای یکopcodeکه از آن استفاده میکند فراهم نشود، استثنایی پرتاب نمیکند. در حالت دوم، اثر پشته برایoparg=0برگردانده میشود.gh-104799: فعالسازی
ast.unparse()برای تجزیهی معکوس تعاریف تابع و کلاس ایجادشده بدون فیلد جدیدtype_paramsاز PEP 695. اصلاحیه از Jelle Zijlstra.gh-105793: افزودن آرگومان فقط-کلیدواژهی follow_symlinks به
pathlib.Path.is_dir()وis_file()که به طور پیشفرض رویTrueتنظیم شده است.gh-105570: منسوخ کردن دو روش ایجاد کلاسهای
typing.TypedDictبا ۰ فیلد با استفاده از نحو تابعی:TD = TypedDict("TD")وTD = TypedDict("TD", None). هر دو در پایتون ۳.۱۵ غیرمجاز خواهند شد. برای ایجاد یک کلاسTypedDictبا ۰ فیلد، یا ازclass TD(TypedDict): passیاTD = TypedDict("TD", {})استفاده کنید.gh-105745: رفع متد
webbrowser.Konqueror.open.gh-105733: ماژول
ctypes: منسوخ کردن توابع مستندنشدهیctypes.SetPointerType()وctypes.ARRAY(). اصلاحیه از Victor Stinner.gh-105687: حذف موارد منسوخ
re.template،re.T،re.TEMPLATE،sre_constans.SRE_FLAG_TEMPLATE.gh-105684: پشتیبانی از
asyncio.Task.set_name()اکنون برای پیادهسازیهای وظیفهی شخص ثالث الزامی است. تابع مستندنشدهی_set_task_name()(که از نسخهی ۳.۸ منسوخ شده بود) حذف شده است. اصلاحیه از Kumar Aditya.gh-105375: رفع باگ در
_Unpickler_SetInputStream()که در آن ممکن بود یک استثنا در صورت بروز خطا بازنویسی شود.gh-105626: تغییر مقدار بازگشتی پیشفرض
http.client.HTTPConnection.get_proxy_response_headers()بهNoneو نه{}.gh-105375: رفع باگها در
sysکه در آن استثناها ممکن است به دلیل مدیریت خطای معوق بازنویسی شوند.gh-105605: مقاومسازی مدیریت خطای
pyexpatدر طول مقداردهی اولیهی ماژول برای جلوگیری از احتمال بازنویسی استثناها و مرجعزدایی دوبارهی اشیاء.gh-105375: رفع باگ در
decimalکه در آن ممکن بود یک استثنا بازنویسی شود.gh-105375: رفع باگها در
_datetimeکه در آن ممکن بود استثناها در صورت شکست در مقداردهی اولیهی ماژول بازنویسی شوند.gh-105375: رفع اشکالات در مقداردهی اولیهی
_sslکه میتواند به نشت ارجاعها و بازنویسی استثناها منجر شود.gh-105375: برطرف کردن باگی در
array.arrayکه در آن ممکن بود یک استثنا در نهایت بازنویسی شود.gh-105375: برطرف کردن باگها در
_ctypesکه در آن ممکن بود استثناها در نهایت بازنویسی شوند.gh-105375: برطرف کردن باگی در ماژول
posixکه در آن ممکن بود یک استثنا بازنویسی شود.gh-105375: برطرف کردن باگها در
_elementtreeکه در آن ممکن بود استثناها بازنویسی شوند.gh-105375: برطرف کردن باگها در
zoneinfoکه در آن ممکن بود استثناها بازنویسی شوند.gh-105375: برطرف کردن باگها در
errnoکه در آن ممکن بود استثناها بازنویسی شوند.gh-105566: منسوخ کردن ایجاد یک کلاس
typing.NamedTupleبا استفاده از آرگومانهای کلیدواژهای برای مشخص کردن فیلدها (NT = NamedTuple("NT", x=int, y=str)). این کار در پایتون ۳.۱۵ مجاز نخواهد بود. بهجای آن از سینتکس مبتنی بر کلاس یا سینتکس تابعی استفاده کنید.دو روش برای ایجاد کلاسهای
NamedTupleبا ۰ فیلد با استفاده از سینتکس تابعی نیز منسوخ شدهاند و در پایتون ۳.۱۵ مجاز نخواهند بود:NT = NamedTuple("NT")وNT = NamedTuple("NT", None). برای ایجاد یک کلاسNamedTupleبا ۰ فیلد، یا ازclass NT(NamedTuple): passیا ازNT = NamedTuple("NT", [])استفاده کنید.gh-105545: ویژگی
webbrowser.MacOSXOSAScript._nameکه در نسخهی ۳.۱۱ منسوخ شده بود، حذف شد.gh-105497: برطرف کردن معکوسسازی پرچمها در صورتی که اعضای نامستعار/ماسک وجود داشته باشند.
gh-105509: کلاس
typing.Annotatedاکنون بهجای یک کلاس، به عنوان نمونهای ازtyping._SpecialFormپیادهسازی شده است. این تغییر نباید تأثیری برای کاربرانِ API عمومی ماژولtypingداشته باشد.gh-105375: برطرف کردن باگها در
pickleکه در آن ممکن بود استثناها بازنویسی شوند.gh-70303: اگر الگوی دادهشده با "
**" ختم شود، ازpathlib.Path.glob()وrglob()هشدارFutureWarningرا صادر کنید. در نسخههای آتی پایتون، الگوهایی با این پسوند با همهی پروندهها و دایرکتوریها مطابقت خواهند داشت. برای مطابقت دادن تنها با دایرکتوریها، یک اسلش انتهایی اضافه کنید.gh-105375: برطرف کردن باگی در
sqlite3که در آن ممکن بود یک استثنا در کالبکcollationبازنویسی شود.gh-105382: پارامترهای cafile، capath و cadefault تابع
urllib.request.urlopen()که در پایتون ۳.۶ منسوخ شده بودند، حذف شدند. پچ توسط Victor Stinner.gh-105376:
logging: متدهای مستندنشده و تستنشدهیLogger.warn()وLoggerAdapter.warn()و تابعlogging.warn()حذف شدند. این موارد که از پایتون ۳.۳ منسوخ شده بودند، نامستعارهایی برای متدlogging.Logger.warning()، متدlogging.LoggerAdapter.warning()و تابعlogging.warning()بودند. پچ توسط Victor Stinner.gh-105332: بازنشانی متد پیکلسازی از حالت ناممحور به حالت مقادیر.
gh-104554: اضافه کردن پشتیبانی از طرحوارهی RTSPS در urllib.parse
gh-105292: اضافه کردن گزینهای به
traceback.format_exception_only()برای بازگشت به درون استثنای تو در تو از یکBaseExceptionGroup.gh-105280: رفع باگی که در صورت وقوع زبالهروبی در زمان نامناسب، ممکن بود مقدار
isinstance([], collections.abc.Mapping)بهاشتباهTrueارزیابی شود. این باگ ناشی از تغییرات ایجادشده در پیادهسازیtyping.Protocolدر پایتون ۳.۱۲ بود.gh-105239: رفع باگ قدیمی که در برخی موارد خاص باعث میشد
issubclass(object, typing.Protocol)مقدارTrueارزیابی شود. وصله توسط الکس ویگود (Alex Waygood).gh-104310: در انتشار بتا ۱، یک تابع کمکی برای نویسندگان ماژول توسعهای اضافه کردیم تا هنگام آزمایش ماژول خود برای پشتیبانی در چند مفسر یا تحت یک GIL بهازای هر مفسر، از آن استفاده کنند. نام آن تابع از
allowing_all_extensionsبه_incompatible_extension_module_restrictionsتغییر یافته است. مقدار پیشفرض برای آرگومان "disable_check" ازTrueبهFalseتغییر یافته است تا بهتر با نام جدید تابع مطابقت داشته باشد.gh-105080: رفع امضای ناسازگار در کلاسهای مشتقشده برای
inspect.signature()gh-105144: رفع یک رگرسیون اخیر در ماژول
typing. این رگرسیون به این معنا بود که تعریفclass Foo(X, typing.Protocol)، که در آنXکلاسی بود کهabc.ABCMetaرا به عنوان فراکلاس خود داشت، باعث میشد فراخوانیهای بعدیisinstance(1, X)بهاشتباه استثنایTypeErrorرا صادر کنند. وصله توسط الکس ویگود (Alex Waygood).gh-62948: نهاییساز کلاس
io.IOBaseاکنون خطاهای متدclose()را باsys.unraisablehookثبت میکند. پیش از این، خطاها بهطور پیشفرض بهصورت بیصدا نادیده گرفته میشدند و فقط در حالت توسعهی پایتون یا در نسخهی پایتون ساختهشده در حالت اشکالزدایی ثبت میشدند. وصله توسط ویکتور استینر (Victor Stinner).gh-105096:
wave: منسوخ کردن متدهایgetmark()،setmark()وgetmarkers()از کلاسهایwave.Wave_readوwave.Wave_write. این متدها در پایتون ۳.۱۵ حذف خواهند شد. وصله توسط ویکتور استینر (Victor Stinner).gh-104992: حذف متد آزمایشنشده و مستندنشدهی
unittest.TestProgram.usageExit()که در پایتون ۳.۱۱ منسوخ شده بود. وصله توسط هوگو ون کمیناده (Hugo van Kemenade).gh-104996: بهبود کارایی مقداردهی اولیهی
pathlib.PurePathبا به تعویق انداختن الحاق مسیرها هنگامی که چندین آرگومان داده میشود.gh-101588: منسوخ کردن پشتیبانی مستندنشدهی copy/deepcopy/pickle برای itertools.
gh-103631: رفع مشکل تبدیلنشردن جداکنندههای مسیر در
pathlib.PurePosixPath(pathlib.PureWindowsPath(...))برای بازیابی رفتار سازگار با نسخهی ۳.۱۱.gh-104947: سازگار کردن مقایسهها بین اشیاء
pathlib.PureWindowsPathدر ویندوز و Posix برای تطابق با رفتار نسخهی ۳.۱۱.gh-104773: PEP 594: حذف ماژول
audioopکه در پایتون ۳.۱۱ منسوخ شده بود. وصله توسط ویکتور استینر (Victor Stinner).gh-104773: PEP 594: حذف ماژول
aifcکه در پایتون ۳.۱۱ منسوخ شده بود. وصله توسط ویکتور استینر (Victor Stinner).gh-104773: PEP 594: حذف ماژول
uuکه در پایتون ۳.۱۱ منسوخ شده بود. وصله توسط ویکتور استینر (Victor Stinner).gh-104935: رفع باگهای مربوط به تعامل بین
typing.runtime_checkable()وtyping.Genericکه توسط پیادهسازی PEP 695 ایجاد شده بودند. وصله توسط یله زیلسترا (Jelle Zijlstra).gh-104773: PEP 594: حذف ماژول
cryptو اکستنشن خصوصی آن_cryptکه در پایتون ۳.۱۱ منسوخ شده بودند. وصله توسط ویکتور استینر (Victor Stinner).gh-104773: PEP 594: حذف ماژول
nisکه در پایتون ۳.۱۱ منسوخ شده بود. وصله توسط ویکتور استینر (Victor Stinner).gh-104898: افزودن
__slots__مفقودشده بهos.PathLike.gh-104773: PEP 594: حذف ماژول
xdrlibکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود. اصلاحیه توسط Victor Stinner.gh-104773: PEP 594: حذف ماژول
nntplibکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود. اصلاحیه توسط Victor Stinner.gh-104886: حذف کلاس مستندنشدهی
configparser.LegacyInterpolationکه از نسخهی ۳.۲ پایتون در رشتهمستند (docstring) و از نسخهی ۳.۱۱ با هشدار منسوخشدن همراه بود. اصلاحیه توسط Hugo van Kemenade.gh-104786: حذف ایجاد
typing.TypedDictمبتنی بر kwargsgh-104876: حذف متد
turtle.RawTurtle.settiltangle()که از نسخهی ۳.۱ در مستندات و از نسخهی ۳.۱۱ با هشدار منسوخشدن همراه بود. اصلاحیه توسط Hugo van Kemenade.gh-104773: PEP 594: حذف بستهی
msilibکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود.gh-104773: PEP 594: حذف ماژول
spwdکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود: بهجای آن میتوان از پروژهی python-pam استفاده کرد. اصلاحیه توسط Victor Stinner.gh-75552: حذف ماژول
tkinter.tixکه از نسخهی ۳.۶ پایتون منسوخ شده بود.gh-104773: PEP 594: حذف ماژول
chunkکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود. اصلاحیه توسط Victor Stinner.gh-104773: PEP 594: حذف ماژول
mailcapکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود. اصلاحیه توسط Victor Stinner.gh-104773: PEP 594: حذف ماژول
sunauکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود. اصلاحیه توسط Victor Stinner.gh-104780: PEP 594: حذف ماژول
ossaudiodevکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود. اصلاحیه توسط Victor Stinner.gh-104773: PEP 594: حذف ماژول
pipesکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود. اصلاحیه توسط Victor Stinner.gh-104873: افزودن
typing.get_protocol_members()برای بازگرداندن مجموعهای از اعضا که یکtyping.Protocolرا تعریف میکنند. افزودنtyping.is_protocol()برای بررسی اینکه آیا یک کلاس از نوعtyping.Protocolاست یا خیر. اصلاحیه توسط Jelle Zijlstra.gh-104874: مستندسازی ویژگیهای
__name__و__supertype__درtyping.NewType. اصلاحیه توسط Jelle Zijlstra.gh-104835: توابع زیر از ماژول
unittestکه در نسخهی ۳.۱۱ پایتون منسوخ شده بودند، حذف شدند:unittest.findTestCases()unittest.makeSuite()unittest.getTestCaseNames()
بهجای آن از متدهای
TestLoaderاستفاده کنید:وصله توسط Hugo van Kemenade.
gh-104804: حذف کلاس آزمایشنشده و مستندنشدهی
MacOSXدر ماژولwebbrowserکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود. وصله توسط Hugo van Kemenade.gh-83863: پشتیبانی از استفادهی شیءهای
pathlib.Pathبه عنوان مدیر زمینه حذف شد. پیش از نسخهی ۳.۹ پایتون، خروج از مدیر زمینه یک مسیر را به عنوان «بسته» علامتگذاری میکرد که باعث میشد برخی از متدها (و نه همگی!) هنگام فراخوانی خطا پرتاب کنند. از نسخهی ۳.۹ پایتون به بعد، استفاده از یک مسیر به عنوان مدیر زمینه هیچ کاری انجام نمیدهد.gh-104799: برای حفظ بهتر سازگاری عقبگرد، مکان فیلد
type_params(نگاه کنید به PEP 695) رویast.ClassDef،ast.AsyncFunctionDefوast.FunctionDefتنظیم شد. وصله توسط Jelle Zijlstragh-104797: امکان ارثبری کلاسهای
typing.Protocolازcollections.abc.Bufferفراهم شد. وصله توسط Jelle Zijlstra.gh-104783: تابع
locale.resetlocale()که در نسخهی ۳.۱۱ پایتون منسوخ شده بود، حذف شد. وصله توسط Victor Stinner.gh-104780: برنامهی
2to3و ماژولlib2to3که در نسخهی ۳.۱۱ پایتون منسوخ شده بودند، حذف شدند. وصله توسط Victor Stinner.gh-104773: PEP 594: حذف ماژول
telnetlibکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود. وصله توسط Victor Stinner.gh-104773: PEP 594: حذف ماژول
imghdrکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود. وصله توسط Victor Stinner.gh-104773: PEP 594: حذف ماژولهای
cgiوcgitbکه در نسخهی ۳.۱۱ پایتون منسوخ شده بودند. وصله توسط Victor Stinner.gh-104773: PEP 594: حذف ماژول
sndhdrکه در نسخهی ۳.۱۱ پایتون منسوخ شده بود. وصله توسط Victor Stinner.gh-104372: در لینوکس که
subprocessمیتواند برای ایجاد سریعتر فرایند از سیستکالvfork()استفاده کند، با آزاد کردن GIL در حین انتظار برای نتیجهی اجرایexec()فرایند فرزند ایجاد شده با vfork، از مسدود شدن سایر نخها توسط فرایند والد جلوگیری شد. این کار مانع از آن میشود که ایجاد یک فایل دودویی از یک سامانه فایلبندی کند، بقیهی برنامهها را مسدود کند.gh-99108: اکنون GIL را در محاسبات توکار
hashlibبا اندازهی معقول برای خانوادههای SHA و عملگرهای هش MD5 آزاد میکنیم، که با عملکرد محاسبات هش مبتنی بر OpenSSL ما مطابقت دارد.gh-102613: بهبود کارایی
pathlib.Path.glob()هنگام گسترش دادن یک الگو با یک مؤلفهی «**» غیرپایانی، با فیلتر کردن مسیرهای پیمایششده از طریق یک عبارت باقاعده، به جای فراخوانی بیش از یکبارos.scandir()روی هر پوشه.gh-104399: ماژول
_tkinterبا جایگزین کردن استفاده از توابع منسوخmp_to_unsigned_bin_n()وmp_unsigned_bin_size()در صورت نیاز، برای ساخت با Tcl 9.0 و libtommath آینده آماده شد.gh-102676: افزودن فیلدهای
start_offset،cache_offset،end_offset،baseopname،baseopcode،jump_targetوopargبهdis.Instruction.gh-103558: مکانیزم اعتبارسنجی آرگومان
parentدرargparseاصلاح شد. پوشش آزمونها بهبود یافت.gh-103464: ارائه پیامهای راهنمای مفید هنگام تجزیه دستورهای نادرست
pdb.gh-103384: عمومیتبخشی به الگوی عبارت منظم
BaseConfigurator.INDEX_PATTERNبرای اجازه دادن به نویسهها و نویسههای غیرالفباییعددی در کلیدها.gh-101162: ممنوعیت استفاده از
builtins.issubclass()باtypes.GenericAliasبه عنوان آرگومان اول.gh-103200: رفع معناشناسی بازپرانی نهانگاه در zipimport.invalidate_caches(). نهانگاه اکنون هنگام بازیابی پروندهها با یک نهانگاه نامعتبر بازپرانی میشود، نه زمانی که نهانگاه نامعتبر میشود.
gh-100061: رفع باگی که باعث تطابقهای اشتباه برای عبارتهای باقاعده با مشخصکننده مالکیتی میشود.
gh-77609: اضافه کردن آرگومان follow_symlinks به
pathlib.Path.glob()وrglob()، که مقدار پیشفرض آن نادرست است.gh-102541: پنهان کردن ردگیری در اعلان
help()، هنگامی که ایمپورت با شکست مواجه میشود.gh-102120: اضافه کردن یک حالت جریان به
tarfileکه امکان خواندن آرشیوها را بدون نهانگاه کردن اطلاعات مربوط به پروندههای داخلی فراهم میکند.gh-102029: منسوخ کردن ارسال هرگونه آرگومان به
threading.RLock().gh-88233: بازفاکتوربندی
zipfile._strip_extraبرای استفاده از انتزاعهای رده بالاتر برای اقلام اضافی به جای یک حلقه با وضعیت سنگین.gh-102024: کاهش تعداد فراخوانیهای
_idle_semaphore.release()درconcurrent.futures.thread._worker().gh-73435: اضافه کردن پشتیبانی از وایلدکاردهای بازگشتی در
pathlib.PurePath.match().gh-84867:
unittest.TestLoaderدیگر موارد آزمون را از کلاسهای دقیقunittest.TestCaseوunittest.FunctionTestCaseبارگذاری نمیکند.gh-99203: بازیابی رفتار سیپایتون <= ۳.۱۰.۵ تابع
shutil.make_archive(): اگرroot_dirیک پوشه نباشد، آرشیو خالی ایجاد نکنید و در آن صورت، صرفنظر از انتخابformat، استثنایFileNotFoundErrorیاNotADirectoryErrorرا بالا بیاورید. فراتر از رفتار بازگردانده شده، این تابع اکنون ممکن است این استثناها را در حالتdry_runنیز بالا بیاورد.gh-80480: انتشار
DeprecationWarningبرای کد نوع'u'درarray، که از نسخه ۳.۳ پایتون در مستندات منسوخ شده است.gh-94924: تابع
unittest.mock.create_autospec()اکنون به درستی توابع همروالی سازگار باinspect.iscoroutinefunction()را برمیگرداند.gh-94777: رفع معلق ماندن
multiprocessingProcessPoolExecutorزمانی که یک فرایند فرزند در حین نوشتن دادهها در صف فراخوانی دچار فروپاشی میشود.gh-92871: حذف فضاهای نام
typing.ioوtyping.reکه از نسخه ۳.۸ پایتون منسوخ شدهاند. همه آیتمها همچنان از ماژول اصلیtypingدر دسترس هستند.bpo-43633: بهبود نمایش متنی آدرسهای IPv6 نگاشتشده با IPv4 (RFC 4291 بخشهای ۲.۲، ۲.۵.۵.۲) در
ipaddress. وصله توسط اولکساندر پاولیوک.bpo-44850: بهبود کارایی
operator.methodcaller()با استفاده از قراردادvectorcallدر PEP 590. وصلهای از Anthony Lee و Pieter Eendebak.bpo-44185: متد
unittest.mock.mock_open()هنگام خروج از مدیر زمینه، متدclose()ماک دستهی پرونده را فراخوانی خواهد کرد. وصلهای از Samet Yaslan.bpo-40988: بهبود کارایی
functools.singledispatchmethodبا ذخیرهسازی (caching) پوشش اعزام تولیدشده. بهینهسازی پیشنهادشده توسط frederico. وصلهای از @mental32، Alex Waygood و Pieter Eendebak.bpo-41768: تعیین مشخصات (speccing) در
unittest.mockدیگر ویژگیهای کلاس را فراخوانی نمیکند. وصلهای از Melanie Witt.bpo-18319: اطمینان حاصل کنید که
gettext(msg)حتی در صورت وجود شکل جمع نیز ترجمهها را بازیابی میکند. به عبارت دیگر:gettext(msg) == ngettext(msg, '', 1).bpo-17013: افزودن
ThreadingMockبهunittest.mockکه میتوان از آن برای ایجاد اشیای Mock استفاده کرد که میتوانند تا زمان فراخوانی شدن منتظر بمانند. وصلهای از Karthikeyan Singaravelan و Mario Corchero.
مستندات¶
gh-109209: حداقل نسخهی مورد نیاز Sphinx برای مستندات اکنون نسخهی ۴.۲ است.
gh-108826: رابط خط فرمان ماژول
disاکنون در مستندات ذکر شده است.gh-107305: افزودن مستندات برای
PyInterpreterConfigوPy_NewInterpreterFromConfig(). همچنین شفافسازی برخی از مستندات مرتبط با GIL بهازای هر مفسر.gh-107008: مستندسازی متغیرهای ماژول
cursesیعنیLINESوCOLS.gh-106948: افزودن تعدادی نام استاندارد خارجی به
nitpick_ignore.gh-106232: سازگار کردن سطرهای دستور مستند timeit با ویندوز با استفاده از نقلقول دوتایی برای آرگومانها. این روش روی لینوکس و macOS نیز کار میکند.
gh-105172: رفع مشکل رشته مستند
functools.lru_cache()در نحوهی محاسبهی رفتار متفاوت آرگومانtypedبرای str و int. وصلهای از Bar Harel.gh-105052: بهروزرسانی مستندات
timeitبرای مشخص کردن اینکه زمان بر حسب ثانیه صرفاً مقدار پیشفرض است.gh-89455: افزودن مستندات مفقود برای پارامترهای
max_group_depthوmax_group_widthو ویژگیexceptionsدر کلاسtraceback.TracebackException.gh-89412: افزودن مستندات مفقود برای ویژگیهای
end_linenoوend_offsetدر کلاسtraceback.TracebackException.gh-104943: حذف ذکر نسخههای قدیمی پایتون در
typing.NamedTuple.gh-54738: افزودن مستنداتی دربارهی نحوهی بومیسازی ماژول
argparse.gh-102823: مستندسازی نوع مقدار بازگشتی عبارت
x // yهنگامی کهxوyدارای نوعfloatهستند.gh-102759: همراستا کردن امضای تابع برای
functools.reduceدر مستندات و رشته مستند با پیادهسازی C.
آزمونها¶
gh-110647: اصلاح ()test_stress_modifying_handlers در test_signal. تهیهشده به دست Victor Stinner.
gh-103053: اصلاح test_tools.test_freeze روی سیستمعامل FreeBSD: به جای اجرا کردن دستور «make clean» در پوشهی سورس کپیشده، دستور «make distclean» را اجرا کنید تا برنامهی «python» نیز حذف شود. تهیهشده به دست Victor Stinner.
gh-110167: اصلاح یک بنبست در test_socket هنگامی که سرور با یک مهلت زمانی با خطا مواجه میشود اما کلاینت همچنان در نخ خود در حال اجرا است. برای فراخوانی توابع پاکسازی در ()doCleanups قفلی را نگه ندارید. یکی از توابع پاکسازی تا اتمام کار کلاینت صبر میکند، در حالی که اگر کلاینت در چنین وضعیتی ()addCleanup را فراخوانی کند ممکن است دچار بنبست شود. تهیهشده به دست Victor Stinner.
gh-110367: ابزار regrtest: هنگام استفاده از فرایندهای کارگر (-jN) با گزینهی --verbose3، اکنون ابزار regrtest میتواند خروجی کارگر را حتی در صورت فروپاشی فرایند کارگر نمایش دهد. پیشتر، sys.stdout و sys.stderr جایگزین میشدند و به همین دلیل خروجی کارگر هنگام فروپاشی از دست میرفت. تهیهشده به دست Victor Stinner.
gh-110267: افزودن آزمونهایی برای پیکل کردن (pickling) و کپی کردن اشیای PyStructSequence. اعمالشده به دست Xuehai Pan.
gh-110171: ابزار
libregrtestاکنون همیشهrandom.seedرا تنظیم و نمایش میدهد، بنابراین آزمونها قابلیت بازتولید بیشتری دارند. برای ارسال بذر تصادفی صریح برای آزمونها، از پرچم--randseedاستفاده کنید.gh-110152: حذف
Tools/scripts/run_tests.pyوmake hostrunnertest. به جای آن فقط./python -m test --slow-ci،make buildbottestیاmake testرا اجرا کنید. اجراکنندهی آزمون پایتون (regrtest) اکنون کامپایل متقابل (cross-compilation) و HOSTRUNNER را مدیریت میکند. همچنین هنگامی که از گزینهی--fast-ciیا--slow-ciاستفاده میشود، گزینههایی مانند-u -E -W default -bbرا به پایتون اضافه میکند. تهیهشده به دست Victor Stinner.gh-110031: اگر پایتون با ابزار Address Sanitizer (ASAN) ساخته شده است، آزمونهای test_threading که از thread+fork استفاده میکنند را نادیده بگیرید. تهیهشده به دست Victor Stinner.
gh-110088: اصلاح مهلتهای زمانی test_asyncio: مدتزمان حداکثر را اندازهگیری نکنید، یک آزمون نباید عملکرد یک CI را اندازهگیری کند. فقط هنگامی که یک وظیفه دارای مهلت زمانی یا تأخیر است، مدتزمان حداقل را اندازهگیری کنید. افزودن
CLOCK_RESبهtest_asyncio.utils. تهیهشده به دست Victor Stinner.gh-109974: اصلاح شرایط رقابت در آزمونهای قفل test_threading. به جای استفاده از
time.sleep()با تعداد ثانیههای ثابت، تا زمان برآورده شدن یک شرط صبر کنید. تهیهشده به دست Victor Stinner.gh-110033: اصلاح
test_interprocess_signal()متعلق بهtest_signal. اطمینان حاصل کنید که شیءsubprocess.Popenپیش از بالا آمدن استثنا توسط آزمون در یک کنترلکنندهی سیگنال حذف شود. در غیراینصورت،Popen.__del__()میتواند استثنایی را دریافت کند که به صورتException ignored in: ...ثبت میشود و آزمون با شکست مواجه میشود. وصله توسط Victor Stinner.gh-109594: اصلاح test_timeout() مربوط به test_concurrent_futures.test_wait. شیء futureای را که ممکن است بسته به زمانبر بودن یا نبودن تکمیل شود یا نشود، حذف کنید. شیء future دوم را که پیش از اتمام مهلت زمانی ()wait تکمیل نمیشود، نگه دارید. تهیهشده به دست Victor Stinner.
gh-109972: تقسیم کردن پروندهی test_gdb.py به یک بستهی test_gdb متشکل از چندین آزمون، بهطوریکه اکنون آزمونها میتوانند بهصورت موازی اجرا شوند. تهیهشده به دست Victor Stinner.
gh-109566: ابزار regrtest: هنگامی که از گزینهی
--fast-ciیا--slow-ciاستفاده میشود، regrtest اکنون برای افزودن گزینههای-u -W default -bb -Eبه پایتون، فرایند فعلی را با یک فرایند جدید جایگزین میکند. تهیهشده به دست Victor Stinner.gh-109748: اصلاح
test_zippath_from_non_installed_posix()در test_venv: زیرپوشههای__pycache__/را کپی نکنید، زیرا ممکن است توسط سایر آزمونهای پایتون که به صورت موازی اجرا میشوند تغییر کنند. تهیهشده به دست Victor Stinner.gh-109739: ابزار regrtest: اصلاح بررسی نشت ارجاع در ویندوز. غیرفعال کردن ردیاب بارگذاری روی ویندوز در حالت بررسی نشت ارجاع (گزینهی -R). تهیهشده به دست Victor Stinner.
gh-109276: ابزار regrtest: هنگامی که یک آزمون با خطای «env changed» شکست میخورد و از گزینهی --rerun استفاده میشود، آزمون اکنون در حالت پرجزئیات در یک فرایند تازه مجدداً اجرا میشود. تهیهشده به دست Victor Stinner.
gh-103053: اگر پایتون با دستور
./configure --enable-optimizations(که به معنای استفاده از بهینهسازی هدایتشده با پروفایل یا PGO است) ساخته شده باشد، آزمون test_freeze_simple_script() از test_tools.test_freeze را نادیده بگیرید: این کار صرفاً باعث میشود آزمون بیش از حد کند شود. ابزار freeze توسط بسیاری از CIهای دیگر با پرچمهای کامپایلر دیگر (سریعتر) آزمایش میشود. تهیهشده به دست Victor Stinner.gh-109580: اگر پایتون با ابزار پاکسازی ASAN، MSAN یا UBSAN ساخته شده باشد (build)، آزمون
test_perf_profilerرا رد کنید. پایتون در چنین ساختی به طور تصادفی در این آزمون دچار فروپاشی میشود. اصلاحیه از Victor Stinner.gh-109566: ابزار regrtest: گزینههای
--fast-ciو--slow-ciرا اضافه کرد. گزینهی--fast-ciاز یک مهلت زمانی پیشفرض ۱۰ دقیقهای و-u all,-cpu(رد کردن کندترین آزمونها) استفاده میکند. گزینهی--slow-ciاز یک مهلت زمانی پیشفرض ۲۰ دقیقهای و-u all(اجرای تمام آزمونها) استفاده میکند. اصلاحیه از Victor Stinner.gh-109425: ابزار libregrtest اکنون خروجی استاندارد (stdout) فرایندهای کارگر آزمون را با کنترلکنندهی خطای "backslashreplace" رمزگشایی میکند تا خروجی استاندارد خرابشده را گزارش کند، بهجای اینکه با یک خطا متوقف شود و خروجی استاندارد را ثبت نکند. وصله توسط Victor Stinner.
gh-109396: رفع
test_socket.test_hmac_sha1()در حالت FIPS. از یک کلید طولانیتر استفاده کنید: حالت FIPS حداقل به ۱۱۴ بیت نیاز دارد. کلید قبلی تنها ۳۲ بیت بود. اصلاحیه از Victor Stinner.gh-104736: رفع test_gdb روی پایتون ساختهشده با LLVM clang 16 روی لینوکس ppc64le (مانند فدرا ۳۸). الگوهای جستجو در خروجی دستور "bt" در gdb برای تشخیص زمانهایی که gdb در بازیابی ردگیری (traceback) شکست میخورد. برای نمونه، اگر
Backtrace stopped: frame did not save the PCیافت شد، یک آزمون را رد کنید. وصله توسط Victor Stinner.gh-109276: ابزار libregrtest اکنون پیش از اجرای هر پروندهی آزمون، وقتی از گزینهی خط فرمان
-r/--randomizeاستفاده میشود، تابعrandom.seed()را فراخوانی میکند. علاوه بر این، این تابع در فرایندهای کارگر نیز فراخوانی میشود. این کار باید به قطعیتر شدن آزمونها کمک کند. پیش از این، این تابع تنها یک بار در فرایند اصلی پیش از اجرای تمام پروندههای آزمون فراخوانی میشد و در فرایندهای کارگر فراخوانی نمیشد. اصلاحیه از Victor Stinner.gh-109276: ابزار libregrtest اکنون از یک توصیفگر پروندهی مجزا برای نوشتن نتیجهی آزمون به صورت JSON استفاده میکند. پیش از این، اگر آزمونی پیامهای اشکالزدایی را در نزدیکی JSON مینوشت، فرایند اصلی آزمون در تجزیهی JSON شکست میخورد. اصلاحیه از Victor Stinner.
gh-108996: رفع و فعالسازی
test_msvcrt.gh-109237: رفع
test_site.test_underpth_basic()هنگامی که پوشهی کاری حاوی حداقل یک نویسهی غیر ASCII است: پروندهی._pthرا به UTF-8 رمزگذاری کرده و حالت UTF-8 را فعال کنید تا از UTF-8 برای خروجی استاندارد فرایند فرزند استفاده شود. اصلاحیه از Victor Stinner.gh-109230: رفع
test_pyexpat.test_exception(): اکنون میتوان آن را از پوشهای متفاوت با پوشهی کد منبع پایتون اجرا کرد. پیش از این، آزمون در این حالت شکست میخورد. اگر منبع Modules/pyexpat.c در دسترس نباشد، آزمون را رد کنید. همچنین آزمون را روی پیادهسازیهای پایتونی غیر از سیپایتون رد کنید. اصلاحیه از Victor Stinner.gh-108996: افزودن آزمونها برای
msvcrt.gh-109015: رفع آزمونهای test_asyncio، test_imaplib و test_socket روی FreeBSD در صورتی که سیاهچاله (blackhole) پروتکل TCP فعال باشد (
sysctl net.inet.tcp.blackhole). چند آزمونی را که باETIMEDOUTبا چنین پیکربندی غیرمعمولی شکست میخورند، رد کنید. در حال حاضر، تصویر FreeBSD GCP image enables TCP and UDP blackhole (sysctl net.inet.tcp.blackhole=2وsysctl net.inet.udp.blackhole=1) را فعال میکند. اصلاحیه از Victor Stinner.gh-91960: اگر gdb قادر به بازیابی اشیاء قاب (frame) پایتون نباشد، آزمون
test_gdbرا رد کنید: اگر یک قاب به صورت<optimized out>باشد. هنگامی که پایتون با «clang -Og» ساخته میشود، gdb ممکن است در بازیابی پارامتر frame از_PyEval_EvalFrameDefault()شکست بخورد. در این صورت، آزمونهایی مانندpy_bt()احتمالاً شکست خواهند خورد. بدون دسترسی به قابهای پایتون، پروندهیpython-gdb.pyدر زمینهی بازیابی ردگیری (traceback) پایتون تا حد زیادی سردرگم است. علاوه بر این، اگر پایتون با Clang ساخته شده باشد،test_gdbدیگر روی macOS رد نمیشود. اصلاحیه از Victor Stinner.gh-108962: اگر
chflags()با خطای «OSError: [Errno 45] Operation not supported» مواجه شد (مثلاً روی FreeBSD 13)، آزمونtest_tempfile.test_flags()را رد کنید. اصلاحیه از Victor Stinner.gh-91960: پوشش CI نسخهی 13.2 فریبسد (FreeBSD) برای درخواستهای پول (pull requests) اکنون توسط Cirrus-CI (یک سرویس CI میزبانیشده که از لینوکس، مکاوس، ویندوز و فریبسد پشتیبانی میکند) فراهم میشود.
gh-89392: پشتیبانی از تابع
test_main()در آزمونها حذف شد. آنها اکنون همیشه از اجراکنندهی آزمون معمولی unittest استفاده میکنند.gh-108851: رفع آزمونهای بازگشتی
test_tomllibبرای ساختهای (buildbots) WASI: کاهش حد بازگشت و محاسبهی حداکثر آرایه/دیکشنری تو در تو بسته به حد بازگشت موجود فعلی. اصلاحیه از Victor Stinner.gh-108851: افزودن توابع
get_recursion_available()وget_recursion_depth()به ماژولtest.support. اصلاحیه از Victor Stinner.gh-108834: افزودن گزینهی
--fail-rerun optionبه regrtest: اگر آزمونی شکست خورد و سپس هنگام اجرای مجدد در حالت پرگو (verbose) با موفقیت اجرا شد، فرایند را با کد خروج ۲ (خطا) خارج کنید، به جای کد خروج ۰ (موفقیت). اصلاحیه از Victor Stinner.gh-108834: تغییر نام گزینهی
--verbose2(-w) در regrtest به--rerun. حفظ--verbose2به عنوان یک نام مستعار منسوخ. اصلاحیه از Victor Stinner.gh-108834: وقتی برنامهی regrtest آزمونهای ناموفق را در حالت پرجزئیات (
./python -m test --rerun) دوباره اجرا میکند، آزمونها اکنون بهجای اجرا در فرایند اصلی، در فرایندهای کارگر جدیدی دوباره اجرا میشوند. اگر آزمونی دچار فروپاشی شود یا توسط یک مهلت زمانی متوقف شود، فرایند اصلی میتواند فرایند کارگر متوقفشده را شناسایی کرده و آن را مدیریت کند. اگر از گزینهی-jNبرای اجرای موازی آزمونها استفاده شود، آزمونها بهصورت موازی دوباره اجرا میشوند. وصله از Victor Stinner.gh-108822: ابزار
regrtestاکنون آمارهی تمام آزمونها را محاسبه میکند: موفقیتها، شکستها و موارد ردشده. توابعtest_netrc،test_pep646_syntaxوtest_xml_etreeاکنون نتایج را در تابعtest_main()خود برمیگردانند. اصلاحیه از Victor Stinner و Alex Waygood.gh-108794: متد
doctest.DocTestRunner.run()اکنون تعداد آزمونهای ردشده را میشمارد. ویژگیهایdoctest.DocTestRunner.skipsوdoctest.TestResults.skippedاضافه شدند. اصلاحیه از Victor Stinner.gh-108388: تبدیل test_concurrent_futures به یک بستهی ۷ زیرآزمون. وصله توسط Victor Stinner.
gh-108388: تفکیک test_multiprocessing_fork، test_multiprocessing_forkserver و test_multiprocessing_spawn به بستههای آزمون. هر بسته از ۴ زیرآزمون تشکیل شده است: processes، threads، manager و misc. این کار امکان اجرای آزمونهای بیشتری را به صورت موازی فراهم میکند و در نتیجه مدتزمان کل آزمون را کاهش میدهد. وصله توسط Victor Stinner.
gh-105776: اصلاح test_cppext هنگامی که فرمان کامپایلر C شامل گزینهی
-std=c11است: حذف گزینههای-std=از فرمان کامپایلر. وصلهای از Victor Stinner.gh-107652: راهاندازی CIFuzz برای اجرای هدفهای فاز (fuzz targets) در GitHub Actions. اصلاحیه از Illia Volochii.
gh-107237:
test_logging: رفع مشکلtest_udp_reconnection()با افزایش مهلت زمانی از ۱۰۰ میلیثانیه به ۵ دقیقه (LONG_TIMEOUT). اصلاحیه از Victor Stinner.gh-107178: افزودن آزمون API زبان C برای توابع موجود در پروتکل نگاشت، پروتکل دنباله و برخی توابع در پروتکل شیء.
gh-106714: test_capi: اصلاح تابع test_no_FatalError_infinite_loop() برای جلوگیری از نوشتن coredump، با استفاده از test.support.SuppressCrashReport. وصله توسط Victor Stinner.
gh-104090: جلوگیری از ایجاد ارجاع به شیء آزمون در
collectedDurations().gh-106752: آزمونهای مربوط به
zipfile.PathبهLib/test/test_zipfile/_pathمنتقل شدند.zipfile._pathبه یک بسته تبدیل شد.gh-106690: افزودن پروندهی .coveragerc به مخزن cpython برای استفاده با بستهی coverage.
gh-101634: هنگام اجرای مجموعهآزمون پایتون با گزینهی
-jN، اگر خروجی استاندارد کارگر نتواند از کدگذاری محلی (locale encoding) رمزگشایی شود، یک آزمون ناموفق گزارش میشود تا کد خروج غیرصفر باشد. اصلاحیه از Victor Stinner.gh-105084: هنگامی که ساخت پایتون با
--with-wheel-pkg-dirپیکربندی میشود، آزمونهایی که نیازمند چرخهایsetuptoolsوwheelهستند، چرخها را درWHEEL_PKG_DIRجستجو خواهند کرد.gh-81005: آزمونهای رشتهای اصلاح شدند تا این موضوع را منعکس کنند که
strوunicodeدر پایتون ۳ ادغام شدهاند. اصلاحیه از Daniel Fortunov.gh-103186: سرکوب و ادعای (assert) خطاهای پیشبینیشدهی RuntimeWarnings در test_sys_settrace.py
gh-69714: افزودن آزمونهای اضافی به
calendarبرای دستیابی به پوشش کامل آزمون.
ساخت¶
gh-103053: دستور "make check-clean-src" اکنون همچنین بررسی میکند که آیا برنامهی "python" در پوشهی منبع پیدا میشود یا خیر: اگر وجود داشته باشد، با یک خطا متوقف میشود. اصلاحیه از Victor Stinner.
gh-109191: رفع خطای کامپایل هنگام ساخت با نسخههای جدید libedit.
gh-110276: دیگر خطای
PROFILE_TASKرا بهسکتوت نادیده نگیرید: دستوری که توسط بهینهسازی هدایتشده با پروفایل (PGO) استفاده میشود. وصله توسط Victor Stinner.gh-109566: حذف هدف
make testall: بهجای آن ازmake buildbottestاستفاده کنید. وصله توسط Victor Stinner.gh-109740: پرچم پیکربندی آزمایشی
--disable-gilاکنون شامل «t» (برای «threaded» - نخکشیشده) در برچسبهای ABI اکستنشن است.gh-109054: اصلاح ساخت اکستنشن
_testcapiروی لینوکس AArch64 که هنگام استفاده از<cpython/pyatomic.h>نیازمند پیوند دادن به libatomic است: تابع_Py_atomic_or_uint64()روی این پلتفرم نیازمند libatomic__atomic_fetch_or_8()است. اسکریپت پیکربندی اکنون بررسی میکند که آیا پیوند دادن به libatomic مورد نیاز است یا خیر و یک متغیر LIBATOMIC جدید برای ساخت اکستنشن _testcapi تولید میکند. وصله توسط Victor Stinner.gh-63760: اصلاح ساخت روی سولاریس: دیگر تابع
gethostname()را از نو تعریف نکنید. سولاریس این تابع را از سال ۲۰۰۵ تعریف کرده است. وصله توسط Victor Stinner، وصلهی اصلی از Jakub Kulík.gh-108740: اصلاح شرایط رقابت (race condition) در
make regen-all. منبعdeepfreeze.cو پروندههای تولیدشده توسط Argument Clinic اکنون قبل از تولید «اشیای سراسری» (global objects) تولید یا بهروزرسانی میشوند. پیش از این، بسته به ترتیبی که این پروندهها تولید میشدند، ممکن بود برخی شناسهها گم شوند. وصله توسط Victor Stinner.gh-108634: پایتون ساختهشده با
configureو--with-trace-refs(ردیابی ارجاعات) اکنون با ساخت انتشار پایتون و ساخت دیباگ از نظر ABI سازگار است. وصله توسط Victor Stinner.gh-85283: اکستنشن C مربوط به
_statاکنون با رابط برنامهنویسی کاربردی محدود C ساخته میشود. وصله توسط Victor Stinner.gh-108447: اصلاح ساخت x86_64 GNU/Hurd
gh-107814: هنگام فراخوانی
find_python.batبا-q، خروجی nuget به طور مناسب بیصدا نمیشد. این مشکل اکنون برطرف شده است.gh-105481: حذف هدف ساخت
regen-opcode-targetsو ادغام کار آن درregen-opcodeکه بیشتر محاسبات را تکرار میکند. این کار کد ساخت را سادهتر کرده و تکرار کد را کاهش میدهد.gh-106881: بررسی وجود
linux/limits.hپیش از گنجاندن آن درModules/posixmodule.c.gh-95855: بازسازی کد تشخیص سهگانه پلتفرم (platform triplet) و افزودن قابلیت تشخیص برای MIPS نرمافزاری اعشاری (soft float) و musl libc.
gh-106962: تشخیص کامپایلرهای MPI در
configure.gh-106118: اصلاح کامپایل برای پلتفرمهای بدون
O_CLOEXEC. این مسئله با Python 3.12b1 در gh-103295 ایجاد شده بود. وصله توسط Erlend Aasland.gh-105875: برای ساخت ماژول توسعهای
sqlite3به نسخه ۳.۱۵.۲ یا جدیدتر SQLite نیاز است. وصله توسط Erlend Aasland.gh-90005: اصلاح یک رگرسیون در
configureکه ممکن بود ناخواسته بهlibbsdمتصل شویم.gh-102404: مستندسازی نحوهی انجام ساخت WASI روی لینوکس. همچنین افزودن Tools/wasm/build_wasi.sh به عنوان یک پیادهسازی مرجع برای مستندات.
gh-89886: برای بازتولید
configureاکنون به Autoconf 2.71 و aclocal 1.16.4 نیاز است.gh-104692: گنجاندن
commoninstallبه عنوان پیشنیاز برایbininstallاین کار تضمین میکند که هنگام استفاده از ساختهای موازی (
make -j install)، دستورcommoninstallپیش از شروعbininstallبه پایان برسد و به همین دلیل پیوند نمادینpython3تنها پس از نصب تمامی ماژولهای کتابخانهی استاندارد نصب شود.gh-101538: افزودن پشتیبانی آزمایشی برای wasi-threads. اصلاحیه از تاکاشی یاماموتو (Takashi Yamamoto).
Windows¶
gh-110437: امکان بازنویسی منبع بستههای قابل توزیع VC را فراهم میکند تا بتوان تضمین کرد که نسخهها هرگز بین بهروزرسانیها دانگرید (تزلزل به نسخهی پایینتر) نشوند.
gh-109286: بهروزرسانی نصبکنندهی ویندوز برای استفاده از SQLite 3.43.1.
gh-82367: تابع
os.path.realpath()اکنون نام پروندههای سبک MS-DOS را حتی اگر پرونده قابل دسترسی نباشد، حل میکند. اصلاحیه از مونسیک پارک (Moonsik Park).gh-109991: بهروزرسانی ساخت ویندوز برای استفاده از OpenSSL 3.0.11.
gh-106242: تابع
realpath()را اصلاح میکند تا وقتی مسیری حاوی یک نویسهی تهی تعبیهشده در ویندوز به آن پاس داده میشود، رفتاری سازگار داشته باشد. در حالت سختگیرانه (strict)، اکنون بهجای خطای غیرمنتظرهیValueError، خطایOSErrorرا بالا میآورد و در حالت غیرسختگیرانه، مسیر را به صورت مطلق درمیآورد.gh-83180: مدیر نصب پایتون را تغییر میدهد تا وقتی اسکریپت اجراشده دارای یک خط مفسر (shebang) با استفاده از یک فرمان مجازی یونیکسمانند است، حتی اگر فرمان نسخهی خاصی از پایتون را درخواست کند، یک محیط مجازی فعال را ترجیح دهد.
gh-106844: رفع سرریز عدد صحیح و برشخوردن توسط نویسهی تهی در تابع
_winapi.LCMapStringEx()که بر تابعntpath.normcase()تأثیر میگذارد.gh-105436: اطمینان حاصل میکند که یک بلوک محیطی خالی، همانطور که ویندوز ایجاب میکند، با دو نویسهی تهی پایان مییابد.
gh-105146: پیوندهای انتهای نصبکننده بهروزرسانی شدند تا بهجای فهرستهای پستی، به Discourse اشاره کنند.
gh-103646: هنگام نصب از مایکروسافت استور،
pipدیگر بهطور پیشفرض به نصبهای مختص هر کاربر (per-user) نمیپردازد. با این حال، از آنجا که پوشهی نصب قابل نوشتن نیست، باید بهطور خودکار تصمیم بگیرد که بههرحال نصب مختص هر کاربر را انجام دهد. این کار باید مسائل مربوط به زمانی که گزینهای مغایر با--userبهpipپاس داده میشود را حل کند.gh-88745: بهبود کارایی
shutil.copy2()با استفاده از تابعCopyFile2سیستمعامل. این کار ممکن است منجر به تغییرات ظریفی در فرادادههای کپیشده همراه با برخی پروندهها شود و آنها را با رفتار عادی سیستمعامل همراستا کند.gh-104820: توابع
stat()و توابع مرتبط را روی سامانههای پروندهای که از درخواستهای شناسه پرونده پشتیبانی نمیکنند، اصلاح میکند. این شامل FAT32 و exFAT میشود.gh-104803: افزودن
os.path.isdevdrive()برای تشخیص اینکه آیا یک مسیر روی یک درایو توسعهی ویندوز (Windows Dev Drive) قرار دارد یا خیر. روی سکوهایی که از درایو توسعه پشتیبانی نمیکنند مقدارFalseرا برمیگرداند و روی سکوهای غیرویندوزی وجود ندارد.
مکاواس¶
IDLE¶
gh-104719: حذف تغییرات IDLE در tokenize.tabsize و آزمون سایر موارد استفاده از دادهها و متدهای tokenize.
Tools/Demos¶
gh-109991: بهروزرسانی جریانهای کاری CI گیتهاب برای استفاده از OpenSSL 3.0.11 و multissltests برای استفاده از 1.1.1w، 3.0.11 و 3.1.3.
gh-108494: Argument Clinic اکنون از پشتیبانی جزئی Limited API برخوردار است: مستندات موجود در راهنمای توسعهدهندگان پایتون را ببینید. وصلهای از Victor Stinner.
gh-107704: اکنون میتوان با استفاده از ابزار Argument Clinic و با بهکارگیری سینتکس جدید
/ [from X.Y]، ارسال آرگومانهای کلیدواژهای را برای پارامترهای جایگاهی-یا-کلیدواژهای منسوخ کرد. (این عبارت به شکل «فقط جایگاهی از نسخهی X.Y پایتون» خوانده میشود.) برای اطلاعات بیشتر به مستندات در راهنمای توسعهدهندگان پایتون مراجعه کنید.gh-107880: ابزار Argument Clinic اکنون میتواند از متدهای
__init__()و__new__()رونوشت بگیرد.gh-104683: گزینهی
--excludeبه رابط خط فرمان Argument Clinic اضافه شد.gh-95065: ابزار Argument Clinic اکنون از بازنویسی امضای تولیدشدهی خودکار با استفاده از دایرکتیو
@text_signatureپشتیبانی میکند. برای اطلاعات بیشتر به مستندات در راهنمای توسعهدهندگان پایتون مراجعه کنید.gh-107609: بررسی ماژولهای تکراری در Argument Clinic اصلاح شد. پیشتر، تعریفهای تکراری بهاشتباه و بدون سروصدا پذیرفته میشدند. وصلهای از Erlend E. Aasland.
gh-107467: ابزار خط فرمان Argument Clinic اکنون در هنگام بروز خطا، بهجای خروجی استاندارد (stdout)، روی خطای استاندارد (stderr) چاپ میکند.
gh-106970: باگهای دستور
destination <name> clearدر Argument Clinic اصلاح شد؛ بافرهای مقصد هرگز پاک نمیشدند و تحلیلگر دایرکتیوdestinationپس از پردازش دستور، به طور ساده به سمت کنترلکنندهی خطا ادامه میداد. وصلهای از Erlend E. Aasland.gh-106706: نحو بایتکد برای خانوادهها تغییر کرد تا نحو شبهتطبیق نامهای اضافی حذف شود.
gh-106359: ابزار Argument Clinic اکنون به طور صریح «گسترشهای kwarg» را در فرایندهای تابع که به عنوان حاشیهنویسی استفاده میشوند، ممنوع میکند.
gh-103186: دستور
freezeاکنونCONFIG_ARGSرا از نمونهی اصلی سیپایتون که Makefile برای فراخوانی اسکریپتهای ابزار استفاده میکند، دریافت میکند. وصلهای از Ijtaba Hussain.gh-95065: اکنون با استفاده از Argument Clinic و به کارگیری سینتکس جدید
* [from X.Y]، میتوان ارسال پارامترها به صورت جایگاهی را منسوخ کرد. (این عبارت به شکل «فقط کلیدواژه از نسخهی X.Y پایتون» خوانده میشود.) برای اطلاعات بیشتر به مستندات در راهنمای توسعهدهندگان پایتون مراجعه کنید. وصلهای از Erlend E. Aasland با کمک Alex Waygood، Nikita Sobolev و Serhiy Storchaka.
رابط C API¶
gh-85283: اگر کلاندستور
Py_LIMITED_APIتعریف شده باشد، کلاندستورهایPy_BUILD_CORE،Py_BUILD_CORE_BUILTINوPy_BUILD_CORE_MODULEاکنون توسط<Python.h>تعریفنشده (undefine) میشوند. وصلهای از Victor Stinner.gh-110289: توابع
PyUnicode_EqualToUTF8AndSize()وPyUnicode_EqualToUTF8()اضافه شدند.gh-110235: خطای
TypeErrorرا برای فیلدهای تکراری/ناشناس در سازندهیPyStructSequenceبالا بیاورید. وصله شده توسط Xuehai Pan.gh-110014: ثابت ثبتنشدهی
PY_TIMEOUT_MAXاز API محدود حذف شد. وصلهای از Victor Stinner.gh-109521: تابع
PyImport_GetImporter()اکنون اگر در دریافتsys.path_hooksیاsys.path_importer_cacheشکست بخورد، یا اگر آنها به ترتیب فهرست (list) و دیکشنری نباشند، خطای RuntimeError را تنظیم میکند. پیش از این، در موارد مبهم ممکن بود بدون تنظیم خطا مقدار NULL را برگرداند، دچار فروپاشی شود یا اگر این ویژگیها نوع نادرستی داشتند خطای SystemError ایجاد کند.gh-108724: افزودن رابط برنامهنویسی کاربردی قفلکردن سبکوزنِ مختصِ داخلی
PyMutex.gh-85283: تابع
PySys_AuditTuple()اضافه شد: مشابهPySys_Audit()است، اما آرگومانهای رویداد را به عنوان یک شیءtupleدر پایتون ارسال میکند. وصلهای از Victor Stinner.gh-108867: تابع
PyThreadState_GetUnchecked()اضافه شد: مشابهPyThreadState_Get()است، اما اگر مقدار آن NULL باشد، فرایند را با یک خطای مهلک متوقف نمیکند. مسئولیت بررسی اینکه آیا نتیجه NULL است یا خیر بر عهدهی فراخواننده است. پیشتر، این تابع خصوصی بود و با نام_PyThreadState_UncheckedGet()شناخته میشد. وصلهای از Victor Stinner.gh-108765: پروندهی سرآیند استاندارد
<ctype.h>دیگر بهطور خودکار توسطPython.hگنجانده نمیشود. در صورت نیاز، اکنون باید بهطور صریح فراخوانی شود. برای مثال، این پرونده توابعی مانندisalpha()وtolower()را فراهم میکند که به تنظیمات محلی (locale) وابستهاند. پایتون توابع مستقلی از تنظیمات محلی، مانندPy_ISALPHA()وPy_TOLOWER()را ارائه میدهد. این وصله توسط Victor Stinner تهیه شده است.gh-108765: پروندهی سرآیند استاندارد
<unistd.h>دیگر بهطور خودکار توسطPython.hگنجانده نمیشود. در صورت نیاز، اکنون باید بهطور صریح فراخوانی شود. برای مثال، این پرونده توابع زیر را فراهم میکند:close()،getpagesize()،getpid()وsysconf(). این وصله توسط Victor Stinner تهیه شده است.gh-108765: پروندهی سرآیند استاندارد
<ieeefp.h>دیگر توسطPython.hگنجانده نمیشود. این پرونده برای تابعfinite()گنجانده شده بود که اکنون توسط سرآیند<math.h>فراهم میشود. در صورت نیاز، اکنون باید بهطور صریح فراخوانی شود. همچنین کلاندستورHAVE_IEEEFP_Hحذف شد. این وصله توسط Victor Stinner تهیه شده است.gh-108765: پروندهی سرآیند استاندارد
<time.h>،<sys/select.h>و<sys/time.h>دیگر بهطور خودکار توسطPython.hگنجانده نمیشوند. در صورت نیاز، اکنون باید بهطور صریح فراخوانی شوند. برای مثال،<time.h>توابعclock()وgmtime()را فراهم میکند،<sys/select.h>تابعselect()را فراهم میکند و<sys/time.h>توابعfutimes()،gettimeofday()وsetitimer()را فراهم میکند. این وصله توسط Victor Stinner تهیه شده است.gh-108511: افزودن توابع
PyObject_HasAttrWithError()،PyObject_HasAttrStringWithError()،PyMapping_HasKeyWithError()وPyMapping_HasKeyStringWithError().gh-107073: افزودن توابع
PyObject_VisitManagedDict()وPyObject_ClearManagedDict()که باید توسط توابع پیمایش (traverse) و پاکسازی (clear) یک نوع با استفاده از پرچمPy_TPFLAGS_MANAGED_DICTفراخوانی شوند. این وصله توسط Victor Stinner تهیه شده است.gh-108634: پایتونی که با
configureو--with-trace-refs(ردیابی ارجاعها) ساخته شده است، اکنون از API محدود پشتیبانی میکند. این وصله توسط Victor Stinner تهیه شده است.gh-108014: افزودن تابع
PyLong_AsInt(): مشابهPyLong_AsLong()است، اما نتیجه را به جای یک long در زبان C، در یک int در زبان C ذخیره میکند. پیشتر، این تابع به عنوان تابع خصوصی_PyLong_AsInt()(با یک پیشوند زیرخط) شناخته میشد. این وصله توسط Victor Stinner تهیه شده است.gh-108314: افزودن تابع
PyDict_ContainsString(): مشابهPyDict_Contains()است، اما آرگومان key به جای یک PyObject*، به صورت یک رشتهی بایتی رمزگذاریشده با UTF-8 از نوع const char* مشخص میشود. این وصله توسط Victor Stinner تهیه شده است.gh-108337: افزودن عملیات اتمی روی انواع دادهی اضافی در pyatomic.h.
gh-108014: افزودن تابع
Py_IsFinalizing(): بررسی میکند که آیا مفسر اصلی پایتون در حال خاموش شدن است یا خیر. این وصله توسط Victor Stinner تهیه شده است.gh-107916: توابع API زبان C یعنی
PyErr_SetFromErrnoWithFilename()،PyErr_SetExcFromWindowsErrWithFilename()وPyErr_SetFromWindowsErrWithFilename()اکنون پیش از فراخوانیPyUnicode_DecodeFSDefault()کد خطا را ذخیره میکنند.gh-107915: توابع API زبان C مانند
PyErr_SetString()،PyErr_Format()،PyErr_SetFromErrnoWithFilename()و بسیاری دیگر، اگر در قالببندی پیام خطا یا رمزگشایی نام پرونده دچار خطا شوند، دیگر دچار فروپاشی (crash) نشده یا خطاها را نادیده نمیگیرند. در عوض، خطای مربوطه را حفظ میکنند.gh-107810: بهبود
DeprecationWarningبرای استفاده ازPyType_Specبا فراکلاسهایی که دارایtp_newسفارشی هستند.gh-107249: پیادهسازی کلاندستور
Py_UNUSEDبرای کامپایلر MSVC ویندوز. این وصله توسط Victor Stinner تهیه شده است.gh-107226: تابع
PyModule_AddObjectRef()اکنون فقط در نسخهی API محدود ۳.۱۰ یا بالاتر در دسترس است.gh-106320: حذف نام مستعار خصوصی
_PyUnicode_AsString()برای تابعPyUnicode_AsUTF8(). این نام مستعار برای سازگاری عقبگرد با پایتون ۳.۰ تا ۳.۲ نگه داشته شده بود. تابعPyUnicode_AsUTF8()از پایتون ۳.۳ به بعد در دسترس است. از تابعPyUnicode_AsUTF8String()میتوان برای حفظ سازگاری با پایتون ۳.۲ و نسخههای قدیمیتر استفاده کرد. این وصله توسط Victor Stinner تهیه شده است.gh-106572: تبدیل کلاندستورهای
PyObject_DelAttr()وPyObject_DelAttrString()به تابع. این وصله توسط Victor Stinner تهیه شده است.gh-106307: افزودن تابع
PyMapping_GetOptionalItem().gh-106521: افزودن توابع
PyObject_GetOptionalAttr()وPyObject_GetOptionalAttrString().gh-106320: نام مستعار
_PyInterpreterState_Get()برای تابعPyInterpreterState_Get()که برای سازگاری عقبگرد با نسخهی ۳.۸ پایتون نگه داشته شده بود، حذف شد. وصله توسط ویکتور استینر (Victor Stinner).gh-106316: پروندهی سرآیند
cpython/pytime.hحذف شد: این پرونده فقط شامل توابع خصوصی بود. وصله توسط ویکتور استینر.gh-106023: تابع خصوصی
_PyObject_FastCall()حذف شد: ازPyObject_Vectorcall()که از نسخهی ۳.۸ پایتون (PEP 590) در دسترس است، استفاده کنید. وصله توسط ویکتور استینر.gh-106168: اگر پایتون در حالت رفع اشکال یا
با ادعاهاساخته شده باشد،PyTuple_SET_ITEM()وPyList_SET_ITEM()اکنون آرگومان اندیس را با یک شرط (assertion) بررسی میکنند. اگر شرط برقرار نشود، مطمئن شوید که اندازه از قبل تعیین شده است. وصله توسط ویکتور استینر.gh-106084: نامهای مستعار قدیمی برای توابعی که توابع دیگری را فراخوانی میکردند و برای سازگاری عقبگرد با API آزمایشی پایتون ۳.۸ نگه داشته شده بودند، حذف شدند:
_PyObject_CallMethodNoArgs(): ازPyObject_CallMethodNoArgs()استفاده کنید_PyObject_CallMethodOneArg(): ازPyObject_CallMethodOneArg()استفاده کنید_PyObject_CallOneArg(): ازPyObject_CallOneArg()استفاده کنید_PyObject_FastCallDict(): ازPyObject_VectorcallDict()استفاده کنید_PyObject_Vectorcall(): ازPyObject_Vectorcall()استفاده کنید_PyObject_VectorcallMethod(): ازPyObject_VectorcallMethod()استفاده کنید_PyVectorcall_Function(): ازPyVectorcall_Function()استفاده کنید
فقط پیشوند زیرخط را حذف کنید تا کد خود را بهروزرسانی کنید. وصله توسط ویکتور استینر.
gh-106004: توابع
PyDict_GetItemRef()وPyDict_GetItemStringRef()اضافه شدند: مشابهPyDict_GetItemWithError()اما به جای یک ارجاع امانتی، یک ارجاع قوی برمیگرداند. وصله توسط ویکتور استینر.gh-105927: توابع
PyWeakref_GetObject()وPyWeakref_GET_OBJECT()منسوخ شدند: به جای آنها از تابع جدیدPyWeakref_GetRef()استفاده کنید. وصله توسط ویکتور استینر.gh-105927: تابع
PyWeakref_GetRef()اضافه شد: مشابهPyWeakref_GetObject()است اما یک ارجاع قوی برمیگرداند، یا اگر شیء مورد ارجاع دیگر زنده نباشد،NULLبرمیگرداند. وصله توسط ویکتور استینر.gh-105922: تابع
PyImport_AddModuleRef()اضافه شد: مشابهPyImport_AddModule()است، اما به جای یک ارجاع امانتی، یک ارجاع قوی برمیگرداند. وصله توسط ویکتور استینر.gh-105227: تابع جدید
PyType_GetDict()دیکشنری مربوط به شیء نوع دادهی دادهشده را فراهم میکند که بهطور معمول توسطcls.__dict__در معرض دید قرار میگیرد. بهطور معمول استفاده ازtp_dictکافی است، اما برای انواع توکار ایستا،tp_dictاکنون همیشهNULLاست. تابعPyType_GetDict()در عوض شیء دیکشنری صحیح را فراهم میکند.gh-105375: یک باگ در
PyErr_WarnExplicit()رفع شد که در آن اگر API به صورت داخلی با خطا مواجه میشد، ممکن بود یک استثنا بازنویسی شود.gh-105603: ما فیلد جدید (در نسخهی ۳.۱۲)
PyInterpreterConfig.own_gilرا بهPyInterpreterConfig.gilتغییر نام دادیم و معنای مقدار آن را از «bool» به یک عدد صحیح با مقادیر پشتیبانیشدهیPyInterpreterConfig_DEFAULT_GIL،PyInterpreterConfig_SHARED_GILوPyInterpreterConfig_OWN_GILتغییر دادیم. مقدار پیشفرض «مشترک» است.gh-105387: در نسخهی ۳.۱۲ از API محدود C، توابع
Py_INCREF()وPy_DECREF()اکنون به شکل فراخوانیهای تابع کدر پیادهسازی شدهاند تا جزئیات پیادهسازی پنهان شوند. این وصله توسط Victor Stinner تهیه شده است.gh-105396: تابع
PyImport_ImportModuleNoBlock()که از نسخهی ۳.۳ پایتون صرفاً نام مستعاری برایPyImport_ImportModule()بوده است، منسوخ میشود. این وصله توسط Victor Stinner تهیه شده است.gh-103968: تابع
PyType_FromMetaclass()اکنون به فراکلاسهایی اجازه میدهد که مقدارtp_newآنها رویNULLتنظیم شده باشد.gh-105268: ماکروی قدیمی، خصوصی، مستندنشده و آزمایشنشدهی
_PyGC_FINALIZED()را که برای سازگاری عقبگرد با پایتون ۳.۸ و نسخههای قدیمیتر نگه داشته شده بود، حذف کنید. وصلهای از Victor Stinner.gh-105182: توابع
PyEval_AcquireLock()وPyEval_ReleaseLock()که در نسخهی ۳.۲ پایتون منسوخ شده بودند، حذف شدند. این وصله توسط Victor Stinner تهیه شده است.gh-105182: توابع
PyEval_InitThreads()وPyEval_ThreadsInitialized()که در نسخهی ۳.۹ پایتون منسوخ شده بودند، حذف شدند. این وصله توسط Victor Stinner تهیه شده است.gh-105145: توابع قدیمی راهاندازی اولیه پایتون منسوخ شدند:
PySys_ResetWarnOptions()Py_GetExecPrefix()Py_GetPath()Py_GetPrefix()Py_GetProgramFullPath()Py_GetProgramName()Py_GetPythonHome()
توسط Victor Stinner وصل شد.
gh-85275: توابع
PyObject_AsCharBuffer()،PyObject_AsReadBuffer()،PyObject_CheckReadBuffer()وPyObject_AsWriteBuffer()حذف شدند. لطفاً به پروتکل بافر جدید یعنیPyObject_GetBuffer()وPyBuffer_Release()مهاجرت کنید.gh-105156: انواع قدیمی
Py_UNICODEوPY_UNICODE_TYPEمنسوخ شدند: بهجای آنها مستقیماً از نوعwchar_tاستفاده کنید. از نسخهی ۳.۳ پایتون به بعد،Py_UNICODEوPY_UNICODE_TYPEصرفاً نامهای مستعاری برایwchar_tهستند. این وصله توسط Victor Stinner تهیه شده است.gh-105145: توابع قدیمی زیر برای پیکربندی راهاندازی اولیه پایتون که در پایتون ۳.۱۱ منسوخ شده بودند، حذف شدند:
PySys_AddWarnOptionUnicode()PySys_AddWarnOption()PySys_AddXOption()PySys_HasWarnOptions()PySys_SetArgvEx()PySys_SetArgv()PySys_SetPath()Py_SetPath()Py_SetProgramName()Py_SetPythonHome()Py_SetStandardStreamEncoding()_Py_SetProgramFullPath()
توسط Victor Stinner وصل شد.
gh-105107: توابع منسوخشده در پایتون ۳.۹ را حذف کنید.
PyEval_CallObject()،PyEval_CallObjectWithKeywords(): بهجای آنها ازPyObject_CallNoArgs()وPyObject_Call()استفاده کنید (آرگومانهای جایگاهی نباید NULL باشند).PyEval_CallFunction(): بهجای آن ازPyObject_CallFunction()استفاده کنید.PyEval_CallMethod(): بهجای آن ازPyObject_CallMethod()استفاده کنید.PyCFunction_Call(): بهجای آن ازPyObject_Call()استفاده کنید.
توسط Victor Stinner وصل شد.
gh-105115: ویژگی
PyTypeObject.tp_bases(وtp_mro) برای انواع ایستای توکار اکنون توسط تمام مفسرها به اشتراک گذاشته میشود، در حالی که در نسخهی ۳.۱۲ بتا ۱ رویPyInterpreterStateذخیره میشدند. همچنین توجه داشته باشید که اکنون تاپلها اشیای نامیرا هستند.gh-105071: تابع
PyUnstable_Exc_PrepReraiseStarبه API ناپایدار C اضافه شد تا پیادهسازیexcept*را در معرض نمایش بگذارد.gh-104922: برای استفاده از قالبهای
'#'در APIهایی مانندPyArg_ParseTuple()وPy_BuildValue()دیگر نیازی بهPY_SSIZE_T_CLEANنیست. آنها صرفنظر از وجودPY_SSIZE_T_CLEANازPy_ssize_tبرای'#'استفاده میکنند.gh-104584: یک API ناپایدار C برای هوکگذاری در یک بهینهساز اضافه شد. این مورد عمدتاً داخلی است، اما برای امکان آزمایش توسط اشخاص ثالث «ناپایدار» علامتگذاری شده است.
gh-104668: از فراخوانی
PyOS_InputHookیاPyOS_ReadlineFunctionPointerدر زیرمفسرها خودداری کنید، زیرا معمولاً اجتناب از استفاده از وضعیت سراسری در کالبکهای ثبتشدهی آنها دشوار است. این کار همچنین از موقعیتهایی جلوگیری میکند که ممکن است افزونهها خود را در حال اجرا در زیرمفسری بیابند که از آن پشتیبانی نمیکنند (یا هنوز در آن بارگذاری نشدهاند).bpo-42327: تابع
PyModule_Add()اضافه شد: مشابهPyModule_AddObjectRef()وPyModule_AddObject()است، اما همیشه یک ارجاع به مقدار را میرباید.bpo-40309: مدیریت صحیح فاصلههای پایانی پیش از پرانتز بستهشده در رشتههای فرمت
Py_BuildValue().
نگارش بتا ۱ پایتون ۳.۱۲.۰ (Python 3.12.0 beta 1)¶
تاریخ انتشار: ۲۰۲۳-۰۵-۲۲
امنیت¶
gh-99889: برطرفسازی یک نقص امنیتی در
uu.decode()که در صورت مشخص نشدنout_fileمیتوانست بر اساس ورودی، امکان پیمایش پوشه را فراهم کند.gh-104049: عدم افشای مکان محلی روی دیسک در اندیسهای پوشه تولیدشده توسط
http.client.SimpleHTTPRequestHandler.gh-99108: ارتقای پیادهسازی توکار SHA3 در ماژول
hashlibبه یک پیادهسازی تأییدشده از پروژهیHACL*. این مورد زمانی استفاده میشود که OpenSSL موجود نباشد یا از SHA3 پشتیبانی نکند.gh-102153: تابعی
urllib.parse.urlsplit()اکنون نویسههای کنترلی C0 و فاصلههای پیشتاز را بر اساس مشخصات نشانیهای وب تعریفشده توسط WHATWG در پاسخ به CVE 2023-24329 حذف میکند. وصلهای از Illia Volochii.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
gh-104615: رفع ترتیب نادرست انتسابها در کدهایی مانند
a, a = x, y. مشارکتکننده: Carl Meyer.gh-104572: بهبود پیام خطای سینتکس برای سازههای نامعتبر در زمینههای PEP 695 و در حاشیهنویسیها هنگامی که
from __future__ import annotationsفعال است.gh-104482: رفع سه باگ مدیریت خطا در اعتبارسنجی دستورهای تطبیق الگو در ast.c.
gh-102818: عدم افزودن یک قاب به ردگیری در توابع ترامپولین
sys.setprofileوsys.settrace. این کار تضمین میکند که اگر استثنایی در تابع فراخوانی بازگشتی ایجاد شود، قابها تکرار نشوند، و همچنین تضمین میکند که اگر از یک فراخوانی بازگشتی C استفاده شود و قاب را اضافه نکند، قابها حذف نشوند.gh-104405: رفع مسئلهای که در آن برخی از دستورالعملهای بایتکد میتوانستند PEP 523 را هنگام «درونخطیسازی» (inlining) فراخوانیها نادیده بگیرند.
gh-103082: تغییر رفتار رویدادهای
sys.monitoring.events.LINEدرsys.monitoring: رویدادهای خط اکنون بهجای استفاده از تقریب ایستا (مانند گذشته)، بهصورت پویا هنگام رسیدن به یک خط جدید رخ میدهند. این کار رفتار را بسیار شبیه به رویدادهای «خط» درsys.settraceمیکند. این تغییر باید انتقال ابزارها از نسخهی ۳.۱۱ به ۳.۱۲ را آسانتر کند.gh-104263: اصلاح
float("nan")برای تولید یک NaN بیصدا روی پلتفرمهایی (مانند MIPS) که در آنها معنای بیت سیگنالدهنده / بیصدا معکوس معنای معمول آن است. همچنین معرفی یک ماکروی جدیدPy_INFINITYمطابق باINFINITYدر C99، و بازسازی کدهای داخلی برای تکیه بر ماکروهایNANوINFINITYدر C99 بهجای کدگذاری سختافزاری الگوهای بیتی برای بینهایتها و NaNها. با تشکر از Sebastian Berg.gh-99113: ماژولهای توسعهای با مقداردهی اولیه چندمرحلهای اکنون میتوانند نشان دهند که از اجرا در زیرمفسرهایی که GIL مخصوص به خود را دارند، پشتیبانی میکنند. این کار با استفاده از
Py_MOD_PER_INTERPRETER_GIL_SUPPORTEDبه عنوان مقدار برای جایگاه تعریف ماژولPy_mod_multiple_interpretersانجام میشود. در غیر این صورت، ماژول بهطور پیشفرض نمیتواند در چنین زیرمفسرهایی وارد (import) شود. (این موضوع روی مفسر اصلی یا زیرمفسرهایی که GIL خود را ندارند تأثیری نمیگذارد.) علاوه بر ایزولهسازی که مقداردهی اولیه چندمرحلهای معمولاً نیاز دارد، پشتیبانی از GIL بهازای هر مفسر مستلزم یک محدودیت اضافی است: نخایمنی (thread-safety). اگر ماژول دارای وابستگیهای خارجی (پیوندخورده) باشد و آن کتابخانهها هرگونه وضعیتی داشته باشند که نخایمن نباشد، ماژول باید کار اضافی را برای افزودن نخایمنی انجام دهد. این مورد باید یک حالت غیرمعمول باشد.gh-99113: GIL اکنون (بهصورت اختیاری) بهازای هر مفسر است. این تغییر بنیادین برای PEP 684 است. همهی اینها به لطف وضعیت ایزولهی هر مفسر در فرایند امکانپذیر شده است. رفتار مفسر اصلی بدون تغییر باقی میماند. به همین ترتیب، مفسرهای ایجادشده با استفاده از
Py_NewInterpreter()تحت تأثیر قرار نمیگیرند. برای دریافت یک مفسر با GIL خود،Py_NewInterpreterFromConfig()را فراخوانی کنید.gh-104108: ماژولهای توسعهای با مقداردهی اولیه چندمرحلهای اکنون میتوانند نشان دهند که آیا در واقع از چندین مفسر پشتیبانی میکنند یا خیر. بهطور پیشفرض انتظار میرود چنین ماژولهایی از استفاده در چندین مفسر پشتیبانی کنند. در موارد غیرمعمولی که اینگونه نباشد، میتواند از جایگاه جدید تعریف ماژول
Py_mod_multiple_interpretersاستفاده کند. مقدار0به این معناست که ماژول از آنها پشتیبانی نمیکند.1به این معناست که پشتیبانی میکند. مقدار پیشفرض1است.gh-104142: رفع مسئلهای که در آن تکرار
listیاtupleممکن بود در رعایت PEP 683 شکست بخورد.gh-104078: بهبود کارایی
PyObject_HasAttrString()gh-104066: بهبود کارایی تابع
hasattr()برای اشیای ماژول با یک ویژگی گمشده.gh-104028: کاهش ایجاد شیء هنگام فراخوانی تابع کالبک از gc. وصله توسط Donghee Na.
gh-104018: عدم اجازه به استفاده از مشخصکنندهی فرمت «z» در فرمتبندی % از شیءهای bytes.
gh-102213: رفع افت کارایی هنگام دسترسی به ویژگیهای یک شیء در صورتی که
__getattr__تعریف شده باشد.gh-103895: بهبود مدیریت حالتهای خاص در نمایش
Exception.__notes__. تضمین میکند که پیامها همیشه با یک نویسهی خط جدید تمام شوند و رشتهها/بایتها در چند سطر پخش نشوند. وصله توسط Carey Metcalfe.gh-103907: عدم تغییر شمارش ارجاعهای اشیای نامیرای شناختهشده (
True،FalseوNone) در حلقهی اصلی مفسر.gh-103899: ارائهی یک راهنمایی مفید در پیام
TypeErrorهنگام فراخوانی تصادفی یک شیء ماژول که دارای یک ویژگی فراخوانیپذیر با همان نام است (مانندdis.dis()یاdatetime.datetime).gh-103845: حذف ابزار دقیق (instrumentation) مربوط به سطر و دستور پیش از افزودن موارد جدید برای پایش، جهت جلوگیری از حذف فوری ابزار دقیق تازه اضافه شده.
gh-103763: پیادهسازی PEP 695، افزودن پشتیبانی نحوی برای کلاسهای عام، عملکردهای عام و مستعارهای نوع.
سینتکس جدیدی به شکل
type X = ...برای مستعارهای نوع اضافه شده است که در زمان اجرا به نمونهای از کلاس جدیدtyping.TypeAliasTypeحل میشود. مقدار به صورت تنبل ارزیابی میشود و از طریق ویژگی.__value__قابل دسترسی است. این ویژگی به عنوان یک گره جدید درخت نحوی انتزاعی (AST) به نامast.TypeAliasپیادهسازی شده است.سینتکس جدید (
class X[T]: ...،def func[T](): ...) برای تعریف توابع و کلاسهای عام اضافه شده است. این امکان به عنوان یک ویژگی جدید به نامtype_paramsروی گرههای درخت نحوی انتزاعی (AST) برای کلاسها و توابع پیادهسازی شده است. این گره حاوی نمونههایی از کلاسهای جدید درخت نحوی انتزاعی (AST) یعنیast.TypeVar،ast.ParamSpecوast.TypeVarTupleاست.اکنون
typing.TypeVar،typing.ParamSpec،typing.ParamSpecArgs،typing.ParamSpecKwargs،typing.TypeVarTupleوtyping.Genericبه جای پایتون، در زبان C پیادهسازی شدهاند.دستورالعملهای بایتکد جدیدی به نامهای
LOAD_LOCALS،LOAD_CLASSDICT_OR_GLOBALوLOAD_CLASSDICT_OR_DEREFبرای پشتیبانی از حل صحیح نامها در فضاهای نام کلاس اضافه شدهاند.وصله توسط Eric Traut، Larry Hastings و Jelle Zijlstra.
کتابخانه¶
gh-103801: افزودن سه اصلاح جزئی لینتینگ به ماژول wasm که توسط ruff شناسایی شدند.
gh-103793: بهینهسازی ایجاد وظیفه در asyncio با به تعویق انداختن قالببندی پرهزینهی رشته (تولید نام وظیفه) از زمان ایجاد وظیفه تا اولین باری که
get_nameفراخوانی میشود. این کار بنچمارکهای asyncio را تا ۵ درصد سریعتر میکند.
هسته و توکارها (Core and Builtins)¶
gh-102310: تغییر محدودهی خطا برای مقادیر لفظی نامعتبر بایت.
gh-103590: عدم پوشش دادن یک استثنای واحد برخاسته از ساختار
try-except*در یکExceptionGroup.gh-103650: تغییر قالب نگاشت عملکرد (perf map) برای حذف پیشوند «0x» از آدرسها
gh-102856: پیادهسازی تغییرات لازم توکنساز C برای PEP 701. وصله توسط Pablo Galindo Salgado، Lysandros Nikolaou، Batuhan Taskaya، Marta Gómez Macías و sunmy2019.
gh-100530: شفافسازی پیام خطای صادرشده هنگامی که بخش فراخوانیشدهی یک الگوی کلاس در واقع یک کلاس نیست.
gh-101517: رفع باگ در شمارهسطرهای دستورالعملهای صادرشده برای
except*.gh-103492: شفافسازی
SyntaxWarningبا مقایسهی لفظیisاز طریق مشخص کردن اینکه کدام مقدار لفظی مسئلهساز است، از آنجا که مقایسهها با استفاده ازisبا مثلاًNoneو مقادیر لفظی بولی متعارف هستند.gh-87729: افزودن
LOAD_SUPER_ATTR(و یک تخصصیسازی برایsuper().method()) جهت سرعت بخشیدن بهsuper().method()وsuper().attr. این تغییرsuper().method()را حدود ۲.۳ برابر سریعتر میکند و عملکرد آن را به فاصلهی ۲۰ درصدی یک فراخوانی متد ساده میرساند. وصله توسط Vladimir Matveev و Carl Meyer.gh-103488: تغییر آفست داخلی متمایزکنندهی آدرسهای هدف yield و return، به طوری که اشارهگر دستورالعمل برای مدیریت استثنا و سایر بازگشاییهای پشته درست باشد.
gh-82012: عملگر وارونسازی بیتی (
~) روی bool منسوخ شده است. این عملگر وارونسازی بیتی بازنمایی زیرینintرا برمیگرداند بهطوری کهbool(~True) == Trueمیشود، که میتواند گیجکننده باشد. ازnotبرای نفی منطقی مقادیر بولی استفاده کنید. در موارد نادر که واقعاً به وارونسازی بیتیintزیرین نیاز دارید، به طور صریح به int تبدیل کنید:~int(x).gh-77757: استثناهای پرتابشده در متد
__set_name__شیء نوع (typeobject) دیگر توسطRuntimeErrorپوشانده نمیشوند. اطلاعات زمینه به عنوان یک یادداشت PEP 678 به استثنا اضافه میشود.gh-103333:
AttributeErrorاکنون ویژگیnameرا هنگام pickled و unpickled شدن حفظ میکند.gh-103242: مهاجرت متد
set_ecdh_curve()به طوری که از APIهای منسوخشدهی OpenSSL استفاده نکند. وصله توسط Donghee Na.gh-103323: ما استفاده از
_PyRuntime.tstate_currentرا با یک متغیر نخمحلی (thread-local) جایگزین کردهایم. این یک جزئیات پیادهسازی نسبتاً سطح پایین است و نباید تغییری در رفتار ایجاد شود.gh-84436: پیادهسازی PEP-683 که اشیاء نامیرا (Immortal Objects) را با استفاده از شمارشگر ارجاع ثابت اضافه میکند که شمارش ارجاع را رد میکند تا اشیاء واقعاً تغییرناپذیر شوند.
gh-102700: اجازه دادن به ماژولهای توکار تا زیرماژول باشند. این امر به زیرماژولها اجازه میدهد تا به صورت ایستا به یک باینری سیپایتون لینک شوند.
gh-102500: قابل دسترس کردن پروتکل بافر در کد پایتون با استفاده از متدهای جادویی جدید
__buffer__و__release_buffer__. جزئیات را در PEP 688 ببینید. وصله توسط Jelle Zijlstra.gh-97933: PEP 709: درک فهرست، دیکشنری و مجموعه درونخطی برای بهبود عملکرد و کاهش اندازهی بایتکد.
gh-99184: دور زدن دسترسی ویژگی نمونه به
__name__درreprازweakref.ref.gh-98003: فراخوانیهای تابع پیچیده اکنون سریعتر هستند و هیچ فضای پشتهی C را مصرف نمیکنند.
bpo-39610: تابع
len()برای اشیاءmemoryviewصفربعدی (مانندmemoryview(ctypes.c_uint8(42))) اکنون یکTypeErrorپرتاب میکند. پیشتر این مقدار1را برمیگرداند که با پرتاب شدنIndexErrorتوسطmem_0d[0]سازگار نبود.
کتابخانه¶
bpo-31821: اصلاح
pause_reading()به طوری که هنگام فراخوانی ازconnection_made()درasyncioبه درستی کار کند.gh-104600: تابع
functools.update_wrapper()اکنون ویژگی__type_params__را تنظیم میکند (که توسط PEP 695 اضافه شده است).gh-104340: هنگامی که یک پروتکل پایپ
asyncioاتصال خود را به دلیل خطایی از دست میدهد و فراخواننده منتظرwait_closed()رویStreamWriterمربوطه نمیماند (await نمیکند)، هشدار مربوط به استثنایی را که هرگز بازیابی نشده است ثبت نکنید. در نهایت، بر اساس مستنداتStreamWriter.close()، فراخوانیwait_closed()اختیاری است («الزامی نیست»)._translatedgh-104555: رفع مشکلی که در آن بررسی
issubclass()که کلاسی مانندXرا با یک پروتکل قابلبررسی در رانتایم (runtime-checkable protocol) مانندYکه دارای اعضای فراخوانیناپذیر است مقایسه میکرد، اگر پیشتر فراخوانیisinstance()برای مقایسهی نمونهای ازXباYانجام شده بود، باعث ایجادTypeErrorنمیشد. این مشکل در مواردی خاص در پایتون ۳.۱۱ وجود داشت، اما در نسخهی ۳.۱۲ به دلیل برخی تغییرات نامرتبط که روی پروتکلهای قابلبررسی در رانتایم اعمال شد، برجستهتر شد. وصله توسط الکس ویگود (Alex Waygood).gh-104372: بازسازی کدهای داخلی
_posixsubprocessبرای جلوگیری از استفاده از C API پایتون بین fork و exec هنگام علامتگذاری توصیفگرهای پروندهیpass_fds=به عنوان قابل ارثبری.gh-104484: افزودن آرگومان case_sensitive به متد
pathlib.PurePath.match()gh-75367: رفع تشخیص توصیفگر داده در تابع
inspect.getattr_static().gh-104536: رفع یک شرایط رقابت (race condition) در منطق پاکسازی داخلی
multiprocessing.processکه میتواند هنگام فراخوانیprocess.close()به صورت یکAttributeErrorناخواسته بروز کند.gh-103857: بهروزرسانی stacktrace منسوخسازیهای datetime برای اشاره به سطر فراخوانیکننده
gh-101520: انتقال قابلیتهای هستهی ماژول
tracemallocبه پوشهیPython/، بهطوری که تنها پوشش (wrapper) ماژول درModules/باقی بماند.gh-104392: حذف ویژگی مستندنشده و استفادهنشدهی
_paramspec_tvarsاز برخی کلاسها درtyping.gh-102613: رفع مشکلی که در آن متد
pathlib.Path.glob()هنگام پیمایش درخشان پوشههای عمیق، خطایRecursionErrorرا ایجاد میکرد.gh-103000: بهبود کارایی تابع
dataclasses.asdict()برای حالت رایجی که در آن dict_factory برابر باdictاست. وصله توسط دیوید سی. الیس (David C Ellis).gh-104301: اجازه دادن به فضای خالی پیشتاز (leading whitespace) در دستورات رفع ابهامشده در
pdb.gh-104139: آموزش تابع
urllib.parse.unsplit()برای حفظ کردن"//"هنگام مونتاژ کردن URLهای سبک Apple Platform Deployment مانندitms-services://?action=generate-bugs.gh-104307: تابع
socket.getnameinfo()اکنون هنگام ارتباط با سرور DNS، قفل GIL را آزاد میکند.gh-104310: کاربران اکنون میتوانند از
importlib.util.allowing_all_extensions()(یک مدیر زمینه) برای غیرفعال کردن موقت بررسیهای دقیق سازگاری جهت ایمپورت کردن ماژولهای توسعهای در زیرمفسرها (subinterpreters) استفاده کنند.gh-87695: رفع مشکلی که در آن متد
pathlib.Path.glob()هنگام برخورد با یک پیوند نمادین (symlink) به یک مسیر بیش از حد طولانی،OSErrorایجاد میکرد.gh-104265: جلوگیری از خرابی احتمالی با عدم اجازه دادن به نمونهسازی انواع
_csv.Readerو_csv.Writer. این رگرسیون در نسخهی 3.10.0a4 با PR 23224 (bpo-14935) معرفی شده بود. وصله توسط رادیسلاو چوگونوف (Radislav Chugunov).gh-102613: بهبود کارایی متد
pathlib.Path.glob()هنگام گسترش وایلدکاردهای بازگشتی ("**") با ادغام وایلدکاردهای مجاور و حذف موارد تکراری نتایج فقط در صورت نیاز.gh-65772: حذف کامنتها و کدهای غیرضروری در turtle.py.
gh-90208: رفع مشکلی که در آن
pathlib.Path.glob()هنگام مواجهه با یکPermissionErrorنتایج ناقص برمیگرداند. این متد اکنون تمام استثناهایOSErrorرا، به جز آنهایی که از فراخوانیis_dir()روی مسیر سطح بالا ایجاد میشوند، سرکوب میکند.gh-104144: بهینهسازی
asyncio.TaskGroupهنگام استفاده ازasyncio.eager_task_factory(). اگر وظیفهی TaskGroup به صورت مشتاقانه (eagerly) کامل شود، از زمانبندی یک فراخوانی بازگشتی (callback) صرفنظر کنید.gh-104144: بهینهسازی
asyncio.gather()هنگام استفاده ازasyncio.eager_task_factory()برای تکمیل مشتاقانهی آن در صورتی که تمام آیندهنماها (futures) به صورت مشتاقانه کامل شده باشند. از زمانبندی فراخوانیهای بازگشتی (callbacks) برای آیندهنماهایی که به صورت مشتاقانه کامل میشوند، خودداری کنید.gh-104114: رفع مشکلی که در آن
pathlib.Path.glob()به جای استفاده از حروف واقعی سامانه فایلبندی (filesystem)، مسیرها را با استفاده از حروف بخشهای غیروایلدکارد (non-wildcard) برای بخشهای متناظر مسیر برمیگرداند.gh-104104: بهبود کارایی
pathlib.Path.glob()با استفاده ازre.IGNORECASEبرای پیادهسازی تطبیق بیتفاوت به بزرگی و کوچکی حروف (case-insensitive).gh-104102: بهبود کارایی
pathlib.Path.glob()هنگام ارزیابی الگوهایی که حاوی بخشهای'../'هستند.gh-103822: بهروزرسانی نوع دادهی (type) بازگشتی
weekdayبه صفت (attribute) جدیداً اضافه شدهی Daygh-103629: بهروزرسانی
reprمربوط بهtyping.Unpackمطابق با PEP 692.gh-103963: کاری کنید که
disنام آرگومانها را برایCALL_INTRINSIC_*نمایش دهد.gh-104035: متدهای تعریفشده توسط کاربر یعنی
__getstate__و__setstate__را برای دیتاکلاسهای فریز شدهی دارای شکاف (slotted frozen dataclasses) نادیده نگیرید.gh-103987: در ماژول
mmap، چندین باگ را که ممکن بود پس از بیاع اعتبار شدن پروندههای نگاشتشده در حافظه (memory-mapped files)، منجر به دسترسی به آنها شوند، رفع کنید.gh-88773: افزودن
turtle.teleport()به ماژولturtleبرای جابجایی لاکپشت (turtle) به یک نقطهی جدید بدون رسم خط، چه قابلمشاهده و چه غیرقابلمشاهده. وصله (patch) توسط Liam Gersten.gh-103935: استفاده از
io.open_code()برای پروندههایی که قرار است اجرا شوند به جایopen()خامgh-68968: رفع خروجی بههمریختهی
assertEqual()هنگامی که ورودی فاقد کاراکتر خط جدید نهایی (newline) است.gh-100370: رفع خطای احتمالی
OverflowErrorدرsqlite3.Connection.blobopen()برای نسخههای ۳۲ بیتی. وصله (patch) توسط Erlend E. Aasland.gh-102628: جایگزینی CTRL-D با CTRL-Z در بنر رابط خط فرمان (CLI) ماژول
sqlite3هنگام اجرا روی ویندوز.gh-103636: صفتهای (attributes) سطح ماژول
JanuaryوFebruaryدر ماژولcalendarمنسوخ شدند.gh-103583: ایزوله کردن ماژول
_multibytecodecو ماژولهای توسعهای کدک (codecs extension modules). وصلهها توسط Erlend E. Aasland.gh-103848: افزودن بررسیهایی برای اطمینان از اینکه میزبانهای درون کروشهی
[و]که توسطurllib.parse.urlsplit()پیدا میشوند، در فرمت IPv6 یا IPvFuture هستند.gh-103872: بهروزرسانی نسخهی بستهبندیشدهی pip به نسخهی 23.1.2.
gh-99944: کاری کنید که
disمقدار oparg مربوط بهKW_NAMESرا نمایش دهد.gh-74940: محلی (locale) مدل C.UTF-8 دیگر به en_US.UTF-8 تبدیل نمیشود، که این امر امکان استفاده از کدگذاری UTF-8 را روی سیستمهایی که هیچ localای نصب نکردهاند فراهم میکند.
gh-103861: رفع مشکلی که در آن
zipfile.Zipfileهنگام استفاده ازforce_zip64برای افزودن پروندهها، پروندههای zip نامعتبری ایجاد میکرد. وصله توسط Carey Metcalfe.gh-103857: توابع
datetime.datetime.utcnow()وdatetime.datetime.utcfromtimestamp()منسوخ شدند. (وصله توسط Paul Ganssle)gh-103839: جلوگیری از خطای کامپایل به دلیل پیدا نشدن tommath.h هنگام ساختن Tkinter در برابر Tcl 8.7 که با libtommath بستهبندیشده ساخته شده است.
gh-103791: تابع
contextlib.suppressاکنون از سرکوب کردن استثناهایی که به عنوان بخشی از یکExceptionGroupبالا میروند پشتیبانی میکند. اگر استثناهای دیگری در گروه وجود داشته باشد، آنها در گروهی که شامل استثناهای سرکوبشده نیست، مجدداً بالا میروند.gh-90750: استفاده از
datetime.datetime.fromisocalendar()در پیادهسازیdatetime.datetime.strptime()، که اکنون باید فقط تاریخهای معتبر ISO را بپذیرد. (وصله توسط Paul Ganssle)gh-103685: آمادهسازی
tkinter.Menu.index()برای Tk 8.7 به طوری که وقتی قرار استNoneرا برگرداند، خطایTclError: expected integer but got ""را صادر نکند.gh-81403: اگر یک نمونهی کششدهی FTP دوباره استفاده شود،
urllib.request.CacheFTPHandlerدیگرURLErrorرا بالا نمیآورد. متد endtransfer در ftplib تابع voidresp را فراخوانی میکند تا اتصال را خالی کرده و استفادهی مجدد از نمونهی FTP را به درستی مدیریت کند.gh-103699: افزودن
__orig_bases__به TypedDictهای غیرعام، TypedDictهای مبتنی بر فراخوانی و NamedTupleهای مبتنی بر فراخوانی. سایر TypedDictها و NamedTupleها از پیش این ویژگی را داشتند.gh-92248: منسوخ کردن پارامترهای
type،choicesوmetavarدرargparse.BooleanOptionalAction.gh-89415: افزودن ثابتهای
socketبرای چندپخشیِ منبعمحور. وصله توسط Reese Hyde.gh-103673: ماژول
socketserverکلاسهایForkingUnixStreamServerوForkingUnixDatagramServerرا به دست میآورد. وصله توسط Jay Berry.gh-103636: افزودن Enum برای ماهها و روزها در ماژول گاهشماری (calendar).
gh-84976: ایجاد یک پروندهی جدید
Lib/_pydatetime.pyکه نسخهی پایتونی ماژولdatetimeرا تعریف میکند، و باعث میشودdatetimeمحتوای کتابخانهی جدید را فقط در صورت گم شدن پیادهسازی C ایمپورت کند. در حال حاضر، پیادهسازی کامل پایتون تعریف شده و سپس در صورت در دسترس نبودن پیادهسازی C حذف میشود، که این امر باعث کند شدن غیرضروریimport datetimeمیشود.gh-103596: ویژگیها/متدها دیگر تحتالشعاع اعضای enum همنام قرار نمیگیرند، اگرچه ممکن است توسط propertyهای enum تحتالشعاع قرار گیرند.
gh-103584: بهروزرسانی
importlib.metadataبا تغییرات ازimportlib_metadataنسخهی ۵.۲ تا ۶.۵.۰، شامل موارد زیر: پشتیبانی ازinstalled-files.txtبرایDistribution.filesدر صورت وجود.PackageMetadataاکنون یک متدgetاضافی را تعیین میکند که امکان پرسوجوی آسان کلیدهای متادیتایی را که ممکن است وجود نداشته باشند فراهم میکند.packages_distributionsاکنون بستهها و ماژولها را با ماژولهای پایتونی که منابع.pyنیستند (مانند.pyc،.so) ارج مینهد. گسترش پروتکل برایPackageMetadata.get_allجهت تطابق با پیادهسازی بالادستیemail.message.Message.get_allدر python/typeshed#9620. منسوخ شدن استفاده ازDistributionبدون تعریف متدهای انتزاعی. منسوخ شدن این انتظار کهPackageMetadata.__getitem__برای کلیدهای گمشدهNoneرا برگرداند. در آینده، این کار یکKeyErrorصادر خواهد کرد.gh-103578: رفع باگی که در آن
pdbهنگام خواندن پروندهی منبع با کدگذاری متفاوت با جایگزین کردنio.open()باio.open_code()متوقف میشد (crash). متد جدید همچنین قلاب تعیینشده توسطPyFile_SetOpenCodeHook()را فراخوانی میکند.gh-103556: اکنون ساخت شیءهای
inspect.Signatureبا پارامترهای فقط-جایگاهی که دارای مقدار پیشفرض هستند و پس از آنها یک پارامتر جایگاهی-یا-کلیدواژه بدون مقدار پیشفرض قرار دارد، غیرممکن است.gh-103559: بهروزرسانی نسخهی بستهبندیشدهی pip به نسخهی 23.1.1.
gh-103548: بهبود کارایی
pathlib.Path.absolute()وcwd()از طریق الحاق مسیرها فقط در صورت نیاز. همچنین بهبود کاراییpathlib.PurePath.is_absolute()روی Posix با صرفنظر کردن از تجزیه و نرمالسازی مسیر.gh-103538: حذف کد ماژول
_tkinterکه با تعریف ماکرویTK_AQUAمحافظت میشد؛ این ماکرو فقط برای Tk 8.4.7 یا نسخههای قدیمیتر مورد نیاز بود و هرگز توسط هیچ سامانه ساخت یا مستندسازی برای استفادهی دستی تعریف نشده بود.gh-103533: بهروزرسانی
cProfileبرای استفاده از API مربوط به PEP 669gh-103525: رفع پیام استثنای گمراهکننده هنگام ارائهی آرگومانهای ترکیبی
strوbytesبهpathlib.PurePathوPath.gh-103489: افزودن
getconfig()وsetconfig()بهConnectionبرای اعمال تغییرات پیکربندی در یک اتصال پایگاه داده. وصله توسط Erlend E. Aasland.gh-103365: تنظیم حد مرزی پیشفرض Flag روی مقدار
STRICTو رفع عملیات بیتی.gh-103472: جلوگیری از یک
ResourceWarningبالقوه درhttp.client.HTTPConnectionبا بستن صریح پاسخ CONNECT پراکسی / تونل.gh-103462: رفع مشکلی در استفاده از
writelines()در ماژولasyncioبرای ارسال بارهای بسیار بزرگی که از میزان دادهی قابلنوشتن در یک فراخوانی بهsocket.socket.send()یاsocket.socket.sendmsg()بیشتر هستند، که این امر منجر به باقی ماندن بافر باقیمانده به صورت نوشتهنشده میشد.gh-103449: رفع یک باگ در تولید رشتهی مستندات (doc string) در
dataclasses.dataclass().gh-103092: ایزوله کردن
_collections(اعمال PEP 687). وصله توسط Erlend E. Aasland.gh-103357: افزودن پشتیبانی از پارامتر
defaultsدرlogging.Formatterبرایlogging.config.dictConfig()وlogging.config.fileConfig(). وصله توسط Bar Harel.gh-74690: کارایی بررسیهای
isinstance()در برابرپروتکلهای قابلبررسی در زمان اجرابرای پروتکلهایی که فقط چند عضو دارند، به طور قابلتوجهی بهبود یافته است. برای دستیابی به این بهبود، چندین جزئیات پیادهسازی داخلی ماژولtypingبازنویسی شدهاند، از جملهtyping._ProtocolMeta.__instancecheck__،typing._is_callable_members_onlyوtyping._get_protocol_attrs. وصلهها توسط Alex Waygood.gh-74690: اعضای یک پروتکل قابلبررسی در زمان اجرا اکنون به محض ایجاد کلاس، در رانتایم «فریزشده» در نظر گرفته میشوند. برای جزئیات بیشتر به "What's new in Python 3.12" مراجعه کنید.
gh-103256: رفع باگی که باعث میشد ماژول
hmacزمانی که الگوریتم هش درخواستی با وجود در دسترس بودن جداگانه به عنوان بخشی از خودhashlibدر OpenSSL در دسترس نبود، یک استثنا ایجاد کند. اکنون به درستی به نسخهی درونساخته برمیگردد. این اتفاق ممکن است زمانی رخ دهد که، برای مثال، OpenSSL شما از SHA3 پشتیبانی نکند و بخواهیدhmac.digest(b'K', b'M', 'sha3_256')را محاسبه کنید.gh-103285: بهبود کارایی
ast.get_source_segment().gh-103225: رفع یک باگ در
pdbهنگام نمایش شمارهسندهای کدهای منبع در سطح ماژول.gh-93910: حذف منسوخسازی دسترسی enum به
member.member.gh-102978: رفع مشکلی که در آن تابع
unittest.mock.patch()هنگامی که باautospec=Trueفراخوانی میشد، امضای توابع را برای متدهای دکوراتورشده با@classmethodیا@staticmethodاعمال نمیکرد.gh-103092: ایزوله کردن
_socket(اعمال PEP 687). وصله توسط Erlend E. Aasland.gh-100479: افزودن متد
pathlib.PurePath.with_segments()که یک شیء مسیر از آرگومانها ایجاد میکند. این متد هر زمان که یک مسیر مشتقشده ایجاد شود (مانند مسیر حاصل ازpathlib.PurePath.parent)، فراخوانی میشود. زیرکلاسها میتوانند این متد را برای به اشتراک گذاشتن اطلاعات بین اشیاء مسیر بازنویسی کنند.gh-103220: رفع مشکلی که در آن تابع
os.path.join()هنگام پیوست کردن به یک درایو ناقص UNC که دارای اسلش پایانی در ویندوز است، یک اسلش اضافه میکرد.gh-103204: رفع مشکلی که در آن
http.serverدرخواستهای HTTP با شمارههای نسخهی HTTP که با '+'، '-' یا نویسههای '_' جداکنندهی رقم پیشوند شدهاند را میپذیرد. طول شمارههای نسخه نیز محدود شده است.gh-75586: رفع مشکلات مختلف مخصوص ویندوز در
shutil.which.gh-103193: بهبود کارایی
inspect.getattr_static(). وصله توسط Alex Waygood.gh-103176: تابع
sys._current_exceptions()اکنون بهجای یک تاپل(typ, exc, tb)، نگاشتی از شناسهی نخ به یک نمونهی استثنا را برمیگرداند.gh-103143: بهبود پیامهای راهنما و رشتههای مستند (docstrings) ماژول
pdb.gh-103015: افزودن پارامتر فقط-کلیدواژهی entrypoint به متد
sqlite3.Connection.load_extension()برای بازنویسی نقطهی ورود افزونهی SQLite. وصله توسط Erlend E. Aasland.gh-103000: بهبود کارایی
dataclasses.astuple()وdataclasses.asdict()در مواردی که محتوا از انواع رایج پایتون است.gh-102953: متدهای استخراج در
tarfileو تابعshutil.unpack_archive()دارای یک آرگومان filter جدید هستند که اجازه میدهد ویژگیهای tar که ممکن است تعجبآور یا خطرناک باشند، مانند ایجاد پروندهها در خارج از پوشهی مقصد، محدود شوند. برای جزئیات به فیلترهای استخراج مراجعه کنید.gh-97696: پیادهسازی یک کارخانهی وظیفهی مشتاق (eager) در asyncio. هنگامی که به عنوان کارخانهی وظیفه روی یک حلقهی رویداد استفاده میشود، اجرای مشتاق همروالها را انجام میدهد. همروالهایی که میتوانند به صورت همگام کامل شوند (به عنوان مثال بدون مسدود شدن برمیگردند یا استثنا بلند میکنند) بلافاصله به عنوان یک وظیفهی تمامشده برگردانده میشوند و وظیفه هرگز به حلقهی رویداد زمانبندی نمیشود. اگر همروال مسدود شود، وظیفهی (در انتظار) زمانبندی و برگردانده میشود.
gh-81079: افزودن آرگومان فقط-کلیدواژهی case_sensitive به متدهای
pathlib.Path.glob()وrglob().gh-101819: ایزوله کردن ماژول توسعهای
ioبا اعمال PEP 687. وصله توسط Kumar Aditya، Victor Stinner و Erlend E. Aasland.gh-91896: منسوخ کردن کلاس
collections.abc.ByteStringgh-101362: تسریع ساخت
pathlib.Pathبا حذف لنگر مسیر از فهرست داخلی اجزای مسیر.gh-102114: توابع موجود در ماژول
disکه یک رشتهی کد منبع را به عنوان آرگومان میپذیرند، اکنون در صورت داشتن خطای سینتکس یا تورفتگی در رشته، ردگیری کوتاهتری را چاپ میکنند.gh-62432: اجراکنندهی ماژول
unittestاکنون اگر هیچ آزمونی اجرا نشود، با کد وضعیت ۵ خارج خواهد شد. این که پیکربندی اشتباه اجراکنندهی آزمون نتواند هیچ آزمونی را پیدا کند رایج است، و این باید یک خطا باشد.gh-78079: رفع نرمالسازی نادرست ریشههای مسیر دستگاه UNC و ریشههای مسیر اشتراک ناقص UNC در
pathlib.PurePath. کتابخانهی pathlib دیگر یک اسلش پایانی به چنین مسیرهایی اضافه نمیکند.gh-85984: توابع
tty.cfmakeraw()وtty.cfmakecbreak()را به ماژولttyاضافه کرده و رفتارtty.setraw()وtty.setcbreak()را مدرنسازی میکند تا به طور پیشفرض از ماسکهای پرچم فصل ۱۱ استاندارد POSIX.1-2017 با نام «رابط ترمینال عمومی» (General Terminal Interface) استفاده کنند.gh-101688: پیادهسازی
types.get_original_bases()برای فراهم کردن دروننگری بیشتر برای انواع.gh-101640: کلاس
argparse.ArgumentParserاکنون خطاها را هنگام نوشتن پیامها، مانند زمانی کهsys.stderrبرابر باNoneاست، میگیرد. وصلهای از Oleg Iarygin.gh-83861: اصلاح مقدار بازگشتی متد datetime.astimezone هنگامی که روی یک نمونهی datetime ساده (naive) فراخوانی میشود که زمان محلی آن در یک شکاف گذار منطقهی زمانی قرار دارد. PEP 495 ایجاب میکند که نمونههایی با fold=1 در این حالت زمانهای زودتری نسبت به نمونههایی با fold=0 تولید کنند.
gh-89550: با افزودن بافرگذاری مناسبتر، زمان اجرای برخی از نوشتنهای پروندهی ماژول
gzipرا ۱۵٪ کاهش دهید.gh-95299: حذف ویل (wheel) بستهبندیشدهی setuptools از
ensurepip، و توقف نصب setuptools در محیطهای ایجادشده توسطvenv.gh-99353: احترام به پرچم
.debuglevelکلاسhttp.client.HTTPConnectionدر کلاسurllib.request.AbstractHTTPHandlerزمانی که پارامتر سازندهی آنdebuglevelتنظیم نشده است. و انجام همین کار برای*HTTPS*.gh-98040: حذف ماژول منسوخشدهی طولانیمدت
imp.gh-97850: منسوخ کردن توابع
pkgutil.find_loader()وpkgutil.get_loader()به نفعimportlib.util.find_spec().gh-94473: مسطح کردن آرگومانها در متد
tkinter.Canvas.coords(). این متد اکنون نه تنهاx1, y1, x2, y2, ...و[x1, y1, x2, y2, ...]، بلکه(x1, y1), (x2, y2), ...و[(x1, y1), (x2, y2), ...]را نیز میپذیرد.gh-98040: حذف APIهای منسوخشدهی بیشتری از importlib:
find_loader()،find_module()،importlib.abc.Finder،pkgutil.ImpImporter،pkgutil.ImpLoader.gh-96522: رفع بنبست احتمالی در pty.spawn()
gh-96534: پشتیبانی از divert(4) اضافه شده در FreeBSD 14.
gh-87474: رفع نشت احتمالی توصیفگر پرونده در
subprocess.Popen.gh-94906: پشتیبانی از چند مرحله در
math.nextafter(). وصله توسط Shantanu Jain و Matthias Gorgens.gh-51574: وادار کردن
tempfile.mkdtemp()به بازگرداندن مسیرهای مطلق زمانی که پارامتر dir آن نسبی است.gh-94518: تبدیل متد خصوصی
_posixsubprocess.fork_exec()برای استفاده از Argument Clinic.gh-92184: هنگام ایجاد پروندههای زیپ با استفاده از
zipfile، مقدارos.altsep(در صورتی کهNoneنباشد) همواره به عنوان جداکنندهی مسیر در نظر گرفته میشود، حتی اگر/نباشد. وصله توسط Carey Metcalfe.bpo-46797: اخطارهای منسوخ شدن اکنون برای
ast.Num،ast.Bytes،ast.Str،ast.NameConstantوast.Ellipsisصادر میشوند. این موارد از نسخهی ۳.۸ پایتون به عنوان منسوخ مستند شدهاند و در نسخهی ۳.۱۴ حذف خواهند شد.bpo-44844: امکان شناسایی و اجرای مرورگر مایکروسافت اج را برای
webbrowserفراهم میکند.bpo-45606: رفع باگ موجود در
pathlib.Path.glob()-- پیشتر این متد هنگامی که الگو یک تطابق دقیق بود، پیوند نمادین آویزان را پیدا نمیکرد، اما اگر الگو شامل وایلدکارد یا وایلدکارد بازگشتی (**) بود، آن را مییافت. با این تغییر، پیوند نمادین آویزان در هر دو حالت پیدا خواهد شد.bpo-23041: اضافه کردن
QUOTE_STRINGSوQUOTE_NOTNULLبه مجموعه سبکهای نقلقولگذاری ماژولcsv.bpo-24964: متد
http.client.HTTPConnection.get_proxy_response_headers()اضافه شد که دسترسی به سرآیندهای HTTP روی پاسخ سرور پراکسی به درخواستCONNECTرا فراهم میکند.bpo-17258: ماژول
multiprocessingاکنون به جای تنها HMAC-MD5، از الگوریتمهای قویتر HMAC برای احراز هویت اتصال بین فرایندها پشتیبانی میکند.bpo-39744: باعث میشود
asyncio.subprocess.Process.communicate()حتی هنگامی که باinput=Noneفراخوانی میشود، ورودی استاندارد (stdin) زیرفرایند را ببندد.bpo-22708: بهبودهای تونل متد CONNECT در http.client: استفاده از پروتکل HTTP 1.1؛ ارسال یک سرآیند Host: متناظر با CONNECT در صورت ارائه نشدن آن؛ تبدیل نامهای دامنهی IDN به Punycode. وصله توسط Michael Handler.
مستندات¶
gh-67056: مستندسازی این موضوع که تأثیر ثبت کردن یا لغو ثبت یک تابع پاکسازی
atexitاز درون یک تابع پاکسازیِ ثبتشده، نامشخص است.gh-103629: اشاره به روش جدید تایپگذاری
**kwargsباUnpackوTypedDictکه در PEP 692 معرفی شده است.gh-48241: شفافسازی مستندات مربوط به پارامتر url در urllib.request.urlopen و urllib.request.Request که نیاز دارد به درستی کدگذاری شود.
gh-86094: افزودن پشتیبانی از فیلد اضافی مسیر یونیکد در ZipFile. وصله توسط Yeojin Kim و Andrea Giudiceandrea
gh-99202: رفع نوع دادهی افزونه از مستندات برای کامپایل در حالت C++20
آزمونها¶
gh-104494: بهروزرسانی
test_pack_configure_inوtest_place_configure_inبرای تغییرات قالببندی پیام خطا در Tk 8.7.gh-104461: اجرای آزمون test_configure_screen فقط روی X11، از آنجا که متغیر محیطی
DISPLAYو گزینهی-screenبرای پنجرههای سطح بالا (toplevels) روی Tk برای Win32 یا Aqua مفید نیستند.gh-86275: آزمونهای مبتنی بر ویژگی به آزمونهای
zoneinfoبه همراه استابها برای رابطhypothesisاضافه شدند. (وصله توسط Paul Ganssle)gh-103329: آزمونهای رگرسیون برای رفتار
unittest.mock.PropertyMockاضافه شدند.gh-102795: رفع استفاده از پایش (poll) در test_epoll و بخش test_control_and_wait آن
gh-75729: رفع شکست خوردن آزمونهای
os.spawn*روی ویندوز هنگامی که پوشهی کاری یا مسیر مفسر شامل فاصله است.
ساخت¶
gh-101282: اگر کتابخانهی مشترک (shared library) ساخته شود، بهینهسازی BOLT اکنون روی آن اعمال میشود. تنظیمات ابزارگذاری و اجرای BOLT اکنون میتوانند از طریق متغیرهای پیکربندی
BOLT_INSTRUMENT_FLAGSوBOLT_APPLY_FLAGSتحت تأثیر قرار گیرند.gh-99017: مقدار
PYTHON_FOR_REGENاکنون به پایتون نسخه ۳.۱۰ یا جدیدتر نیاز دارد.gh-104490: تعریف اهداف
.PHONY/ ماژول make مجازی به شکلی سازگار و درست.gh-104106: افزودن جایگزین gcc برای mkfifoat/mknodat در macOS. وصله توسط Donghee Na.
gh-103532: ماکروی
TKINTER_PROTECT_LOADTKدیگر در ماژول_tkinterتعریف یا استفاده نمیشود. این ماژول قبلاً فقط هنگام ساخت با Tk نسخه ۸.۴.۱۳ و قدیمیتر تعریف میشد، اما نسخههای Tk قدیمیتر از ۸.۵.۱۲ از زمان gh-91152 پشتیبانی نمیشوند.gh-99069: گسترش راهحل جایگزین برای تعریف
static_assertدر صورت فقدان در سرآیندهای libc به تمام نسخههای ساخت clang و gcc. بهویژه، این مورد اشکال ساخت روی macOS نسخه ۱۰.۱۰ و پایینتر را برطرف میکند.gh-100220: مقدار پیشفرض متغیر
SHELLدر Makefile از/bin/shبه/bin/sh -eتغییر یافت تا اطمینان حاصل شود که دستورورودهای پیچیده پس از بروز خطا بهدرستی با شکست مواجه میشوند. پیش از این، دستورmake installممکن بود در نصب برخی پروندهها شکست بخورد و با این حال نتیجهی موفقیتآمیزی را برگرداند.gh-90656: افزودن سهتاییهای پلتفرم برای LoongArch ۶۴ بیتی:
loongarch64-linux-gnusf
loongarch64-linux-gnuf32
loongarch64-linux-gnu
وصله توسط Zhang Na.
Windows¶
gh-104623: بهروزرسانی نصبکنندهی ویندوز برای استفاده از SQLite نسخه ۳.۴۲.۰.
gh-82814: رفع احتمال بروز خطای
[Errno 13] Permission deniedهنگام استفاده ازshutil.copystat()در زیرسیستم ویندوز برای لینوکس (WSL) روی یک سامانه فایلبندی متصلشده (mounted)، با افزودنerrno.EACCESبه فهرست خطاهای نادیدهگرفتهشده در پیادهسازی داخلی.gh-103088: رفع مشکل پایانسطرهای نادرست در اسکریپت فعالسازی
activateمحیط مجازی برای Cygwin.gh-103088: رفع کار نکردن محیطهای مجازی (venvs) در باش روی ویندوز در درایوهای مختلف
gh-102997: بهروزرسانی نصبکنندهی ویندوز برای استفاده از SQLite نسخه ۳.۴۱.۲.
gh-88013: رفع اشکالی که در برخی موارد هنگام فراخوانی
ntpath.realpath()با یک پارامتر از نوع bytes، استثنایTypeErrorپرتاب میشد.
مکاواس¶
gh-99834: بهروزرسانی نصبکنندهی macOS به Tcl/Tk نسخه ۸.۶.۱۳.
gh-104623: بهروزرسانی نصبکنندهی macOS به SQLite نسخه ۳.۴۲.۰.
gh-103545: افزودن
os.PRIO_DARWIN_THREAD،os.PRIO_DARWIN_PROCESS،os.PRIO_DARWIN_BGوos.PRIO_DARWIN_NONUI. این موارد را میتوان باos.setpriorityاستفاده کرد تا فرایند با اولویت پایینتری اجرا شود و از هستههای بهرهوری در سیستمهای اپل سیلیکون (Apple Silicon) بهره گرفته شود.gh-104180: پشتیبانی از خواندن پیکربندی پراکسی SOCKS از پیکربندی سیستم macOS. وصله توسط Sam Schott.
gh-60436: بهروزرسانی جعبهمتن curses برای مدیریت اضافی کلید بکاسپیس (پسبر) با استفاده از فشردن کلید
curses.ascii.DEL.gh-102997: بهروزرسانی نصبکنندهی macOS به SQLite 3.41.2.
IDLE¶
Tools/Demos¶
رابط C API¶
gh-101291: افزودن API زبان C ناپایدار برای استخراج مقدار اعداد صحیح «فشرده»:
PyUnstable_Long_IsCompact()وPyUnstable_Long_CompactValue().gh-104109: توابع
Py_NewInterpreterFromConfig()وPyInterpreterConfigرا به API عمومی اضافه کردیم (اما نه به ABI پایدار؛ حداقل نه هنوز). تابع جدید ممکن است برای ایجاد یک مفسر جدید با ویژگیهای مختلف پیکربندیشده استفاده شود. این تابع برای پشتیبانی از PEP 684 (GIL بهازای هر مفسر) اضافه شد.gh-103968: تابع
PyType_FromSpec()و انواع مشتقشدهی آن اکنون اجازه میدهند کلاسهایی ایجاد شوند که فراکلاس آنها تابعtp_newرا بازنویسی میکند. مقدارtp_newنادیده گرفته میشود. این رفتار منسوخ شده است و در نسخهی 3.14 و بالاتر غیرمجاز خواهد شد. تابع جدیدPyType_FromMetaclass()از پیش آن را غیرمجاز کرده است.gh-103743: افزودن تابع
PyUnstable_Object_GC_NewWithExtraData()که میتوان از آن برای تخصیص حافظهی اضافی پس از یک شیء برای دادههایی که توسط پایتون مدیریت نمیشوند، استفاده کرد.gh-103295: توابع
PyUnstable_WritePerfMapEntry()،PyUnstable_PerfMapState_Init()وPyUnstable_PerfMapState_Fini()معرفی شدند. این توابع به ماژولهای توسعهای (بهویژه کامپایلرهای درجا (JIT)) اجازه میدهند تا به شیوهای ایمن برای نخها در پروندههای perf-map بنویسند. مستند پشتیبانی پایتون از پروفایلگیرهای سازگار با perf map نیز از این APIها برای نوشتن ورودیها در پروندهی perf-map استفاده میکند.gh-103509: افزودن API زبان C برای گسترش انواعی که چیدمان حافظهی نمونهی آنها کدر است: عضو
PyType_Spec.basicsizeاکنون میتواند صفر یا منفی باشد، ازPyObject_GetTypeData()میتوان برای دریافت دادههای مختص زیرکلاس استفاده کرد، و ازPy_TPFLAGS_ITEMS_AT_ENDمیتوان برای گسترش ایمن اشیاء با اندازه متغیر استفاده کرد. برای جزئیات به PEP 697 مراجعه کنید.gh-103091: افزودن یک تابع جدید در C-API برای تخصیص مشتاقانهی برچسب نسخه به یک PyTypeObject:
PyUnstable_Type_AssignVersionTag().gh-101408: تابع
PyObject_GC_Resizeباید اندازهی پیشهدر را در صورت نیاز محاسبه کند. وصله توسط Donghee Na.gh-98836: افزودن پشتیبانی از گزینههای قالببندی بیشتر (تراز چپ، مبنای هشت، اعداد مبنای شانزده با حروف بزرگ، رشتههای C از نوع
intmax_t،ptrdiff_t،wchar_t، عرض و دقت متغیر) درPyUnicode_FromFormat()وPyUnicode_FromFormatV().gh-96803: افزودن توابع ناپایدار C-API برای دریافت شیء کد، lasti و شمارهی سطر از ساختار داخلی
_PyInterpreterFrameدر API محدود. توابع عبارتند از:PyCodeObject * PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame)int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame)int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame)
پایتون ۳.۱۲.۰ آلفا ۷¶
تاریخ انتشار: ۱۴۰۲-۰۱-۱۵
هسته و توکارها (Core and Builtins)¶
gh-102192: تابع
_PyErr_ChainExceptionsبه نفع_PyErr_ChainExceptions1منسوخ شد.gh-89987: کاهش تعداد ورودیهای درونخطی
CACHEبرایBINARY_SUBSCR.gh-102859: دستورات
JUMP_IF_FALSE_OR_POPوJUMP_IF_TRUE_OR_POPحذف شدند.gh-101975: اصلاح مقدار
stacktopدر ورودیهای ردیابی برای جلوگیری از خرابی در هنگام زبالهروبی.gh-102778: افزودن
sys.last_excو منسوخ کردنsys.last_type،sys.last_valueوsys.last_tracebackکه اطلاعات مشابه را در قالب قدیمی خود نگه میدارند.gh-100982: جایگزینی تمام موارد
COMPARE_AND_BRANCHباCOMPARE_OP.gh-102701: رفع سرریز هنگام ایجاد دیکشنریهای بسیار بزرگ.
gh-102755: افزودن
PyErr_DisplayException()که فقط یک نمونه از استثنا را میگیرد، تا جایگزین تابع قدیمیPyErr_Display()شود که سهگانهی(typ, exc, tb)را دریافت میکند.gh-102594: افزودن یادداشت به استثنای ایجادشده در
PyErr_SetObjectهنگامی که نرمالسازی با شکست مواجه میشود.gh-90997: کاهش تعداد ورودیهای درونخطی
CACHEکه توسطLOAD_GLOBALاستفاده میشوند.
کتابخانه¶
gh-102491: بهبود زمان ایمپورت
platformبا حذف تجزیه نسخهی IronPython. تجزیهی نسخهی IronPython کاربردی نداشت (نگاه کنید به https://github.com/IronLanguages/ironpython3/issues/1667).
هسته و توکارها (Core and Builtins)¶
gh-101291: بازآرایی بیتها در فیلد اول (پس از سرآیند) در PyLongObject. * بیتهای ۰ و ۱: ۱ - علامت. یعنی ۰ برای اعداد مثبت، ۱ برای صفر و ۲ برای اعداد منفی. * بیت ۲ رزرو شده (احتمالاً برای بیت نامیرا) * بیتهای ۳ به بعد اندازهی بدون علامت.
این کار چند عملیات را کمی کارآمدتر میکند و در آینده امکان نمایش فشردهتر و سریعتر مکمل ۲ را برای بیشتر اعداد صحیح فراهم میکند.
gh-102397: رفع خطای حافظه (segfault) ناشی از شرایط رقابت در مدیریت سیگنال طی زبالهروبی. وصله توسط کومار آدیتیا (Kumar Aditya).
gh-102406: خطاهای کدگذاری/کدگشایی در
codecsاکنون اطلاعات زمینه (کدام عملیات و کدام کُدکها) را بهعنوان یادداشتهای PEP 678 دریافت میکنند، نه از طریق زنجیرهکردن یک نمونهی جدید از استثنا.gh-102281: رفع ارجاع احتمالی به اشارهگر تهی (nullptr dereference) و استفاده از حافظهی مقداردهینشده در fileutils. وصله توسط مکس باخمان (Max Bachmann).
gh-102300: استفادهی مجدد از عملوندها با شمارش ارجاع ۱ در تخصیصهای اعشاری BINARY_OP.
gh-102213: رفع افت کارایی هنگام دسترسی به ویژگیهای یک شیء در صورتی که
__getattr__تعریف شده باشد.gh-102255: بهبود پشتیبانی ساخت برای ایکسباکس. وصله توسط Max Bachmann.
ساخت¶
gh-102027: رفع مشکل تشخیص SSE2 و SSE3 در ماژول داخلی
_blake2. وصله توسط Max Bachmann.
هسته و توکارها (Core and Builtins)¶
gh-101865: منسوخ کردن
co_lnotabدر شیءهای کد، و برنامهریزی برای حذف آن در پایتون ۳.۱۴
کتابخانه¶
bpo-1635741: تطبیق
_pickleبا PEP 687. وصله توسط Mohamed Koubaa و Erlend Aasland.gh-103085: تابع خالص پایتونی
locale.getencoding()دیگر هشدار منسوخ شدن صادر نخواهد کرد.gh-103068: دیگر امکان ثبت کردن نقطهنظرهای شرطی در
PdbکهSyntaxErrorایجاد میکنند وجود ندارد. وصله توسط Tian Gao.gh-102549: استثناها را در ایجاد نوع دادهی عضو نادیده نگیرید.
gh-103056: اطمینان حاصل کنید که
_generate_next_value_نهایی یکstaticmethodاست.gh-103046: نمایش درست برچسب سطر فعلی در
disزمانی کهshow_cachesبرابر با False است وlastiبه یک ورودی CACHE اشاره دارد.gh-102433: بررسیهای
isinstance()رویپروتکلهای زمان اجرااکنون بهجایhasattr()ازinspect.getattr_static()برای جستجوی وجود ویژگیها استفاده میکنند. این یعنی توصیفگرها و متدهای__getattr__()دیگر بهطور غیرمنتظرهای در طول بررسیهایisinstance()روی پروتکلهای زمان اجرا ارزیابی نمیشوند. با وجود این، ممکن است به این معنا نیز باشد که برخی شیءها که پیشتر نمونهای از یک پروتکل زمان اجرا محسوب میشدند، دیگر در پایتون ۳.۱۲ به بعد نمونهای از آن پروتکل در نظر گرفته نشوند و برعکس. بعید است این تغییر روی بیشتر کاربران تأثیری بگذارد. وصله توسط Alex Waygood.gh-103023: دیگر امکان ثبت کردن عبارتها برای نمایش در
PdbکهSyntaxErrorایجاد میکنند وجود ندارد. وصله توسط Tian Gao.gh-102947: بهبود ردیابی زمانی که
dataclasses.fields()روی یک شیء غیر دیتاکلاس فراخوانی میشود. وصله توسط Alex Waygoodgh-102780: مدیر زمینهی
asyncio.Timeoutاکنون حتی هنگام انجام پاکسازی به دلیل لغو وظیفه نیز به طور قابل اعتمادی کار میکند. پیش از این در چنین مواردی ممکن بود بهجایTimeoutErrorیکCancelledErrorایجاد کند.gh-102871: حذف پشتیبانی از مرورگرهای منسوخ از
webbrowser. مرورگرهای حذفشده شامل Grail، Mosaic، Netscape، Galeon، Skipstone، Iceape، Firebird و نسخههای ۳۵ و پایینتر Firefox هستند.gh-102839: بهبود عملکرد مدیریت آرگومانهای
math.log()با حذف کلینیک آرگومان.gh-102828: افزودن آرگومان
onexcبهshutil.rmtree()، که شبیه بهonerrorاست اما بهجای یک تاپل exc_info، انتظار یک نمونهی استثنا را دارد. منسوخ کردنonerror.gh-88965: تایپینگ: رفع باگ مربوط به جایگزینی در کلاسهای سفارشی عام روی یک
ParamSpec. پیش از این، اگرParamSpecبا فهرستی از پارامترها جایگزین میشد که خود حاوی یکTypeVarبود،TypeVarموجود در فهرست پارامترها نمیتوانست متعاقباً جایگزین شود. این مشکل اکنون برطرف شده است.وصله توسط Nikita Sobolev.
gh-76846: رفع مشکلی که در آن متدهای
__new__()و__init__()زیرکلاسهایpathlib.PurePathوPathدر برخی شرایط فراخوانی نمیشدند.gh-78530: تابع
asyncio.wait()اکنون تولیدگرهای تولیدکنندهی وظایف را میپذیرد. وصله توسط Kumar Aditya.gh-102748: تابع
asyncio.iscoroutine()اکنون برای تولیدگرها مقدارFalseرا برمیگرداند؛ زیراasyncioاز همروالهای قدیمی مبتنی بر تولیدگر پشتیبانی نمیکند. این اصلاح توسط Kumar Aditya انجام شده است.gh-102670: تابعهای fmean()، correlation()، covariance() و linear_regression() با استفاده از تابع جدید math.sumprod() بهینهسازی شدند.
gh-102615: تایپینگ (Typing): بهبود نمایش
reprمستعارهای عام (generic aliases) برای کلاسهایی که روی یکParamSpecعام هستند. (برای نمایش فهرست پارامترها از براکت استفاده کنید.)gh-100112: متد
asyncio.Task.get_coro()اکنون هنگام بستهبندی یک شیء انتظارپذیر (awaitable)، همیشه یک همروال برمیگرداند. این اصلاح توسط Kumar Aditya انجام شده است.gh-102578: افزایش سرعت تنظیم یا حذف ویژگیهای تغییرپذیر روی زیرکلاسهای غیردیتاکلاسی دیتاکلاسهای فریزشده. با توجه به پیادهسازی
__setattr__و__delattr__برای دیتاکلاسهای فریزشده، این مورد پیشتر دارای مرتبهی زمانی O(n) بود. اکنون دارای مرتبهی زمانی O(1) است.gh-102519: افزودن تابعهای
os.listdrives()،os.listvolumes()وos.listmounts()در ویندوز برای شمارش درایوها، حجمها و نقاط اتصالgh-74468: نام ویژگی (attribute) شیء پروندهی
tarfileاستخراجشده، اکنون بهجای نام آرشیوی که در آن قرار دارد، نام پروندهی خودش را نگه میدارد. این اصلاح توسط Oleg Iarygin انجام شده است.gh-102378: متد کمکی خصوصی
inspect._signature_strip_non_python_syntaxدیگر کاراکتر/را از رشتهی ورودی حذف نخواهد کرد.gh-79940: افزودن
inspect.getasyncgenstate()وinspect.getasyncgenlocals(). این اصلاح توسط Thomas Krennwallner انجام شده است.gh-102103: افزودن آرگومان
moduleبه تابعdataclasses.make_dataclass()و قابلپیکلکردن (pickleable) کردن کلاسهای تولیدشده توسط آن.gh-102069: رفع مشکل تولید توصیفگر
__weakref__برای دیتاکلاسهای سفارشی.gh-102038: اگر از قبل پروندهی
pyvenv.cfgپیدا شده باشد، یکstatدر ماژولsiteنادیده گرفته میشود.gh-98886: رفع اشکالات هنگام تعریف دیتاکلاسهایی که دارای فیلدهایی با نامهای زیرخطدار خاصی هستند که به طور واضح توسط
dataclassesرزرو نشدهاند.gh-101673: رفع باگ ماژول
pdbکه در آن دستورllتغییرات متغیرهای محلی را پاک میکند.gh-101313: افزودن آرگومانهای -h و --help به رابط خط فرمان (CLI) webbrowser
gh-100372: متد
ssl.SSLContext.load_verify_locations()هنگام تجزیهی DER، دیگر موارد مربوط به دادههای اضافی در انتها را به اشتباه نمیپذیرد.gh-89727: رفع خطای RecursionError در pathlib.Path.walk روی درختهای پوشهی عمیق با بازنویسی آن به روش پیمایش (iteration) بهجای بازگشت (recursion).
gh-100131: افزودن آرگومان کلیدواژهای اختیاری
deleteبهtempfile.TemporaryDirectory.gh-48330: افزودن گزینهی خط فرمان
--durationsکه تعداد N مورد از کندترین آزمونها را نمایش میدهد. سازندههایunittest.TextTestRunnerوunittest.TextTestResultآرگومان کلیدواژهای جدید durations را میپذیرند. زیرکلاسها باید این موضوع را در نظر بگیرند یا**kwargsرا بپذیرند. افزودن متدunittest.TestResult.addDuration()و ویژگیunittest.TestResult.collectedDurations.(مشارکتکننده: Giampaolo Rodola)
gh-98169: رفع فروپاشی در
dataclasses.astuple()هنگامی کهcollections.defaultdictدر ویژگیها موجود است.gh-96931: رفع نتایج نادرست از
ssl.SSLSocket.shared_ciphers()gh-95495: هنگام ساخته شدن در برابر OpenSSL 3.0، ماژول
sslباگی داشت که در آن پایانهای پروندهی احرازهویتنشده (یعنی بدون close_notify) را به عنوان پایان پروندهی سطح TLS تمیز گزارش میکرد. این ماژول اکنون خطایSSLEOFErrorرا بالا میآورد که با رفتار نسخههای قبلی OpenSSL مطابقت دارد. ویژگیoptionsروی شیءSSLContextنیز دیگر بهطور پیشفرض شاملOP_IGNORE_UNEXPECTED_EOFنمیشود. این گزینه ممکن است برای تعیین رفتار قبلی OpenSSL 3.0 تنظیم شود.gh-94684: اکنون توابع
uuid.uuid3()وuuid.uuid5()از شیءهایbytesبه عنوان آرگومان name خود پشتیبانی میکنند.gh-94440: رفع باگی در
concurrent.futures.processکه در آن ممکن بود پس از ارسال و لغو سریع یک future، خاموشیProcessPoolExecutorمتوقف شود.gh-72346: افزودن هشدار منسوخسازی به پارامتر isdst در تابع
email.utils.localtime().bpo-36305: رفع نحوهی پردازش نامهای پروندهی ویندوز که شبیه به درایوها هستند، مانند
./a:bدرpathlib.
مستندات¶
gh-103112: افزودن رشته مستند به
http.client.HTTPResponse.read()برای رفع خروجیpydoc.
آزمونها¶
ساخت¶
Windows¶
gh-102690: بهروزرسانی
webbrowserبرای بازگشت به Microsoft Edge بهجای Internet Explorer.gh-99726: بهبود صحت نتایج stat برای ویندوز، و استفاده از API سریعتر در صورت در دسترس بودن
Tools/Demos¶
gh-102809: پروندهی
Misc/gdbinitحذف شد.
رابط C API¶
gh-102013: افزودن یک تابع C-API جدید (ناپایدار) برای پیمایش روی شیءهای قابل جمعآوری زباله با استفاده از یک فراخوانی بازگشتی:
PyUnstable_VisitObjects.
Python 3.12.0 alpha 6¶
Release date: 2023-03-07
امنیت¶
gh-99108: جایگزینی پیادهسازیهای توکار هشلیب MD5 و SHA1 با نسخههای تأییدشده از پروژهی HACL*.
gh-101727: نسخهی OpenSSL استفادهشده در نسخههای انتشار باینری (binary) ویندوز و مکاواس را برای رفع آسیبپذیریهای CVE 2023-0286، CVE 2022-4303 و CVE 2022-4303 بر اساس اعلامیهی امنیتی OpenSSL در تاریخ ۲۰۲۳-۰۲-۰۷ به 1.1.1t بهروزرسانی کرد.
gh-99108: پیادهسازیهای توکار
hashlibبرای SHA2-384 و SHA2-512 را که اصالتاً از LibTomCrypt بودند، با کد تأییدشدهی رسمی و مقاوم در برابر کانال جانبی از پروژهی HACL* جایگزین کرد. نسخههای توکار بهعنوان یک جایگزین (fallback) باقی میمانند که تنها زمانی استفاده میشوند که OpenSSL آنها را فراهم نکند.gh-101283: کلاس
subprocess.Popenاکنون هنگام راهاندازی باshell=Trueاز رویکرد امنتری برای یافتنcmd.exeاستفاده میکند. این وصله (patch) توسط Eryk Sun و بر اساس وصلهای از Oleg Iarygin تهیه شده است.
هسته و توکارها (Core and Builtins)¶
gh-102493: رگرسیون (regression) موجود در معناشناسی نرمالسازی در
PyErr_SetObjectرا برطرف کرد.gh-102416: قوانین حلقهی تولیدشدهی خودکار نادرست را در پارسر (parser) ذخیره (memoize) نکنید. این وصله (patch) توسط Pablo Galindo تهیه شده است.
gh-102356: باگی را رفع کرد که هنگام زدایش شیءهای (object) فیلتر با تو در تویی عمیق، باعث فروپاشی (crash) میشد. این وصله (patch) توسط Marta Gómez Macías تهیه شده است.
gh-102336: پاکسازی مدیریت خاصِ مختص ویندوز ۷. این وصله (patch) توسط Max Bachmann تهیه شده است.
gh-102250: خطای نقطهگسیختگی (segfault) که هنگام فراخوانی متد (method) خطاساز
__bool__توسط مفسر (interpreter) رخ میداد، برطرف شد.gh-102126: رفع بنبست (deadlock) در هنگام خاموشی در زمان پاکسازی وضعیتهای نخ (thread state) اگر هر نهاییساز (finalizer) سعی کند قفل سرِ رانتایم را بهدست آورد (acquire). این وصله (patch) توسط Kumar Aditya تهیه شده است.
gh-102027: زمانی که
getpidدر دسترس نیست، در ویندوز ازGetCurrentProcessIdاستفاده کنید. این وصله (patch) توسط Max Bachmann تهیه شده است.gh-102056: باگهای مدیریت خطا در کد چاپ استثنای (exception) مفسر (interpreter) را رفع کرد که میتوانستند در صورت بازگشتی بینهایت، باعث فروپاشی (crash) شوند.
gh-100982: محدودهی (scope) دستور
FOR_ITER_RANGEرا به محدودهی دستور اصلیFOR_ITERمحدود کنید تا ابزارگذاری (instrumentation) امکانپذیر شود.gh-101967: خطای احتمالی نقطهگسیختگی در تابع
positional_only_passed_as_keywordرا هنگام ایجاد فهرست (list) جدید برطرف کرد.gh-101952: خطای احتمالی نقطهگسیختگی در آپکد (opcode)
BUILD_SETرا هنگام ایجاد مجموعه (set) جدید برطرف کرد.gh-74895: تابع
socket.getaddrinfoدیگر برای مقادیر port از نوعintکه خارج از بازهی long زبان C هستند، خطایOverflowErrorرا پرتاب نمیکند. مقادیر خارج از بازه به API کتابخانهی C زیرینِ مبتنی بر رشته واگذار میشود تا گزارش شوند. در عوض ممکن است خطایsocket.gaierrorبا مقدارSAI_SERVICEرخ دهد، یا اصلاً هیچ خطایی گزارش نشود؛ زیرا همهی کتابخانههای C پلتفرمها خطا تولید نمیکنند.gh-101799: دستور
CALL_INTRINSIC_2را اضافه کرده و به جایPREP_RERAISE_STARاز آن استفاده کنید.gh-101857: تشخیص پشتیبانی از xattr را در سیستمهای لینوکس با گسترش دادن بررسی به linux و نه فقط glibc اصلاح کرد. این کار پشتیبانی از musl را رفع و رجوع میکند.
gh-84783: شیء (object) اسلایس (slice) را هشپذیر (hashable) کنید. این وصله (patch) توسط Will Bradshaw و Furkan Onder تهیه شده است.
gh-87849: دستور
SENDرا تغییر دهید تا گیرنده را روی پشته (stack) نگه دارد. این کار به فرم تخصصیشدهیSENDاجازه میدهد تا زنجیرهی فراخوانیهای C را رد کرده و مستقیماً بهRESUMEدر تولیدگر (generator) یا همروال (coroutine) بپرد.gh-101765: رفع SystemError / خطای قطعهبندی (segmentation fault) در iter شیء
__reduce__هنگامی که دسترسی داخلی به کلیدهایbuiltins.__dict__شیء iter را تغییر میدهد.gh-101430: بهروزرسانی
tracemallocبرای مدیریت درست اندازهی اولیه شیء. وصله توسط Donghee Na.gh-101696: نامعتبرسازی برچسب نسخهی نوع در
_PyStaticType_Deallocبرای انواع ایستا، جهت جلوگیری از باگی که در آن برخورد کاذب نهانگاه میتواند باعث فروپاشی مفسر شود. وصله توسط Kumar Aditya.gh-101632: دستور جدید
RETURN_CONSTرا اضافه میکند.gh-100719: حذف فیلد gi_code از شیءهای تولیدگر (و همچنین همروال و تولیدگر ناهمگام) به دلیل اضافهبودن آن. قاب در حال حاضر شامل یک ارجاع به شیء کد است.
gh-98627: هنگامی که مفسر برای بررسی پیکربندی شده باشد (و فقط در این صورت)، ایمپورت کردن یک ماژول توسعهای در صورتی که آن ماژول از چند مفسر پشتیبانی نکند (یعنی راهاندازی چندمرحلهای PEP 489 را پیادهسازی نکند)، با خطا مواجه خواهد شد. این موضوع شامل مفسر اصلی یا زیرمفسرهای ایجادشده با
Py_NewInterpreter()نمیشود.
کتابخانه¶
gh-102302: بهینهسازی بسیار کوچک در هش کردن
inspect.Parameter، که زمان لازم برای هش کردن یک نمونه را حدود ۴۰٪ کاهش میدهد.gh-101979: رفع باگی که در آن پرانتزهای موجود در آرگومان
metavarتابعargparse.ArgumentParser.add_argument()حذف میشدند. وصله توسط Yeojin Kim.gh-91038: تابع
platform.platform()اکنون دارای آرگومانهای پیشفرض بولی است.gh-81652: اضافه کردن ثابتهای
mmap.MAP_ALIGNED_SUPERبرای FreeBSD وmmap.MAP_CONCEALبرای OpenBSD بهmmap. وصله توسط Yeojin Kim.gh-102179: رفع پیام خطای
os.dup2()برای شناسههای فایل (fd) منفی.gh-101961: در حالت دودویی، تابع
fileinput.hookcompressed()مقدارencodingرا حتی اگر مقدارNoneباشد، تنظیم نمیکند. وصله توسط Gihwan Kim.gh-101936: اگر استثنای
HTTPErrorبدون پارامترfpمشخصشدهای مقداردهی اولیه شود، مقدار پیشفرضfpبهio.BytesIOتبدیل میشود. وصله توسط Long Vo.gh-101566: در ماژول zipfile، همگامسازی Path با zipp 3.14، شامل رفع مشکل مربوط به extractall روی فایل zip زیرین پس از پوشش داده شدن در
Path.gh-97930: اعمال تغییرات از importlib_resources 5.12، شامل رفع مشکل
MultiplexedPathبرای پشتیبانی از پوشهها در چند فضای نام (python/importlib_resources#265).gh-101997: ارتقای چرخ (wheel) pip بستهبندیشده همراه با ensurepip (pip 23.0.1)
gh-99108: ماژولهای توسعهی توکار برای الگوریتمهای SHA2 در
hashlib، که وقتی OpenBSD آنها را فراهم نمیکند استفاده میشوند، اکنون بهجای ماژولهای جداگانهی_sha256و_sha512، در یک ماژول داخلی واحد به نام_sha2قرار دارند.gh-101892: پیمایشگرهای فراخوانیپذیر زمانی که شیء فراخوانیپذیر پیمایشگر را به پایان میبرد اما فراموش میکند یک مقدار نشانگر برگرداند یا استثنای
StopIterationرا بالا بیاورد، دیگر استثنایSystemErrorرا صادر نمیکنند.gh-87634: حذف رفتار قفلگذاری از
functools.cached_property().gh-97786: رفع رفتار نامشخص احتمالی در موارد خاص تبدیلهای اعداد اعشاری به زمان.
gh-101517: رفع باگی که در آن
bdbسطر کد منبع را با استفاده ازlinecacheو با مقدارlineno=Noneجستجو میکند، که باعث میشود با یک استثنای مدیریتنشده متوقف شود.gh-101773: بهینهسازی
fractions.Fractionبرای اجزای کوچک. آرگومان خصوصی_normalizeدر سازندهیfractions.Fractionحذف شده است.gh-101693: در
sqlite3.Cursor.execute()، هنگامی که جاینگهدارهای نامدار به همراه پارامترهایی که به شکل یک دنباله (بهجای یکdict) ارسال شدهاند استفاده شوند، اکنون یکDeprecationWarningصادر میشود. از پایتون نسخهی 3.14 به بعد، استفاده از جاینگهدارهای نامدار با پارامترهایی که به شکل یک دنباله ارسال شدهاند، یکProgrammingErrorایجاد خواهد کرد. وصله توسط Erlend E. Aasland.gh-101446: تغییر repr در
collections.OrderedDictبرای استفاده از قالببندی دیکشنری معمولی بهجای جفتهای کلید و مقدار.gh-101362: افزایش سرعت ساخت
pathlib.PurePathبا مدیریت یکنواختتر آرگومانها. هنگامی که یک آرگومانpathlib.Pathارائه میشود، بهجای اتصال بخشهای آن باos.path.join()، از نمایش رشتهای آن استفاده میکنیم.gh-101362: افزایش سرعت ساخت
pathlib.PurePathبا فراخوانیos.path.join()تنها زمانی که دو یا چند آرگومان داده شده باشد.gh-101362: افزایش سرعت ساخت
pathlib.Pathبا اجرای بررسی سازگاری طعم مسیر فقط زمانی که ماژول pathlib وارد (import) میشود.gh-85984: بازنویسی پیادهسازی
pty.fork()برای استفاده ازos.login_tty().اکنون یک
DeprecationWarningتوسطpty.master_open()وpty.slave_open()ایجاد میشود. آنها مستندنشده بودند و مدتها پیش در رشتهمستند (docstring) به نفعpty.openpty()منسوخ شده بودند.gh-101561: افزودن یک دکوراتور جدید
typing.override(). برای جزئیات به PEP 698 مراجعه کنید. وصله توسط Steven Troxler.gh-63301: تنظیم کد خروج هنگامی که رابط خط فرمان (CLI) ماژول
tabnannyبا خطا خارج میشود.gh-101360: رفع تطبیق لنگر در
pathlib.PureWindowsPath.match(). لنگرهای مسیر و الگو اکنون درست مانند سایر بخشهای مسیر باfnmatchمطابقت داده میشوند. این امر اجازه میدهد تا الگوهایی مانند"*:/Users/*"مطابقت داده شوند.gh-101277: حذف وضعیت سراسری از ماژول
itertools(PEP 687). وصلهها توسط Erlend E. Aasland.gh-100809: رفع مدیریت مسیرهای نسبی درایو (مانند 'C:' و 'C:foo') در
pathlib.Path.absolute(). این متد اکنون از API سیستمعامل برای بازیابی پوشهی کاری فعلی صحیح برای درایو استفاده میکند.gh-99138: اعمال PEP 687 روی
zoneinfo. وصله توسط Erlend E. Aasland.gh-96764: تابع
asyncio.wait_for()اکنون ازasyncio.timeout()به عنوان پیادهسازی زیربنایی خود استفاده میکند. وصله توسط Kumar Aditya.gh-88233: حفظ صحیح فیلدهای «extra» در
zipfileصرفنظر از ترتیب آنها نسبت به یک فیلد «extra» در zip64.bpo-23224: رفع خطاهای حافظه (segfault) هنگام ایجاد شیءهای
lzma.LZMADecompressorوbz2.BZ2Decompressorبدون فراخوانی__init__()، و رفع نشت قفلها و بافرهای داخلی هنگام فراخوانی چندبارهی متدهای__init__()از شیءهایlzma.LZMADecompressor،lzma.LZMACompressor،bz2.BZ2Compressorوbz2.BZ2Decompressor.
مستندات¶
gh-85417: بهروزرسانی مستندات
cmathبرای شفافسازی رفتار برشهای شاخه (branch cuts).gh-97725: رفع توضیحات
asyncio.Task.print_stack()برایfile=None. وصله توسط Oleg Iarygin.
آزمونها¶
gh-102019: رفع بنبست هنگام خاموش شدن اگر
test_current_{exception,frames}با شکست مواجه شود. وصله توسط Jacob Bower.gh-85984: استفاده از توابع جدید «winsize» از termios در آزمونهای pty.
gh-89792: پوشهی
test_toolsاکنون با نادیده گرفتن متادیتای گیت و سایر مصنوعات، هنگام آزمونfreezeدادههای منبع کمتری (تا ۱۰ برابر کمتر) را در یک پوشهی موقت کپی میکند. همچنین موازیسازی ساخت پایتون خود را به جای کدگذاری سختافزاری به صورت ۸ هسته، بر اساس os.cpu_count محدود میکند.
ساخت¶
gh-99942: در اندروید، در یک ساخت ایستا، برنامهی python-config در حالت تعبیه کردن دیگر به اشتباه کتابخانهای را برای پیوند دادن گزارش نمیکند.
gh-99942: در اندروید، python.pc اکنون درست مانند python-config.sh، کتابخانهی مورد نظر برای پیوند دادن را به درستی گزارش میکند.
gh-100221: رفع مشکل ایجاد پوشههای نصب در
make sharedinstallاگر از پیش خارج ازDESTDIRوجود داشته باشند.gh-96821: ماژولهای توسعهای C که نیازمند سرریز مشخص عدد صحیح علامتدار هستند را به صراحت علامتگذاری کنید و یک گزینهی پیکربندی
--with-strict-overflowاضافه کنید. وصله توسط ماتیاس گورگنس (Matthias Görgens) و شانتانو جاین (Shantanu Jain).
Windows¶
gh-102344: پیادهسازی
winreg.QueryValueبا استفاده ازQueryValueExوwinreg.SetValueبا استفاده ازSetValueEx. وصله توسط مکس باخمان (Max Bachmann).gh-101881: مدیریت درست عملیات خواندن و نوشتن روی پایپهای غیرمسدودکننده در ویندوز.
gh-101881: افزودن پشتیبانی از توابع os.get_blocking() و os.set_blocking() روی ویندوز.
gh-101849: تضمین میکند که برنامهی نصبکننده، نصبهای موجود راهانداز
py.exeرا به درستی ارتقا خواهد داد.gh-101763: بهروزرسانی نسخهی libffi بستهبندیشده همراه با نصبهای ویندوز به ۳.۴.۴.
gh-101759: بهروزرسانی برنامهی نصبکننده در ویندوز به SQLite ۳.۴۰.۱.
gh-101614: مدیریت درست افزونههای ساختهشده در برابر باینریهای دیباگ که به
python3_d.dllارجاع میدهند.gh-101196: توابع
os.path.isdir،os.path.isfile،os.path.islinkوos.path.existsاکنون با فراخوانیهای کمتر API مربوط به Win32، بین ۱۳٪ تا ۲۸٪ در ویندوز سریعتر شدهاند.
مکاواس¶
gh-101759: بهروزرسانی برنامهی نصبکننده در macOS به SQLite ۳.۴۰.۱.
رابط C API¶
gh-101907: حذف استفاده از افزونهی غیر استاندارد C++ در پروندههای سرآیند عمومی.
gh-99293: مستندسازی اینکه Py_TPFLAGS_VALID_VERSION_TAG یک ویژگی داخلی است، نباید استفاده شود و حذف خواهد شد.
gh-101578: افزودن
PyErr_GetRaisedException()وPyErr_SetRaisedException()برای ذخیره و بازیابی استثنای فعلی. این توابع به جای سه آرگومانِPyErr_Fetch()وPyErr_Restore()که اکنون منسوخ شدهاند، یک شیء استثنای واحد را بازمیگردانند و میپذیرند. این روش کمتر مستعد خطا و کمی کارآمدتر است.افزودن
PyException_GetArgs()وPyException_SetArgs()به عنوان توابع کمکی برای بازیابی و اصلاحargsارسالشده به سازندهی استثنا.gh-91744: معرفی لایه ناپایدار C API (Unstable C API tier)، که APIهایی را نشانهگذاری میکند که اجازه دارند در نسخههای جزئی بدون دورهی منسوخسازی تغییر کنند. برای جزئیات به PEP 689 مراجعه کنید.
Python 3.12.0 alpha 5¶
تاریخ انتشار: ۲۰۲۳-۰۲-۰۷
امنیت¶
gh-99108: پیادهسازیهای توکار
hashlibبرای SHA2-224 و SHA2-256 که در اصل متعلق به LibTomCrypt بودند، با کدهای تأییدشدهی رسمی و مقاوم در برابر حملات کانال جانبی از پروژهی HACL* جایگزین شدند. پیادهسازیهای توکار به عنوان یک جایگزین باقی میمانند که تنها زمانی استفاده میشوند که OpenSSL آنها را فراهم نکند.
هسته و توکارها (Core and Builtins)¶
gh-92173: آرگومانهای
defsوkwdefsبرایPyEval_EvalCodeEx()و یک نشت ارجاع در آن تابع اصلاح شد.gh-59956: رابط برنامهنویسی کاربردی GILState اکنون تا حدی با زیرمفسرها سازگار است. پیش از این، رویکردهای
PyThreadState_GET()وPyGILState_GetThisThreadState()هماهنگی خود را از دست میدادند که منجر به رفتار تناقضآمیز و فروپاشی میشد.gh-101400: رفع شماره خطای اشتباه در پیام استثنا هنگام استفاده از
continueیاbreakکه در داخل یک حلقه نیستند. تکه کد (Patch) از Donghee Na.gh-101372: اصلاح
is_normalized()برای مدیریت صحیح موارد UCD 3.2.0. تکه کد (Patch) از Donghee Na.gh-101266: رفع گزارشدهی
sys.getsizeof()برای زیرکلاسهایint.gh-101291: بازسازی ساختار
PyLongObjectبه یک سرآیند شیء معمولی پایتون و یک ساختارPyLongValue.gh-101046: رفع یک نشت حافظه احتمالی در پارسر هنگام بالا آوردن
MemoryError. تکه کد (Patch) از Pablo Galindogh-101037: رفع مشکل احتمالی تخصیص کمتر از حد حافظه برای نمونههای زیرکلاسهای
intبا مقدار صفر.gh-100762: ثبت عمق بلوک استثنای (مجازی) در oparg مربوط به
YIELD_VALUE. از این مورد برای جلوگیری از اجرای پرهزینهیthrow()هنگام بستن تولیدگرها (و همروالها) که به سادگی قابل بسته شدن هستند، استفاده کنید.gh-100982: یک دستورالعمل جدید
COMPARE_AND_BRANCHاضافه میکند. این دستورالعمل هنگام انجام یک مقایسه که بلافاصله پس از آن یک انشعاب قرار دارد کمی کارآمدتر است، و هدف طراحی PEP 659 را احیا میکند که در آن تخصصیسازیها محلی به یک دستورالعمل واحد هستند.gh-100942: رفع خطای قطعی حافظه (segfault) در property.getter/setter/deleter که زمانی رخ میداد که یک زیرکلاس ویژگی، متد
__new__را بازنویسی میکرد تا یک نمونهی غیرویژگی را برگرداند.gh-100923: حذف ورودی نهانگاه
maskبرای دستورالعملCOMPARE_OPو تعبیه کردن ماسک در درون oparg.gh-100892: رفع حالت رقابتی (race condition) هنگام پیمایش روی وضعیتهای نخ در پاکسازی
threading.local. تکه کد (Patch) از Kumar Aditya.gh-91351: رفع حالتی که در آن ایمپورتهای بازگشتی (re-entrant) میتوانستند کد تشخیص بنبست ایمپورت را مخدوش کرده و باعث شوند که یک استثنای
KeyErrorاز درونimportlib/_bootstrapبالا بیدازد. علاوه بر موارد ساده، این اتفاق میتواند زمانی رخ دهد که زبالهروبی منجر به انتشار یک هشدار شود - همانطور که هنگام جمعآوری یک سوکت یا پروندهی باز اتفاق میافتد)gh-100726: بهینهسازی ساخت شیء
rangeبرای اعداد صحیح با اندازهی متوسط.gh-100712: گزینهای برای ساخت cpython با غیرفعال بودن تخصصیسازی اضافه شد، که با تنظیم
ENABLE_SPECIALIZATION=Falseدرopcodeو به دنبال آن اجرایmake regen-allانجام میشود.
کتابخانه¶
bpo-32780: فضای خالی بین فیلدها (Inter-field padding) اکنون در رشتههای قالب PEP3118 که از شیءهای
ctypes.Structureبهدست میآیند، درج میشود و بازتابدهندهی بازنمایی واقعی آنها در حافظه است.gh-101541: [Enum] - رفع ایجاد پرچم ساختگی (psuedo-flag)
gh-101570: ارتقای pip و wheel بستهبندیشده همراه با ensurepip (نسخهی pip 23.0)
gh-101323: رفع باگی که در آن خطاهای رخداده هنگام عملیات فشردهزدایی توسط zlib._ZlibDecompressor پرتاب نمیشدند.
gh-101317: افزودن پارامتر ssl_shutdown_timeout برای
asyncio.StreamWriter.start_tls().gh-101326: رفع رگرسیون هنگام ارسال
Noneبه عنوان آرگومان دوم یا سوم بهFutureIter.throw.gh-92123: انطباق ماژول توسعهای
_elementtreeبا مقداردهی اولیه چندمرحلهای (PEP 489). وصلهها توسط Erlend E. Aasland.gh-100795: جلوگیری از فراخوانی احتمالی غیرمنتظرهی
freeaddrinfo(آزادسازی مضاعف) درsocketهنگامی که پیادهسازیgetaddrinfo()در یک libc مقادیر زاید را در یک اشارهگر خروجی هنگام بازگرداندن خطا باقی میگذارد. وصلهی اصلی از Sergey G. Brester.gh-101143: حذف ارجاعات استفادهنشده به
TimerHandleدرasyncio.base_events.BaseEventLoop._add_callback.gh-101144: امکان پذیرش
encodingبه عنوان آرگومان جایگاهی درzipfile.Path.open()وzipfile.Path.read_text(). این رفتار در پایتون ۳.۹ و نسخههای قبلی وجود داشت. نسخهی ۳.۱۰ رگرسیونی را معرفی کرد که در آن ارائهی آن به عنوان آرگومان جایگاهی منجر به بروز یکTypeErrorمیشد.gh-94518: متغیرهای مرتبط با گروه در ماژول
_posixsubprocessتغییر نام یافتند تا تأکید شود وابستگی گروه تکمیلی به یک فورک اضافه میشود، نه اینکه جایگزین گروههای ارثبریشده شود. وصله توسط Oleg Iarygin.gh-101015: رفع
typing.get_type_hints()روی'*tuple[...]'و*tuple[...]. این تابع نباید بخشUnpackرا حذف کند.gh-101000: افزودن
os.path.splitroot()، که یک مسیر را به یک تاپل ۳ آیتمی(drive, root, tail)تقسیم میکند. این تابع جدید توسطpathlibبرای بهبود کارایی ساخت مسیر تا یک سوم استفاده میشود.gh-100573: رفع باگ
asyncioدر ویندوز با پایپهای نامگذاریشده، به طوری که کلاینتی کهos.stat()را روی پایپ اجرا میکند باعث خطایی در سرور میشود که سرویسدهی به درخواستهای آتی را غیرفعال میکند.gh-39615: تابع
warnings.warn()اکنون این قابلیت را دارد که فریمهای پشته را بر اساس پیشوند نام فایل کد به جای فقط یکstacklevelعددی از طریق آرگومان کلیدواژهای جدیدskip_file_prefixesرد کند.gh-100750: ارسال kwarg مربوط به کدگذاری به زیرفرآیند در platform
gh-100160: صدور هشدار منسوخسازی در
asyncio.DefaultEventLoopPolicy.get_event_loop()اگر هیچ حلقه رویدادی تنظیم نشده باشد و تصمیم به ایجاد یکی بگیرد.gh-96290: رفع مدیریت درایوهای UNC جزئی و نامعتبر در
ntpath.splitdrive()، و درntpath.normpath()روی سیستمهای غیرویندوزی. مسیرهایی مانند '\server' و '\' اکنون توسطsplitdrive()به گونهای در نظر گرفته میشوند که تنها حاوی یک درایو هستند و در نتیجه توسطnormpath()روی سیستمهای غیرویندوزی تغییر نمیکنند. رفتارnormpath()در سیستمهای ویندوزی بدون تغییر باقی میماند، زیرا از APIهای بومی سیستمعامل استفاده میشود. وصله توسط Eryk Sun، با مشارکت Barney Gale.gh-99952: رفع مسئلهی شمارش کمتر از حد ارجاعات در
ctypes.Structureبا نتایجfrom_param()که بزرگتر از یک اشارهگر C هستند.gh-67790: افزودن پشتیبانی از قالببندی به سبک عدد اعشاری برای نمونههای
fractions.Fraction.gh-86682: با استفاده از تابع تازه اضافه شدهی (داخلی)
sys._getframemodulename()، اطمینان حاصل کنید که مجموعههای ایجاد شده در رانتایم دارای نام ماژول صحیحی هستند.gh-88597: ماژول
uuidاکنون دارای یک رابط خط فرمان است.python -m uuid -hرا امتحان کنید.gh-60580: تعریف
ctypes.wintypes.BYTEبرای تطابق با Windows SDK ازc_byteبهc_ubyteتغییر یافت. وصلهای از Anatoly Techtonik و Oleg Iarygin.gh-94518: ماژول
_posixsubprocessاکنون همهی متغیرهای UID و GID را به جای یک پرچم جداگانه، با استفاده از یک مقدار رزرو شدهی-1مقداردهی اولیه میکند. وصلهای از Oleg Iarygin.bpo-38941: ماژول
xml.etree.ElementTreeاکنون هنگام آزمایش مقدار درستی یکxml.etree.ElementTree.ElementاخطارDeprecationWarningصادر میکند. پیش از این، پیادهسازی پایتونFutureWarningو پیادهسازی C هیچچیزی صادر نمیکردند.bpo-40077: تبدیل انواع
elementtreeبه انواع هیپ. وصلهای از Erlend E. Aasland.bpo-29847: رفع باگی که در آن
pathlib.Pathآرگومانهای کلیدواژهای را میپذیرید و نادیده میگرفت. وصله ارائه شده توسط Yurii Karabas.gh-77772: کلاسهای
ctypes.CDLL،ctypes.OleDLL،ctypes.WinDLLوctypes.PyDLLاکنون اشیای شبهمسیر را به عنوان آرگومانnameخود میپذیرند. وصلهای از Robert Hoelzl.
مستندات¶
gh-88324: بازنویسی توضیحات
subprocessبرای تأکید بر رفتار پیشفرض آرگومانهای stdin، stdout و stderr. حذف عبارت نادرست دربارهی ارثبری دستهی پروندهی فرزند.
آزمونها¶
gh-101334: اسکریپت
test_tarfileبهروزرسانی شده است تا هنگام اجرا با یک UID بالا با موفقیت عبور کند.
ساخت¶
gh-101282: بهروزرسانی پیکربندی BOLT برای استفاده نکردن از کاربرد منسوخ شدهی
--split functions. وصلهای از Donghee Na.gh-101522: امکان لغو نسخهها و مسیرهای وابستگیهای ویندوز با استفاده از ویژگیهای MSBuild.
gh-77532: اصلاحات جزئی برای امکان ساخت با
PlatformToolset=ClangCLروی ویندوز.gh-101152: مطابق با PEP 699، فیلد
ma_version_tagدرPyDictObjectبرای ماژولهای توسعهای منسوخ شده است. دسترسی به این فیلد در زمان کامپایل یک اخطار کامپایلر تولید میکند. این فیلد در پایتون ۳.۱۴ حذف خواهد شد.gh-100340: اجازه دادن به -Wno-int-conversion برای wasm-sdk 17 به بعد، و در نتیجه فعال کردن ساختهای WASI در برابر آخرین sdk.
gh-101060: افزودن مشروط
-fno-reorder-blocks-and-partitionدر تنظیمات (configure). این کار به طور مؤثری--enable-boltرا هنگام استفاده از Clang اصلاح میکند، زیرا به نظر میرسد این یک پرچم مخصوص GCC است.gh-98705: تابع
__bool__در پروندههای سرآیند سیستم AIX تعریف شده است که ساخت را در AIX دچار مشکل میکند، بنابراین آن را تعریفنشده (undefine) کنید.gh-98636: رفع یک رگرسیون در تشخیص کتابخانهی
gdbm_compatبرای ساخت ماژول_gdbm.gh-96305: ماژول
_aix_supportاکنون به جای استفاده از_bootsubprocessکه دیگر وجود ندارد، از یک کد ساده برای دریافت جزئیات سکو (platform) در طول راهاندازی (bootstrap) استفاده میکند.
Windows¶
gh-101543: اطمینان حاصل کنید که مسیر نصب در رجیستری تنها زمانی استفاده میشود که کتابخانهی استاندارد در هیچ مسیر دیگری پیدا نشده باشد.
gh-101467: برنامهی راهانداز
py.exeاکنون هنگام نصب بودن تنها یک رانتایم، فیلتر کردن را به درستی انجام میدهد. همچنین تطبیقهای پیشوند را روی تگها به درستی مدیریت میکند تا-3.1با3.11مطابقت نداشته باشد، اما همچنان با3.1-32مطابقت پیدا کند.gh-99834: بهروزرسانی نسخهی بستهبندیشدهی Tcl/Tk به نسخهی 8.6.13.0
gh-101135: بازیابی قابلیت راهاندازی نسخههای قدیمیتر ۳۲بیتی از طریق برنامهی راهانداز
py.exeهنگامی که هر دو نسخهی ۳۲بیتی و ۶۴بیتی از یک نسخه موجود باشند.gh-82052: رفع مشکلی که در آن نوشتن بیش از ۳۲ کیلوبایت خروجی یونیکد روی صفحهی کنسول به صورت یکجا میتوانست بههمریختگی نویسه (mojibake) ایجاد کند.
gh-100320: اطمینان حاصل میکند که هنگام راهاندازی از نسخهی متفاوتی از پایتون که برای ارائهی ماژولها و کتابخانهی استاندارد خود به یک نصب موجود اتکا دارد، از کلید رجیستری
PythonPathمربوط به آن نصب استفاده شود.gh-100247: بازیابی پشتیبانی از برنامهی راهانداز
py.exeبرای یافتن دستورات خط مفسر (shebang) در پروندهی پیکربندیاش با استفاده از نام کامل دستور.
پایتون ۳.۱۲.۰ آلفا ۴¶
تاریخ انتشار: ۲۰۲۳-۰۱-۱۰
هسته و توکارها (Core and Builtins)¶
gh-100776: رفع مقدار پیشفرض گمراهکننده در
__text_signature__تابعinput().gh-99005: حذف
UNARY_POSITIVE،ASYNC_GEN_WRAPوLIST_TO_TUPLEو جایگزینی آنها با توابع درونی (intrinsics).gh-99005: افزودن دستور جدید
CALL_INTRINSIC_1. حذفIMPORT_STAR،PRINT_EXPRوSTOPITERATION_ERRORو جایگزینی آنها با دستورCALL_INTRINSIC_1.gh-100288: حذف دستور تخصصی LOAD_ATTR_METHOD_WITH_DICT. آمارها نشان میدهند که این دستور کاربردی ندارد.
gh-100720: تابع
_PyFrame_NumSlotsForCodeObjectاضافه شد که تعداد جایگاههای مورد نیاز در یک قاب برای یک شیء کد دادهشده را برمیگرداند.gh-100719: فیلد co_nplaincellvars از شیء کد حذف شد، زیرا اضافه است.
gh-100637: اصلاح محاسبهی
int.__sizeof__()برای شامل شدن آرایهی ۱-عنصریob_digitبرای0وFalse.gh-100649: بهروزرسانی فیلد native_thread_id از PyThreadState پس از انشعاب (fork).
gh-100126: رفع مشکلی که در آن قابهای «ناقص» میتوانستند برای مدتی کوتاه در زمان پاکسازی سایر قابها برای کد C قابل مشاهده باشند که احتمالاً به خرابی دادهها یا فروپاشی شدید مفسر هنگام اجرای نهاییسازها (finalizers) منجر میشد.
gh-87447: رفع
SyntaxErrorدر بررسی بازتعریف درک مجموعهها (comprehensions) با نامهایی که در واقع بازتعریف نشدهاند.اکنون مقداردهی مجدد به
bدر عبارت[(b := 1) for a, b.prop in some_iter]مجاز است. طبق PEP 572، مقداردهی مجدد بهaهمچنان غیرمجاز است.gh-100268: افزودن متد
int.is_integer()برای بهبود سازگاری نوع داکی بینintوfloat.gh-100425: بهبود دقت تابع
sum()با استفاده از جمع جبری جبرانی (compensated summation).
کتابخانه¶
gh-100374: رفع نتیجهی نادرست و تاخیر در تابع
socket.getfqdn(). وصله توسط Dominic Socular.
هسته و توکارها (Core and Builtins)¶
gh-100357: تبدیل توابع
vars،dir،next،getattrوiterبه آرگومان کلینیک (argument clinic).gh-100117: بهبود خروجی متد
codeobject.co_lines()با تولید تنها یک درایه برای هر بازهی سطری.gh-90043: مدیریت مقادیر NaN هنگام تخصصیسازی
COMPARE_OPبرای مقادیرfloat.gh-100222: بازتعریف تعریف نوع (typedef)
_Py_CODEUNITبه صورت یک union برای توصیف چیدمان آن به کامپایلر C، جهت جلوگیری از type punning و بهبود خوانایی.gh-99955: توابع داخلی کامپایلر (در compile.c) اکنون بهطور سازگار در صورت بروز خطا مقدار 1- و در صورت موفقیت مقدار 0 را برمیگردانند.
gh-100188: دستورات
BINARY_SUBSCR_LIST_INTوBINARY_SUBSCR_TUPLE_INTدیگر برای اعداد صحیح منفی استفاده نمیشوند، زیرا آن دستورات هنگام مواجهه با اعداد صحیح منفی همواره دچار عدم تطابق میشوند.gh-99110: مقداردهی اولیهی frame->previous در پروندهی frameobject.c برای رفع خطای قطعهبندی (segmentation fault) هنگام دسترسی به فریمهای ایجادشده توسط تابع
PyFrame_New().gh-94155: بهبود الگوریتم درهمسازی (hashing) برای اشیاء کد، جهت کاهش برخی از برخوردهای درهمسازی (hash collisions).
gh-99540: مقدار
Noneاکنون به یک مقدار ثابت درهمسازی میشود. این یک تغییر در الزامات نیست.gh-100143: هنگام ساخت با پرچم
--enable-pystats، جمعآوری آمار به طور پیشفرض غیرفعال است. برای فعالسازی زودهنگام آن در هنگام راهاندازی، پرچم-Xpystatsرا ارسال کنید. آمار اکنون همیشه تخلیه (dump) میشوند، حتی اگر خاموش باشند.gh-100146: بهبود آپکد
BUILD_LISTبه طوری که مشابه آپکدBUILD_TUPLEعمل کند، با ربایش ارجاعات از پشته به جای استفادهی مکرر از عملیات پشته برای تنظیم عناصر فهرست. جزئیات پیادهسازی در یک API خصوصی جدید به نام_PyList_FromArraySteal()قرار دارد.gh-100110: تخصصیسازی
FOR_ITERبرای تاپلها.gh-100050: در نظر گرفتن خطاهای موجود به دست آمده هنگام جستجو برای پرانتزهای نامتوازن در توکنساز. وصله توسط Pablo Galindo.
gh-92216: بهبود کارایی تابع
hasattr()برای اشیاء نوع که فاقد یک ویژگی هستند.gh-99554: بستهبندی کارآمدتر جداول مکان اشکالزدایی در طول کامپایل بایتکد.
gh-98522: افزودن یک شماره نسخهی داخلی به اشیاء کد، برای ارائهی نسخهگذاری بهتر توابع داخلی و درکها (comprehensions)، و در نتیجه تخصصیسازی بهتر آن توابع. این تغییر برای هر دو افزونهی پایتون و C نامحسوس است.
gh-94603: بهبود کارایی متد
list.popبرای فهرستهای کوچک.
کتابخانه¶
gh-89051: افزودن
ssl.OP_LEGACY_SERVER_CONNECT
هسته و توکارها (Core and Builtins)¶
bpo-32782: آرایههای
ctypesبا طول 0 اکنون هنگام ساخت یکmemoryviewاز آنها، اندازهی عنصر (itemsize) صحیحی را گزارش میکنند و دیگر همیشه مقدار 0 را نمیدهند.
کتابخانه¶
gh-100833: افزایش سرعت
math.fsum()با حذف مشخصکنندههای دفاعیvolatile.gh-100805: اصلاح پیادهسازی
random.choice()به طوری که دوباره با آرایههای NumPy کار کند.gh-100813: افزودن ثابت
socket.IP_PKTINFO.gh-100792: دو برابر کردن سرعت
email.message.Message.__contains__().gh-91851: بهینهسازیهای کوچک برای
fractions.Fraction.__round__()،fractions.Fraction.__ceil__()وfractions.Fraction.__floor__().gh-90104: جلوگیری از بروز خطای RecursionError روی
reprدر صورتی که تعریف فیلد دیتاکلاس دارای ارجاع حلقوی باشد.gh-100689: رفع فروپاشی در
pyexpatاز طریق تخصیص ایستا کپسولPyExpat_CAPI.gh-100740: رفع مشکل
unittest.mock.Mockکه مشخصات را برای نامهای ویژگی پیشوندشده باassertرعایت نمیکرد.gh-91219: تغییر
SimpleHTTPRequestHandlerبه منظور پشتیبانی از زیرکلاسسازی برای ارائهی مجموعهای متفاوت از نامهای پروندههای اندیس به جای استفاده از پارامترهای__init__.gh-100690: اشیاء
Mockکه ناامن نیستند، اکنون هنگام دسترسی به ویژگیای که با نام یک ادعا مطابقت دارد اما بدون پیشوندassert_است (مثلاً دسترسی بهcalled_onceبه جایassert_called_once)، یک خطایAttributeErrorبالا خواهند آورد. این مورد علاوه بر مواردی است که قبلاً برای دسترسی به ویژگیهایی با پیشوندهایassert،assret،asert،aseertوassrtرخ میداد.gh-89727: سادهسازی و بهینهسازی
os.walk()با استفاده از بررسیهایisinstance()برای بررسی بالای پشته.gh-100485: افزودن math.sumprod() برای محاسبهی مجموع حاصلضربها.
gh-86508: رفع مشکل
asyncio.open_connection()برای پرش از اتصال به آدرسهای محلی از خانوادهای دیگر. اصلاحیه از کومار آدیتیا (Kumar Aditya).gh-97930: تابع
importlib.resources.filesاکنون یک ماژول را به عنوان لنگر میپذیرد و به پذیرش فقط بستهها محدود نیست. اگر یک ماژول ارسال شود، منابع در مجاورت آن ماژول (در همان بسته یا در ریشهی بسته) حل میشوند. نام پارامتر ازpackageبهanchorتغییر یافت و برای کسانی که از طریق کلیدواژه مقدار میفرستند، یک لایهی سازگاری (shim) قرار داده شد. علاوه بر این، پارامتر جدیدanchorاکنون اختیاری است و به طور پیشفرض به ماژول فراخواننده اشاره خواهد کرد.gh-100585: رفع باگی که در آن importlib.resources.as_file اشارهگرهای پرونده را باز نگه میداشت
gh-100562: بهبود عملکرد
pathlib.Path.absolute()به میزان تقریبا 2 برابر. این امر به قیمت پسرفت عملکردی درpathlib.Path.cwd()تمام میشود که معمولاً کمتر در کد کاربر استفاده میشود.gh-100519: سادهسازی کوچک
http.cookiejar.eff_request_host()که خوانایی را بهبود میبخشد و بیشتر با متن استاندارد RFC مطابقت دارد.gh-100287: رفع تعامل
unittest.mock.seal()باunittest.mock.AsyncMock.gh-100488: متد
Fraction.is_integer()را اضافه میکند تا بررسی شود که آیا یکfractions.Fractionعدد صحیح است یا خیر. این کار سازگاری نوع اردک (duck type) را باfloatوintبهبود میبخشد.gh-100474: ماژول
http.serverاکنون پیش از تلاش برای ارائه دادن یک صفحهی نمایه (index)، بررسی میکند که آیا واقعاً یک پروندهی معمولی است یا خیر. این کار از بروز مشکلات مربوط به پوشههایی با نامindex.htmlجلوگیری میکند.gh-100363: با حذف بررسیهای اضافی
getpid، سرعتasyncio.get_running_loop()را افزایش دهید. وصلهای از Kumar Aditya.gh-78878: رفع خرابی هنگام ایجاد یک نمونه از
_ctypes.CField.gh-100348: رفع حلقهی ارجاع در
asyncio._SelectorSocketTransportبا حذف_read_ready_cbدرclose.gh-100344: ارائهی پیادهسازی C برای
asyncio.current_task()جهت افزایش سرعت ۴ تا ۶ برابری.gh-100272: رفع سریالسازی JSON مربوط به OrderedDict. این قابلیت اکنون ترتیب کلیدها را حفظ میکند.
gh-83076: نمونهسازی
Mock()وAsyncMock()اکنون ۳.۸ برابر سریعتر است.gh-100234: تنظیم مقدار پیشفرض ۱.۰ برای پارامتر
lambdدر random.expovariate().gh-100228: هنگام فراخوانی
os.fork()یاos.forkpty()از فرایندهای چندنخی، ممکن است یکDeprecationWarningایجاد شود. انشعاب با نخها ناامن است و میتواند باعث ایجاد بنبستها، خرابیها و مشکلات ظریف شود. عدم وجود هشدار نشاندهندهی امن بودن فراخوانی انشعاب نیست، زیرا ممکن است پایتون از تمام نخها مطلع نباشد.gh-100039: بهبود امضاها (signatures) برای enumها و پرچمها.
gh-100133: رفع رگرسیون در
asyncioکه در آن یک زیرفرایند گاهی اوقات دادههای دریافتشده از پایپ را از دست میداد.bpo-44592: رفع رفتار ناسازگار حساسیت به بزرگی و کوچکی حروف (case sensitivity) آرگومان extrasaction در
csv.DictWriter.gh-100098: رفع مشکل تبدیل زیرکلاسهای
tupleبهtupleهنگام استفاده به عنوان مقادیر enum.gh-85432: تغییر نام پارامتر fmt در پیادهسازی پایتون خالص
datetime.time.strftime()به format. تغییر نام پارامتر t درdatetime.datetime.fromtimestamp()به timestamp. این تغییرات به این معناست که نام پارامترها در پیادهسازی پایتون خالص اکنون با نام پارامترها در پیادهسازی C مطابقت دارد. وصلهای از Alex Waygood.gh-98778: بهروزرسانی
HTTPErrorبرای مقداردهی اولیهی صحیح، حتی اگرfpبرابر باNoneباشد. وصلهای از Donghee Na.gh-99925: یکپارچهسازی پیامهای خطا در سریالسازی JSON بین
json.dumps(float('nan'), allow_nan=False)وjson.dumps(float('nan'), allow_nan=False, indent=<SOMETHING>). اکنون هر دو شامل نمایش مقداری هستند که قابل سریالسازی نبوده است.gh-89727: رفع مشکل
os.walk()که در آن خطایRecursionErrorدر ساختارهای پوشهی عمیق رخ میداد، با تنظیم پیادهسازیos.walk()به صورت تکرارشونده (iterative) به جای بازگشتی (recursive).gh-94943: افزودن پشتیبانی از دیتاکلاس به
__repr__()درEnum. هنگام ارثبری از یکdataclass، فقط نامهای فیلد را در بخش مقدارrepr()عضو نمایش دهید، نه نام کلاس دیتاکلاس را.gh-83035: رفع نحوهی پردازش فراخوانیهای دکوراتور با پرانتزهای تودرتو در
inspect.getsource().gh-99576: اصلاح متد
.save()برایLWPCookieJarوMozillaCookieJar: پروندهی ذخیرهشده در ذخیرهسازیهای مکرر کوتاه نمیشد.gh-94912: افزودن دکوراتور
inspect.markcoroutinefunction()که به طور دستی تابعی را به عنوان یک همروال علامتگذاری میکند تاiscoroutinefunction()از آن بهرهمند شود.gh-99509: افزودن پشتیبانی PEP 585 برای
multiprocessing.queues.Queue.gh-99482: حذف کد سازگاری جزئی
Jythonاز چندین ماژول کتابخانهی استاندارد.gh-99433: اصلاح خطای
doctestرویtypes.MethodWrapperTypeدر ماژولها.gh-85267: چندین بهبود در نحوهی مدیریت
__text_signatureتوسطinspect.signature(). - اصلاح موردی که در آنinspect.signature()پارامترها را حذف میکرد - اصلاح موردی که در آنinspect.signature()خطایtokenize.TokenErrorرا ایجاد میکرد - امکان درک مقادیر پیشفرض شامل عملیات دودویی ثابتها توسطinspect.signature()-inspect.signature()مستند شده است که فقط خطاهایTypeErrorیاValueErrorرا ایجاد میکند، اما گاهی خطایRuntimeErrorایجاد میکرد. این موارد اکنون خطایValueErrorایجاد میکنند - حذف مسیر کد مردهgh-91166: ماژول
asyncioبهینهسازی شده است تا از کپیبرداری بیش از حد هنگام نوشتن روی سوکت جلوگیری کند و در صورت پشتیبانی سکو، ازsendmsg()استفاده کند. وصله توسط کومار آدیتیا (Kumar Aditya).gh-98030: افزودن گزینههای گمشدهی سوکت TCP از لینوکس:
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: کاهش مصرف حافظهی
urllib.parse.unquote()وurllib.parse.unquote_to_bytes()روی مقادیر بزرگ.gh-96127: تابع
inspect.signatureهنگام فراخوانی با اشیاء ماک خطایTypeErrorایجاد میکرد. اکنون به درستی(*args, **kwargs)را به عنوان امضای استنتاجشده برمیگرداند.gh-95882: اصلاح یک رگرسیون نسخهی ۳.۱۱ در
asynccontextmanager()که باعث میشد استثناها با ردیابیهای نادرست انتشار پیدا کنند و اصلاح یک رگرسیون نسخهی ۳.۱۱ درcontextmanager()که باعث میشد استثناها با ردیابیهای نادرست برایStopIterationانتشار پیدا کنند.gh-78707: منسوخ کردن ارسال بیش از یک آرگومان جایگاهی به
pathlib.PurePath.relative_to()وis_relative_to().gh-92122: اصلاح خطاهای نحوی reStructuredText در رشتههای مستند درون ماژول
enum.gh-91851: بهینهسازی محاسبات ریاضی
Fractionبرای اجزای کوچک.bpo-24132: قابل زیرکلاس شدن ساختن
pathlib.PurePathوPath(در ابتدا خصوصی). پیشتر، تلاش برای نمونهسازی از یک زیرکلاس منجر به ایجاد خطایAttributeErrorمیشد. وصله توسط بارنی گیل (Barney Gale).bpo-40447: پذیرش
os.PathLike(مانندpathlib.Path) در آرگومانهایstripdirمتعلق بهcompileall.compile_file()وcompileall.compile_dir().bpo-36880: اصلاح یک مسئلهی شمارش ارجاع هنگامی که یک فراخوانی بازگشتی
ctypesبا نوع دادهی بازگشتیpy_objectمقدارNoneرا برمیگرداند، که میتوانست باعث بروز فروپاشی شود.
مستندات¶
gh-100616: مستندسازی پارامتر موجود
attrبرای تابعcurses.window.vline()در ماژولcurses.gh-100472: حذف ادعا در مستندات مبنی بر اینکه پارامترهای
stripdir،prependdirوlimit_sl_destدرcompileall.compile_dir()وcompileall.compile_file()میتوانند از نوعbytesباشند.bpo-25377: شفافسازی استفاده از قالب هشتهشتی (octal) آرگومان mode در help(os.chmod) و همچنین help(os.fchmod)
آزمونها¶
gh-100454: شروع اجرای آزمونهای SSL با OpenSSL 3.1.0-beta1.
gh-100086: اجراکنندهی آزمون پایتون (libregrtest) اکنون اطلاعات ساخت پایتون مانند ساخت «debug» در برابر «release»، یا بهینهسازیهای LTO و PGO را ثبت میکند. وصلهای از Victor Stinner.
gh-93018: دو آزمون را نسبت به libexpat سیستم میزبان با اعمال اصلاحات امنیتی بکپورتشده، بخشندهتر کنید.
ساخت¶
gh-100540: گزینهی
configureیعنی--with-system-ffiحذف شد؛ گزینهیlibffiاکنون باید همیشه توسط سیستم روی تمامی سکوهای غیر ویندوزی تأمین شود. این گزینه روی سکوهای غیر Darwin برای چندین انتشار هیچ تأثیری نداشته است، و در نسخهی 3.11 فقط تأثیر غیربدیهی فراخوانیpkg-configبرای یافتنlibffiو هرگز تنظیم نکردن-DUSING_APPLE_OS_LIBFFIرا داشته است. اکنون روی سکوهای Darwin، دستورconfigureابتداlibffiسیستمعامل را بررسی میکند و سپس در صورت عدم یافتن، به همان پردازش سایر سکوها بازمیگردد.gh-88267: از صادر کردن نمادهای پایتون در برنامههای پیوندخوردهی ویندوز زمانی که هسته بهصورت ایستا ساخته شده است، خودداری کنید.
bpo-41916: اجازهی بازنویسی ac_cv_cxx_thread را بدهید تا پایتون کامپایلشدهی متقاطع بتواند -pthread را برای CXX تنظیم کند.
Windows¶
gh-100180: بهروزرسانی نصبکنندهی ویندوز به OpenSSL 1.1.1s
gh-99191: از
_MSVC_LANG >= 202002Lبهجای_MSC_VER >=1929که دقت کمتری دارد استفاده کنید تا پشتیبانی از C++20 درPC/_wmimodule.cppبا دقت بیشتری آزمون شود.gh-79218: تعریف
MS_WIN64برای Mingw-w64 64بیتی، و رفع خطای کامپایل cython.gh-99941: اطمینان حاصل کنید که
asyncio.Protocol.data_received()یک شیءbytesتغییرناپذیر (همانطور که مستند شده است)، بهجایbytearrayدریافت میکند.bpo-43984: متد
winreg.SetValueEx()اکنون در صورت بروز خطاهای تبدیل، مقدار هدف را دستنخورده باقی میگذارد. پیش از این، در صورت بروز چنین خطاهایی،-1نوشته میشد.bpo-34816: عبارت
hasattr(ctypes.windll, 'nonexistant')اکنون بهجای بالا آوردنOSError، مقدارFalseرا برمیگرداند.
مکاواس¶
Tools/Demos¶
bpo-45256: رفع باگی که باعث میشد هنگام استفاده از
py-localsبدون قاب، یکAttributeErrorدرpython-gdb.pyرخ دهد.gh-100342: بررسی گمشدهی
NULLبرای خطای تخصیص احتمالی در تجزیهی*argsدر Argument Clinic اضافه شد.
رابط C API¶
gh-99947: بالا آوردن SystemError در ایمپورت، اکنون علت خود را روی استثنای غیرمنتظرهی اصلی تنظیم میکند.
gh-99240: در تجزیهی آرگومان، پس از آزاد کردن حافظهی تازه تخصیصیافته، اشارهگر آن را به NULL بازنشانی کنید.
gh-98724: ماکروهای
Py_CLEAR،Py_SETREFوPy_XSETREFاکنون آرگومانهای خود را تنها یک بار ارزیابی میکنند. اگر آرگومان دارای عوارض جانبی باشد، این عوارض جانبی دیگر تکرار نمیشوند. وصلهای از Victor Stinner.
Python 3.12.0 آلفا 3¶
تاریخ انتشار: ۲۰۲۲-۱۲-۰۶
امنیت¶
gh-100001:
python -m http.serverدیگر اجازه نمیدهد نویسههای کنترلی پایانه که در یک درخواست نامعتبر ارسال شدهاند، در گزارش خطای سرور (stderr) چاپ شوند.این کار با تغییر دادن متد
.log_messageدر کلاسBaseHTTPRequestHandlerمربوط بهhttp.serverانجام میشود تا پیش از چاپ، نویسههای کنترلی با یک گریز مبنای شانزده\xHHجایگزین شوند.gh-87604: از انتشار فهرست قلابهای حسابرسی فعال به ازای هر مفسر از طریق ماژول
gcجلوگیری کنید.
هسته و توکارها (Core and Builtins)¶
gh-99891: رفع یک باگ در توکنساز که میتواند هنگام نمایش هشدارهای نحوی در سطر اول کد منبع، باعث بازگشتدهی (recursion) بینهایت شود. وصله توسط پابلو گالیندو (Pablo Galindo).
gh-91054: افزودن رابطهای برنامهنویسی (API)
PyCode_AddWatcher()وPyCode_ClearWatcher()برای ثبت توابع فراخوانی بازگشتی جهت دریافت اعلان هنگام ایجاد و نابودی اشیای کد.gh-99729: رفع مشکلی که میتوانست باعث شود فریمها هنگام تخریب شدن برای کد پایتون قابل مشاهده باشند و احتمالاً به خرابی حافظه یا فروپاشی جدی مفسر منجر شود.
gh-99708: رفع باگ مربوط به فروپاشی کامپایلر در عبارات if با یک بلوک بدنه خالی.
gh-99578: رفع یک باگ ارجاع در
_imp.create_builtin()پس از ایجاد نخستین زیرمفسر برای ماژولهایbuiltinsوsys. وصله توسط ویکتور استینر (Victor Stinner).gh-99581: رفع باگی که باعث سرریز بافر میشد، اگر توکنساز سطری را که فاقد نویسهی نویسهی خط جدید است از پروندهای با طول برابر با بافر موجود توکنساز کپی میکرد. وصله توسط پابلو گالیندو (Pablo galindo).
gh-99553: رفع باگی که طی آن زیرکلاسی از
ExceptionGroupمیتوانست یکBaseExceptionرا دربربگیرد.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
gh-99377: افزودن رویدادهای حسابرسی برای عملیات ایجاد و پاکسازی نخ (thread).
gh-98686: حذف «تخصصسازیهای» (specializations)
BINARY_OP_GENERICوCOMPARE_OP_GENERIC.gh-99298: حذف مسیرهای خطای باقیمانده برای تخصصسازیهای ویژگی و خودداری از تخصصسازی دسترسیهای ویژگی روی انواعی که هنوز متد
PyType_Ready()روی آنها فراخوانی نشده است.gh-99127: محدود کردن برخی ویژگیهای
syslogفقط به مفسر اصلی. وصله توسط دونگی نا (Donghee Na).gh-91053: مفسرهای بهینهساز و کامپایلرهای درجا (JIT) ممکن است هنگام اصلاح شدن تابعها نیاز داشته باشند فرادادههای داخلی را نامعتبر کنند. این تغییر قابلیت ارائه یک فراخوانی بازگشتی را اضافه میکند که هر زمان تابعی ایجاد، اصلاح یا نابود میشود، فراخوانی خواهد شد.
gh-90994: بهبود پیامهای خطا در صورت بروز خطای نحوی با آرگومانهای فراخوانی. سه حالت زیر پوشش داده شدهاند: - هیچ مقداری به یک آرگومان نامگذاری شده اختصاص نیافته است، مثلاً
foo(a=). - مقداری به یک آرگومان ستارهدار اختصاص یافته است، مثلاًfoo(*args=[0]). - مقداری به یک آرگومان کلیدواژهای دو ستاره اختصاص یافته است، مثلاًfoo(**kwarg={'a': 0}).bpo-45026: بهینهسازی شیء
rangeمربوط به پیمایشگر. این شیء اکنون کوچکتر است و پیمایش دامنههای حاوی اعداد بزرگ را با سرعت بیشتری انجام میدهد. پیکلهای کوچکتر و پیکلزدایی (unpickling) سریعتر از ویژگیهای آن است.bpo-31718: هنگامی که متدهای شیءهای مقداردهینشدهی
io.IncrementalNewlineDecoderفراخوانی میشوند، به جایSystemErrorخطایValueErrorرا بالا بیاورید. اصلاحیه از Oren Milman.bpo-38031: رفع احتمال شکست شرط (assertion) در
io.FileIOهنگامی که تابع بازکننده (opener) یک توصیفگر پروندهی نامعتبر برمیگرداند.
کتابخانه¶
gh-100001: همچنین نویسههای را در http.server BaseHTTPRequestHandler.log_message خنثی کنید تا از نظر فنی تجزیه کردن سطر و بازسازی دادههای اصلی امکانپذیر شود. بدون این کار، یک xHH مبهم است که آیا این یک جایگزین مبنای شانزده است که ما قرار دادهایم یا نویسههای r"x" در سطر درخواست اصلی آمدهاند.
gh-99957: افزودن پارامتر
frozen_defaultبهtyping.dataclass_transform().gh-79033: اصلاح
asyncio.Server.wait_closed()برای انجام دقیق آنچه مستندات وعده میدهند — یعنی پس از بستن سرور، منتظر کامل شدن تمام اتصالهای موجود بماند.gh-51524: رفع اشکال هنگام فراخوانی trace.CoverageResults با پروندهی ورودی معتبر.
gh-99645: رفع اشکال در مدیریت پاکسازیهای کلاس در
unittest.TestCase. اکنونaddClassCleanup()از فهرستهای جداگانهای برای زیرکلاسهای مختلفTestCaseاستفاده میکند وdoClassCleanups()فقط همان کلاس خاص را پاکسازی میکند.gh-99508: رفع خطای
TypeErrorدرLib/importlib/_bootstrap_external.pyهنگام فراخوانی_imp.source_hash().gh-66285: اصلاح
asyncioبه طوری که در فرایندهای انشعابیافته، حلقه رویداد (event loop) و توصیفگر بیدارباش سیگنال را به اشتراک نگذارد. اصلاحیه از Kumar Aditya.gh-97001: انتشار GIL هنگام فراخوانی APIهای termios برای جلوگیری از مسدود شدن نخها (threads).
gh-92647: استفاده از وضعیت نهایی یک enum برای تعیین شاخهی جستجو یا ایجاد در API تابعی.
gh-99388: افزودن پارامتر loop_factory به
asyncio.run()جهت امکان مشخص کردن یک کارخانهی حلقهی رویداد سفارشی. اصلاحیه از Kumar Aditya.gh-99341: اصلاح
ast.increment_lineno()تا هنگام تغییر دادن شمارهسطرها،ast.TypeIgnoreرا نیز پوشش دهد.gh-99382: بررسی تعداد آرگومانها در جایگزینی در انواع عام (generics) کاربر حاوی یک
TypeVarTupleو یک یا چندTypeVar.gh-99379: اصلاح جایگزینی
ParamSpecکه پس ازTypeVarTupleدر مستعارهای عام (generic aliases) آمده است.gh-99344: اصلاح جایگزینی
TypeVarTupleوParamSpecبهطور همزمان در انواع عام کاربر.gh-99284: حذف هک قدیمی، آزمایشنشده و مستندنشدهی
_use_broken_old_ctypes_structure_semantics_ازctypes.gh-99201: رفع خطای
IndexErrorهنگام مقداردهی اولیه متغیرهای پیکربندی در ویندوز اگرHAVE_DYNAMIC_LOADINGتنظیم نشده باشد.gh-99240: رفع اشکال آزادسازی مضاعف (double-free) در
str_converterمربوط به Argument Clinic با انتقال پاکسازی حافظه به یک بخش جدیدpost_parsing.gh-64490: رفع خطای شمارش ارجاع (refcount) هنگام بستهبندی آرگومانها در تاپل در Argument Clinic.
gh-99029: متد
pathlib.PurePath.relative_to()اکنون مسیرهای درایو لخت ویندوز را به عنوان مسیرهای نسبی در نظر میگیرد. این کار رفتار آن را با سایر بخشهای pathlib هماهنگ میکند.gh-98253: پیادهسازی ماژول typing اکنون در برابر نشتهای ارجاع در ماژولهای توسعهای دودویی مقاومتر است.
پیش از این، نشت ارجاع در یک ماژول توسعهای مبتنی بر C API تایپشده میتوانست بخشهای داخلی ماژول typing را نشت دهد، که این امر به نوبهی خود میتوانست نشتهایی را در تقریباً هر بستهی دیگری با امشاهای تابع تایپشده ایجاد کند. اگرچه بستهی typing منبع اصلی مشکل نیست، اما چنین وابستگیهای غیرمحلی اشکالزدایی پروژههای مقیاس بزرگ را تشدید میکند، بنابراین پیادهسازی تغییر یافت تا با فراهم کردن ایزولهسازی بهتر، آسیب را کاهش دهد.
gh-98458: رفع حلقهی بینهایت در unittest هنگامی که یک استثنای زنجیرهای با ارجاع به خود بالا میرود
gh-93453: تابع
asyncio.get_event_loop()و بسیاری از عملکردهای دیگرasyncioمانندasyncio.ensure_future()،asyncio.shield()یاasyncio.gather()، و همچنین متدget_event_loop()ازasyncio.BaseDefaultEventLoopPolicyاکنون در صورت فراخوانی در زمانی که هیچ حلقه رویداد در حال اجرایی وجود ندارد و حلقه رویداد فعلی تنظیم نشده است، یکRuntimeErrorبالا میبرند. پیش از این، آنها به طور ضمنی یک حلقه رویداد فعلی جدید ایجاد و تنظیم میکردند. هشدارDeprecationWarningدیگر در صورت عدم وجود حلقه رویداد در حال اجرا اما تنظیم بودن حلقه رویداد فعلی صادر نمیشود.gh-97966: در
os.uname_result، انتظاری که وجود داشت مبنی بر اینکه_fieldsو_asdictشامل هر شش ویژگی از جملهprocessorباشند، بازیابی شد.gh-98248: ارائهی پیامهای خطای آموزنده در
struct.pack()هنگامی که آرگومانهای صحیح آن در محدوده نیستند.gh-98108: شیء
zipfile.Pathاکنون اگر پارامترهای راهاندازی آن قابلیت پیکل شدن (pickleable) داشته باشند (به عنوان مثال برای مسیرهای سیستم پرونده)، قابلیت پیکل شدن را دارد.gh-98098: ایجاد بستهها از ماژولهای zipfile و test_zipfile که قابلیت
zipfile.Pathرا جدا میکند.gh-82836: رفع ویژگیهای
is_privateدر ماژولipaddress. پیش از این شبکههای غیرخصوصی (0.0.0.0/0) مقدارTrueرا از این متد برمیگرداندند؛ اکنون آنها به درستیFalseرا برمیگردانند.gh-96828: افزودن یک گزینهی
OP_ENABLE_KTLSبرای فعالسازی استفاده از TLS هسته (kTLS). وصله توسط ایلا ولوچی (Illia Volochii).gh-88863: برای جلوگیری از نشت حافظه آشکار هنگام بالا آمدن
asyncio.open_connection()، چرخههای ارجاع تولید شده توسط استثنای محلی و نمونههای future (که نمونهی استثنا را به عنوان متغیر عضو خود دارند) را بشکنید. وصله توسط دونگ اوک کانگ (Dong Uk, Kang).gh-91078: متد
TarFile.next()اکنون هنگام فراخوانی روی یک tarfile خالی،Noneرا برمیگرداند.bpo-47220: مستندسازی پارامتر اختیاری callback از
WeakMethod. وصله توسط ژری اوگام (Géry Ogam).bpo-44817: نادیدهگرفتن WinError 53 (ERROR_BAD_NETPATH)، 65 (ERROR_NETWORK_ACCESS_DENIED) و 161 (ERROR_BAD_PATHNAME) هنگام استفاده از ntpath.realpath().
bpo-41260: تغییر نام پارامتر fmt در پیادهسازی خالص پایتون از
datetime.date.strftime()به format.bpo-15999: تمام توابع درونی اکنون به جای فقط
boolوintبرای پارامترهای بولی، آرگومانهایی از هر نوعی را میپذیرند.
مستندات¶
gh-99931: استفاده از sphinxext-opengraph برای تولید OpenGraph metadata.
gh-89682: بازنویسی متن رشته مستند (docstring) پیشفرض
__contains__برای شفافسازی اینکه یک شیءboolبرمیگرداند.gh-88330: بهبود توصیف مفهوم یک منبع در مستندات importlib.resources.
gh-92892: مستندسازی این که فراخوانی توابع چندآرگومانی با ctypes نیازمند دقت ویژهای روی macOS/arm64 (و احتمالاً سایر سکوها) است.
bpo-41825: بازسازی مستندات برای خانوادهی توابع
os.wait*، و بهبود مستنداتos.waitid()با توضیحاتی بیشتر دربارهی ثابتهای آرگومان احتمالی.
آزمونها¶
gh-99892: رد کردن test_normalization() از test_unicodedata در صورتی که در بارگیری پروندهی NormalizationTest.txt از pythontest.net ناموفق باشد. وصله توسط Victor Stinner.
gh-99934: اصلاح test_marsh روی x86 (۳۲ بیتی): شکست خوردن مجموعهی تنظیمات test_deterministic.
gh-99741: پیادهسازی مقداردهی اولیه چندمرحلهای (PEP 489/630/687) برای ماژول داخلی (جهت آزمایش) _xxsubinterpreters.
gh-99659: آزمونهای اختیاری حافظهی بزرگ در
test_sqlite3اکنون نوع استثنای صحیحsqlite.DataErrorرا در صورت ارسال رشتهها و/یا بلابهای بسیار بزرگ صید میکنند.gh-99593: پوشش دادن API یونیکد C با آزمونها.
gh-96002: افزودن آزمون کاربردی برای Argument Clinic.
ساخت¶
gh-99086: رفع هشدارهای کامپایلر
-Wimplicit-int،-Wstrict-prototypesو-Wimplicit-function-declarationدر بررسیهای configure.gh-99337: رفع مشکل کامپایل با GCC 12 روی macOS.
gh-99289: افزودن یک متغیر
COMPILEALL_OPTSدر Makefile برای بازنویسی گزینههایcompileall(پیشفرض:-j0) درmake install. همچنین دستوراتcompileallدر یک دستور واحد ادغام شدند که پروندههای .pyc را برای تمام سطوح بهینهسازی (۰، ۱، ۲) به طور همزمان میسازد. وصله توسط Victor Stinner.gh-98872: رفع نشت احتمالی fd در
Programs/_freeze_module.cکه در پایتون ۳.۱۱ معرفی شده بود.gh-88226: همیشه تعریف برچسبهای
TARGET_*درPython/ceval.c، حتی اگرUSE_COMPUTED_GOTOSغیرفعال باشد. این امر به تعیین نقطهشکستها روی آن برچسبها در (برای نمونه)gdbاجازه میدهد.
Windows¶
gh-99345: استفاده از عملکردهای مقداردهی اولیهی سریعتر برای تشخیص مکان نصب بسته در Windows Store
gh-98629: رفع مقداردهی اولیهی
sys.versionوsys._gitروی ویندوزgh-99442: رفع مدیریت در مدیر نصب پایتون هنگامی که
argv[0]شامل پسوند پرونده نیست.bpo-40882: رفع نشت حافظه در
multiprocessing.shared_memory.SharedMemoryروی ویندوز.
مکاواس¶
Tools/Demos¶
gh-64490: رفع باگهای آرگومانهای متغیر (varargs) در Argument Clinic
برطرف کردن خطای خارج از کران (out-of-bounds) در
_PyArg_UnpackKeywordsWithVararg().برطرف کردن بررسی نادرستی که اجازه میداد بیش از یک متغیر آرگومان (varargs) در clinic.py وجود داشته باشد.
برطرف کردن محاسبهی اشتباه
noptargsدر کد تولیدشده.هنگامی که یک آرگومان متغیر (vararg) و هیچ آرگومان اختیاری وجود ندارد،
noptargsرا تولید نکنید.
رابط C API¶
gh-98680: ثابتهای
PyBUF_*به عنوان بخشی از API محدود پایتون ۳.۱۱+ علامتگذاری شدند. این موارد در نسخه ۳.۱۱.۰ با تعریفPy_LIMITED_APIبرای نسخه ۳.۱۱ در دسترس بودند و برای استفاده از API بافر ضروری هستند.gh-99612: تابع
PyUnicode_DecodeUTF8Stateful()را برای دادههای فقط اسکی (ASCII) اصلاح کنید: متغیر*consumedتنظیم نشده بود.gh-47146: سرآیند
structmember.hمنسوخ شده است. محتویات منسوخنشدهی آن اکنون صرفاً با گنجاندنPython.hدر دسترس هستند، به همراه پیشوندPy_که در صورت فقدان اضافه شده است. (محتویات منسوخ عبارتند ازT_OBJECT،T_NONEو پرچمهای عملیات بیاثر). وصله توسط Petr Viktorin، بر اساس کارهای قبلی Alexander Belopolsky و Matthias Braun.
پایتون ۳.۱۲.۰ آلفا ۲¶
تاریخ انتشار: ۲۰۲۲-۱۱-۱۴
امنیت¶
gh-98433: رمزگشای کُدک IDNA که توسط توابع حل نام مرتبط با
socketیاasyncioروی نامهای میزبان DNS استفاده میشود، دیگر شامل الگوریتم درجه دوم (quadratic) نمیشود. این کار از یک انکار سرویس (DoS) احتمالی پردازنده در صورتی که نام میزبان بیش از حد طولانی و خارج از مشخصات حاوی نویسههای دوسویه رمزگشایی شود، جلوگیری میکند. برخی پروتکلها مانند تغییر مسیرهای http3xxدرurllibبهطور بالقوه به مهاجم اجازه میدهند چنین نامی را ارائه دهد.برچسبهای منفرد درون یک نام DNS رمزگذاریشده با IDNA اکنون اگر طولانیتر از ۱۰۲۴ نویسهی یونیکد باشند، در طول کدگشایی IDNA به سرعت خطایی را ایجاد خواهند کرد؛ با توجه به اینکه هر برچسب DNS کدگشاییشده باید ۶۳ نویسه یا کمتر باشد و کل نام DNS کدگشاییشده به ۲۵۵ محدود شده است. فقط برنامهای که نام میزبان یا برچسبی را ارائه دهد که عمدتاً از نویسههای "هیچچیز" بخش ۳.۱ RFC 3454 تشکیل شده باشد که باید حذف شوند، با این محدودیت جدید مواجه خواهد شد. همچنین به RFC 5894 بخش ۶ و RFC 3491 مراجعه کنید.
gh-98739: بهروزرسانی کتابخانهی بستهبندیشدهی libexpat به نسخه ۲.۵.۰
هسته و توکارها (Core and Builtins)¶
gh-81057: اسناد بهوضوح بیان میکنند که
PyImport_Inittab،PyImport_AppendInittab()وPyImport_ExtendInittab()نباید پس از فراخوانیPy_Initialize()استفاده شوند. ما اکنون این مورد را برای این دو تابع اعمال میکنیم. علاوه بر این، رانتایم اکنون از یک نسخهی داخلی ازPyImport_Inittabبرای محافظت در برابر تغییر استفاده میکند.gh-99298: برطرف کردن مسئلهای که میتوانست بهطور بالقوه باعث مدیریت خطای نادرست برای برخی دستورالعملهای بایتکد شود.
gh-99254: کامپایلر اکنون تمام ثابتهای استفادهنشده را از اشیای کد حذف میکند (بهجز اولین مورد که ممکن است یک رشته مستند باشد).
gh-99205: برطرف کردن مسئلهای که مانع از آزادسازی صحیح حافظهی
PyThreadStateوPyInterpreterStateمیشد.gh-81057: ۱۸ متغیر سراسری C که وضعیت تخصیصدهندهها را نگه میدارند به
_PyRuntimeStateمنتقل شدهاند. این یک تغییر کاملاً داخلی است و هیچ تغییری در رفتار ایجاد نمیکند.gh-99204: برطرف کردن محاسبهی
sys._base_executableهنگامی که در یک محیط مجازی POSIX با استفاده از نسخههای باینری پایتون هستید، در صورتی که نصب پایهی نام اجرایی استفادهشده توسط venv را فراهم نکند. محاسبه به نامهای جایگزین ("python<MAJOR>"، "python<MAJOR>.<MINOR>") بازخواهد گشت.gh-96055: بهروزرسانی
faulthandlerبرای انتشار یک پیام خطا با شماره سیگنال نامنتظرهی مناسب. وصله توسط Donghee Na.gh-99153: اصلاح مکان
SyntaxErrorبرای یک بلوکtryکه همزمان دارایexceptوexcept*است.gh-98686: ادغام منطق آپکد تطبیقی در نوع بدون شتاب (unquickened) هر دستور، و ادغام منطق موجود در
EXTENDED_ARG_QUICKدرEXTENDED_ARG. با این تغییرات، شتاببخشی (quickening) که هنگام ایجاد شیء کد رخ میدهد، اکنون فقط مسئول مقداردهی اولیه شمارندههای گرمسازی (warmup counters) و درج ابردستورها (superinstructions) است.gh-99103: برطرفسازی موقعیتهای گزارش خطای لنگرهای ردگیری تخصصی هنگامی که سطر منبع حاوی نویسههای یونیکد است.
gh-99139: بهبود پیشنهاد خطا برای استثناهای
NameErrorدر نمونهها. اکنون اگر استثنایی از نوعNameErrorدر یک متد رخ دهد و نمونه دارای ویژگیای باشد که دقیقا برابر با نام موجود در استثناست، پیشنهاد بهجای نزدیکترین تطابق در محدودهی متد، شاملself.<NAME>خواهد بود. وصله توسط Pablo Galindogh-98401: گریزهای هشتهشتی با مقداری بزرگتر از
0o377(مانند:"\477")، که در نسخهی ۳.۱۱ پایتون منسوخ شده بودند، اکنون بهجایDeprecationWarningیکSyntaxWarningتولید میکنند. در نسخهای آینده از پایتون، آنها در نهایت به یکSyntaxErrorتبدیل خواهند شد. وصله توسط ویکتور استینر (Victor Stinner).gh-98401: جفت بکاسلش-نویسهای که یک دنبالهی گریز معتبر نیست، اکنون بهجای
DeprecationWarningیکSyntaxWarningتولید میکند. برای مثال،re.compile("\d+\.\d+")اکنون یکSyntaxWarningصادر میکند ("\d"یک دنبالهی گریز نامعتبر است)، برای عبارتهای باقاعده از رشتههای خام استفاده کنید:re.compile(r"\d+\.\d+"). در نسخهای آینده از پایتون، بهجایSyntaxWarningدر نهایتSyntaxErrorبالا برده خواهد شد. وصله توسط ویکتور استینر (Victor Stinner).gh-96793: مدیریت StopIteration و StopAsyncIteration ایجادشده در تولیدگرها یا همروالها در بایتکد، بهجای کد C پوشاننده.
gh-98931: بهبود پیغام خطای
SyntaxErrorهنگامی که کاربر بهجایfrom y import xعبارتimport x from yرا تایپ میکند. وصله توسط پابلو گالیندو (Pablo Galindo)gh-98852: اصلاح زیرنویسی مستعارهای نوع شامل انواع عامِ برهنه یا انواعی مانند
TypeVar: برای مثالtuple[A, T][int]وtuple[TypeVar, T][int]، که در آنهاAیک نوع عام، وTیک متغیر نوع است.gh-98925: کاهش عمق بازگشتی برای مارشالکردن در WASI به منظور پشتیبانی از نسخه (در حال توسعهی) wasmtime 2.0.
gh-98783: اصلاح خرابیهای متعدد در حالت اشکالزدایی هنگامی که زیرکلاسهای
strبهجای خودstrاستفاده میشوند.gh-98811: استفاده از موقعیتهای کامل منبع برای سادهسازی تشخیص ایمپورتهای
__future__که در ابتدای پرونده نیستند. همچنین آفستِ استثنای بالا بردهشده در یک مورد را اصلاح میکند که یک واحد خطا داشت و مانع برجستهسازی میشد.gh-96793: افزودن تخصصیسازی
FOR_ITERبرای تولیدگرها. چندین لایه ارسال (dispatch) و بررسی را برای رسیدن از دستورFOR_ITERدر فراخواننده بهRESUMEدر تولیدگر صرفهجویی میکند.gh-98586: افزودن متدهای
PyObject_Vectorcall()وPyObject_VectorcallMethod()به Limited API به همراه ثابت ماکروی کمکیPY_VECTORCALL_ARGUMENTS_OFFSET.دسترسپذیری این توابع امکان فراخوانیهای برداری کارآمدتر PEP 590 را از ماژولهای توسعهای دودویی فراهم میکند که از سربارهای باکس/آنباکس کردن آرگومانها جلوگیری میکنند.
gh-99257: اصلاح مشکلی که در آن توصیفگرهای عضو (مانند موارد مربوط به
__slots__) هنگام دسترسی از طریق نمونهای از یک نوع نامعتبر، بهجای بالا بردن یکTypeError، ممکن بود به نادرستی رفتار کنند یا دچار خرابی شوند.gh-93143: مفسر بهجای تغییر
co_code، اکنون یکRuntimeWarningنمایش میدهد وNoneرا به هر متغیر محلی سریعی که پس از پرشها یا دستوراتdelاجراشده در حین ردیابی بدون اتصال باقی ماندهاند، اختصاص میدهد.gh-96421: هنگام فراخوانی کد پایتون از کد C، از طریق
PyEval_EvalFrameEx()یا یک تابع مرتبط در API مربوط به زبان C، یک قاب شیم (shim frame) در پشتهی فراخوانی درج میشود. این اتفاق در تابع_PyEval_EvalFrameDefault()رخ میدهد. قاب اضافی باید برای تمام پایتون و بیشتر افزونههای C نامرئی باشد، اما پروفایلگیرها و اشکالزداهای خارج از فرایند باید از آن آگاه باشند. این قابهای شیم را میتوان با بررسیframe->owner == FRAME_OWNED_BY_CSTACKتشخیص داد.افزونههایی که مفسرهای خود را با استفاده از PEP 523 پیادهسازی میکنند باید از این قاب شیم و تغییرات در معناشناسی
RETURN_VALUE،YIELD_VALUEوRETURN_GENERATORآگاه باشند که اکنون قاب را پاکسازی میکنند.
ساخت¶
هسته و توکارها (Core and Builtins)¶
gh-98686: سریعتر کردن تمام اشیای کد و تخصصیسازی تهاجمیتر دستورالعملهای بایتکد تطبیقی.
gh-92119: چاپ نام کلاس استثنا به جای نمایش متنی آن هنگام بالا آوردن خطاها از فراخوانیهای
ctypes.gh-91058:
ImportErrorکه ازfrom <module> import <name>ناموفق ناشی میشود، اکنون شامل پیشنهادهایی برای مقدار<name>بر اساس نامهای موجود در<module>است. وصله توسط Pablo Galindogh-96793: دستور
FOR_ITERاکنون پیمایشگر را پس از پایان حلقه روی پشته باقی میگذارد. این کار برای کمک به تخصصیسازی حلقهها برای تولیدگرها است.gh-90716: افزودن ماژول _pylong.py. این ماژول شامل الگوریتمهای بهطور مجانبی سریعتری است که میتوانند برای عملیات روی اعداد صحیح با ارقام زیاد استفاده شوند. این ماژول توسط longobject.c برای تسریع برخی عملیات استفاده میشود.
gh-95389: قرار دادن
ETH_P_ALLو برخی از ثابتهای ETHERTYPE_* در دسترس درsocket. وصله توسط Noam Cohen.
کتابخانه¶
gh-93696: اجازه دادن به
pdbبرای یافتن مکان منبع ماژولهای فریز شده در کتابخانهی استاندارد.gh-99418: رفع باگ در
urllib.parse.urlparse()که باعث میشود طرحوارههای URL که با یک رقم، علامت مثبت یا علامت منفی شروع میشوند، به اشتباه تجزیه شوند.gh-94597: منسوخ کردن
asyncio.AbstractChildWatcherبرای حذف در پایتون ۳.۱۴. وصله توسط Kumar Aditya.gh-99305: بهبود کارایی
secrets.token_hex().gh-74044: رفع باگی که در آن
inspect.signature()آرگومانهای نادرستی را برای متدهای دکوریتوردار گزارش میکرد.gh-99275: رفع خطای
SystemErrorدرctypesوقتی که استثنا در طول__initsubclass__تنظیم نشده بود.gh-99277: حذف نسخهی قدیمیتر
_SSLProtocolTransport.get_write_buffer_limitsدرasyncio.sslprotogh-99248: رفع عدم موفقیت اعداد منفی در verify()
gh-99155: رفع پیکل
statistics.NormalDistبا پروتکلهای0و1.gh-93464: عبارت
enum.auto()اکنون هنگام ترکیب با سایر مقادیر انتساب به درستی فعال میشود. به عنوان مثال،ONE = auto(), 'some text'اکنون به صورت(1, 'some text')ارزیابی خواهد شد.gh-99134: بهروزرسانی نسخهی بستهبندیشدهی pip به نسخهی ۲۲.۳.۱.
gh-92584: حذف بستهی
distutils. این بسته در پایتون ۳.۱۰ توسط PEP 632 با عنوان «منسوخ کردن ماژول distutils» منسوخ شد. برای پروژههایی که همچنان ازdistutilsاستفاده میکنند و نمیتوانند به چیز دیگری بهروز شوند، میتوان پروژهیsetuptoolsرا نصب کرد: این پروژه همچنانdistutilsرا فراهم میکند. وصله توسط Victor Stinner.gh-98999: اکنون
_pyioدر بالا بردن خطایValueErrorهنگام اجرای متدها روی بافرهای بسته، با_ioسازگار است.gh-83004: پاکسازی نشت ارجاع (refleak) در مقداردهی اولیهی ناموفق ماژول در
_zoneinfogh-83004: پاکسازی نشتهای ارجاع (refleaks) در مقداردهی اولیهی ناموفق ماژول در
_picklegh-83004: پاکسازی نشت ارجاع (refleak) در مقداردهی اولیهی ناموفق ماژول در
_io.gh-98897: رفع نشت حافظه در
math.dist()هنگامی که هر دو نقطه بعد یکسانی ندارند. وصله توسط Kumar Aditya.gh-98878: استفاده از توکارهای کران قاب هنگام پیشنهاد نام در
tracebackبرای جلوگیری از ازکارافتادگی (crash) زمانی که__builtins__یک دیکشنری نیست.gh-98139: در
importlib._bootstrap، نمایش (repr) بستهی فضای نام را به<module 'x' (namespace) from ['path']>بهبود دهید.gh-90352: اصلاح
_SelectorDatagramTransportبرای ارثبری ازDatagramTransportدرasyncio. وصله توسط Kumar Aditya.gh-98793: رفع بررسیهای نوع آرگومان در توابع
_overlapped.WSAConnect()و_overlapped.Overlapped.WSASendTo().gh-98744: جلوگیری از ازکارافتادگی (crash) در
tracebackهنگام بازیابی آفست بایت (byte-offset) برای برخی پروندههای منبع که حاوی نویسههای یونیکد خاصی هستند.gh-98740: رفع خطای داخلی در ماژول
reکه در شرایط بسیار نادر از کامپایل یک عبارت باقاعده حاوی یک عبارت شرطی بدون شاخهی «else» جلوگیری میکرد.gh-98703: اصلاح
asyncio.StreamWriter.drain()برای فراخوانی تابع بازگشتی (callback)protocol.connection_lostفقط یک بار در ویندوز.gh-98624: افزودن یک قفل متقابل (mutex) به unittest.mock.NonCallableMock برای محافظت از دسترسی همزمان به ویژگیهای ماک.
gh-98658: کلاس
array.arrayاکنون از اندیسگذاری پشتیبانی میکند و آن را به یک نوع عام تبدیل میکند.gh-98284: بهبود پیام
TypeErrorبرای متدهای انتزاعی تعریفنشده از یک نمونهیabc.ABC. نام متدهای گمشده برای برجستهسازی در میان نقلقولهای تکی قرار میگیرند.gh-96151: اجازه دادن به
BUILTINSتا نام فیلد معتبری برای دیتاکلاسهای فریزشده باشد.gh-98086: اطمینان از اینکه
patch.dict()را میتوان روی توابع ناهمگام اعمال کرد.gh-72719: حذف ماژولهای
asyncoreوasynchatکه توسط PEP 594 منسوخ شده بودند.gh-96192: اصلاح مدیریت اشیاء شبهمسیر از نوع
bytesدرos.ismount().gh-94172:
ftplib: حذف ویژگی کلاسیFTP_TLS.ssl_version: به جای آن از پارامتر context استفاده کنید. وصله توسط Victor Stinnergh-94172: حذف پارامترهای keyfile و certfile از ماژولهای
ftplib،imaplib،poplibوsmtplib، و پارامترهای key_file، cert_file و check_hostname از ماژولhttp.client، که همگی از نسخهی ۳.۶ پایتون منسوخ شدهاند. به جای آن از پارامتر context (یا ssl_context درimaplib) استفاده کنید. وصله توسط Victor Stinner.gh-83638: افزودن ویژگی
autocommitبهsqlite3.Connectionو پارامتر autocommit بهsqlite3.connect()برای کنترل مدیریت تراکنش سازگار با PEP 249. اصلاح از Erlend E. Aasland.gh-92452: رفع یک شرایط رقابت (race condition) که میتوانست باعث شود
sysconfig.get_config_var()در برنامههای چندنخی بهنادرست مقدارNoneرا برگرداند.gh-91803: رفع یک خطا هنگام استفاده از متدی از شیءهای بازسازیشده (mock) با
unittest.mock.create_autospec()پس از اینکه با تابعunittest.mock.seal()مهر و موم شدهاند.bpo-38523: تابع
shutil.copytree()اکنون آرگومان ignore_dangling_symlinks را بهصورت بازگشتی اعمال میکند.bpo-40358: افزودن آرگومان walk_up در
pathlib.PurePath.relative_to().bpo-36267: رفع خطای IndexError در
argparse.ArgumentParserهنگامی که به یک کنش (action) از نوعstore_trueیک آرگومان صریح داده میشود.
مستندات¶
gh-98832: تغییر متن رشته مستند (docstring) برای
pathlib.Path.iterdir().gh-97966: بهروزرسانی مستندات uname برای شفافسازی ماهیت خاص ویژگی platform و مشخص کردن زمان اتصال دیرهنگام (late-bound) آن.
آزمونها¶
gh-98903: مجموعهآزمون (test suite) پایتون اکنون اگر هیچ آزمونی اجرا نشود، با کد خروج ۴ متوقف میشود. این کار به شناسایی غلطهای املایی در نام آزمونها و متدهای آزمون کمک میکند.
gh-98713: رفع یک باگ در آزمونهای ماژول
typingکه در آن یک آزمون متکی بر جزئیات پیادهسازی مختص سیپایتون (CPython)، با@cpython_onlyتزئین نشده بود و روی سایر پیادهسازیها رد (skip) نمیشد.gh-87390: افزودن آزمونهایی برای بازکردن بسته ستارهای (star-unpacking) با PEP 646، و چند آزمون متفرقه دیگر مربوط به PEP 646.
gh-96853: افزودن دوبارهی پوشش صریح برای
Py_Initialize(و در نتیجهPy_InitializeEx) به آزمونهای تعبیه (embedding) (سایر آزمونهای تعبیه در پایتون ۳.۱۱ بهPy_InitializeFromConfigمنتقل شدند)bpo-34272: برخی از آزمونهای API زبان C به پوشش جدید Lib/test/test_capi/ منتقل شدند.
ساخت¶
gh-99086: رفع هشدار کامپایلر
-Wimplicit-intدر بررسی configure برایPTHREAD_SCOPE_SYSTEM.gh-99016: رفع ساخت (build) با
PYTHON_FOR_REGEN=python3.8.gh-97731: مشخص کردن مسیر کامل محل منبع برای
make docclean(مورد نیاز برای ساختهای متقابل یا cross-builds).gh-98949: حذف وابستگی ساخت (build dependency) استفادهنشده به
readelf.gh-98989: استفاده از
python3.11، در صورت موجود بودن، برای بازسازی و فریز کردن (regeneration and freezing).gh-98831: افزودن ابزار جدیدی در
Tools/cases_generatorبرای تولید دستور switch مفسر از روی فهرستی از تعاریف آپکد. این تغییر تنها بر افزودن، اصلاح یا حذف تعاریف دستورات تأثیر میگذارد. تعاریف دستورات اکنون درPython/bytecodes.c، در قالب یک مدل اختصاصی (در حال توسعه) قرار دارند. این ابزار این پرونده را میخواند وPython/generated_cases.c.hرا مینویسد که سپس توسطPython/ceval.cگنجانده میشود تا بیشتر حالتهای switch مفسر اصلی را فراهم کند.gh-98817: حذف PCbuild/lib.pyproj: برای هیچ کاری استفاده نمیشود، فقط یک راحتی جزئی برای کاربران ویژوال استودیوست (که احتمالاً بیشترشان حتی از آن خبر هم ندارند)، و نگه داشتن آن نیازمند تلاش زیادی برای نگهداری است.
gh-98776: رفع مشکل دستور
make regen-test-levenshteinبرای ساختهای خارج از درخت سورس (out-of-tree builds).gh-98707: اگر گزینهی
--with-system-libmpdecبه configure داده شود، از سرآیندهای تعبیهشدهیlibmpdecاستفاده نکنید. اگر گزینهی--with-system-expatبه configure داده شود، از سرآیندهای تعبیهشدهیlibexpatاستفاده نکنید.
Windows¶
gh-98689: بهروزرسانی ساختهای ویندوز به zlib v1.2.13. نسخهی v1.2.12 دارای آسیبپذیری CVE 2022-37434 است، اما پایتون از رابط برنامهنویسی کاربردی آسیبپذیر
inflateGetHeaderاستفادهچ نمیکند.gh-98790: فرض میکند که نبود پوشهی
DLLsبه این معناست که ماژولهای توسعهای استاندارد در پوشهی فایل اجرایی قرار دارند.gh-98745: بهروزرسانی برنامهی راهانداز
py.exeبرای نصب پیشفرض نسخهی ۳.۱۱ و نصب نسخهی ۳.۱۲ در صورت درخواست.gh-98692: اصلاح برنامهی مدیر نصب پایتون تا بهجای رفتار با خطهای مفسر (shebang lines) ناشناخته به عنوان مسیرهای محلی، آنها را نادیده بگیرد
gh-94328: بهروزرسانی برنامهی نصب ویندوز برای استفاده از SQLite 3.39.4.
مکاواس¶
gh-94328: بهروزرسانی برنامهی نصب مکاواس به SQLite 3.39.4.
رابط C API¶
gh-98724: ماکروهای
Py_CLEAR،Py_SETREFوPy_XSETREFاکنون آرگومان خود را تنها یک بار ارزیابی میکنند. اگر آرگومان دارای عوارض جانبی باشد، این عوارض جانبی دیگر تکرار نمیشوند. وصله توسط Victor Stinner.gh-98978: رفع خطای استفاده پس از آزادشدن (use-after-free) در فراخوانی توابع
Py_SetPythonHome(NULL)،Py_SetProgramName(NULL)و_Py_SetProgramFullPath(NULL). این مسئله توسط Benedikt Reinartz گزارش شده است. وصله توسط Victor Stinner.gh-98410: افزودن
getbufferprocوreleasebufferprocبه API پایدار.gh-98610: برخی قابلیتهای قابلتنظیم زیرمفسرها تغییر کردهاند. آنها اکنون همیشه زیرفرایندها (
subprocess) را مجاز میدانند، در حالی که پیشتر اجازه دادن به زیرفرایندها برای یک زیرمفسر اختیاری بود. در عوض اکنون میتوانos.exec()را غیرمجاز کرد. غیرمجاز کردن نخهای دیمن اکنون پشتیبانی میشود. غیرمجاز کردن تمام نخها همچنان مجاز است، اما بهطور پیشفرض هرگز انجام نمیشود. توجه داشته باشید که محدودیتهای اختیاری تنها از طریق_Py_NewInterpreterFromConfig()در دسترس هستند که یک API عمومی نیست. آنها نه روی مفسر اصلی و نه رویPy_NewInterpreter()تأثیری نمیگذارند.gh-98608: یک
_PyInterpreterConfigاضافه شده است و_Py_NewInterpreter()به_Py_NewInterpreterFromConfig()تغییر نام داده است. آرگومان "isolated_subinterpreters" اکنون یک پیکربندی جزئی (granular config) است که رفتار قبلی را ثبت میکند. توجه داشته باشید که این موارد همگی API «خصوصی» هستند.gh-96853: تابع
Py_InitializeExاکنون پس از مقداردهی اولیه مفسر، تابعPyConfig_Clearرا به درستی فراخوانی میکند (این غفلت تنها به این دلیل باعث نشت حافظه نمیشد که هیچیک از فیلدهای پیکربندی تخصیصیافته به صورت پویا توسط تابع پوششی پر نمیشوند)gh-91248: افزودن توابع
PyFrame_GetVar()وPyFrame_GetVarString()برای دریافت متغیر قاب بر اساس نام آن. وصله توسط Victor Stinner.
Python 3.12.0 alpha 1¶
Release date: 2022-10-25
امنیت¶
gh-97616: رفع مشکل ضرب یک فهرست در یک عدد صحیح (
list *= int): تشخیص سرریز عدد صحیح هنگامی که طول جدید تخصیصیافته به اندازهی حداکثر نزدیک است. این مسئله توسط Jordan Limor گزارش شده است. وصله توسط Victor Stinner.gh-97514: در لینوکس، ماژول
multiprocessingبرای ارتباط با فرایند forkserver بهجای استفاده از فضای نام سوکت انتزاعی لینوکس، دوباره به استفاده از سوکتهای دامنهی یونیکس مبتنی بر سامانه فایلبندی بازمیگردد. تنها کدهایی تحت تأثیر قرار میگیرند که تصمیم بگیرند از روش شروع "forkserver" استفاده کنند.سوکتهای انتزاعی هیچ مجوزی ندارند و میتوانند به هر کاربری در سیستم که در همان network namespace قرار دارد (اغلب کل سیستم) اجازه دهند کد را به فرایند forkserver در پردازش چندگانه (multiprocessing) تزریق کند. این یک ارتقای سطح دسترسی بالقوه بود. مجوزهای سوکت مبتنی بر سامانه فایلبندی، این دسترسی را به کاربر فرایند forkserver محدود میکند، همانطور که در پایتون ۳.۸ و نسخههای پیشین پیشفرض بود.
این کار از لینوکس CVE 2022-42919 جلوگیری میکند.
gh-87389:
http.server: رفع یک آسیبپذیری تغییر مسیر باز در سرور HTTP هنگامی که یک مسیر URI با//شروع میشود. آسیبپذیری توسط Hamza Avvan کشف شد و اصلاح اولیهی آن پیشنهاد شد.gh-79096: کتابخانههای LWPCookieJar و MozillaCookieJar پروندهها را با حالت پروندهی 600 بهجای 644 ایجاد میکنند (مایکروسافت ویندوز تحت تأثیر قرار نمیگیرد)
gh-92888: رفع استفادهی
memoryviewپس از آزادسازی هنگام دسترسی به بافر زیرین در برخی موارد.gh-68966: ماژول منسوخ mailcap اکنون از تزریق متن ناامن (نام پروندهها، انواع MIME، پارامترها) به دستورات پوسته خودداری میکند. بهجای استفاده از چنین متنی، هشدار میدهد و طوری عمل میکند که انگار تطابقی پیدا نشده است (یا برای دستورات آزمون، طوری که انگار آزمون با شکست مواجه شده است).
هسته و توکارها (Core and Builtins)¶
gh-98374: سرکوب خطای ImportError برای پرسوجوی نامعتبر در دستور help(). وصله توسط Donghee Na.
gh-98461: رفع موقعیت منبع در بایتکد برای فهرستها، مجموعهها، لغتنامهها و همچنین عبارتهای تولیدگر.
gh-98354: بررسی یونیکد برای صفت
nameاز آرگومانspecارسالشده در تابع_imp.create_builtin()اضافه شد.gh-98398: رفع موقعیت منبع بایتکدهای 'assert'.
gh-98390: رفع موقعیت زیرعبارتهای عبارتهای بولی، با کاهش محدودهی آنها به محدودهی زیرعبارت.
gh-98254: ماژولهای کتابخانهی استاندارد اکنون بهطور بالقوه بهعنوان بخشی از پیامهای خطایی پیشنهاد میشوند که توسط مفسر هنگام بالا آمدن خطای
NameErrorتا بالاترین سطح نمایش داده میشوند. وصله توسط Pablo Galindogh-97997: اضافه کردن افست ستون در حال اجرا به حالت توکنساز برای جلوگیری از محاسبهی اطلاعات ستون درخت نحوی انتزاعی (AST) با حساب اشارهگر.
gh-97973: اصلاح توکنساز برای بازگرداندن تمام اطلاعات لازم مورد نیاز پارسر جهت تنظیم اطلاعات موقعیت در گرههای درخت نحوی انتزاعی (AST)، بهطوریکه پارسر مجبور نباشد آنها را با محاسبات اشارهگر انجام دهد.
کتابخانه¶
gh-96078: تابع
os.sched_yield()اکنون هنگام فراخوانی sched_yield(2) قفل GIL را آزاد میکند. وصله توسط Donghee Na.
هسته و توکارها (Core and Builtins)¶
gh-97912: کامپایلر اکنون از رفتار درجهی دوم هنگام یافتن دستوراتی که باید از آپکد
LOAD_FAST_CHECKاستفاده کنند، جلوگیری میکند.gh-97002: رفع مشکلی که در آن چندین شیء قاب میتوانستند توسط یک قاب مفسر پشتیبانی شوند که احتمالاً منجر به حافظهی خراب و فروپاشیهای جدی مفسر میشد.
gh-97943: رفع اشکال: تابع
PyFunction_GetAnnotations()باید یک ارجاع امانتی بازگرداند. این تابع یک ارجاع جدید بازمیگرداند.gh-97922: جمعآور زباله اکنون تنها روی مکانیسم شکن ارزیابی حلقهی بایتکد پایتون اجرا میشود، نه در هنگام تخصیص شیء. همچنین جمعآور زباله میتواند هنگام فراخوانی
PyErr_CheckSignals()اجرا شود؛ بنابراین افزونههای C که باید برای مدت طولانی بدون اجرای هیچ کد پایتونی اجرا شوند نیز این فرصت را دارند که جمعآور زباله را بهطور دورهای اجرا کنند.gh-65961: هنگامی که مقدار
__package__با__spec__.parentمتفاوت است، بهجایImportWarningیکDeprecationWarningبالا بیاورید.همچنین تابع
importlib.util.set_package()که برای حذف برنامهریزی شده بود، حذف شد.gh-97850: تابع
module_repr()که مدتها منسوخ شده بود، اکنون باید کاملاً پاکسازی شود.gh-86298: در مواردی که تابع
warnings.warn_explicit()بارگذار ماژول را بررسی میکند، اگر مقدارm.__loader__باm.__spec__.loaderمتفاوت باشد، یکDeprecationWarningصادر میشود.gh-97779: اطمینان حاصل کنید که تمام اشیاء قاب پایتون توسط قابهای «کامل» پشتیبانی میشوند.
gh-91052: افزودن API برای اشتراک در رویدادهای تغییرات روی دیکشنریهای انتخابشده.
gh-97752: رفع خرابی یا فساد احتمالی داده هنگام دسترسی به عضو
f_backدر قابهای تولیدگر یا همروال تازه ایجاد شده.gh-97591: رفع یک جفت incref/decref گمشده در
Exception.__setstate__(). وصله توسط Ofey Chan.gh-97670: حذف تابع
sys.getdxp()و اسکریپتTools/scripts/analyze_dxp.py. عبارت DXP مخفف «جفتهای اجرای پویا» (dynamic execution pairs) است. آنها به ماکروهایDYNAMIC_EXECUTION_PROFILEوDXPAIRSمربوط بودند که در پایتون ۳.۱۱ حذف شدهاند. پایتون اکنون میتواند با./configure --enable-pystatsبرای جمعآوری آمار در مورد آپکدهای پایتون ساخته شود. وصله توسط Victor Stinner.gh-94526: رفع پیکربندی مسیر پایتون که برای مقداردهی اولیهی
sys.pathدر زمان راهاندازی پایتون استفاده میشود. مسیرها دیگر به UTF-8/strict کدگذاری نمیشوند تا در صورت داشتن نویسههای جانشین، از خطاهای کدگذاری جلوگیری شود (مسیرهای بایت با هندلر خطای surrogateescape رمزگشایی میشوند). وصله توسط Victor Stinner.gh-96670: پارسر اکنون هنگام تجزیهی کد منبع حاوی بایتهای تهی، یک
SyntaxErrorبالا میآورد. وصله توسط Pablo Galindogh-96975: رفع یک فروپاشی که هنگام فراخوانی
PyEval_GetFrame()در حالی که بالاترین قاب پایتون در حالت تا حدی مقداردهیشده است، رخ میدهد.gh-96848: رفع تجزیهی خط فرمان: رد کردن گزینهی
-X int_max_str_digitsبدون مقدار (نامعتبر) زمانی که متغیر محیطیPYTHONINTMAXSTRDIGITSروی یک حد معتبر تنظیم شده است. وصله توسط Victor Stinner.gh-95921: رفع اطلاعات موقعیت منبع بیش از حد گسترده برای مقایسههای زنجیرهای که به عنوان شرایط انشعاب استفاده میشوند.
کتابخانه¶
gh-96821: رفع رفتار تعریفنشده در
audioop.c.
هسته و توکارها (Core and Builtins)¶
gh-96821: رفع رفتار تعریفنشده در
_testcapimodule.c.gh-95778: هنگامی که
ValueErrorبه دلیل بزرگتر بودن یک عدد صحیح از حد مجاز بالا میآید، تابعsys.set_int_max_str_digits()را در پیام خطا ذکر کنید. وصله توسط Victor Stinner.gh-96387: در هنگام خروج پایتون، گاهی اوقات نخی که GIL را در اختیار دارد میتواند برای همیشه منتظر نخی (معمولاً یک نخ دِیمِن) بماند که درخواست رها کردن GIL را داده است، در حالی که آن نخ قبلاً خارج شده است. برای رفع مشکل رقابت، نخی که درخواست رها کردن GIL را داده بود اکنون درخواست خود را قبل از خروج بازنشانی میکند. این مسئله توسط Mingliang ZHAO کشف و تحلیل شد. وصله توسط Victor Stinner.
gh-96864: رفع شکست احتمالی ادعا، خطای مهلک، یا
SystemErrorاگر یک رویداد ردیابی سطر در حالی که ردیابی آپکد فعال است، یک استثنا ایجاد کند.gh-95778: تابع
PyLong_FromStringبازنویسی شد تا قابل نگهداریتر و قابل توسعهتر شود.gh-96678: رفع رفتار تعریفنشده در کد C مربوط به حساب اشارهگر تهی.
gh-96754: اطمینان حاصل کنید که تمام شیءهای قاب (frame objects) ایجادشده از قابهای معتبر مفسر ایجاد شدهاند. این کار از احتمال وجود قابهای نامعتبر در پشتههای ردیابی (backtraces) و هندلرهای سیگنال جلوگیری میکند.
gh-90997: بهبود کارایی خواندن و نوشتن نهانگاههای بایتکد درونخطی (inline bytecode caches) در برخی پلتفرمها.
gh-96751: حذف کد مرده از آپکد
CALL_FUNCTION_EX.gh-90751:
memoryviewاکنون از اعداد اعشاری نیمدقت (half-floats) پشتیبانی میکند. وصله (patch) توسط Donghee Na و Antoine Pitrou.gh-96678: رفع حالت رفتار تعریفنشده در ceval.c
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
gh-96636: اطمینان حاصل کنید که ردیابی (tracing)، یعنی
sys.setrace()، بلافاصله روشن میشود. در نسخههای پیش از انتشار ۳.۱۱، ممکن است برخی رویدادهای ردیابی هنگام فعالسازی ردیابی در یک متد__del__یا وقفه از دست رفته باشند.gh-96572: رفع خطای استفاده پس از آزاد کردن (use after free) در حالت ساختِ مرجعهای رد (trace refs build mode). وصله (patch) توسط Kumar Aditya.
gh-96611: هنگام بارگذاری یک پرونده با کدگذاری نامعتبر UTF-8 در یک رشتهی چندخطی، یک خطای SyntaxError صحیح صادر میشود.
gh-96612: اطمینان حاصل کنید که قابهای ناقص در ردپاهای tracemalloc نمایش داده نشوند.
gh-90230: رفع اخطارهای کامپایلر و خطاهای آزمون هنگام ساخت با
--enable-pystats.gh-96587: رفع خطای صادر کردن
SyntaxErrorروی گروههای استثنا (PEP 654) در نسخههای پایتون پیش از ۳.۱۱gh-96569: با افزودن بررسیهای NULL، دو مورد از رفتار تعریفنشده حذف شد.
gh-96582: رفع احتمال عدم ارجاع به اشارهگر
NULLدر_PyThread_CurrentFrames. وصله (patch) توسط Kumar Aditya.gh-91079: جداسازی بررسی بازگشتی (recursion) پایتون از بررسی بازگشتی C، که احتمال سرریز پشتهی C را کاهش میدهد و اجازه میدهد حد بازگشت با ایمنی افزایش یابد.
gh-93911: رفع مسئلهای که میتواند مانع از تخصصیسازی درست
LOAD_ATTRهنگام دسترسی به ویژگیها (properties) شود.gh-96348: صدور یک DeprecationWarning زمانی که
throw()،throw()یاathrow()با بیش از یک آرگومان فراخوانی شوند.gh-95196: غیرفعال کردن ترشیسازی (pickling) نادرست توصیفگرهای classmethod پیادهسازیشده با C.
gh-96364: رفع امضاهای متنی
list.__getitem__وdict.__getitem__.gh-96352: برطرفسازی مشکل نبودن ویژگیهای
nameوobjدرAttributeErrorدرونobject.__getattribute__(). اصلاحیه از Philip Georgi.gh-93554: تغییر آپکدهای پرش به گونهای که تمامی پرشهای شرطی به سمت جلو باشند. پرشهای به سمت عقب توسط اسمبلر به یک پرش شرطی رو به جلو تبدیل میشوند که مقصد آن بلوک ریزش (با شرط معکوس) است و به دنبال آن یک پرش بدون شرط رو به عقب قرار میگیرد. برای نمونه:
عبارت
POP_JUMP_IF_TRUE BACKWARD_TARGETبهPOP_JUMP_IF_FALSE NEXT_BLOCK; JUMP BACKWARD_TARGETتبدیل میشود.تمامی آپکدهای پرش شرطی جهتدار حذف شدند:
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.آپکدهای متناظر بدون جهت دیگر شبهدستور (pseudo-instruction) نیستند و پرشهای شرطی رو به جلو را پیادهسازی میکنند.
gh-96268: بارگذاری یک پرونده با UTF-8 نامعتبر اکنون نویسهی خراب را در مکان صحیح گزارش میدهد.
gh-96237: فیلد داخلی
_PyInterpreterFrame.f_funcبه_PyInterpreterFrame.f_funcobjتغییر نام داده است و میتواند هر شیءای باشد. فیلدهایf_globalsوf_builtinممکن است مقادیر هرز نگه دارند.امنترین کار این است که ساختار (struct)
_PyInterpreterFrameرا به صورت کدر (opaque) در نظر بگیرید.gh-96187: رفع باگی که باعث میشد
_PyCode_GetExtraبرای اندیسهای منفی مقادیر زباله برگرداند. اصلاحیه از Pablo Galindogh-96143: افزودن یک گزینهی جدید خط فرمان پایتون به نام
-X perfو همچنین توابعsys.activate_stack_trampoline()وsys.deactivate_stack_trampoline()در ماژولsysکه اجازه میدهد مفسر به گونهای تنظیم/تنظیمزدایی شود که پروفایلگیرperfلینوکس بتواند فراخوانیهای پایتون را شناسایی کند. تابع جدیدsys.is_stack_trampoline_active()امکان استعلام وضعیت ترامپولین perf را فراهم میکند. طراحی از Pablo Galindo. اصلاحیه از Pablo Galindo و Christian Heimes با مشارکتهای Gregory P. Smith [Google] و Mark Shannon.gh-96071: برطرفسازی بنبست در
PyGILState_Ensure()هنگام تخصیص وضعیت نخ جدید. اصلاحیه از Kumar Aditya.gh-96046: تابع
PyType_Ready()اکنونht_cached_keysرا مقداردهی اولیه کرده و بررسیهای اضافی را برای اطمینان از پیکربندی درست اشیاء نوع انجام میدهد. این کار از بروز خرابی در بستههای شخص ثالثی که از API معمولی برای ایجاد انواع جدید استفاده نمیکنند، جلوگیری میکند.gh-96005: روی WASI مقدار
ENOTCAPABLEاکنون بهPermissionErrorنگاشت میشود. ماژولerrnoشماره خطای جدید را آشکار میکند. پروندهیgetpath.pyاکنون هنگام ناتوانی در باز کردن پروندههای نشانه (landmark) یعنیpybuilddir.txtوpyenv.cfg، خطایPermissionErrorرا نادیده میگیرد.gh-93678: یک ابزار آزمون برای آزمونهای واحد مستقیم مرحلهی بهینهسازی کامپایلر اضافه شد. تابع
_testinternalcapi.optimize_cfg()بهینهساز را روی دنبالهای از دستورات اجرا میکند. کلاسCfgOptimizationTestCaseدرtest.supportابزارهایی برای فراخوانی بهینهساز و بررسی خروجی دارد.gh-95245: اندازهی یک شیء «سادهی» پایتون را با انتقال اشارهگر weakreflist به درون سرآیند مقدماتی مستقیماً قبل از اشارهگر dict/values شیء، از ۸ کلمه به ۶ کلمه کاهش میدهد.
gh-90997: کامپایل بلوکهای مجازی
try/exceptبرای مدیریت استثناهای بالاآمده طی فراخوانیهایclose()یاthrow()از طریق یک فریم معلق.gh-95977: بهینهسازی فراخوانی
__get__()با vectorcall. اصلاحیه از Kumar Aditya.gh-91210: بهبود پیام خطا هنگامی که یک پارامتر بدون مقدار پیشفرض به دنبال پارامتری با مقدار پیشفرض میآید، و نمایش همان پیام حتی زمانی که دنباله غیرپیشفرض/پیشفرض با پارامترهای فقطجایگاهی پیشوند شده باشد.
gh-95922: رفع باگی که در آن تابع
eliminate_empty_basic_blocksکامپایلر، آخرین بلوک واحد کد را نادیده میگیرد.gh-95818: رد شدن از فریمهای ناقص در
PyThreadState_GetFrame().gh-95876: رفع رشتهی قالببندی در
_PyPegen_raise_error_known_locationکه میتواند در برخی از سیستمهای ۶۴ بیتی منجر به خرابی حافظه شود. این تابع به جای ساختن یک تاپل باi(از نوع int) برای آرگومانهای Py_ssize_t، ازn(از نوع Py_ssize_t) استفاده میکرد.gh-95605: رفع محتوای گمراهکنندهی پیام خطا هنگام تبدیل کردن یک رشتهی شامل تمامفاصله به
float.gh-95150: بهروزرسانی درهمسازی و برابری شیء کد برای در نظر گرفتن تمام جدولهای اشکالزدایی و مدیریت استثنا. این تغییر مشکلی را برطرف میکند که در آن برخی از شیءهای کد غیریکسان ممکن است در طول کامپایل «مضاعفزدایی» شوند.
gh-91146: کاهش اندازهی تخصیص
listازstr.split()وstr.rsplit(). وصله توسط Donghee Na و Inada Naoki.gh-87092: ایجاد یک انتزاع «برچسب هدف پرش» در کامپایلر به طوری که مرحلهی تولید کد کامپایلر مستقیماً با بلوکهای پایهای کار نکند. این کار کد را برای تغییرات در مکانیسم تولید CFG زیربنایی آماده میکند.
gh-95355: تابع
_PyPegen_Parser_Newاکنون خطاهای تخصیص حافظهی توکن را به درستی شناسایی میکند. وصله توسط Honglin Zhu.gh-90081: اجرای کد پایتون در تابع ردیاب/پروفایلگیر با سرعت کامل. کندی سرعت در نسخههای قبلی ۳.۱۱ را برطرف میکند.
gh-95324: انتشار یک هشدار در حالت اشکالزدایی اگر یک شیء پیش از آزادسازی،
PyObject_GC_UnTrack()را فراخوانی نکند. وصله توسط Pablo Galindo.gh-95245: ادغام دیکشنری مدیریتشده و اشارهگر مقادیر به یک اشارهگر برچسبدار واحد برای ذخیرهسازی یک کلمه در سرآیند پیشفرض.
gh-93678: افزودن ساختار cfg_builder و بازسازی کد مربوط به آن به طوری که یک cfg بدون نیاز به یک نمونه از ساختار کامپایلر ساخته شود.
gh-95185: جلوگیری از فروپاشیها در سازندهی درخت نحوی انتزاعی (AST) هنگام کامپایل کردن برخی عبارتهای بهطرز خندهداری طولانی مانند
"+0"*1000000. اکنون به جای آنRecursionErrorبالا آورده میشود. وصله توسط Pablo Galindogh-93351: موقعیتهای گره
ast.ASTاکنون هنگام ارائه بهcompile()و سایر عملکردهای مرتبط اعتبارسنجی میشوند. اگر موقعیتهای نامعتبر شناسایی شوند، یکValueErrorبالا آورده خواهد شد.gh-94438: رفع مشکلی که باعث میشد آرگومانهای آپکد توسعهیافته و برخی پاپهای شرطی هنگام محاسبهی اهداف پرش معتبر برای انتسابها به ویژگی
f_linenoشیءهای قاب نادیده گرفته شوند. در برخی موارد، این امر میتواند باعث ایجاد وضعیت داخلی نامتوازن شود که به فروپاشی شدید مفسر میانجامد.gh-95060: تابع مستندسازنشدهی
PyCode_Addr2Locationاکنون وقتی آرگومانaddrqکمتر از صفر است، به درستی مقداری را برمیگرداند.gh-95113: جایگزینی تمامی دستورورالعملهای
EXTENDED_ARG_QUICKبا دستورالعملهای پایهایEXTENDED_ARGدر کدهای تسریعنشده. مصرفکنندگان بایتکد غیرانطباقی باید بتوانند آرگومانهای توسعهیافته را به همان شکلی که در سیپایتون ۳.۱۰ و نسخههای قدیمیتر مدیریت میشدند، مدیریت کنند.gh-91409: رفع اطلاعات نادرست مکان منبع ناشی از بهینهسازیهای خاص در کامپایلر بایتکد.
کتابخانه¶
gh-95023: پیادهسازی
os.setns()وos.unshare()برای لینوکس. وصله توسط Noam Cohen.
هسته و توکارها (Core and Builtins)¶
gh-94036: رفع اطلاعات نادرست مکان منبع برای برخی از دسترسیهای ویژگی و فراخوانیهای متد چندسطری.
gh-94938: رفع خطای تشخیص در برخی توابع توکار هنگامی که نام آرگومان کلیدواژهای نمونهای از یک زیرکلاس str با
__eq__و__hash__سربارگذاریشده است. پیش از این میتوانست باعث SystemError یا رفتارهای ناخواستهی دیگر شود.
کتابخانه¶
gh-94996: تابع
ast.parse()دیگر تعاریف تابع با پارامترهای صرفاً جایگاهی را وقتیfeature_versionکمتر از(3, 8)ارسال شود، تجزیه نخواهد کرد. وصله توسط Shantanu Jain.
هسته و توکارها (Core and Builtins)¶
gh-94739: امکان پرش به درون، خارج و میان هندلرهای استثنا در اشکالزدا را فراهم میکند.
کتابخانه¶
gh-94949: تابع
ast.parse()هنگامی کهfeature_versionکمتر از(3, 9)به آن داده شود، دیگر مدیر زمینههای پرانتزگذاریشده را تجزیه نخواهد کرد. وصلهای از Shantanu Jain.gh-94947: تابع
ast.parse()هنگامی کهfeature_versionکمتر از(3, 8)به آن داده شود، دیگر عبارات انتساب را تجزیه نخواهد کرد. وصلهای از Shantanu Jain.
هسته و توکارها (Core and Builtins)¶
gh-91256: تضمین میکند که در طول راهاندازی مفسر، نام برنامه برای متن راهنما شناختهشده باشد.
gh-94869: آفستهای ستون برای برخی عبارات در گرههای
astمربوط به افاسترینگهای چندسطری را اصلاح میکند. وصلهای از Pablo Galindo.gh-94893: مسئلهای را اصلاح میکند که در آن دستکاریهای شیء قاب میتوانست نهانگاههای بایتکد درونخطی را خراب کند.
gh-94822: مسئلهای را اصلاح میکند که در آن ممکن است جستوجوهای توصیفگر فراکلاس نادیده گرفته شوند، در حالی که ویژگیای با نام مشابه نیز روی خود کلاس وجود دارد.
gh-91153: مسئلهای را اصلاح میکند که در آن انتساب یک آیتم به
bytearrayممکن است در صورت تغییر اندازه توسط متد__index__()مقدار جدید، باعث فروپاشی شود.gh-90699: اشکال شمارش ارجاع را در
bool.__repr__()اصلاح میکند. وصلهای از Kumar Aditya.gh-94694: مسئلهای را اصلاح میکند که میتوانست باعث شود کدهایی با جستوجوی متدهای چندسطری، اطلاعات آفست ستون گمراهکننده یا نادرستی داشته باشند. در برخی موارد (هنگام کامپایل یک درخت نحوی انتزاعی (AST) دستساز)، این امر میتوانست منجر به فروپاشی شدید مفسر شود.
gh-93252: مسئلهای را اصلاح میکند که باعث میشد قابهای داخلی بیشتر از فراخوانیهای ناموفق عملکردهای پایتون عمر کنند و احتمالاً منجر به نشت حافظه یا فروپاشی شدید مفسر شود.
gh-94215: مسئلهای را اصلاح میکند که در آن استثناهای ایجادشده توسط رویدادهای ردیابی سطر باعث میشد قابها در وضعیتی نامعتبر باقی بمانند و احتمالاً منجر به فروپاشی شدید مفسر شود.
gh-92228: بهینهسازی بلوکهای خروج کوچک درونخطی کامپایلر را برای بلوکهای خروجی که با سطرهای کد منبع مرتبط هستند، غیرفعال میکند. این کار باگ مربوط به ناتوانی اشکالزدا در تشخیص محل پایان هندلر استثنا و شروع بلوک کد بعدی را اصلاح میکند.
gh-94485: شماره سطر دستور
RESUMEیک ماژول، همانطور که در PEP 626 مشخص شده است، روی ۰ تنظیم میشود.gh-94438: دستوراتی را که میتوانند هنگام تنظیم شماره سطر در یک قاب، مقدار NULL را به پشته بفرستند، در نظر میگیرد. از برخی فروپاشیهای (بعید) جلوگیری میکند.
gh-91719: بارگذاری مجدد
opcodeهنگام بالا بردنunknown opcode errorدر حلقه اصلی مفسر، برای کامپایلرهای C جهت تولید مستقل کد توزیع.gh-94329: کد را با باز کردن بستهی دنبالههای بسیار بزرگ (هزاران عنصر) کامپایل و اجرا میکند. چنین کدهایی در کامپایل ناموفق بودند. اکنون به درستی کامپایل و اجرا میشوند.
gh-94360: فروپاشی توکنساز هنگام خواندن پروندههای رمزگذاریشده با خطاهای سینتکسی از
stdinبا متن رمزگذارینشده با utf-8 اصلاح شد. وصلهای از Pablo Galindogh-88116: مسئلهی خواندن شماره سطرها از اشیای کد در صورت نزدیک بودن شماره سطرهای رمزگذاریشده به
INT_MINرا اصلاح میکند. وصلهای از Pablo Galindogh-94262: برای قابهای ناقص، اشیای قاب ایجاد نکنید. از قابل مشاهده شدن ایجاد تولیدگرها و بستارها برای پایتون و افزونههای C جلوگیری میکند و رفتار نسخه ۳.۱۰ و پیش از آن را بازیابی میکند.
gh-94192: رفع خطا برای مقادیر لفظی دیکشنری که دارای عبارت نامعتبر به عنوان مقدار هستند.
gh-87995: نمونههای
types.MappingProxyTypeاکنون در صورتی که نگاشت زیرین هشپذیر باشد، هشپذیر هستند.gh-93883: بازنگری استراتژی نمایش موقعیتهای خطای بهبودیافته در ردگیری. نشانگرها فقط زمانی نمایش داده میشوند که موقعیت کل سطر را در بر نگیرد.
gh-94163: افزودن دستورات
BINARY_SLICEوSTORE_SLICEبرای مدیریت کارآمدتر و تخصصیسازی بهتر عملیات اسلایس، در مواردی که اسلایس در کد منبع صریح است.gh-94021: رفع هشدار کد دستنیافتنی در
Python/specialize.c.gh-93911: تخصصیسازی
LOAD_ATTRبرای اشیاء دارای__getattribute__سفارشی.gh-93955: بهبود کارایی جستجوی ویژگیها روی اشیاء دارای
__getattribute__و__getattr__سفارشی. وصله توسط Ken Jin.gh-93911: تخصصیسازی
LOAD_ATTRبرای ویژگیهایproperty().gh-93678: بازسازی کد بهینهسازی کامپایلر به طوری که دیگر نیازی به ارسال
struct assemblerوstruct compilerنداشته باشد. در عوض، هر تابع گراف جریان کنترل (CFG) و سایر دادههای مورد نیاز خود را دریافت میکند. این کار امکان آزمون مستقیم این کد را فراهم میکند.gh-93841: هنگامی که با
-enable-pystatsساخته میشود، توابعsys._stats_on()،sys._stats_off()،sys._stats_clear()وsys._stats_dump()اضافه شدهاند تا امکان جمعآوری آمار برای بخشهایی از برنامهها فراهم شود.gh-93516: ذخیرهی آفست نخستین دستور قابل ردگیری در شیء کد برای جلوگیری از محاسبهی مجدد آن به ازای هر دستور هنگام ردگیری.
gh-93516: ایجاد تنبلانهی جدول نگاشت آفستهای بایتکد به شماره سطرها برای تسریع محاسبهی شماره سطرها هنگام ردگیری.
gh-89828: کلاس
types.GenericAliasدیگر ویژگی__class__را بازنمیگرداند. برای مثال،isinstance(list[int], type)دیگرTrueرا برنمیگرداند.gh-93678: بازسازی کامپایلر برای کاهش کدهای پیشساخته و تکرار.
gh-93671: رفع برخی حالات ردگیری نمایی که با الگوهای دنبالهای بسیار تودرتو در دستورات match رخ میدهد. وصله توسط Pablo Galindo
gh-93662: اطمینان از درست بودن آفستهای ستون پایانی در فراخوانیهای متد چندخطی. پیشتر، ستون پایانی میتوانست قبل از آفست ستون قرار گیرد.
کتابخانه¶
gh-93461: تابع
importlib.invalidate_caches()اکنون ورودیها را ازsys.path_importer_cacheبا یک مسیر نسبی به عنوان نام حذف میکند. این کار یک مشکل نهانسازی را هنگامی که یک فرایند دایرکتوری کاری جاری خود را تغییر میدهد، حل میکند.FileFinderدیگر نقطهای را در مسیر درج نمیکند، برای مثال/egg/./spamاکنون به/egg/spamتبدیل شده است.
هسته و توکارها (Core and Builtins)¶
gh-93621: تغییر ترتیب دستورات بایتکد تولید شده برای
withوasync withبه منظور کاهش تعداد ورودیها در جدول استثنا.gh-93533: کاهش اندازهی نهانگاه درونخطی برای
LOAD_METHODبه میزان ۲ بایت.gh-93444: فیلدهای اضافی از struct مربوط به basicblock در کامپایلر حذف شدند:
b_nofallthrough،b_exit،b_return. این موارد را میتوان به راحتی از آپکد آخرین دستور بلوک محاسبه کرد.gh-93429: دستور
LOAD_METHODحذف شد. این دستور دوباره درLOAD_ATTRادغام شد.gh-93418: رفع یک خطا (assert) در حالتی که یک افاسترینگ شامل علامت مساوی '=' پس از یک عبارت است، اما هیچ آکلاد پایانی وجود ندارد. برای نمونه، f"{i=".
gh-93382: نتیجهی تابع
PyCode_GetCode()نهانگاه (cache) میشود تا جستجوی O(1) برای ویژگیco_codeبازیابی شود.gh-93359: اطمینان از اینکه گرههای سفارشی
astبدون موقعیتهای پایانی صریح میتوانند کامپایل شوند. پچ توسط Pablo Galindo.gh-93356: کد مربوط به هندلرهای استثنا در انتهای بایتکد واحد کد تولید (emitted) میشود. این کار از یک پرش زمانی که هیچ استثنایی رخ نمیدهد جلوگیری میکند.
gh-93354: استفاده از بازگشت نمایی (exponential backoff) برای شمارندههای اختصاصیسازی در مفسر. این کار میتواند تعداد اختصاصیسازیهای شکستخورده را به طور قابل توجهی کاهش دهد و از کندی سرعت برای آن بخشهایی از برنامه که برای اختصاصیسازی مناسب نیستند، جلوگیری کند.
gh-93283: بهبود پیام خطا برای نحو (syntax) نامعتبر نویسهی تبدیل در عبارتهای افاسترینگ.
gh-93345: رفع خرابی در جایگزینی یک
TypeVarدر مستعار عام تو در تو پس ازTypeVarTuple.gh-93223: هنگامی که یک دستور بایتکد به یک دستور پرش بیقید و شرط پرش میکند، اغلب میتوان دستور اول را به گونهای بهینهسازی کرد که مستقیماً هدف پرش بیقید و شرط را هدف قرار دهد. به دلایل ردیابی، این اتفاق قبلاً فقط در صورتی رخ میداد که هر دو دستور شماره سطر یکسانی داشته باشند. اکنون این اتفاق همچنین در صورتی رخ میدهد که پرش بیقید و شرط مصنوعی باشد، یعنی شماره سطر مرتبطی نداشته باشد.
gh-84694: گزینهی پیکربندی
--experimental-isolated-subinterpretersو کلاندستور (macro)EXPERIMENTAL_ISOLATED_SUBINTERPRETERSحذف شدند.gh-91924: رفع ویژگی اشکالزدایی
__lltrace__اگر کدگذاری stdout برابر با UTF-8 نباشد. پچ توسط Victor Stinner.gh-93040: پارامترهای استفادهنشده در
Objects/obmalloc.cباPy_UNUSEDپوشش داده میشوند.gh-93143: اجتناب از بررسیهای
NULLبرای متغیرهای محلی مقداردهینشده با تعیین زمان کامپایل اینکه کدام متغیرها باید مقداردهی شوند.gh-93061: پرشهای رو به عقب پس از حلقههای
async forدیگر شمارهسطرهای نامطمئنی دریافت نمیکنند.gh-93065: رفع پیادهسازی HAMT در contextvars برای مدیریت پیمایش روی درختهای عمیق.
این باگ توسط Eli Libman کشف و رفع شد. برای جزئیات بیشتر به MagicStack/immutables#84 مراجعه کنید.
gh-93012: تابع جدید
PyType_FromMetaclass()اضافه شد که تابع موجودPyType_FromModuleAndSpec()را با استفاده از یک آرگومان فراکلاس اضافی عمومیت میبخشد. این برای ابزارهای اتصال زبان مفید است، جایی که میتوان از آن برای رهگیری عملیات مربوط به نوع مانند زیرکلاسسازی یا دسترسی به ویژگی ایستا با مشخص کردن یک فراکلاس با جایگاههای سفارشی استفاده کرد.مهمتر از همه، تابع
PyType_FromMetaclass()در API محدود (Limited API) موجود است، که مسیری را برای مهاجرت ابزارهای اتصال بیشتر به سمت ABI پایدار (Stable ABI) فراهم میکند.gh-93021: رفع ویژگی
__text_signature__برای متدهای__get__()پیادهسازیشده در زبان C. پچ توسط Jelle Zijlstra.gh-89914: عملوند دستور
YIELD_VALUEروی عمق پشته تنظیم میشود. این کار برای کمک به مدیریت قاب درyieldانجام میشود و ممکن است به ابزارهای اشکالزدایی کمک کند.gh-92955: رفع نشت حافظه در پیمایشگرهای خطوط و موقعیتهای شیء کد به این دلیل که هنگام خروج نهاییسازی نمیشدند. وصله توسط Kumar Aditya.
gh-92930: رفع فروپاشی در
_pickle.cناشی از تغییر مجموعهها در طول__reduce__یاpersistent_id.gh-90690: دستور PRECALL حذف شده است. این دستور تنها مزیت کوچکی برای تخصصیسازی ارائه میداد و در بیشتر موارد نیازی به آن نیست.
gh-92914: همیشه اندازهی تخصیصیافته برای فهرستها را به نزدیکترین عدد زوج گرد کنید.
gh-92858: بهبود پیام خطا برای برخی بدنهها که خطای نحوی قبل از ':' دارند.
gh-90473: کاهش حد پیشفرض بازگشتی در WASI برای رسیدگی به اندازهی محدود پشتهی فراخوانی.
gh-92804: رفع نشت حافظه در پیمایشگر (iterator)
memoryview، زیرا در هنگام خروج نهاییسازی نشد. وصله توسط کومار آدیتیا (Kumar Aditya).gh-92777: تخصصیسازی
LOAD_METHODبرای اشیاء دارای لغتنامههای تنبل. وصلهی نوشتهشده توسط Ken Jin.gh-92658: افزودن پشتیبانی برای اتصال و باند کردن به سوکتهای Hyper-V روی میزبانها و مهمانهای ویندوز Hyper-V.
gh-92236: حذف رویداد ساختگی «LINE» هنگام شروع یک تولیدگر یا همروال، توابع ردیابی قابل مشاهده پیادهسازیشده در C.
کتابخانه¶
gh-91102: متد
_warnings.warn_explicit()به Argument Clinic پورت شد.
هسته و توکارها (Core and Builtins)¶
gh-92619: باعث میشود کامپایلر یک بلوک خروجی را فقط در صورتی تکرار کند که هیچیک از دستورات آن دارای lineno نباشند (پیشتر فقط اولین دستور موجود در بلوک بررسی میشد که منجر به تکثیر غیرضروری بلوکها میشد).
gh-88750: متغیر محیطی منسوخشدهی
PYTHONTHREADDEBUGکه مخصوص نسخهی ساخت اشکالزدایی بود، دیگر هیچ کاری انجام نمیدهد.
کتابخانه¶
gh-92261: رفع مشکل معلق ماندن هنگام تلاش برای پیمایش روی یک
typing.Union.
هسته و توکارها (Core and Builtins)¶
gh-91432: تخصصیسازی آپکد
FOR_ITERبا استفاده از سازوکار PEP 659gh-91399: حذف ورودی تکراری '{0, 0, 0, 0, 0, 0}' در 'Objects/unicodetype_db.h'.
gh-91578: بهروزرسانی پیام خطا برای کلاس انتزاعی.
bpo-47091: بهبود عملکرد تکرار
listوtupleبا استفاده ازmemcpyبرای کپی کردن دادهها و انجام افزایشهای ارجاع در یک مرحله.bpo-46142: با انتقال برخی اطلاعات به گزینههای جدید خط فرمان
--help-envو--help-xoptions، خروجی--helpرا کوتاهتر کنید. همچنین گزینهی--help-allرا برای چاپ نحوهی استفادهی کامل اضافه کنید.bpo-42316: مستندسازی برخی جاهایی که یک عبارت تخصیص به پرانتز نیاز دارد.
کتابخانه¶
gh-89237: رفع مشکل توقف اجرا (hang) در ویندوز در
subprocess.wait_closed()در ماژولasyncioهمراه باProactorEventLoop. وصله از Kumar Aditya.gh-97928: متد
tkinter.Text.count()اکنون برای گزینههایی که با "-" شروع میشوند به جای نادیده گرفتن بیصدا، یک استثنا پرتاب میکند.gh-98393: ماژول
osدیگر مسیرهای بایتمانند (bytes-like)، مانند انواعی چونbytearrayوmemoryviewرا نمیپذیرد: فقط نوع دقیقbytesبرای رشتههای بایتی پذیرفته میشود. وصله از Victor Stinner.gh-98363: تابع itertools.batched() اضافه شد تا دادهها را در فهرستهایی با طول مشخص دستهبندی کند، در حالی که آخرین فهرست ممکن است کوتاهتر از بقیه باشد.
gh-98331: نسخههای بستهبندیشدهی pip و setuptools به ترتیب به نسخههای 22.3 و 65.5.0 بهروزرسانی شدند.
gh-98307: یک متد
createSocket()بهSysLogHandlerاضافه شد.gh-96035: رفع باگ در
urllib.parse.urlparse()که باعث میشد شماره پورتهای خاصی که حاوی فاصله، زیرخط (underscore)، علامتهای مثبت و منفی یا ارقام غیر اسکی هستند، به اشتباه پذیرفته شوند.gh-98257: توابع
sys.setprofile()وsys.settrace()را بازورودپذیر (reentrant) کنید. آنها دیگر نمیتوانند با خطایRuntimeError("Cannot install a trace function while another trace function is being installed")شکست بخورند. وصله از Victor Stinner.gh-98251: به ماژول
venvاجازه دهید متغیرهایPYTHON*را بهensurepipوpipمنتقل کند وقتی که تأثیری روی وضوح مسیر ندارند.gh-94597: متدهای منسوخشدهی
asyncio.AbstractEventLoopPolicy.get_child_watcher()وasyncio.AbstractEventLoopPolicy.set_child_watcher()برای حذف در پایتون ۳.۱۴. وصله از Kumar Aditya.gh-98178: روی سیستمعامل macOS، رفع خرابی (crash) در
syslog.syslog()در برنامههای چندنخی. روی macOS، تابع libcsyslog()نخایمن (thread-safe) نیست، بنابراینsyslog.syslog()دیگر GIL را برای فراخوانی آن آزاد نمیکند. وصله از Victor Stinner.gh-44098: آزاد کردن GIL هنگام ایجاد اشیای
mmap.mmapروی یونیکس.gh-87730: پوشش دادن خطاهای شبکه بهطور سازگار در پشتیبانی FTP در urllib، بهطوریکه مجموعه آزمونها (test suite) زمانی که شبکه در دسترس است اما اینترنت عمومی قابل دسترس نیست، با خطا مواجه نشود.
gh-94597: کلاسهای پایشگر فرزند
MultiLoopChildWatcher،FastChildWatcherوSafeChildWatcherمنسوخ شدهاند و در پایتون ۳.۱۴ حذف خواهند شد. وصله از Kumar Aditya.gh-98023: تغییر پایشگر پیشفرض فرزند به
PidfdChildWatcherروی سیستمهای لینوکسی که از آن پشتیبانی میکنند. وصله از Kumar Aditya.gh-90985: پیشتر در نسخهی ۳.۱۱ ما
asyncio.Task.cancel("message")را منسوخ کردیم. متوجه شدیم که خیلی سختگیرانه عمل کردهایم و وضعیت منسوخبودن آن را لغو کردیم.gh-65961: صرفاً به
__cached__روی ماژولها اتکا نکنید؛ کد از__spec__.cachedنیز پشتیبانی خواهد کرد.gh-97646: جایگزینی
application/javascriptمنسوخشده باtext/javascriptدر ماژولmimetypes. به RFC 9239 مراجعه کنید. وصله از Noam Cohen.gh-97930: اعمال تغییرات از importlib_resources ۵.۸ و ۵.۹:
Traversable.joinpathیک پیادهسازی ملموس ارائه میدهد.as_fileاکنون از دایرکتوریهای منابع پشتیبانی میکند.gh-97850: توابع منسوخ
importlib.util.set_loader()وimportlib.util.module_for_loader()ازimportlib.utilحذف شدند.gh-97837: تغییر پیام هشدار منسوخشدگی در
unittestازIt is deprecated to return a value!=Noneبه
It is deprecated to return a value that is not None from a test casegh-97825: رفع خطای
AttributeErrorهنگامی کهsubprocess.check_output()با آرگومانinput=Noneو یکی از آرگومانهای encoding یا errors استفاده میشود.gh-97008: پیشنهادهای املایی برای
NameErrorوAttributeErrorکه از زمان gh-82711 فراهم شده بودند، اکنون توسط ماژول خالص پایتونیtracebackنیز صادر میشوند. آزمونهای مربوط به آن پیشنهادها اکنون هر دو پیادهسازی را اجرا میکنند تا از معادل بودن آنها اطمینان حاصل شود. وصله توسط کارل فریدریش بولتس-تیریک (Carl Friedrich Bolz-Tereick) و لوکاش لانگا (Łukasz Langa).gh-97799: ماژول
dataclassاکنون ازinspect.get_annotations()برای بررسی حاشیهنویسیها روی اشیای کلاس استفاده میکند.gh-97781: رابطهای منسوخ در
importlib.metadataحذف شدند (نقاط ورود دسترسییافته به شکل دیکشنری، ساخت دیکشنری ضمنی از دنبالهای از اشیایEntryPoint، قابلیت تغییرپذیری نتیجهیEntryPoints، دسترسی به نقطهی ورود از طریق اندیس).entry_pointsاکنون یک API سادهتر و مستقیمتر دارد (کهEntryPointsرا برمیگرداند).gh-96827: جلوگیری از ردگیریهای کاذب از
asyncioوقتی پاکسازی اجراکنندهی پیشفرض تا بعد از بسته شدن حلقه رویداد به تعویق میافتد (مثلاً در نتیجهی وقفهی صفحهکلید).gh-95534: متد
gzip.GzipFile.read()حدود ۱۰ درصد سریعتر خوانش را انجام میدهد.gh-97592: جلوگیری از فروپاشی در نسخهی C از
asyncio.Future.remove_done_callback()هنگامی که یک آرگومان نامطلوب ارسال میشود.gh-97545: اجرای سریعتر Semaphore.
gh-73588: رفع مشکل تولید نام پیشفرض برای
tkinter.Checkbutton. پیش از این، اگر آرگومانهای "name" و "variable" مشخص نمیشدند، دکمههای انتخابی در ابزارکهای والد مختلف میتوانستند نام کوتاه یکسان داشته باشند و وضعیت مشابهی را به اشتراک بگذارند. اکنون آنها به طور سراسری یکتا هستند.gh-96865: اصلاح Flag برای استفاده از حد CONFORM
این کار رفتار قبلی Flag را بازمیگرداند که به پرچمهای دارای مقادیر غیرترتیبی اجازه میداد با هم ترکیب شوند؛ به عنوان مثال:
class Skip(Flag): TWO = 2 EIGHT = 8
Skip.TWO | Skip.EIGHT -> <Skip.TWO|EIGHT: 10>
gh-97005: بهروزرسانی libexpat بستهبندیشده به نسخهی ۲.۴.۹
gh-85760: رفع شرط رقابت در
asyncioکه در آنprocess_exited()پیش ازpipe_data_received()فراخوانی میشد و منجر به خروجی ناسازگار میگردید. وصلهای از Kumar Aditya.gh-96704: هنگام فراخوانی هندلر استثنای
asyncioاز طرف یک وظیفه یا دستهی کالبک، مقدار صحیحcontextvars.Contextرا ارسال کنید. این تغییر یک متد جدید به نامget_contextبهTaskاضافه میکند و همچنین متد جدیدی با همین نام برایHandleدر نظر میگیرد. اگر این متد روی شیء وظیفه پیدا نشود (شاید به این دلیل که مربوط به کتابخانهی شخص ثالثی است که هنوز این متد را ارائه ندهچ است)، از زمینهی حاکم در زمان فراخوانی هندلر استثنا استفاده میشود.gh-96819: رفع بررسی در
multiprocessing.resource_trackerکه تضمین میکند طول نوشتن در یک پایپ بیشتر ازPIPE_BUFنباشد.gh-95865: کاهش میزان مصرف حافظهی
urllib.parse.quote_from_bytes()روی مقادیر بزرگ.مشارکت از Dennis Sweeney.
gh-96741: حاشیهنویسی نوع برای ویژگی دیتاکلاس
pstats.FunctionProfile.ncallsاصلاح شد تاstrباشد.gh-96734: بهروزرسانی پایگاه دادهی
unicodedataبه یونیکد ۱۵.۰.۰.gh-96735: رفع رفتار نامشخص در
struct.unpack().gh-46412: بهبود کارایی
bool(db)برای پایگاهدادههای بزرگ ndb/gdb. پیشتر این کارlen(db)را فراخوانی میکرد که روی تمام کلیدها پیمایش میکرد -- پاسخ (خالی بودن یا نبودن) پس از اولین کلید مشخص است.gh-96652: اصلاح پیادهسازی faulthandler برای
faulthandler.register(signal, chain=True)در صورتی که تابعsigaction()در دسترس نباشد: اگر هندلر سیگنال قبلی برابر با NULL است، آن را فراخوانی نکنید. وصلهای از Victor Stinner.gh-68163: اصلاح تبدیل
numbers.Rationalبهfloat.gh-96538: با بهرهگیری از پایداری نوع، توابع
bisect.bisect()را سرعت ببخشید.gh-96465: هشهای Fraction اکنون در حافظهی پنهان ذخیره میشوند.
gh-96079: در
typing، فیلد گمشدهیnameو مقدار نادرست__module__در _AnnotatedAlias اصلاح شد.gh-96415: مقدار
types._cell_factoryرا از فضای نام ماژول حذف کنید.gh-95987: اصلاح
reprزیرکلاسهایAny.gh-96388: رفع مشکل توابع گمشدهی سوکت در متد
__repr__کلاسsocket.gh-96385: اصلاح
TypeVarTuple.__typing_prepare_subst__. هنگام استفاده از بیش از یکTypeVarTuple، مانند[*T, *V]در جایگزینیهای مستعار نوع، خطایTypeErrorبالا برده نمیشد.gh-96142: افزودن
match_args،kw_only،slotsوweakref_slotبه_DataclassParams.gh-96073: در
inspect، جایگزینی بیش از حد مشتاقانهی "typing." در قالببندی حاشیهنویسیها اصلاح شد.gh-89258: افزودن متد
getChildren()به کلاسlogging.Logger، برای دریافت گزارشگیرهای فرزند مستقیم یک گزارشگیر.gh-96346: استفاده از حافظهی پنهان مضاعف برای الگوهای کامپایلشدهی RE.
gh-96349: رفع یک رگرسیون جزئی در عملکرد
threading.Event.__init__()gh-90467: اصلاح
asyncio.streams.StreamReaderProtocolبرای نگهداری ارجاع قوی به وظیفهی ایجادشده، بهطوریکه زبالهروبی نشودgh-96172: رفع یک باگ در
unicodedata: پیشترeast_asian_widthمقدار نادرستی برای نویسههای تخصیصنیافته و همچنین نویسههای تخصیصنیافتهی رزروشده برمیگرداند.gh-96159: رفع یک رگرسیون عملکردی در TimedRotatingFileHandler گزارشگیری. بررسی پروندههای خاص فقط زمانی انجام میشود که زمان چرخش فرا رسیده باشد.
gh-96175: رفع پارامتر استفادهنشدهی
localNameدر کلاسAttrدر ماژولxml.dom.minidom.gh-96145: افزودن AttrDict به ماژول JSON برای استفاده با object_hook.
gh-96052: رفع نحوهی پردازش اخطارهای کامپایلر (SyntaxWarning و DeprecationWarning) در
codeop.compile_command()هنگام بررسی ورودی ناقص. پیشتر این تابع اخطار صادر میکرد و یک SyntaxError بالا میآورد. اکنون برای ورودیهای ناقص، همیشهNoneرا بدون صدور هیچ اخطاری برمیگرداند.gh-96125: رفع شرط نادرستی که باعث میشود
sys.thread_info.nameروی پلتفرمهای pthread نادرست باشد.gh-96019: رفع یک باگ در اسکریپت
makeunicodedata.pyکه منجر به صرفهجویی فضایی در حدود ۱۳ کیبایت در ماژولunicodedata، بهویژه در دادههای تجزیهی نویسه شد.gh-95463: حذف یک تغییر ناسازگار از bpo-28080 که باعث ایجاد رگرسیونی شده بود که مقدار utf8 را در
ZipInfo.flag_bitsنادیده میگرفت. وصله توسط Pablo Galindo.gh-69142: افزودن کد قالب
%:zدر strftime (تولید افست منطقهی زمانی با دو نقطه بهعنوان جداکننده)، نگاه کنید به رفتار strftime() و strptime().gh-95899: اصلاح
asyncio.Runnerبرای فراخوانیasyncio.set_event_loop()فقط برای یک بار، جهت جلوگیری از فراخوانی مکررattach_loop()روی پایشگرهای فرزند. وصله توسط Kumar Aditya.gh-95736: اصلاح
unittest.IsolatedAsyncioTestCaseبرای تنظیم حلقه رویداد پیش از فراخوانی توابع راهاندازی. وصله توسط Kumar Aditya.gh-95865: افزایش سرعت
urllib.parse.quote_from_bytes()با جایگزینی درک فهرستی باmap().gh-95861: افزودن پشتیبانی از محاسبهی ضریب همبستگی اسپیرمن به تابع موجود statistics.correlation().
gh-95804: اصلاح هندلر خاموشی
loggingبهطوریکه ازMemoryHandler.flushOnCloseپیروی کند.gh-95704: هنگامی که یک وظیفه
asyncio.CancelledErrorرا میگیرد و خطای دیگری را بالا میآورد (raise میکند)، آن خطای دیگر بهطور کلی نباید بهصورت بیصدا سرکوب شود.gh-95149: شمارش
HTTPStatusتعدادی ویژگی برای نشان دادن دستهی وضعیت HTTP مثلاًHTTPStatus.OK.is_successارائه میدهد.gh-95609: بهروزرسانی بستهی pip همراه به نسخهی 22.2.2.
gh-95289: اصلاح
asyncio.TaskGroupبرای انتقال دادن استثنا زمانی کهasyncio.CancelledErrorتوسط یک مدیر زمینه با استثنای دیگری جایگزین شده است. وصله توسط Kumar Aditya و Guido van Rossum.gh-94909: اصلاح اتصال نادرست مسیرهای نسبی ویندوز با درایوها در سازندهی
pathlib.PurePath.gh-95385: سرعت بیشتر در
json.dumps()هنگامی که مرتبسازی کلیدها درخواست نشده است (پیشفرض).gh-83901: بهبود پیام خطای
Signature.bindبرای آرگومانهای فقط-کلیدواژهی گمشده.gh-95339: بهروزرسانی بستهی pip همراه به نسخهی 22.2.1.
gh-95045: اصلاح فروپاشی GC هنگام آزاد کردن
_lsprof.Profilerاز طریق لغو ردیابی آن پیش از فراخوانی هرگونه کالبک. وصله توسط Kumar Aditya.gh-95231: شکست به شیوهای مناسب اگر هنگام بارگذاری متدهای
cryptاستثنایEPERMیاENOSYSبالا برود. این اتفاق ممکن است هنگام تلاش برای بارگذاریMD5روی یک هستهی لینوکس با فعال بودن FIPS رخ دهد.gh-95097: اصلاح
asyncio.run()برای پیادهسازیهایasyncio.Taskبدون متدuncancel(). وصله توسط Kumar Aditya.gh-95087: اصلاح خطای IndexError در تجزیهی تاریخ نامعتبر در ماژول
email.gh-95199: ارتقای بستهی setuptools همراه به نسخهی 63.2.0.
gh-95194: ارتقای بستهی pip همراه به نسخهی 22.2.
gh-93899: اصلاح بررسی وجود پرچمهای
os.EFD_CLOEXEC،os.EFD_NONBLOCKوos.EFD_SEMAPHOREدر نسخههای قدیمیتر هسته که این پرچمها در آنها حضور ندارند. وصله توسط Kumar Aditya.gh-95166: اصلاح
concurrent.futures.Executor.map()برای لغو future ای که در حال حاضر در انتظار است در صورت بروز خطا - به عنوان مثال TimeoutError یا KeyboardInterrupt.gh-95132: اصلاح رگرسیون
sqlite3که در آن*argsو**kwdsبهطور نادرست ازconnect()به کارخانهیConnectionمنتقل میشدند. این رگرسیون در نسخهی 3.11a1 با PR 24421 (gh-85128) معرفی شد. وصله توسط Erlend E. Aasland.gh-93157: اصلاح اینکه ماژول
fileinputاز گزینهیerrorsهنگامی کهinplaceبرابر با True است پشتیبانی نمیکرد.gh-91212: اصلاح سوسو زدن پنجرهی لاکپشت (turtle) هنگامی که ردیاب خاموش است. وصله توسط Shin-myoung-serp.
gh-95077: افزودن هشدار منسوخسازی برای دسترسی به عضو enum از طریق
member.member(بهعنوان مثالColor.RED.BLUE). حذفEnumMeta.__getattr__.gh-95109: اطمینان از اینکه مهلتهای زمانی زمانبندیشده با
asyncio.Timeoutکه از پیش منقضی شدهاند، بهسرعت تحویل داده شوند.gh-95105: متد
wsgiref.types.InputStream.__iter__()بایدIterator[bytes]را برگرداند، نهIterable[bytes]. وصله توسط Shantanu Jain.gh-95066: جایگزینی assert با استثنا در
ast.parse()هنگامی کهfeature_versionدارای یک نسخهی اصلی نامعتبر است. اصلاحیه از Shantanu Jain.gh-77617: افزودن رابط خط فرمان به
sqlite3. اصلاحیه از Erlend Aasland.gh-95005: جایگزینی _PyAccu با _PyUnicodeWriter در کدگذار JSON و StringIO و حذف پیادهسازی _PyAccu.
gh-90085: حذف گزینههای رابط خط فرمان
-c/--clockو-t/--timeازtimeit. این گزینهها از نسخهی ۳.۳ پایتون منسوخ شده بودند و قابلیت آنها در نسخهی ۳.۷ حذف شد. اصلاحیه از Shantanu Jain.gh-94857: رفع نشت حافظه (refleak) در
_io.TextIOWrapper.reconfigure. اصلاحیه از Kumar Aditya.gh-94821: اصلاح اتصال سوکت یونیکس به آدرس خالی در لینوکس به نحوی که به جای "0" از یک آدرس موجود در فضای نام انتزاعی استفاده کند.
gh-94736: رفع فروپاشی هنگام زدودن تخصیص نمونهای از زیرکلاس
_multiprocessing.SemLock. اصلاحیه از Kumar Aditya.gh-81620: افزودن random.binomialvariate().
gh-74116: اجازه دادن به
asyncio.StreamWriter.drain()تا به طور همزمان توسط چندین وظیفه منتظر بماند. اصلاحیه از Kumar Aditya.gh-87822: هنگامی که با
capture_locals=Trueفراخوانی شود، توابع ماژولtracebackاستثناهای پرتابشده از فراخوانیهایrepr()را روی متغیرهای محلی قابها نادیده میگیرند. این کار برای اولویتدادن به استثوای اصلی بر خطاهای رندر کردن است. نشانهای از این خطا به جای مقدار گمشده چاپ میشود. (وصلهای از Simon-Martin Schroeder).gh-88050: اصلاح انتقال زیرفرایند
asyncioبرای متوقف کردن تمیز فرایند هنگام مسدود بودن آن و جلوگیری ازRuntimeErrorوقتی حلقه بسته است. اصلاحیه از Kumar Aditya.gh-94637: تابع
SSLContext.set_default_verify_paths()اکنون قفل GIL را در اطراف فراخوانیSSL_CTX_set_default_verify_pathsآزاد میکند. فراخوانی تابع کارهای فشردهی پردازنده و ورودی/خروجی را انجام میدهد.gh-94309: منسوخ کردن نامهای مستعار
typing.Hashableوtyping.Sizedgh-92546: یک بنچمارک مستندنشدهی
python -m pprintبه بدنهیpprintدر pyperformance منتقل شد. اصلاحیه از Oleg Iarygin.gh-94607: رفع زیرکلاسسازی انواع عمومی (generic) پیچیده با متغیرهای نوع در
typing. پیشتر پیام خطایی با مضمونSome type variables ... are not listed in Generic[...]نمایش داده میشد. ماژولtypingدیگر__parameters__را با__parameters__یک کلاس پایتون پر نمیکند.gh-94619: حذف
module_repr()که مدتها منسوخ شده بود ازimportlib.gh-93910: قابلیت دسترسی به سایر مقادیر یک enum روی یک enum (مانند
Color.RED.BLUE) به منظور رفع رگرسیون عملکرد بازیابی شد.gh-93896: اصلاح
asyncio.run()وunittest.IsolatedAsyncioTestCaseبرای تنظیم همیشه حلقهی رویداد همانطور که در نسخهی ۳.۱۰ پایتون و پیشتر انجام میشد. اصلاحیه از Kumar Aditya.gh-94343: اجازه دادن به تنظیم ویژگیهای
reprlib.Reprدر هنگام مقداردهی اولیهی شیءgh-94382: انتقال انواع ایسترای ماژول
_multiprocessingبه انواع هیپ. اصلاحیه از Kumar Aditya.gh-78724: اصلاح فروپاشی در
struct.Structهنگامی که با مقداردهی اولیه در__new__()بهطور کامل مقداردهی اولیه نشده بود. وصله توسط Kumar Aditya.gh-94510: فراخوانیهای مجدد به
sys.setprofile()وsys.settrace()اکنونRuntimeErrorبالا میآورند. وصله توسط Pablo Galindo.gh-92336: رفع باگی که در آن
linecache.getline()روی پروندههای نامعتبر باUnicodeDecodeErrorیاSyntaxErrorبا شکست مواجه میشود. این متد اکنون طبق مستندات یک رشتهی خالی برمیگرداند.gh-94398: هنگامی که یک
asyncio.TaskGroupفرآیند متوقفسازی خود را آغاز کرده است (یعنی حداقل یک وظیفه با خطا مواجه شده است و گروه وظایف شروع به لغو وظایف باقیمانده کرده است)، افزودن وظایف جدید به گروه وظایف نباید امکانپذیر باشد.gh-94383:
xml.etree: متدElementTree.Element.copy()پیادهسازی خالص پایتون را که در نسخهی ۳.۱۰ منسوخ شده بود، حذف کنید؛ بهجای آن از تابعcopy.copy()استفاده کنید. پیادهسازی C ماژولxml.etreeفاقد متدcopy()است و فقط متد__copy__()را دارد. وصله توسط Victor Stinner.gh-94379:
zipimport: متدهایfind_loader()وfind_module()را که در نسخهی ۳.۱۰ منسوخ شده بودند، حذف کنید: بهجای آنها از متدfind_spec()استفاده کنید. برای اطلاع از دلیل این تغییر، PEP 451 را ببینید. وصله توسط Victor Stinner.gh-94352:
shlex.split(): ارسال مقدارNoneبرای آرگومان s اکنون بهجای خواندنsys.stdin، یک استثنا ایجاد میکند. این ویژگی در نسخهی ۳.۹ منسوخ شده بود. وصله توسط Victor Stinner.gh-89988: رفع نشت حافظه در
pickle.Picklerهنگام جستوجویdispatch_table. وصله توسط Kumar Aditya.gh-90016: منسوخ کردن
sqlite3default adapters and converters. وصله توسط Erlend E. Aasland.gh-94254: انواع دادهی ماژول
structتغییرناپذیر شدند. وصله توسط Kumar Aditya.gh-93259: اکنون وقتی
Noneیا یک رشتهی خالی بهDistribution.from_name(و سایر فراخوانندگان) ارسال شود، خطایValueErrorبالا میرود.gh-74696: تابع
shutil.make_archive()اکنون آرگومان root_dir را به آرشیوسازهای سفارشیای که از آن پشتیبانی میکنند، ارسال میکند.gh-94216: ماژول
disاکنون دارای آپکدها برای دستورالعملهای شبه (دستورالعملهایی که توسط کامپایلر در طول تولید کد استفاده میشوند اما قبل از انتشار بایتکد نهایی حذف یا با آپکدهای واقعی جایگزین میشوند) است.gh-93096: دستور مستندنشدهی
python -m codecsحذف شد. بهجای آن ازpython -m unittest test.test_codecs.EncodedFileTestاستفاده کنید.gh-94207: کلاس
_struct.Structرا برای ردیابی زبالهروب (GC-tracked) تنظیم کردیم تا نشت ارجاع در ماژول_structبرطرف شود.gh-93096: آرگومان مستندنشدهی
-tمربوط بهpython -m base64حذف شد. بهجای آن ازpython -m unittest test.test_base64.LegacyBase64TestCase.test_encodebytesاستفاده کنید.gh-94226: تابع
locale.format()را که در نسخهی ۳.۷ منسوخ شده بود، حذف کنید: بهجای آن ازlocale.format_string()استفاده کنید. وصله توسط Victor Stinner.gh-94199: تابع
ssl.match_hostname()را حذف کنید. تابعssl.match_hostname()در نسخهی ۳.۷ منسوخ شده بود. OpenSSL از نسخهی ۳.۷ پایتون تطبیق نام میزبان را انجام میدهد و پایتون دیگر از تابعssl.match_hostname()استفاده نمیکند. وصله توسط Victor Stinner.gh-94214: شیء
contextاستفادهشده در کلاسvenv.EnvBuilderرا مستند کنید و مسیر کتابخانهی محیط جدید را به آن اضافه کنید.gh-94199: تابع
ssl.wrap_socket()که در پایتون ۳.۷ منسوخ شده بود، حذف شد: بهجای آن، یک شیءssl.SSLContextایجاد کنید و متدssl.SSLContext.wrap_socketآن را فراخوانی کنید. هر بستهای که همچنان ازssl.wrap_socket()استفاده میکند، خراب و ناامن است. این تابع نه پسوند TLS از نوع SNI را ارسال میکند و نه نام میزبان سرور را اعتبارسنجی میکند. این کد مشمول CWE 295 (اعتبارسنجی نامناسب گواهی) است. وصله توسط Victor Stinner.gh-94199: تابع
ssl.RAND_pseudo_bytes()که در پایتون ۳.۶ منسوخ شده بود، حذف شد: بهجای آن ازos.urandom()یاssl.RAND_bytes()استفاده کنید. وصله توسط Victor Stinner.gh-94199:
hashlib: پیادهسازی پایتون خالصhashlib.pbkdf2_hmac()که در پایتون ۳.۱۰ منسوخ شده بود، حذف شد. پایتون ۳.۱۰ و نسخههای جدیدتر به OpenSSL نسخه ۱.۱.۱ نیاز دارند (PEP 644): این نسخهی OpenSSL یک پیادهسازی C ازpbkdf2_hmac()فراهم میکند که سریعتر است. وصله توسط Victor Stinner.gh-94196:
gzip: ویژگیfilenameازgzip.GzipFileکه از پایتون ۲.۶ منسوخ شده بود، حذف شد؛ بهجای آن از ویژگیnameاستفاده کنید. در حالت نوشتن، ویژگیfilenameدر صورتی که پسوند پرونده'.gz'وجود نداشت، آن را اضافه میکرد. وصله توسط Victor Stinner.gh-94182: اجرای
asyncio.PidfdChildWatcherروی حلقهی در حال اجرا؛ این کار به حلقههای رویداد اجازه میدهد زمانی که هیچ حلقهی رویداد پیشفرضی روی نخ اصلی در حال اجرا نیست، زیرفرآیندها را اجرا کنندgh-94169: موارد
io.OpenWrapperو_pyio.OpenWrapperکه در پایتون ۳.۱۰ منسوخ شده بودند، حذف شدند: صرفاً ازopen()استفاده کنید. تابعopen()(یعنیio.open()) یک تابع توکار است. از پایتون ۳.۱۰ به بعد،_pyio.open()نیز یک متد ایستا است. وصله توسط Victor Stinner.gh-91742: رفع فروپاشی
pdbپس از پرش که به دلیل رفع ارجاع به اشارهگر تهی (null pointer) ایجاد شده بود. وصله توسط Kumar Aditya.gh-94101: نمونهسازی دستی اشیای
ssl.SSLSessionدیگر مجاز نیست، زیرا منجر به ایجاد نمونههای پیکربندینشدهای میشد که هنگام دسترسی به ویژگیها روی آنها، مفسر را دچار فروپاشی میکردند.gh-84753: توابع
inspect.iscoroutinefunction()،inspect.isgeneratorfunction()وinspect.isasyncgenfunction()اکنون به درستی مقدارTrueرا برای اشیای شبیهبهتابع با تایپگذاری مرغابی (duck-typed) مانند نمونههایunittest.mock.AsyncMockبرمیگردانند.این تغییر باعث سازگاری
inspect.iscoroutinefunction()با رفتارasyncio.iscoroutinefunction()میشود. وصله توسط Mehdi ABAAKOUK.gh-94028: رفع یک رگرسیون در
sqlite3که در آن اشیای دستور پس از استفاده در تکرارکنندههای نشانگر (cursor iters) به درستی پاکسازی و بازنشانی نمیشدند. این رگرسیون توسط PR 27884 در پایتون ۳.۱۱a1 معرفی شده بود. وصله توسط Erlend E. Aasland.gh-93973: افزودن آرگومان کلیدواژهای
all_errorsبهasyncio.create_connectionبه طوری که خطاهای اتصال متعدد بتوانند به عنوان یکExceptionGroupبالا آورده شوند.gh-93963: منسوخسازی رسمی کلاسهای منتقلشده از
importlib.abcبهimportlib.resources.abc.gh-93858: جلوگیری از بروز خطا هنگام فعالسازی venv در نمونههای تو در توی fish.
gh-93847: رفع نمایش (repr) از enumهای مستعار عام.
gh-91404: بازگردانی نشتی حافظهی
reهنگامی که یک تطابق با یک سیگنال یا شکست در تخصیص حافظه متوقف میشود، زیرا اصلاح پیادهسازیشده باعث یک رگرسیون عملکردی عمده شده بود.gh-93820: رفع یک رگرسیون هنگام کپی کردن (
copy.copy()) کلاسenum.Flagبا اعضای پرچم متعدد.gh-79512: رفع نامها و مقدار
__module__برای کلاسهایweakrefیعنیReferenceType،ProxyTypeوCallableProxyType. این کار آنها را قابل پیکل کردن میکند.gh-91389: رفع مشکلی که در آن ابزارهای
disممکن بود اطلاعات موقعیت گمشده یا نادرست را در حضور ورودیهایCACHEگزارش کنند.gh-93626: ویژگی
__future__.annotationsرا به گونهای تنظیم کنید که دارای یکNoneبه عنوان mandatoryRelease باشد تا نشان دهد که در حال حاضر 'TBD' است.gh-90473: Emscripten و WASI پوشهی خانگی ندارند و نمیتوانند پوشهی کاربری PEP 370 را فراهم کنند.
gh-90494: توابع
copy.copy()وcopy.deepcopy()اکنون همیشه در صورتی که__reduce__()یک تاپل با طول ۶ برگرداند (به جای نادیده گرفتن صامت آیتم ششم یا تولید نتیجهی نادرست)، یک TypeError ایجاد میکنند.gh-90549: رفع یک باگ در پردازش چندگانه (multiprocessing) که در آن یک منبع نامگذاریشدهی سراسری (مانند یک سمافور) هنگام ایجاد فرآیند فرزند (در مقابل forked) ممکن بود نشت کند.
gh-93521: رفع حالتی که در آن دیتاکلاسها تلاش میکردند
__weakref__را به__slots__برای یک دیتاکلاس کهweakref_slot=Trueرا مشخص کرده بود اضافه کنند، در حالی که قبلاً در یکی از پایههای آن تعریف شده بود. این کار منجر به ایجاد یکTypeErrorپس از ایجاد کلاس جدید میشد.gh-79579: ماژول
sqlite3اکنون پرسوجوهای DML را با کامنتهای پیشرو به درستی تشخیص میدهد. وصله توسط Erlend E. Aasland.gh-93421: بهروزرسانی
sqlite3.Cursor.rowcountهنگامی که یک دستور DML تا اتمام اجرا شده است. این کار تعداد ردیفها را برای پرسوجوهای SQL مانندUPDATE ... RETURNINGاصلاح میکند. وصله توسط Erlend E. Aasland.gh-93475: ارائهی ثابتهای
FICLONEوFICLONERANGEدر ماژولfcntl. وصله توسط Illia Volochii.gh-93370: منسوخ کردن
versionوversion_info.gh-91810: جلوگیری از نوشتن یک اعلان XML در پروندههای باز در
ElementTree.write()باencoding='unicode'وxml_declaration=None.gh-91162: پشتیبانی از تفکیک تاپل بازنشدهی با طول دلخواه روی پارامترهای
TypeVarوTypeVarTuple. برای مثال:A[T, *Ts][*tuple[int, ...]]->A[int, *tuple[int, ...]]A[*Ts, T][*tuple[int, ...]]->A[*tuple[int, ...], int]
gh-93353: اصلاح مدیر زمینه
importlib.resources.as_file()برای حذف پروندهی موقت در صورتی که در اواخر نهاییسازی پایتون نابود شود: یک ارجاع محلی به تابعos.remove()نگه دارید. وصله توسط Victor Stinner.gh-83658: کاری کنید که
multiprocessing.Poolدر صورتی کهmaxtasksperchildمقدارNoneیا یک عدد صحیح مثبت نباشد، یک استثنا ایجاد کند.gh-93312: افزودن پرچم
os.PIDFD_NONBLOCKبرای باز کردن یک توصیفگر پرونده برای یک فرآیند باos.pidfd_open()در حالت غیرمسدودکننده. وصله توسط Kumar Aditya.gh-88123: پیادهسازی
Enum.__contains__کهTrueیاFalseبرمیگرداند تا جایگزین رفتار منسوخی شود که گاهی اوقات یکTypeErrorایجاد میکرد.gh-93297: باعث شوید گروههای وظیفهی asyncio مانع از GC شدن وظایف فرزند شوند
gh-85308: تغییر
argparse.ArgumentParserبرای استفاده از کدگذاری سامانه فایلبندی و کنترلکنندهی خطا به جای کدگذاری متن پیشفرض برای خواندن آرگومانها از پرونده (به عنوان مثال گزینهیfromfile_prefix_chars). این تغییر ویندوز را تحت تأثیر قرار میدهد؛ پروندهی آرگومان باید به جای کُدصفحهی ANSI با UTF-8 کدگذاری شود.gh-93156: دسترسی به دنبالهی
pathlib.PurePath.parentsدر یک مسیر مطلق با استفاده از مقادیر اندیس منفی، نتایج نادرستی تولید میکرد.gh-93162: افزودن قابلیت استفاده مفید از
logging.config.dictConfig()برای پیکربندیQueueHandlerوQueueListenerبه عنوان یک جفت، و افزودن APIهایlogging.getHandlerByName()وlogging.getHandlerNames()برای امکان دسترسی به هندلرها بر اساس نام.gh-92886: جایگزینی دستورهای
assertباraise AssertionError()درBaseHandlerتا رفتار آزمایششده هنگام اجرا با بهینهسازیها(-O)حفظ شود.gh-90155: رفع مشکل معیوب بودن
asyncio.Semaphoreهنگامی که عملیات بهدست آوردن لغو میشود.gh-90817: تابع
locale.resetlocale()منسوخ شده است و در نسخهی ۳.۱۳ پایتون حذف خواهد شد. بهجای آن ازlocale.setlocale(locale.LC_ALL, "")استفاده کنید. وصله توسط Victor Stinner.gh-91513: ویژگی
taskNameبه ماژولloggingبرای استفاده با وظایفasyncioاضافه شد.gh-74696: تابع
shutil.make_archive()دیگر پوشهی کاری فعلی را بهطور موقت در طول ایجاد آرشیوهای استاندارد.zipیا tar تغییر نمیدهد.gh-92728: تابع
re.template()و پرچمهای متناظرre.TEMPLATEوre.Tپس از حذف در نسخهی ۳.۱۱.۰ب۱ بازیابی شدند، اما اکنون منسوخ شدهاند، بنابراین ممکن است از پایتون ۳.۱۳ حذف شوند.gh-93033: جستجو در برخی رشتهها (وابسته به پلتفرم، یعنی [U+0xFFFF, U+0x0100] در ویندوز یا [U+0xFFFFFFFF, U+0x00010000] در لینوکس ۶۴ بیتی) اکنون تا ۱۰ برابر سریعتر شده است.
gh-89973: رفع خطای
re.errorکه درfnmatchایجاد میشد اگر الگو شامل بازهای از نویسهها با کران بالاییِ کوچکتر از کران پایینی بود (مثلاً[c-a]). اکنون این بازهها بهعنوان بازههای خالی تفسیر میشوند.gh-93044: آرگومان پایگاه دادهی
sqlite3.connect()دیگر پیش از ارسال به کارخانه به بایتها تبدیل نمیشود.gh-93010: در یک مورد بسیار خاص، بستهی email تلاش کرد تا خطای ناموجود
InvalidHeaderErrorرا به فهرست نقصها اضافه کند. این بایدInvalidHeaderDefectمیبود.gh-92986: رفع مشکل
ast.unparse()هنگامی که مقدارImportFrom.levelبرابر باNoneاستgh-92932: اکنون
dis()وget_instructions()مقادیر عملوند را برای دستورالعملهایی که پیشوندEXTENDED_ARG_QUICKدارند، مدیریت میکنند. وصله توسط Sam Gross و Donghee Na.gh-92675: رفع
venv.ensure_directories()برای پذیرش آرگومانهایpathlib.Pathعلاوه بر مسیرهایstr. وصله توسط David Foster.gh-87901: آرگومان
encodingکه در نسخهی ۳.۱۱ب۱ اضافه شده بود، ازos.popen()حذف شد.gh-91922: رفع تابع
sqlite.connect()و سازندهیsqlite.Connectionدر پوستههای محلی غیر UTF-8. همچنین، آنها اکنون از مسیرهای بایتی که با کدگذاری فعلی FS قابل رمزگشایی نیستند، پشتیبانی میکنند.gh-92869: افزودن
c_time_tبهctypes، که اندازهای مشابه با نوعtime_tدر زبان C دارد.gh-92839: رفع خرابی ناشی از فراخوانی bisect.insort() یا bisect.insort_left() با آرگومانی کلیدی که برابر با
Noneنیست.gh-90473: ماژول
subprocessاکنون روی پلتفرمهای Emscripten و WASI زودتر با خطا مواجه میشود تا مشکل نبودos.pipe()در WASI را دور بزند.gh-89325: بسیاری از ویژگیهای قدیمی و منسوخ ماژول
unittestحذف شدند: نامهای مستعار متدهایTestCase، متد مستندنشده و معیوبTestCaseبا نامassertDictContainsSubset، پارامتر مستندنشدهی use_load_tests درTestLoader.loadTestsFromModule، و یک نام مستعار زیرخطدار از کلاسTextTestResult.gh-92734: به نمایههای (repr) چندعنصری تولیدشده توسط
reprlibاجازه داده میشود تا با استفاده از تورفتگی قابلتنظیم، بهصورت زیبا چاپ شوند.gh-92671: تابع
ast.unparse()برای تاپلهای خالی در زمینهی هدف انتساب اصلاح شد.gh-91581: متد
utcfromtimestamp()دیگر تلاشی برای حل کردنfoldدر پیادهسازی خالص پایتون نمیکند، زیرا مقدار fold در UTC هرگز ۱ نیست. علاوه بر اینکه در حالت معمول کمی سریعتر است، این تغییر از بروز برخی خطاها زمانی که برچسب زمانی بهdatetime.minنزدیک است، جلوگیری میکند. اصلاحیه از Paul Ganssle.gh-86388: قابلیت randrange() که از نسخهی ۳.۱۰ پایتون منسوخ شده بود، حذف شد. پیشتر، عبارت randrange(10.0) بدون از دست دادن داده به randrange(10) تبدیل میشد. اکنون، این کار یک استثنای TypeError ایجاد میکند. همچنین، استثنای ایجادشده برای مقادیر غیرصحیح مانند randrange(10.5) یا randrange('10') از ValueError به TypeError تغییر یافته است.
gh-90385: متد
pathlib.Path.walk()به عنوان جایگزینی برایos.walk()اضافه شد.gh-92550: رفع اشکال
pathlib.Path.rglob()برای الگوی خالی.gh-92591: به فیلترهای
loggingاجازه داده میشود تا یک نمونه ازlogging.LogRecordرا برگردانند تا فیلترهای متصل بهlogging.Handlerها بتوانند رکوردها را بدون اثرات جانبی روی سایر هندلرها غنی کنند.gh-92445: برطرف کردن باگی در
argparseکه در آن در صورت تعریف شدن choice نیز درparser.add_argument، اگر ۰ آرگومان ارائه میشد،nargs="*"بهجای بازگرداندن یک فهرست خالی، خطایی را بالا میآورد.gh-92547: ویژگیهای مستندنشدهی ماژول
sqlite3که در پایتون ۳.۱۰ منسوخ شده بودند، حذف شدند:sqlite3.enable_shared_cache()sqlite3.OptimizedUnicode
توسط Erlend E. Aasland وصل شد.
gh-92530: مسئلهای که پس از وقفه در تابع
threading.Condition.notify()رخ میداد، اصلاح شد.gh-92531: تابع statistics.median_grouped() اکنون همیشه یک عدد اعشاری برمیگرداند. پیشتر، در دنبالههای با طول یک، نوع دادهی ورودی را تبدیل نمیکرد.
gh-84131: متد منسوخشدهی
pathlib.Pathبا نامlink_toحذف شد. به جای آن از متدhardlink_to()در نسخهی ۳.۱۰ استفاده کنید، زیرا معناشناسی آن با متدsymlink_to()سازگار است.gh-89336: رابطهای برنامهنویسی (APIهای) ماژول
configparserحذف شدند: نام مستعار کلاسSafeConfigParser، ویژگی و پارامترParsingError.filename، و متدConfigParser.readfpکه همگی از پایتون ۳.۲ منسوخ شده بودند.gh-92391: متد
__class_getitem__()بهcsv.DictReaderوcsv.DictWriterاضافه شد که به آنها اجازه میدهد در رانتایم پارامتریسازی شوند. اصلاحیه از Marc Mueller.gh-91968: ثابتهای
SO_RTABLEوSO_USER_COOKIEبه ماژولsocketاضافه شدند.gh-91810: متد
write()و تابعtostring()از کلاسElementTreeاکنون هنگام مشخص شدنencoding="unicode"، به جای کدگذاری locale، از کدگذاری پرونده متنی («UTF-8» در صورت در دسترس نبودن) در اعلامیهی XML استفاده میکنند.gh-81790: تابع
os.path.splitdrive()اکنون مسیرهای دستگاه DOS را با پیوندهای UNC (که با\\?\UNC\شروع میشوند) درک میکند. ارسال شده توسط Barney Gale.gh-91760: اعمال قوانین سختگیرانهتر برای ارجاعهای عددی گروهها و نام گروهها در عبارتهای باقاعده. از این به بعد تنها دنبالهای از ارقام اسکی به عنوان ارجاع عددی پذیرفته میشود. نام گروه در الگوهای bytes و رشتههای جایگزینکننده اکنون تنها میتواند شامل حروف و ارقام اسکی و زیرخط باشد.
gh-90622: فرایندهای کارگر برای
concurrent.futures.ProcessPoolExecutorدیگر بر اساس تقاضا ایجاد نمیشوند (ویژگی اضافهشده در نسخهی 3.9) هنگامی که متد شروع زمینهی چندفرایندی"fork"است زیرا این امر میتواند منجر به بنبست در فرایندهای فرزند شود به دلیل اینکه انشعاب در زمان اجرای نخها اتفاق میافتد.gh-91577: انتقال ایمپورتها در متدهای
SharedMemoryبه سطح ماژول به طوری که بتوانند در اواخر نهاییسازی پایتون اجرا شوند.gh-91581: حذف یک حالت خطای مدیریتنشده در پیادهسازی C مربوط به فراخوانیهای
datetime.fromtimestampبدون منطقهی زمانی (즉 دریافت زمان محلی از یک برچسب زمانی مبدأ زمان). این تغییر نباید هیچ تأثیر قابلمشاهدهای برای کاربر داشته باشد، مگر اینکه هنگام فراخوانی با برچسبهای زمانی که در زمان محلی روی تاریخ 10000-01-01 میافتند، پیام خطای دقیق تری ارائه دهد. اصلاحیه از Paul Ganssle.gh-91539: بهبود کارایی
urllib.request.getproxies_environmentهنگامی که متغیرهای محیطی زیادی وجود دارند.gh-91524: افزایش سرعت جایگزینی عبارت باقاعده (توابع
re.sub()وre.subn()و متدهای متناظرre.Pattern) برای رشتههای جایگزینکنندهای که حاوی ارجاعات گروه هستند به میزان ۲ تا ۳ برابر.gh-91447: رفع مشکل تابع findtext در ماژول xml به طوری که فقط زمانی رشتهی خالی برمیگرداند که صفت text روی مقدار
Noneتنظیم شده باشد.gh-91456: منسوخ کردن رفتار فعلی پیشفرض auto(): در نسخهی ۳.۱۳ رفتار پیشفرض این خواهد بود که auto() همیشه بزرگترین مقدار عضو را به علاوه ۱ برگرداند، و اگر از انواع مقادیر ناسازگار استفاده شود، خطا ایجاد کند.
bpo-47231: رفع مشکلی مربوط به اسلشهای پایانی ناسازگار در پوشههای longname مربوط به tarfile.
bpo-39064: کلاس
zipfile.ZipFileاکنون هنگام خواندن یک پروندهی zip خراب که در آن آفست پوشهی مرکزی منفی است، به جایValueErrorاستثنایzipfile.BadZipFileرا بالا میآورد.bpo-41287: رفع مشکل مدیریت آرگومان
docدر زیرکلاسهایproperty().gh-90005: وابستگی ماژول
ctypesیعنیlibffiاکنون با استفاده ازpkg-configشناسایی میشود.bpo-32547: سازندههای
DictWriterوDictReaderاکنون آرگومانfieldnamesرا اگر پیمایشگر (iterator) باشد، به یکlistتبدیل (coerce) میکنند.bpo-35540: رفع مشکل فروپاشی تابع
dataclasses.asdict()زمانی کهcollections.defaultdictدر ویژگیها وجود دارد.bpo-47063: افزودن پارامتر index_pages برای پشتیبانی از استفاده از نامهای صفحهی اندیس غیرپیشفرض.
bpo-46951: مرتبسازی محتویات آرشیوهای zipapp برای قابلتولیدتر کردن ساختها.
bpo-42777: پیادهسازی متد
pathlib.Path.is_mount()برای مسیرهای ویندوز.bpo-46755: در
QueueHandler، مقدارstack_infoرا ازLogRecordپاک کنید تا از نوشتن دو بارهی ردگیری پشته جلوگیری شود.bpo-45393: اصلاح قالببندی برای
await xوnot xدر جدول تقدم عملگرها هنگام استفاده از سیستمhelp().bpo-46642: بهبود پیام خطا هنگام تلاش برای ایجاد زیرکلاس از یک نمونه از
typing.TypeVar،typing.ParamSpec،typing.TypeVarTupleو غیره. براساس وصلهی ارائهشده توسط Gregory Beauregard.bpo-46364: محدود کردن استفاده از سوکتها بهجای پایپها برای ورودی استاندارد (stdin) زیرفرآیندهای ایجادشده توسط
asyncioصرفاً روی پلتفرم AIX.bpo-28249: تنظیم ویژگی
doctest.DocTest.linenoرویNoneهنگامی که یک شیء دارای ویژگی__doc__نباشد.bpo-46197: اصلاح ایزولهسازی محیط
ensurepipبرای زیرفرآیندی کهpipرا اجرا میکند.bpo-45924: اصلاح ردگیری نادرست در
asyncioهنگامی که استثنای future چند بار بالا برده (raise) میشود. وصله توسط Kumar Aditya.bpo-45046: افزودن پشتیبانی از مدیرهای زمینه در
unittest: متدهایenterContext()وenterClassContext()از کلاسTestCase، متدenterAsyncContext()از کلاسIsolatedAsyncioTestCaseو تابعunittest.enterModuleContext().bpo-44173: فعالسازی مکانیابی سریع برای کلاس فشردهنشده و رمزگذارینشدهی
zipfile.ZipExtFilebpo-42627: اصلاح تجزیه (parsing) نادرست تنظیمات پراکسی رجیستری ویندوز
bpo-42047: افزودن پشتیبانی از
threading.get_native_id()برای DragonFly BSD. وصله توسط David Carlier.bpo-14243: تابع
tempfile.NamedTemporaryFileدارای یک پارامتر اختیاری جدید به نام delete_on_close استbpo-41246: ارائهی تابع فراخوانی بازگشتی (callback) یکسان برای زمانی که عملیات همپوشانیشده (overlapped) انجام میشود به توابع
recv،recv_into،recvfrom،sendto،sendوsendfileدرونIocpProactor.bpo-39264: اصلاح
collections.UserDict.get()به طوری که وقتی مقداری پیدا نمیشود،__missing__()را فراخوانی نکند. این رفتار باdictمطابقت دارد. وصله توسط Bar Harel.bpo-38693: ماژول
importlibاکنون بهجایstr.formatاز افاسترینگها بهصورت داخلی استفاده میکند.bpo-38267: افزودن پارامتر timeout به
asyncio.loop.shutdown_default_executor(). مقدار پیشفرضNoneاست، به این معنی که به اجراکننده مقدار نام محدودی زمان داده خواهد شد. هنگام فراخوانی ازasyncio.Runnerیاasyncio.run()، مهلت زمانی پیشفرض ۵ دقیقه است.bpo-34828: متد
sqlite3.Connection.iterdump()اکنون پایگاهدادههایی را مدیریت میکند که در یک یا چند جدول خود ازAUTOINCREMENTاستفاده میکنند.bpo-32990: پشتیبانی از خواندن پروندههای wave با فرمت
WAVE_FORMAT_EXTENSIBLEدر ماژولwave.bpo-26253: امکان تنظیم سطح فشردهسازی برای جریانهای tarfile در تابع
tarfile.open().
مستندات¶
gh-85525: حذف ردیف اضافی
gh-86404: ابزارهای منسوخ
make suspiciousوrstlint.pyاکنون حذف شدهاند. آنها با sphinx-lint جایگزین شدهاند.gh-97741: اصلاح علامت
!در سینتکس هدف ارجاع دامنهی c از طریق یک وصلهیconf.py، بهطوریکه همانطور که در نظر گرفته شده است برای غیرفعالسازی وضوح هدف ارجاع کار کند.gh-96432: مقادیر لفظی کسر اکنون از فضای خالی در اطراف خط اریب (اسلش)، مانند
Fraction('2 / 3')پشتیبانی میکنند.gh-96098: بهبود قابلیت کشف ماژول سطح بالای concurrent.futures با ارائهی پیوندهای واضحتر از ماژولهای سطح پایینتر threading و multiprocessing.
gh-95957: بخش «چه چیزی در 3.11 جدید است» اکنون دارای دستورالعملهایی برای نحوهی ارائهی پرچمهای کامپایلر و پیونددهنده برای Tcl/Tk و OpenSSL در RHEL 7 و CentOS 7 است.
gh-95588: توصیههای متناقض ارائهشده در مستندات
astدربارهی این کهast.literal_eval()برای استفاده روی ورودیهای نامعتبر «امن» است و در عین حال هشدار دربارهی امکان کرش کردن فرآیند، شفافسازی شد. عبارت دوم درست است و بدون کار بسیار زیاد که برای یک رفع باگ نامناسب است، غیرقابلاصلاح تشخیص داده شد. بنابراین ما هشدار را حفظ میکنیم و دیگر ادعا نمیکنیم کهliteral_evalامن است.gh-91207: رفع کار نکردن شیتاستایل در مستندات htmlhelp با فرمت CHM در ویندوز و افزودن اخطار دربارهی منسوخ شدن آنها. مشارکت توسط C.A.M. Gerlach.
gh-95454: مقادیر درست/نادرستِ نادرست نوشتهشده در مستندات جایگزین شدند. وصله توسط Robert O'Shea
gh-95451: بهروزرسانی مستندات کتابخانه با اطلاعات دسترسپذیری روی پلتفرمهای WebAssembly یعنی
wasm32-emscriptenوwasm32-wasi.gh-95415: استفاده از سینتکس سازگار برای دسترسپذیری پلتفرم. این دایرکتیو اکنون از بدنهی محتوا پشتیبانی میکند و هنگامی که با یک پلتفرم ناشناخته مواجه میشود، هشدار صادر میکند.
gh-94321: مستندسازی نوع پروتکل سبکی PEP 246 یعنی
sqlite3.PrepareProtocol.gh-86128: مستندسازی یک محدودیت در ThreadPoolExecutor که در آن هندلر خروج آن قبل از هرگونه هندلر دیگری در atexit اجرا میشود.
gh-61162: شفافسازی رفتار
sqlite3در هنگام نحوه استفاده از مدیر زمینه اتصال.gh-87260: همراستا کردن مشخصات آرگومان
sqlite3با پیادهسازی واقعی.gh-86986: حداقل نسخهی Sphinx مورد نیاز برای ساخت مستندات اکنون ۳.۲ است.
gh-88831: تکمیل مستندات asyncio.create_task(). ضرورت نگهداری ارجاعات قوی به وظایف شفافسازی شد و یک قطعهکد برای جزئیات نحوهی انجام این کار اضافه شد.
gh-86438: شفافسازی این موضوع که
-WوPYTHONWARNINGSبه صورت لفظی و بدون حساسیت به بزرگی و کوچکی حروف (و نه به عنوان عبارات باقاعده) درwarningsمطابقت داده میشوند.gh-93031: بهروزرسانی خروجی مقدمهی آموزش برای استفاده از بازهی نامعتبر SyntaxError در نسخهی ۳.۱۰ به بالا.
gh-92240: افزودن تاریخهای انتشار برای «چه چیزی در پایتون ۳.X جدید است» برای نسخههای ۳.۰، ۳.۱، ۳.۲، ۳.۸ و ۳.۱۰
bpo-47161: مستندسازی این موضوع که
pathlib.PurePathاسلشهای دوتایی اولیه را حذف نمیکند زیرا آنها نشاندهندهی مسیرهای UNC هستند.bpo-40838: مستندسازی این موضوع که
inspect.getdoc()،inspect.getmodule()وinspect.getsourcefile()ممکن استNoneبرگردانند.bpo-43689: مستندات
Differاکنون به سایر نویسههای فاصله (whitespace) نیز اشاره میکند که درک خروجی diff را دشوارتر میکنند.bpo-38056: بازنگری مستندات هندلرهای خطا در
codecs.bpo-13553: مستندسازی آرگومانهای tkinter.Tk.
آزمونها¶
gh-95027: در ویندوز، هنگامی که مجموعه آزمونهای پایتون با گزینهی
-jNاجرا میشوند، اکنون از صفحة کد ANSI به عنوان کدگذاری برای پروندهی موقت stdout استفاده میشود، نه استفاده از UTF-8 که میتواند به خطاهای کدگشایی منجر شود. وصله توسط Victor Stinner.gh-96624: رفع خطای شکست اجرای مکرر
test.test_unittestکه ناشی از عوارض جانبی درtest_dotted_but_module_not_loadedبود.gh-95243: کاهش شرط رقابت ذاتی ناشی از استفاده از find_unused_port() در testSockName() با تلاش برای یافتن یک درگاه استفادهنشده چند بار پیش از شکست. وصله توسط Ross Burton.
gh-95573: Lib/test/test_asyncio/test_ssl.py باگی را در هستهی macOS آشکار کرد که در آن بارگذاری همزمان شدید روی سوکتهای غیرمسدودکننده گاهی اوقات باعث انتشار
errno.ENOBUFS("فضای بافر موجود نیست") میشود. FB11063974 نزد Apple ثبت شد، در این میان به عنوان یک راهحل موقت، اندازهی بافر استفادهشده در آزمونها روی macOS کاهش مییابد تا از شکستهای مقطعی جلوگیری شود. وصله توسط Fantix King.gh-95280: رفع مشکل
test_ssltest_get_ciphersدر سیستمهایی که به رمزهای پیشمحرمانگی کامل (PFS) نیاز دارند.gh-95212: ایمنسازی در برابر موازیسازی مورد آزمون چندپردازشی
test_shared_memory_recreate.gh-95218: انتقال آزمونهای importlib.resources به test_importlib.resources.
gh-93963: بهروزرسانی آزمونها برای استفاده از مکان ترجیحی برای ABCهای
importlib.resources.gh-94675: افزودن یک آزمون رگرسیون برای کندی نمایی
reهنگام استفاده از rjsmin.gh-91330: افزودن آزمونهای بیشتر برای
dataclassesجهت پوشش رفتار با فیلدهای مبتنی بر توصیفگر داده.gh-94208:
test_sslاکنون نسخهها و پروتکلهای پشتیبانیشدهی TLS را در آزمونهای بیشتری بررسی میکند.gh-94315: آزمونها اکنون به جای اتکا به
os.geteuid()قابلیت لغو DAC را بررسی میکنند.gh-54781: تغییر نام test_tk به test_tkinter و تغییر نام test_ttk_guionly به test_ttk. وصله توسط Victor Stinner.
gh-93839: انتقال
Lib/ctypes/test/بهLib/test/test_ctypes/. وصله توسط Victor Stinner.gh-93951: در test_bdb.StateTestCase.test_skip، از گنجاندن واردکنندههای کمکی خودداری کنید.
gh-93957: ارائهی گزارش خطای بهتر از زیرفرآیندها در test_venv.EnsurePipTest.test_with_pip.
gh-93884: افزودن موارد آزمون برای
PyNumber_ToBase()که یک عدد بزرگ یا یک شیء غیر int را به عنوان پارامتر میپذیرند.gh-93852: آزمونهای test_asyncio، test_logging، test_socket و test_socketserver اکنون دامنههای AF_UNIX را در پوشهی جاری ایجاد میکنند تا اگر پوشهی موقت (متغیر محیطی
TMPDIR) بیشازحد طولانی است، دیگر با خطایOSError("AF_UNIX path too long")مواجه نشوند. وصله توسط Victor Stinner.gh-93353: ابزار regrtest اکنون بررسی میکند که آیا یک آزمون هنگام اجرا با گزینهی -jN باعث نشت پروندهها یا پوشههای موقت میشود یا خیر. وصله توسط Victor Stinner.
gh-84461: پروندهی
run_tests.pyاکنون متغیرهای محیطی کامپایل تقاطعی را به درستی مدیریت میکند وHOSTRUNNERرا به آزمونهای رگرسیون ارسال میکند.gh-93616: آزمون
test_modulefinderاکنون بهجای محدوده ماژول، یک پوشهی موقت درModuleFinderTest.setUp()ایجاد میکند.gh-93575: رفع مشکل مربوط به آزمون test_unicode و test_raiseMemError. این مورد آزمون اکنون از
test.support.calcobjsizeبرای محاسبهی اندازهی ساختارهای PyUnicode استفاده میکند. تابعsys.getsizeof()ممکن است وقتی رشته دارای حافظهی UTF-8 است، اندازهی متفاوتی برگرداند.gh-90473: سیستمعامل WASI سیستمفراخوانی
chmod(2)را ندارد. تابعos.chmod()اکنون روی WASI یک تابع ساختگی است. تمام آزمونهایی که به کارکرد صحیحos.chmod()وابستهاند، نادیده گرفته شوند.gh-90473: آزمونهای روی WASI را که به پیوندهای نمادین با مسیرهای مطلق نیاز دارند، نادیده بگیرید.
gh-57539: پوشش آزمون گاهشماری برای
calendar.LocaleTextCalendar.formatweekday()را افزایش دهید.gh-90473: آزمونهای پیوند نمادین روی WASI را نادیده بگیرید. wasmtime از
openat2(2)با پرچمRESOLVE_BENEATHاستفاده میکند که از پیوندهای نمادین با مسیرهای مطلق جلوگیری میکند.gh-89858: رفع
test_embedبرای ساختهای خارج از درخت (out-of-tree). وصله توسط Kumar Aditya.gh-92886: رفع آزمونهایی که هنگام اجرا با بهینهسازیها (
-O) درtest_imaplib.pyبا شکست مواجه میشوند.gh-92886: رفع آزمونهایی که هنگام اجرا با بهینهسازیها (
-O) درtest_zipimport.pyبا شکست مواجه میشوند.gh-92886: رفع آزمونهایی که هنگام اجرا با بهینهسازیها (
-O) درtest_py_compile.pyبا شکست مواجه میشوند.gh-92886: رفع آزمونهایی که هنگام اجرا با بهینهسازیها (
-O) درtest_sys_settrace.pyبا شکست مواجه میشوند.gh-92886: رفع آزمونهایی که هنگام اجرا با بهینهسازیها (
-O) در_test_multiprocessing.pyبا شکست مواجه میشوند.gh-92670: آزمون
test_shutil.TestCopy.test_copyfile_nonexistent_dirروی AIX نادیده گرفته شود، زیرا آزمون از یک اسلش پایانی برای مجبور کردن سیستمعامل به در نظر گرفتن مسیر به عنوان یک پوشه استفاده میکند، اما روی AIX اسلش پایانی هیچ اثری ندارد و به عنوان یک پرونده در نظر گرفته میشود.gh-92514: حذف
test.support.BasicTestRunnerاستفادهنشده. وصله توسط Jelle Zijlstra.bpo-47016: ایجاد یک جریانکار GitHub Actions برای تأیید اعتبار بستههای pip و setuptools. وصله توسط Illia Volochii و Adam Turner.
ساخت¶
gh-96761: رفع فرایند ساخت کامپایلر clang برای _bootstrap_python در صورتی که بهینهسازی LTO اعمال شود. وصله توسط Matthias Görgens و Donghee Na.
gh-96883: ساختهای
wasm32-emscriptenبرای مرورگرها اکنون شاملconcurrent.futuresبرایasyncioوunittest.mockمیشوند.gh-85936: سیپایتون اکنون در صورت پشتیبانی کامپایلر Clang از پرچم مربوطه، از گزینهی ThinLTO به عنوان خطمشی پیشفرض استفاده میکند. ارسال وصله توسط Donghee Na.
gh-96729: اطمینان حاصل کنید که نسخههای ویندوز ساختهشده با
Tools\msi\buildrelease.batقابلیت ارتقا به نسخههای رسمی پایتون و از آنها را دارند.gh-96269: اهداف ماژولهای مشترک اکنون به متغیر جدید
MODULE_DEPSوابسته هستند که شاملEXPORTSYMSمیشود. این تغییر مشکل ترتیب ساخت را در پلتفرم پشتیبانینشدهی AIX برطرف میکند.gh-84461: پلتفرم
wasm32-emscriptenدیگر ماژولresource، توابعgetresuid()وgetresgid()و تنظیمکنندههای آنها را نمیسازد. این رابطهای برنامهنویسی به شکل stub هستند و کارکردی ندارند.gh-95973: افزودن گزینهی پیکربندی جدید
--with-dsymutilبرای پیوند دادن اطلاعات اشکالزدایی در macOS. ارسال وصله توسط Pablo Galindo.gh-90536: استفاده از بهینهساز پسپیوند BOLT برای بهبود عملکرد، بهویژه در برنامههای متوسط تا بزرگ.
gh-93744: حذف گزینهی ساخت
configure --with-cxx-main: این گزینه سالها بود که کار نمیکرد. حذف متغیرMAINCCازconfigureوMakefile. ارسال وصله توسط Victor Stinner.gh-94801: رفع یک رگرسیون در اسکریپت
configureکه باعث میشد برخی از بررسیهای سرآیند، مقادیر سفارشیCPPFLAGSرا نادیده بگیرند. این رگرسیون در gh-94802 معرفی شده بود.gh-95145: ساختهای wasm32-wasi دیگر به stubهای pthread مربوط به WASIX وابسته نیستند. پایتون اکنون API مربوط به pthread با stubهای مختص به خود را دارد.
gh-95174: پایتون اکنون تابع گمشدهی
dupرا در WASI شناسایی میکند و با برخی از ثابتهای گمشدهیerrno،selectوsocketسازگاری ایجاد میکند.gh-95174: پایتون اکنون توابع و متدهای گمشدهی
socketرا روی WASI رد میکند. WASI فقط میتواند سوکتها را از fd / accept موجود ایجاد کند و netdb ندارد.gh-95085: پلتفرمهای
wasm32-unknown-emscriptenوwasm32-unknown-wasiبه پشتیبانی سطح ۳ پلتفرم در PEP 11 ارتقا یافتهاند.gh-94847: رفع مشکل ساخت ماژول
_decimalروی کامپایلر GCC هنگام کامپایل با LTO و pydebug. ساختهای اشکالزدایی دیگر inline شدن توابع را به اجبار اعمال نمیکنند.gh-94841: رفع افت احتمالی عملکرد
PyObject_Free()که با نسخهی ۱۹۳۲ MSVC کامپایلشده است.gh-94801: اسکریپت
configureاکنون هنگام جستجوی سرآیندها و کتابخانهها از پرچمهای سفارشی مانندZLIB_CFLAGSوZLIB_LIBSاستفاده میکند.gh-94773: پروندهی
deepfreeze.pyاکنون از شیء کد با frozensetهایی که حاوی انواع ناسازگار و غیرقابل مرتبسازی هستند، پشتیبانی میکند.gh-94682: ساخت و آزمون با OpenSSL 1.1.1q
gh-90005: وابستگیهای ماژولهای
readlineوcursesاکنون در اسکریپتconfigureبا استفاده ازpkg-configشناسایی میشوند. فقط کتابخانههایncurses/ncurseswبه صورت خودکار شناسایی میشوند. کتابخانهی قدیمیcursesبه صورت خودکار پیکربندی نمیشود. راهکار جایگزین برای کتابخانهی گمشدهیtermcapیاtinfoحذف شده است.gh-90005: رفع مشکل ساخت افزونهی
_ctypesبدونpkg-config.gh-90005: وابستگیهای ماژول
_dbmاکنون توسط configure شناسایی میشوند.gh-94404: دستور
makesetupاکنون مشکل مربوط به sed روی macOS را دور میزند و از CFLAGS صحیح برای پروندههای شیء (object files) که در یک افزونهی مشترک قرار میگیرند، استفاده میکند. از CFLAGS ماژول قبل از PY_STDMODULE_CFLAGS برای جلوگیری از تداخل با سرآیندهای سیستم استفاده میشود.gh-93939: ماژولهای توسعهای C اکنون بهجای
distutilsوsetup.pyتوسطconfigureوmakeساخته میشوند.gh-93939: اسکریپتهای
2to3،idleوpydocاکنون بهجایsetup.pyتوسطMakefileتولید و نصب میشوند.gh-94280: اسکریپت تولید مجدد pegen در ویندوز بهروزرسانی شد تا پایتون ۳.۹ یا بالاتر را پیدا کرده و از آن استفاده کند. پیش از این، تولید مجدد pegen از قبل به نسخهی ۳.۹ یا بالاتر نیاز داشت، اما ممکن است اسکریپت از نسخههای پایینتر پایتون استفاده کرده باشد.
gh-93584: حل مشکل شرایط رقابت (race condition) در
Makefileهنگام نصب ساخت (build) نوع PGO. تمام هدفهایtestوinstallاکنون به هدفallوابستهاند.gh-93491: دستور
configureاکنون سطوح پشتیبانی PEP 11 را شناسایی کرده و گزارش میدهد.gh-69093: اصلاح قاعدهی
Modules/Setup.stdlib.inبرای افزونهی_sqlite3.gh-93207: تابع
va_start()با دو پارامتر، مانندva_start(args, format),اکنون برای ساخت پایتون الزامی است. تابعva_start()دیگر با یک پارامتر فراخوانی نمیشود. پتچ توسط Kumar Aditya.gh-93202: پایتون اکنون همیشه از قالبهای
%zuو%zdدر printf برای قالببندی یک عددsize_tیاPy_ssize_tاستفاده میکند. ساخت پایتون ۳.۱۲ به یک کامپایلر C11 نیاز دارد، بنابراین این قالبهای printf اکنون همیشه پشتیبانی میشوند. وصله (patch) توسط Victor Stinner.gh-90473: غیرفعال کردن pymalloc و افزایش اندازهی پشته در
wasm32-wasi.bpo-34449: حذف سویچ نامعتبر کامپایلر
-fPICبرای HP aCC روی HP-UX. وصله (patch) توسط Michael Osipov.
Windows¶
gh-98360: اصلاح ایجاد فرایندهای فرزند در ویندوز توسط
multiprocessingاز یک محیط مجازی، برای اطمینان از اینکه فرایندهای فرزندی که آنها نیز ازmultiprocessingبرای ایجاد فرزندان بیشتر استفاده میکنند، تشخیص دهند که در یک محیط مجازی قرار دارند.gh-98414: اصلاح نحوهی پردازش گزینهی
-V:<company>/توسط برنامهی راهاندازpy.exeزمانی که ترجیحات پیشفرض در متغیرهای محیطی یا پروندههای پیکربندی تنظیم شدهاند.gh-97728: رفع خرابیهای احتمالی ناشی از استفاده از متغیرهای مقداردهینشده هنگام ارسال آرگومانهای نامعتبر در
os.system()روی ویندوز و در ماژولهای مختص ویندوز (مانندwinreg).gh-90989: نصب برنامهی راهانداز مدیر نصب پایتون بهطور پیشفرض بهصورت هر کاربر (per-user) انجام میشود (مگر اینکه از قبل نصب برای همهی کاربران وجود داشته باشد)، و شفافسازی برخی متنها در برنامهی نصب.
gh-97649: پوشهی
Toolsدیگر روی ویندوز نصب نمیشود.gh-96965: بهروزرسانی libffi به نسخهی 3.4.3
gh-96577: رفع سرریز احتمالی بافر در
msilib.gh-96559: رفع مشکل برنامهی راهانداز ویندوز که از تفسیر سازگار برچسبهای پیشفرض موجود در پروندههای پیکربندی استفاده نمیکرد، هنگامی که هیچ برچسبی به دستور ارسال نشده بود.
gh-94781: اصلاح پروندهی
pcbuild.projبرای پاکسازی نمونههای قبلی پروندههای خروجی در پوشههایPython\deepfreezeوPython\frozen_modulesروی ویندوز. وصله (patch) توسط Charlie Zhao.gh-89545: بهروزرسانی کد
platformبرای دریافت نسخهی ویندوز بهمنظور استفاده از پرسوجوهای بومی Windows Management Instrumentation (WMI) جهت تعیین نسخه، نوع و معماری سیستمعامل.gh-95733: اختیاری کردن برخی از نیازمندیهای بستهی Windows Store جهت امکان نصب روی بهروزرسانیهای قدیمیتر ویندوز.
gh-95656: فعالسازی API مربوط به
enable_load_extension()درsqlite3.gh-95587: رفع برخی مشکلاتی که در آنها نصبکنندهی ویندوز هنگام ارتقا، ویژگیهای خاصی از یک نصب موجود را بهطور نادرست تشخیص میداد.
gh-94399: بازیابی رفتار مدیر نصب پایتون برای خطوط مفسر
/usr/bin/env؛ که اکنون برای یافتن یک فایل اجرایی مطابق با دستور دادهشده،PATHرا جستجو خواهد کرد. اگر هیچ موردی پیدا نشود، فرایند جستجوی معمول به کار میرود.gh-95445: رفع حذف ناموفق پوشهی مستندات HTML هنگام حذف نصب با استفاده از msi ویندوز.
gh-95359: رفع نحوهی مدیریت دستورات
py.iniتوسط مدیر نصب پایتون (که به اشتباه انتظار پیشوندpy_را روی کلیدها داشت) و رفع خطاهای مهلک هنگام خواندن پروندهی پیکربندی به ازای هر کاربر.gh-95285: رفع نحوهی مدیریت خطوط دستوری توسط مدیر نصب پایتون در حالتی که فقط یک نام اجرایی کوتاه به آن ارسال میشود.
gh-90844: امکان راهاندازی صحیح محیطهای مجازی هنگامی که در مسیر خود دارای فاصله (space) هستند.
gh-94772: رفع مدیریت نادرست خطوط مفسر در راهانداز py.exe
gh-94018: ماژول
zipfileاکنون هنگام استخراج پروندهها در ویندوز، فاصلههای پایانی را از اجزای مسیر حذف میکند.gh-93824: قابلیت کشیدن و رها کردن (Drag and drop) پروندهها روی پروندههای پایتون در Windows Explorer برای نسخهی ARM64 ویندوز فعال شد.
gh-43414: تابع
os.get_terminal_size()اکنون بهجای پشتیبانی صرف از توصیفگرهای پروندهی 0، 1 و 2، تلاش میکند اندازه را از هر دستهی ارائهشدهای بخواند.gh-92817: تضمین میکند که
py.exeیک محیط مجازی فعال را به برچسبهای پیشفرض مشخصشده با متغیرهای محیطی یا از طریق پروندهیpy.iniترجیح دهد.gh-92984: غیرفعالسازی صریح پیونددهی افزایشی (incremental linking) برای ساختهای غیر دیباگ
gh-92841: ماژول
asyncioدیگر پس از فعالیت سوکت ناهمگام در هنگام خروج مفسر، خطایRuntimeError: Event loop is closedرا پرتاب نمیکند. اصلاحیه از Oleg Iarygin.bpo-46907: بهروزرسانی نصبکنندهی ویندوز برای استفاده از SQLite 3.38.4.
gh-91061: پذیرش os.PathLike برای آرگومانِ winsound.PlaySound
bpo-42658: پشتیبانی از مقایسههای مسیر بومی ویندوز که نسبت به بزرگی و کوچکی حروف حساس نیستند، با استفاده از
LCMapStringExبه جایstr.lower()درntpath.normcase(). افزودنLCMapStringExبه ماژول_winapi.bpo-38704: جلوگیری از نصب روی نسخههای پشتیبانینشدهی ویندوز.
مکاواس¶
gh-97897: کیت توسعه نرمافزار (SDK) مکاوس ۱۳ شامل پشتیبانی از فراخوانیهای سیستمی
mkfifoatوmknodatاست. استفاده از گزینهیdir_fdبا هر کدام ازos.mkfifo()یاos.mknod()ممکن است در صورتی که cpython با کیت توسعه نرمافزار مکاوس ۱۳ ساخته شده باشد اما روی نسخهی قدیمیتری از مکاوس اجرا شود، به خطای حافظه (segfault) منجر شود. با افزودن پشتیبانی رانتایم برای تشخیص این فراخوانیهای سیستمی («پیوند ضعیف» یا weaklinking)، همانطور که برای سایر فراخوانیهای سیستمی جدیدتر در مکاوس انجام میشود، از این امر جلوگیری کنید.
IDLE¶
gh-97527: رفع یک باگ در رفعباگ قبلی که باعث میشد IDLE هنگام اجرا با نسخههای 3.10.8، 3.12.0a1 و دستکم مایکروسافت پایتون 3.10.2288.0 بدون نصب بستهی Lib/test اجرا نشود. نسخهی 3.11.0 هرگز تحت تأثیر قرار نگرفته بود.
gh-65802: مستندسازی نحوهی مدیریت پسوندها در محاورههای «ذخیره با نام» (Save As).
gh-95191: گنجاندن اعلانها هنگام ذخیرهسازی پوسته (ورودی و خروجی تعاملی).
gh-95511: رفع باگ کپی با اعلان در منوی زمینهی پوسته که باعث میشد هنگام انتخاب کل سطرها، یک سطر اضافی نیز کپی شود.
gh-95471: در منوی ویرایش، گزینهی
Select Allرا جابهجا کرده و یک جداکنندهی جدید اضافه کنید.gh-95411: امکان استفاده از مرورگر ماژول IDLE با پروندههای .pyw.
gh-89610: افزودن پسوند .pyi به عنوان پسوند شناختهشده برای IDLE در مکاوس. این کار امکان باز کردن پروندههای stub را با دوبار کلیک کردن روی آنها در Finder فراهم میکند.
Tools/Demos¶
gh-68686: حذف اسکریپتهای ptags و eptags.
gh-97681: حذف پوشهی
Tools/demo/که حاوی اسکریپتهای نمایشی قدیمی بود. نسخهای از آن را میتوانید در old-demos project بیابید. وصل توسط Victor Stinner.gh-97669: حذف اسکریپتهای نمونهی منسوخشده از پوشهی
Tools/scripts/. نسخهای از آن را میتوانید در old-demos project بیابید. وصل توسط Victor Stinner.gh-95853: اسکریپت
wasm_build.pyاکنون پورتهای Emscripten را از پیش میسازد، نسخههای خراب EMSDK را بررسی میکند و دربارهی متغیرهای محیطی pkg-config هشدار میدهد.gh-95853: ابزار جدید
Tools/wasm/wasm_builder.pyمراحل پیکربندی، کامپایل و آزمون را برای ساخت سیپایتون روی پلتفرمهای WebAssembly خودکار میکند.gh-95731: رفع مدیریت رشتههای مستند ماژول در
Tools/i18n/pygettext.py.gh-93939: افزودن اسکریپت
Tools/scripts/check_modules.pyبرای بررسی و اعتبارسنجی ماژولهای توسعهای توکار و مشترک. این اسکریپت همچنینModules/Setupرا مدیریت میکند و در نهایت جایگزینsetup.pyخواهد شد.gh-94538: رفع خروجی آرگومان کلینیک (Argument Clinic) به مقصدهای پروندهی سفارشی. وصل توسط Erlend E. Aasland.
gh-94430: اجازه دادن به پارامترهای با نام
moduleوselfبا نامهای سفارشی C در آرگومان کلینیک. وصل توسط Erlend E. Aasland.gh-86087: اسکریپت
Tools/scripts/parseentities.pyکه برای تجزیه موجودیتهای HTML4 استفاده میشد، حذف شد.
رابط C API¶
gh-98393: تابع
PyUnicode_FSDecoder()دیگر مسیرهای بایتمانند، مانند انواعی چونbytearrayوmemoryviewرا نمیپذیرد: فقط نوع دقیقbytesبرای رشتههای بایت پذیرفته میشود. وصل توسط Victor Stinner.gh-91051: افزودن
PyType_Watch()و ایپیآیهای مرتبط برای اجازه دادن به فراخوانیهای بازگشتی رویPyType_Modified().gh-95756: ایجاد تنبل و نهانگاه کردن ویژگیهای
co_برای بهبود کارایی در تابعهای دریافتکنندهی کد (code getters).gh-96512: پیکربندی مربوط به محدودیت طول تبدیل رشته به عدد صحیح اکنون در ساختار C API به نام PyConfig قرار دارد.
gh-95589: کلاسهای افزایشی (Extension classes) که
tp_dictoffsetوtp_weaklistoffsetرا تنظیم میکنند، پشتیبانی از ارثبری چندگانه را از دست میدهند، اما اکنون امن هستند. کلاسهای افزایشی باید به جای آن ازPy_TPFLAGS_MANAGED_DICTوPy_TPFLAGS_MANAGED_WEAKREFاستفاده کنند.gh-95781: یک نویسهی قالببندی ناشناخته در
PyUnicode_FromFormat()وPyUnicode_FromFormatV()اکنون یکSystemErrorایجاد میکند. در نسخههای قبلی باعث میشد که تمام بقیهی رشتهی قالببندی بهصورت دستنخورده در رشتهی نتیجه کپی شود و هرگونه آرگومان اضافی نادیده گرفته شود.gh-92678: بازگردانی رفتار نسخهی ۳.۱۰ برای ارثبری چندگانه از کلاسهای افزایشی C که دیکشنری خود را در انتهای ساختار ذخیره میکنند.
gh-92678: پشتیبانی از افزونههای C با استفاده از دیکشنریهای مدیریتشده از طریق تنظیم پرچم
Py_TPFLAGS_MANAGED_DICT.gh-93274: رابط برنامهنویسی (API) برای پیادهسازی vectorcall (شامل
Py_TPFLAGS_HAVE_VECTORCALL،PyVectorcall_NARGS()وPyVectorcall_Call()) به API محدود (limited API) و ABI پایدار اضافه شد.gh-95504: اصلاح تعیین محل علامت (sign) هنگام مشخص کردن عرض یا دقت در
PyUnicode_FromFormat()وPyUnicode_FromFormatV(). وصلهی ارائهشده توسط Philip Georgi.gh-93012: پرچم
Py_TPFLAGS_HAVE_VECTORCALLاکنون وقتی متد__call__()یک کلاس دوباره انتساب داده میشود، از آن حذف میشود. این کار استفاده از vectorcall را با انواع تغییرپذیر (mutable) امن میکند (یعنی انواع heap بدون پرچمimmutable). انواع تغییرپذیری کهtp_callرا بازنویسی (override) نمیکنند، اکنون پرچمPy_TPFLAGS_HAVE_VECTORCALLرا به ارث میبرند.gh-95388: ایجاد
انواع تغییرناپذیربا پایههای تغییرپذیر منسوخ شده است و برنامهریزی شده است که در پایتون ۳.۱۴ غیرفعال شود.gh-92678: توابع ناپایدار C-API به نامهای
_PyObject_VisitManagedDictو_PyObject_ClearManagedDictرا اضافه میکند تا به افزونههای C اجازه دهد به ماشین مجازی اجازه دهند دیکشنریهای شیء خود را مدیریت کند.gh-94936: توابع
PyCode_GetVarnames()،PyCode_GetCellvars()وPyCode_GetFreevars()برای دسترسی بهco_varnames،co_cellvarsوco_freevarsبه ترتیب از طریق C API اضافه شدند.gh-94930: رفع خطای
SystemErrorکه هنگام استفاده ازPyArg_ParseTupleAndKeywords()با#در(...)اما بدون تعریفPY_SSIZE_T_CLEANرخ میداد.gh-94731: پایتون بار دیگر هنگام کامپایل با C++ از تبدیلهای نوع به سبک C برای بیشتر عملیاتهای تبدیل استفاده میکند. اگر هشدارهای کامپایلر مثلاً با گزینههای
-Wold-style-castیا-Wzero-as-null-pointer-constantبرایg++فعال شده باشند، این موضوع ممکن است باعث ایجاد هشدارهای کامپایلر شود.gh-93937: توابع فریم و نوع زیر اکنون مستقیماً با
#include <Python.h>در دسترس هستند، و دیگر نیازی به افزودن#include <frameobject.h>نیست:توسط Victor Stinner وصل شد.
gh-91321: سازگاری رابط برنامهنویسی کاربردی (API) پایتون با C++ قدیمیتر از C++11 را اصلاح میکند. وصله توسط Victor Stinner.
gh-91731: هنگام کامپایل با C++ 11، از تعریف
static_assertجلوگیری کنید، جایی که این یک کلیدواژه است و تعریف مجدد آن میتواند به رفتار تعریفنشده منجر شود. وصله توسط Pablo Galindogh-89546: تابع
PyType_FromMetaclass()(و سایر توابعPyType_From*) اکنون بررسی میکنند که آفستها وtp_basicsizeکلاس پایه درtp_basicsizeکلاس جدید بگنجند.gh-93503: دو تابع عمومی جدید به رابط برنامهنویسی کاربردی (API) C، یعنی
PyEval_SetProfileAllThreads()وPyEval_SetTraceAllThreads()اضافه کنید که اجازه میدهند علاوه بر نخ فراخواننده، توابع ردیابی و پروفایلگیری در تمام نخهای در حال اجرا تنظیم شوند. همچنین، دو تابع مشابه به ماژولthreading(threading.setprofile_all_threads()وthreading.settrace_all_threads()) اضافه شد که اجازه انجام همین کار را از پایتون میدهند. وصله توسط Pablo Galindogh-93442: افزودن سربارگذاریهای C++ برای _Py_CAST_impl() جهت مدیریت 0/NULL. این کار به افزونههای C++ که 0 یا NULL را به ماکروها با استفاده از _Py_CAST() ارسال میکنند، اجازه میدهد تا به کامپایل کردن ادامه دهند.
gh-93466: شناسههای جایگاه (Slot IDs) در PyType_Spec نباید تکرار شوند. مستندات بهروزرسانی شد تا به این موضوع اشاره شود. برای برخی از موارد جایگاههای تکرارشده، PyType_FromSpec و توابع مرتبط اکنون یک استثنا ایجاد میکنند.
gh-92898: اخطارهای کامپایلر C++ را هنگام تبدیل نوع آرگومانهای تابع به
PyObject*اصلاح کنید. وصله توسط Serge Guelton.gh-93103: متغیرهای پیکربندی سراسری، مانند
Py_IgnoreEnvironmentFlag، در مستندات منسوخ شدند: در عوض باید از رابط برنامهنویسی کاربردی (API)Py_InitializeFromConfig()استفاده شود. وصله توسط Victor Stinner.gh-77782: متغیر پیکربندی سراسری مانند
Py_IgnoreEnvironmentFlagمنسوخ شد: در عوض باید از رابط برنامهنویسی کاربردی (API)Py_InitializeFromConfig()استفاده شود. وصله توسط Victor Stinner.gh-92913: تضمین میکند که تغییرات در
PyConfig.module_search_pathsنادیده گرفته شوند، مگر اینکهPyConfig.module_search_paths_setتنظیم شودgh-92781: از ترکیب اعلانها و کد در رابط برنامهنویسی کاربردی (API) C برای رفع اخطار کامپایلر جلوگیری کنید: "ISO C90 forbids mixed declarations and code" [-Werror=declaration-after-statement]. وصله توسط Victor Stinner.
gh-92651: پرونده سرآیند
token.hرا حذف کنید. هرگز هیچ رابط برنامهنویسی کاربردی (API) توکنساز عمومی وجود نداشته است. پرونده سرآیندtoken.hفقط برای استفاده توسط بخشهای داخلی پایتون طراحی شده بود. وصله توسط Victor Stinner.gh-92536: رابطهای برنامهنویسی کاربردی (API) قدیمی یونیکد مبتنی بر
Py_UNICODE*را حذف کنید.gh-85858: تابع
PyUnicode_InternImmortal()و ماکروSSTATE_INTERNED_IMMORTALرا حذف کنید. وصله توسط Victor Stinner.gh-92193: تابع جدید
PyFunction_SetVectorcall()را به رابط برنامهنویسی کاربردی (API) C اضافه کنید که فیلد vectorcall یکPyFunctionObjectدادهشده را تنظیم میکند.هشدار: افزونههایی که از این رابط برنامهنویسی کاربردی (API) استفاده میکنند باید رفتار تابع دستنخورده را حفظ کنند!
gh-59121: یک بررسی assert اصلاح شد که مانع از این میشد که
PyRun_InteractiveOneهنگام تجزیه از توصیفگر پرونده (FD) ارائهشده، ردگیریها (tracebacks) را فراهم کند.bpo-45383: رابط برنامهنویسی
PyType_FromSpec()اکنون یک فراکلاس را بر اساس پایههای ارائهشده پیدا کرده و استفاده میکند. اگر تضادی بین فراکلاسها وجود داشته باشد، خطایی صادر خواهد شد.
Python 3.11.0 بتا ۱¶
تاریخ انتشار: ۲۰۲۲-۰۵-۰۶
امنیت¶
gh-57684: اضافهکردن گزینهی خط فرمان
-Pو متغیر محیطیPYTHONSAFEPATHبرای اضافهنکردن یک مسیر بالقوه ناامن بهsys.path. وصله توسط Victor Stinner.
هسته و توکارها (Core and Builtins)¶
gh-89519: زنجیرهسازی توصیفگرهای classmethod (که در bpo-19072 معرفی شده بود) منسوخ شده است. دیگر نمیتوان از آن برای پوشش دادن سایر توصیفگرها مانند property() استفاده کرد. طراحی اصلی این ویژگی دارای نقص بود و مشکلات متعددی را در پاییندست ایجاد کرد.
gh-92345: تابع
pymain_run_python()اکنون پیش از اینکه sys.path گسترش یابد تا شامل پوشهی کاری فعلی یک مفسر تعاملی شود، ماژولهایreadlineوrlcompleterرا ایمپورت میکند. مفسرهای غیرتعاملی تحت تأثیر قرار نمیگیرند.bpo-43857: بهبود پیام
AttributeErrorهنگام حذف یک ویژگی ناموجود. وصله توسط Géry Ogam.gh-92245: اطمینان حاصل کنید که PEP 523 در تمام موارد رعایت میشود. در نسخهی 3.11a7، تخصصیسازی ممکن است مانع از این شده باشد که فراخوانیهای Python-to-Python از PEP 523 تبعیت کنند.
gh-92203: افزودن پارامتر فقط-کلیدواژهی closure به
exec(). این پارامتر فقط زمانی میتواند مشخص شود که شیء کدی که از متغیرهای آزاد استفاده میکند، در حال اجرا (exec-ing) است. هنگام مشخص شدن، باید یک تاپل باشد، دقیقاً به تعداد متغیرهای سلولی که شیء کد به آنها ارجاع میدهد. closure دارای مقدار پیشفرضNoneاست، و اگر شیء کد به هیچیک از متغیرهای آزاد ارجاع ندهد، بایدNoneباشد.gh-91173: غیرفعال کردن ماژولهای فریزشده در ساختهای دیباگ. وصله توسط Kumar Aditya.
gh-92114: بهبود پیام خطا هنگام زیرنویس کردن یک نوع (type) که مقدار
__class_getitem__آن رویNoneتنظیم شده است.gh-92112: رفع فروپاشی ایجاد شده توسط یک
mro()سفارشی و مخرب روی یک فراکلاس.gh-92063: دستور
PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDSاکنون تضمین میکند که متدها فقط روی اشیایی از نوع صحیح فراخوانی شوند.gh-92031: بهینهسازیزدایی از اشیاء کد تخصیصیافتهی ایستا در طول
Py_FINALIZE()به طوری که فراخوانیهای بعدی_PyCode_Quickenهمیشه با کد بهینهسازینشده شروع شوند.gh-92036: رفع یک فروپاشی در زیرمفسرها مرتبط با جمعآوریکنندهی زباله. هنگامی که یک زیرمفسر حذف میشود، تمام شیءهای ردیابیشده توسط GC آن را از ردیابی خارج کنید. برای جلوگیری از فروپاشی در عملکردهای تابع تخریبگر که انتظار دارند شیءها توسط GC ردیابی شوند، یک ارجاع قوی به این شیءها را عمداً نشت دهید، بهطوری که هرگز حذف نشوند و تابعهای تخریبگر آنها فراخوانی نشوند. وصل توسط Victor Stinner.
gh-92032: مفسر اکنون میتواند کلیدواژههای نرم (soft keywords) را به طور خودکار تکمیل کند، که از این پس شامل
match،caseو_(الگوی وایلدکارد) از PEP 634 میشوند.gh-87999: اخطار صادرشده توسط پارسر پایتون برای یک عدد لفظی که بلافاصله پس از آن یک کلیدواژه آمده است، از اخطار منسوخسازی به اخطار نحوی تغییر یافته است.
gh-91869: رفع مشکلی که در آن آپکدهای تخصصیشده با آرگومانهای توسعهیافته ممکن بود خروجی ردیابی نادرستی تولید کنند یا به خطاهای ادعا (assertion) منجر شوند.
gh-91603: افزایش سرعت نمونهسازی
types.UnionType. بر اساس وصلهی ارائهشده توسط Yurii Karabas.gh-89373: اگر پایتون در حالت اشکالزدایی ساخته شود، اکنون پایتون تضمین میکند که توابع تخصیصزدا، استثنای فعلی را دستنخورده باقی بگذارند. وصله توسط Victor Stinner.
gh-91632: برطرف کردن یک نشت حافظهی جزئی هنگام خروج: آزادسازی حافظهی نوع
generic_alias_iterator. اصلاحیه از Donghee Na.gh-81548: گریزهای هشتهشتی با مقداری بزرگتر از
0o377اکنون یکDeprecationWarningتولید میکنند. در نسخهای آینده از پایتون، آنها یکSyntaxWarningو در نهایت یکSyntaxErrorخواهند بود.bpo-43950: استفاده از یک جدول فشردهی واحد برای شروعها، پایانها و آفستهای ستون سطر. کاهش مصرف حافظه برای اطلاعات مکان به میزان نصف.
gh-91102: استفاده از Argument Clinic برای
EncodingMap. اصلاحیه از Oleg Iarygin.gh-91636: برطرف کردن یک فروپاشی در یک حالت مرزی جمعآوری زباله که در آن یک تابع
PyFunction_Type.tp_clearمیتواند یک شیء تابع پایتون را در وضعیتی ناسازگار رها کند.gh-91603: تسریع بررسیهای
isinstance()وissubclass()برایtypes.UnionType. اصلاحیه از Yurii Karabas.gh-91625: برطرف کردن باگی که در آن آپکدهای تطبیقی هرگونه
EXTENDED_ARGپیش از خود را در زمان شکست تخصصیسازی نادیده میگرفتند.gh-78607: ساخت خاص LLTRACE اکنون بهجای نام
__ltrace__(که به عنوان یک خطای تایپی معرفی شده بود)، به دنبال نام__lltrace__تعریفشده در متغیرهای سراسری ماژول میگردد.gh-91576: تسریع پیمایش رشتههای ascii به میزان ۵۰ درصد. اصلاحیه از Kumar Aditya.
gh-89279: بهبود کارایی مفسر در ویندوز با درونخطی کردن چند ماکروی خاص.
gh-91502: افزودن یک تابع جدید در API به نام
_PyFrame_IsEntryFrame()برای بررسی اینکه آیا یکPyFrameObjectیک قاب ورودی است یا خیر. اصلاحیه از Pablo Galindo.gh-91266: بازسازی متدهای حذف
bytearrayیعنیstrip،lstripوrstripبرای استفاده از یک پیادهسازی مشترک.gh-91479: جایگزینی فیلد
__note__ازBaseException(که در نسخهای قبلی از ۳.۱۱ اضافه شده بود) با طراحی نهایی PEP 678. یعنی،BaseExceptionیک متدadd_note()دریافت میکند و فیلد__notes__آن در صورت لزوم ایجاد میشود.gh-46055: تسریع شیفت به راست اعداد صحیح منفی با حذف ایجاد متغیرهای موقت غیرضروری. اصلاحیهی اصلی از Xinhang Xu، بازسازیشده توسط Mark Dickinson.
gh-91462: خواناتر کردن خروجی ویژگی ردیابی سطح پایین (lltrace) مفسر با نمایش نام آپکدها (بهجای فقط اعداد) و نمایش محتویات پشته پیش از هر آپکد.
gh-89455: برطرف کردن یک مقدار bool مقداردهینشده در مسیر کد چاپ ردیابی که توسط کار اولیه روی گروههای استثنا در bpo-45292 معرفی شده بود.
gh-91421: برطرف کردن یک سرریز عدد صحیح بالقوه در _Py_DecodeUTF8Ex.
gh-91428: افزودن
static const char *const _PyOpcode_OpName[256] = {...};بهopcode.hبرای ساختهای اشکالزدایی به منظور کمک به اشکالزدایی مفسر پایتون. اکنون راحتتر است که با گنجاندن نام آپکدها بهجای فقط ارقام دهدهی مربوطه، اشکالزدایی را به اشکال مختلف برای انسان خواناتر کنیم.bpo-47120: مجازی کردن
POP_JUMP_IF_TRUE،POP_JUMP_IF_FALSE،POP_JUMP_IF_NONEوPOP_JUMP_IF_NOT_NONEو نگاشت آنها به آپکدهای پرش نسبی جدید.bpo-45317: افزودن مستندات داخلی که طراحی پشتهی قاب جدید (برای نسخه ۳.۱۱) را توضیح میدهد.
کتابخانه¶
bpo-47197: کتابخانهی ctypes در گذشته انواع بازگشتی
voidرا به درستی مدیریت نمیکرد، به طوری که برای مثال تابعی که به صورتctypes.CFUNCTYPE(None, ctypes.c_int)اعلان شده بود، به جایvoid f(int)با امضایint f(int)فراخوانی میشد. اهداف Wasm نیازمند این هستند که اشارهگرهای تابع با امضاهای صحیح فراخوانی شوند و به همین دلیل این موضوع منجر به فروپاشی (crash) میشد. این مشکل اکنون برطرف شده است.
هسته و توکارها (Core and Builtins)¶
bpo-47120: آپکدهای
JUMP_IF_TRUE_OR_POPوJUMP_IF_FALSE_OR_POPرا بهجای مطلق، نسبی بسازید.bpo-47177: عضو
f_lastiدر ساختار داخلی_PyInterpreterFrameبا یک اشارهگرprev_instrجایگزین شد که سربار را در حلقهی اصلی مفسر کاهش میدهد. ویژگیf_lastiاز شیءهای قاب در لایهی پایتون برای سازگاری با نسخههای پیشین حفظ شده است.bpo-46961: عملیات باقیمانده/باقیماندهی عدد صحیح، از جمله شکل سه آرگومانی
pow()، اکنون در صورت امکان بهطور سازگار اعداد صحیح را از نهانگاه کوچک اعداد صحیح سراسری برمیگردانند.bpo-46962: کلاسها و توابعی که بهطور بیشرط رشتههای مستند خود را با نادیده گرفتن پرچم کامپایل
--without-doc-stringsاعلام میکردند، دیگر این کار را نمیکنند.کلاسهای تحت تأثیر عبارتند از
ctypes.UnionType،pickle.PickleBuffer،testcapi.RecursingInfinitelyErrorوtypes.GenericAlias.توابع تحت تأثیر عبارتند از ۲۴ متد در
ctypes.وصله توسط Oleg Iarygin.
bpo-46942: استفاده از Argument Clinic برای سازندهی
types.MethodType. وصله توسط Oleg Iarygin.bpo-46764: اصلاح بستهبندی متدهای کراندار با @classmethod
bpo-43464: بهینهسازی
set.intersection()برای آرگومانهای غیرمجموعه.bpo-46721: بهینهسازی
set.issuperset()برای آرگومان غیرمجموعه.bpo-46509: افزودن نسخههای نوعتخصصیشده از
Py_DECREF()و استفاده از آنها برایfloat،int،str،boolوNoneجهت جلوگیری از تعقیب اشارهگر در زمان اجرا در جاهایی که نوعها در زمان کامپایل C شناختهشده هستند.
ساخت¶
bpo-46045: عدم استفاده از سمافورهای POSIX روی NetBSD
هسته و توکارها (Core and Builtins)¶
bpo-36819: رفع فروپاشیها در کدگذارهای توکار با کنترلکنندههای خطایی که موقعیتی کمتر یا مساوی با موقعیت شروع نویسههای غیرقابل کدگذاری برمیگردانند.
bpo-34093: تابع
marshal.dumps()ازFLAG_REFبرای تمام رشتههای درونیسازیشده استفاده میکند. این کار خروجی را قطعیتر میکند و به ساخت قابل بازتولید کمک میکند.bpo-26579: افزودن متد
object.__getstate__که پیادهسازی پیشفرض متد__getstate__()را فراهم میکند.کپی کردن و پیکل کردن نمونههای زیرکلاسهای انواع توکار bytearray، set، frozenset، collections.OrderedDict، collections.deque، weakref.WeakSet و datetime.tzinfo اکنون ویژگیهای نمونهای را که به شکل جایگاه (slot) پیادهسازی شدهاند نیز کپی و پیکل میکند.
کتابخانه¶
gh-87901: افزودن پارامتر encoding به
os.popen().gh-90997: رفع موردی که در آن ابزارهای
disممکن است ورودیهای نهانگاه درونخطی پرشده را به عنوان دستورالعملهای معتبر تفسیر کنند.gh-92332: منسوخ کردن
typing.Text(حذف این کلاس در حال حاضر برنامهریزی نشده است). اصلاحیه از Alex Waygood.gh-78157: منسوخ کردن کلاسهای تودرتو در تعاریف enum که به عضو تبدیل میشوند -- در نسخهی 3.13 آنها کلاسهای عادی خواهند بود؛ توابع
memberوnonmemberرا اضافه کنید تا امکان کنترل نتایج در حال حاضر فراهم شود.gh-92356: رفع پسرفت (regression) عملکردی در فراخوانیهای تابع ctypes.
gh-90997: نمایش مقادیر نامگذاریشدهی واقعی ذخیرهشده در نهانگاههای درونخطی هنگامی که
show_caches=Trueبه ابزارهایdisارسال میشود.gh-92301: ترجیح دادن
close_range()به پیمایش روی procfs برای بستن توصیفگر پرونده درsubprocessجهت عملکرد بهتر.gh-67248: مرتبسازی موضوعات متفرقه در Cmd.do_help()
gh-92210: پورت کردن
socket.__init__به Argument Clinic. اصلاحیه از Cinder.gh-80010: افزودن پشتیبانی از تجزیه عمومی ISO 8601 به
datetime.datetime.fromisoformat()،datetime.date.fromisoformat()وdatetime.time.fromisoformat(). اصلاحیه از Paul Ganssle.gh-92118: رفع پسرفت (regression) نسخهی 3.11 در
contextmanager()، که باعث میشد استثناها را با ردگیریهای نادرست انتقال دهد.gh-90887: افزودن ثابتهای
COPYFILE_STAT،COPYFILE_ACLوCOPYFILE_XATTRبرایos.fcopyfile()که در macOS موجود هستند.gh-91215: برای
@dataclass، پارامتر weakref_slot را اضافه کنید. مقدار پیشفرض این پارامتر جدیدFalseاست. اگر درست باشد، و اگرslots=Trueباشد، یک جایگاه به نام"__weakref__"اضافه کنید که به نمونهها اجازه میدهد ارجاع ضعیف (weakref) داشته باشند. مشارکت از Eric V. Smithgh-85984: تابع جدید os.login_tty() برای یونیکس.
gh-92128: افزودن
__class_getitem__()بهlogging.LoggerAdapterوlogging.StreamHandler، که به آنها اجازه میدهد در رانتایم پارامتریسازی شوند. اصلاحیه از Alex Waygood.gh-92049: ممنوع کردن پیکل کردن ثابتهای
re._constants.SUCCESSو غیره. پیشتر، پیکل کردن با خطا مواجهچ نمیشد، اما نتیجه قابل unpickling نبود.gh-92062: کلاس
inspect.Parameterاکنون اگرnameیک کلیدواژه باشد، علاوه بر بررسی موجود مبنی بر شناسه بودن آن، یکValueErrorایجاد میکند.gh-87390: افزودن ویژگی
__unpacked__بهtypes.GenericAlias. اصلاحیه از Jelle Zijlstra.gh-88089: افزودن پشتیبانی برای
typing.NamedTupleعام.gh-91996: enum جدید http.HTTPMethod برای نمایش تمام متدهای درخواست HTTP موجود به روشی راحت
gh-91984: رشتههای آزمون در test_argparse.py را به گونهای اصلاح کنید که حاوی فاصلههای انتهایی قبل از پایان سطر نباشند.
gh-91952: افزودن پشتیبانی
encoding="locale"بهTextIOWrapper.reconfigure().gh-91954: افزودن آرگومانهای encoding و errors به
subprocess.getoutput()وsubprocess.getstatusoutput().bpo-47029: برای جلوگیری از خطای
BrokenPipeErrorدر هنگام زبالهروبی و در فراخوانیهایmultiprocessing.Queue.close()، انتهای خواندنی پایپ استفادهشده توسطmultiprocessing.Queueرا همیشه پس از آخرین نوشتن دادههای بافرشده در انتهای نوشتنی پایپ ببندید. پتچ توسط Géry Ogam.gh-91928: افزودن نام مستعار
datetime.UTCبرایdatetime.timezone.utc.پتچ توسط Kabir Kwatra.
gh-68966: ماژول
mailcapاکنون منسوخ شده است و در پایتون ۳.13 حذف خواهد شد. برای دلیل این تغییر به PEP 594 و برای یک گزینهی جایگزین به ماژولmimetypesمراجعه کنید. پتچ توسط Victor Stinner.gh-91401: فراهم کردن راهی برای غیرفعال کردن استفادهی
subprocessازvfork()در صورت نیاز احتمالی و مستندسازی مکانیزم موجود برایposix_spawn().gh-64783: اصلاح مقدار
signal.NSIGدر سیستمعامل FreeBSD برای پذیرش شماره سیگنالهای بزرگتر از ۳۲، مانندsignal.SIGRTMINوsignal.SIGRTMAX. پتچ توسط Victor Stinner.gh-91910: افزودن پیشوند گمشدهی f به افاسترینگها در پیامهای خطای ماژولهای
multiprocessingوasyncio.gh-91860: افزودن
typing.dataclass_transform()که PEP 681 را پیادهسازی میکند. پتچ توسط Jelle Zijlstra.gh-91832: افزودن ویژگی
requiredبه خروجی repr ازargparse.Action.gh-91827: در ماژول
tkinterمتدinfo_patchlevel()را اضافه کنید که نسخهی دقیق کتابخانهی Tcl را به شکل یک تاپل نامدار مشابهsys.version_infoبرمیگرداند.gh-84461: افزودن
--enable-wasm-pthreadsبرای فعالسازی پشتیبانی از pthreads در نسخههای ساختهشدهی WASM. محیطEmscripten/nodeدیگر به طور پیشفرض نخکشی (threading) را فعال ندارد. سیستمهای پروندهی اضافی نیز گنجانده شدند.gh-91821: اصلاح آزمون ناپایدار
test_from_tupleدر پروندهیtest_decimal.py.gh-91217: منسوخ کردن ماژول xdrlib.
gh-91217: منسوخ کردن ماژول uu.
gh-91760: قوانین سختگیرانهتری برای ارجاعات گروه عددی و نام گروهها در عبارتهای باقاعده اعمال خواهد شد. در حال حاضر، یک هشدار منسوخسازی برای ارجاعات گروه و نام گروههایی که در نسخههای آیندهی پایتون خطا خواهند بود، صادر میشود.
gh-84461: افزودن تاپل نامدار مشروط
sys._emscripten_infoهمراه با اطلاعات زمان ساخت و زمان اجرا دربارهی پلتفرم Emscripten.gh-90623: توابع
signal.raise_signal()وos.kill()اکنون سیگنالهای معلق را بلافاصله بررسی میکنند. پچ توسط Victor Stinner.gh-91734: رفع مشکل پشتیبانی از صدای OSS در سولاریس.
gh-90633: گنجاندن مقدار ارسالشده در استثنای پرتابشده توسط
typing.assert_never(). پچ توسط Jelle Zijlstra.gh-91700: کامپایل کردن عبارت باقاعده حاوی یک عبارت شرطی
(?(group)...)اکنون در صورتی که شمارهی گروه به گروهی تعریفنشده ارجاع دهد، یک خطای مناسبre.errorرا بالا میآورد. پیشتر یک خطای داخلی RuntimeError بالا میآمد.gh-91231: افزودن یک پارامتر کلیدواژهی اختیاری shutdown_timeout به سازندهی
multiprocessing.BaseManager. اگر متد terminate() زمان بیشتری از مهلت تعیینشده ببرد، فرایند متوقف میشود. پچ توسط Victor Stinner.gh-91621: رفع
typing.get_type_hints()برایcollections.abc.Callable. پچ توسط Shantanu Jain.gh-90568: تجزیهی نویسههای گریز
\Nمربوط به دنبالههای نویسهی نامگذاریشدهی یونیکد در یکعبارت باقاعدهاکنون به جایTypeErrorخطایre.errorرا بالا میآورد.gh-91217: منسوخ کردن ماژول telnetlib.
gh-91217: منسوخ کردن ماژول sunau.
gh-91217: منسوخ کردن ماژول spwd.
gh-91217: منسوخ کردن ماژول sndhdr و همچنین تعبیهی قابلیتهای موردنیاز برای
email.mime.MIMEAudio.gh-91616: ماژول
re، رفع عدم تطابق درfullmatch()هنگام استفاده از گروهبندی اتمی یا کمیتگذارهای تملکی.gh-91217: منسوخ کردن ماژول 'pipes'.
gh-91217: منسوخ کردن ماژول ossaudiodev.
bpo-47256: ماژول
re، محدود کردن حداکثر گروه ثبتکننده به ۱٬۰۷۳٬۷۴۱٬۸۲۳ در نسخهی ساخت ۶۴ بیتی؛ این کار عمق بازگشت به عقب (backtracking) را افزایش میدهد.gh-91217: منسوخ کردن ماژول nis.
gh-91595: رفع مقایسهی نویسه و عدد صحیح در داخل
Tools.gdb.libpython.write_repr(). وصلهای از Yu Liu.gh-74166: اضافه کردن گزینهای برای بالا آوردن تمام خطاها از
create_connection()در یکExceptionGroupهنگامی که ایجاد اتصال با شکست مواجه میشود. حالت پیشفرض همچنان این است که هنگام تلاش برای آدرسهای متعدد، فقط آخرین خطای رخداده بالا آورده شود.gh-91487: بهبود سرعت UDP در asyncio، که هنگام انتقال یک پروندهی بزرگ بیش از ۱۰۰ برابر سریعتر شده است.
gh-91575: بهروزرسانی تطبیق بیتوجه به بزرگی و کوچکی حروف (case-insensitive) در ماژول
reبه آخرین نسخهی یونیکد.gh-90622: در
concurrent.futures.process.ProcessPoolExecutor، روش شروع چندپردازشی «fork» را هنگامی که ویژگی جدیدmax_tasks_per_childاستفاده میشود، ممنوع کنید؛ زیرا ترکیب نخها و fork میتواند فرایندهای فرزند را معلق کند. در صورت عدم ارائهیmp_context، در آن شرایط به طور پیشفرض از روش شروع امن «spawn» استفاده کنید.gh-89022: در
sqlite3، کدهای نتیجهیSQLITE_MISUSEاکنون به جایProgrammingErrorبهInterfaceErrorنگاشت میشوند. همچنین، هنگام شکست در اتصال پارامترها، استثشاهای دقیقتری بالا آورده میشوند. وصلهای از Erlend E. Aasland.gh-91526: متوقف کردن فراخوانی
os.device_encoding(file.fileno())درTextIOWrapper. این کار پیچیده بود، هرگز مستندنشده بود و در بیشتر موارد کار نمیکرد. (وصلهای از Inada Naoki.)gh-88116: تغییر توابع مربوط به قاب در ماژول
inspectبه منظور بازگرداندن یک شیء معمولی (که با رابط تاپلمانند قدیمی سازگار است) که اطلاعات موقعیت توسعهیافتهی PEP 657 (شمارهی سطر پایان، ستون و ستون پایان) را شامل میشود. توابع تحت تأثیر عبارتند از:inspect.getframeinfo()،inspect.getouterframes()،inspect.getinnerframes()،inspect.stack()وinspect.trace(). وصلهای از Pablo Galindo.gh-69093: اضافه کردن پشتیبانی از نمایهگذاری (indexing) و برشزدن (slicing) به
sqlite3.Blob. وصلهای از Aviv Palivoda و Erlend E. Aasland.gh-69093: اضافه کردن پشتیبانی از مدیر زمینه به
sqlite3.Blob. وصلهای از Aviv Palivoda و Erlend E. Aasland.gh-91217: منسوخ کردن nntplib.
gh-91217: منسوخ کردن msilib.
gh-91404: بهبود عملکرد تطبیق در ماژول
reبا استفاده از پرشهای محاسبهشده (computed gotos) (یا «کد نخکشیشده» (threaded code)) روی پلتفرمهای پشتیبانیشده و حذف ارجاعات غیرمستقیم پرهزینهی اشارهگر.gh-91217: منسوخ کردن ماژول imghdr.
gh-91217: منسوخ کردن ماژول crypt.
bpo-47000: باعث میشود
TextIOWrapperحتی در حالت UTF-8، هنگامی کهencoding="locale"مشخص شده است، از کدگذاری locale استفاده کند.gh-91230: تابع
warnings.catch_warnings()اکنون آرگومانهایی را برایwarnings.simplefilter()میپذیرد که راهی مختصرتر برای نادیده گرفتن محلی هشدارها یا تبدیل آنها به خطاها فراهم میکند.gh-91217: منسوخ کردن ماژول chunk.
gh-91498: اضافهکردن گزینهی
TCP_CONNECTION_INFO(قابلدسترس روی macOS) به ماژولsocket.bpo-47260: رفع مشکلی که ممکن بود
os.closerange()در یک سندباکس seccomp در لینوکس به یک عملیات بیاثر تبدیل شود.bpo-47087: پیادهسازی
typing.Requiredوtyping.NotRequired(PEP 655). وصله توسط David Foster و Jelle Zijlstra.bpo-47061: منسوخ کردن cgi و cgitb.
bpo-47061: منسوخ کردن audioop.
bpo-47000: اضافهکردن تابع
locale.getencoding()برای دریافت کدگذاری locale فعلی. این تابع مشابهlocale.getpreferredencoding(False)است اما حالت UTF-8 پایتون را نادیده میگیرد.bpo-42012: اضافهکردن
wsgiref.types، حاوی انواع دادهی مخصوص رابط دروازه وب سرور (WSGI) برای بررسی نوع ایستا.bpo-47227: جلوگیری از زنجیرهسازی عبارت برای خطاهای تجزیه بیشتر در
re.bpo-47211: حذف تابع مستندنشده و هرگز کارنکردن
re.template()و پرچمre.TEMPLATE. این تغییر بعداً در نسخه ۳.۱۱.۰b2 به حالت قبل بازگردانده شد و در عوض منسوخ گردید.bpo-47135: متد
decimal.localcontext()اکنون ویژگیهای زمینه را از طریق آرگومانهای کلیدواژهای میپذیرد.bpo-43323: رفع خطاهای ماژول
emailاگر خود مجموعه نویسهها شامل نویسههای غیرقابل رمزگشایی/غیرقابل رمزگذاری باشد.bpo-46841: جداسازی (Disassembly) کد تسریعشده.
bpo-46681: انتقال compresslevel از gzip.compress() به zlib.
bpo-45100: اضافهکردن
typing.get_overloads()وtyping.clear_overloads(). وصله توسط Jelle Zijlstra.bpo-44807: کلاس
typing.Protocolدیگر بهطور بیصدا متدهای__init__()تعریفشده روی زیرکلاسها را جایگزین نمیکند. وصله توسط Adrian Garcia Badaracco.bpo-46787: رفع نشت حافظهی استثنا در
concurrent.futures.ProcessPoolExecutor.bpo-46720: اضافهکردن پشتیبانی از اشیای شبهمسیر به تابع
multiprocessing.set_executable()در ویندوز جهت برابری با سیستمهای شبهیونیکس. وصله توسط Géry Ogam.bpo-46053: رفع پشتیبانی صوتی OSS روی NetBSD.
bpo-46285: افزودن گزینهی خط فرمان
-p/--protocolبه ماژولhttp.serverکه نسخهی HTTP سازگار با سرور را مشخص میکند (سرورهای سازگار با HTTP/1.1 اکنون میتوانند از رابط خط فرمان ماژولhttp.serverاجرا شوند). وصله توسط Géry Ogam.bpo-44791: پذیرش سهنقطه به عنوان آخرین آرگومان
typing.Concatenate.bpo-46547: حذف متغیرهایی که به فضای نام کلاس
pydoc.Helperنشت پیدا میکنند.bpo-46415: رفع خطایی که در صورت ارسال تاپل نامعتبر به عنوان پارامتر آدرس، تابع ipaddress.ip_{address,interface,network} به جای ValueError، استثنای TypeError را بالا میآورد.
bpo-46075: کلاس
CookieJarباDefaultCookiePolicyاکنون میتواند کوکیهای دریافتی از localhost را با دامنهی مشخصشدهی صریح domain=localhost در سرآیند Set-Cookie پردازش کند.bpo-45995: افزودن یک گزینهی «z» به مشخصات قالببندی رشته که مقادیر ممیز شناور صفر منفی را پس از گرد کردن به دقت قالب، به صفر مثبت تبدیل میکند. مشارکت از John Belmonte.
bpo-26175: پیادهسازی کامل رابط
io.BufferedIOBaseیاio.TextIOBaseبرای اشیایtempfile.SpooledTemporaryFile. این کار باعث میشود آنها با لایههای ردهبالاتر (مانند ماژولهای فشردهسازی) به درستی کار کنند. وصله توسط Carey Metcalfe.bpo-45138: رفع یک رگرسیون در فراخوانی بازگشتی ردیابی
sqlite3که در آن پارامترهای کراندار در رشتهی دستور ارسالشده گسترش نمییافتند. این رگرسیون در پایتون ۳.۱۰ توسط bpo-40318 ایجاد شده بود. وصله توسط Erlend E. Aasland.bpo-44863: امکان گنجاندن
Genericبه عنوان کلاس پایه در نحو مبتنی بر کلاس برای زیرکلاسهایTypedDict. با این کار به کاربر اجازه داده میشود یکTypedDictعام، درست مانند یک نوع عام تعریفشده توسط کاربر اما با معناشناسیTypedDictتعریف کند.bpo-44587: رفع مشکل BooleanOptionalAction به طوری که به طور خودکار یک رشتهی پیشفرض اضافه نکند. اگر رشتهی پیشفرضی مورد نظر است، از یک قالببند برای افزودن آن استفاده کنید.
bpo-43827: تمام پارامترهای جایگاهی یا کلیدواژهای
ABCMeta.__new__اکنون فقط جایگاهی هستند تا از تداخل با آرگومانهای کلیدواژهای که قرار است به__init_subclass__()ارسال شوند، جلوگیری شود.bpo-43218: جلوگیری از ایجاد محیط مجازی (venv) که مسیر آن شامل جداکنندهی PATH است. این موضوع میتواند بر استفاده از اسکریپت فعالسازی تأثیر بگذارد. وصله توسط Dustin Rodrigues.
bpo-38435: افزودن پارامتر
process_groupبهsubprocess.Popenبرای کمک به انتقال موارد بیشتری از پارامتر ناامنpreexec_fn.bpo-42066: رفع مشکل مرتبسازی کوکیها در
CookieJar.__iter__()که یک رفتار اضافی است و در RFC 2965 یا پروتکل کوکی Netscape ذکر نشده است. اکنون کوکیها درCookieJarاز ترتیب سرآیندSet-Cookieپیروی میکنند. وصله توسط Iman Kermani.bpo-40617: افزودن
create_window_function()بهsqlite3.Connectionبرای ایجاد توابع پنجرهای تجمیعی. وصله توسط Erlend E. Aasland.bpo-40676: تبدیل ماژول
csvبرای استفاده از Argument Clinic جهت توابعcsv.field_size_limit()،csv.get_dialect()،csv.unregister_dialect()وcsv.list_dialects().bpo-39716: بالا آوردن خطای
ArgumentErrorهنگامی که نام زیرپارامتر یکسانی دو بار به یکargparse.ArgumentParserاضافه شود. این رفتار با رفتار (پیشفرض) هنگامی که رشتهی گزینهی یکسانی دو بار به یکArgumentParserاضافه میشود، سازگار است.bpo-36073: بالا آوردن
ProgrammingErrorبه جای ایجاد خطای حافظه (segfault) در استفادهی بازگشتی از نشانگرها در مبدلهایsqlite3. وصله توسط Sergey Fedoseev.bpo-34975: افزودن متد
start_tls()بهStreamWriter، که اتصال را با استفاده ازSSLContextدادهشده به TLS ارتقا میدهد.bpo-22276: متدهای
Pathیعنیglob()وrglob()تنها در صورتی دایرکتوریها را برمیگردانند که pattern با یک جداکنندهی اجزای مسیرنام (/یاsep) به پایان برسد. وصله توسط Eisuke Kawashima.bpo-24905: افزودن متد
blobopen()بهsqlite3.Connection. کلاسsqlite3.Blobامکان انجام عملیات ورودی/خروجی افزایشی را روی بلابها فراهم میکند. اصلاحیه از Aviv Palivoda و Erlend E. Aasland.
مستندات¶
gh-91888: افزودن نقش جدید
ghبه مستندات برای پیوند دادن به مسائل گیتهاب (GitHub issues).gh-91783: مستندسازی مسائل امنیتی مربوط به استفاده از تابع
shutil.unpack_archive()gh-91547: حذف صفحهی «ماژولهای مستندنشده».
gh-91298: در
importlib.resources.abc، مستندات پروتکل Traversable بهبود یافت و تغییرات مربوط به importlib_resources 5.7.1 اعمال شد.bpo-44347: شفافسازی معنای dirs_exist_ok، که یک آرگومان کلیدواژهای از تابع
shutil.copytree()است.bpo-36329: حذف دستور 'make -C Doc serve' به نفع دستور 'make -C Doc htmlview'
bpo-47189: افزودن بخشی با عنوان «تازههای پایتون ۳.۱۱» برای پروژهی سیپایتون سریعتر (Faster CPython). مستندسازی توسط Ken Jin و Kumar Aditya.
bpo-38668: بهروزرسانی مقدمهی مستندات ماژول
os.pathبرای حذف هشدارهایی که پس از پیادهسازی PEP 383 و PEP 529 دیگر اهمیتی نداشتند.bpo-47115: مستندات اکنون فهرست میکنند که کدام اعضای ساختارهای C بخشی از API محدود / ABI پایدار هستند.
bpo-46962: تمام رشتههای مستند (docstrings) در قطعهکدها اکنون برای پیروی از دستورالعمل پاراگراف رشتههای مستند در PEP 7 در ماکروی
PyDoc_STRقرار میگیرند. اصلاحیه از Oleg Iarygin.bpo-26792: بهبود رشتههای مستند (docstrings) توابع
runpy.run_module()وrunpy.run_path(). اصلاحیهی اصلی از Andrew Brezovsky.
آزمونها¶
gh-92169: استفاده از
warnings_helper.import_deprecated()برای ایمپورت کردن ماژولهای منسوخ به شکلی یکنواخت در آزمونها. اصلاحیه از Hugo van Kemenade.gh-84461: هنگامی که چندپردازشی (multiprocessing) فعال است، libregrtest اکنون میتواند از طریق پرچم
--pythonاز یک مفسر پایتون غیر ازsys.executableاستفاده کند.gh-91904: اصلاح مقداردهی اولیهی
PYTHONREGRTEST_UNICODE_GUARDکه مانع از اجرای آزمونهای رگرسیون روی محلیسازیهای (locale) غیر UTF-8 میشد.gh-91752: افزودن @requires_zlib به test.test_tools.test_freeze.TestFreeze.
gh-91607: اصلاح
test_concurrent_futuresبرای آزمون کردن context روش شروع multiprocessing صحیح در چندین مورد که منطق آزمون این موارد را با هم مخلوط کرده بود.bpo-40280: آزمونهای پردازش نخی (Threading) اکنون روی هدفهای WASM که از pthread پشتیبانی نمیکنند، رد میشوند (skipped).
bpo-47109: آزمونهای ماژولهای
ctypes.macholib.dyld،ctypes.macholib.dylibوctypes.macholib.frameworkاز حالت دستیِ پیش ازunittestبه مکان و ساختارctypes.testمنتقل شدند. اصلاحیه از Oleg Iarygin.bpo-29890: افزودن آزمونهایی برای ساخت
ipaddress.IPv4Interfaceوipaddress.IPv6Interfaceبا آرگومانهای tuple. اصلاحیه و آزمونهای اصلی از louisom.
ساخت¶
gh-89452: اگر هر دو کتابخانه روی سیستم موجود باشند، اکنون gdbm-compat به ndbm ترجیح داده میشود. این کار اجازه میدهد از ndbm.h مشکلساز روی سیستمعامل macOS جلوگیری شود.
gh-91731: پایتون اکنون بهجای
-std=c99با گزینهی کامپایلر-std=c11ساخته میشود. وصلهای از Victor Stinner.bpo-47152: افزودن اسکریپت و هدف make برای تولید
sre_constants.h.bpo-47103: ساختهای نسخهی ویندوز
PGInstrumentاکنون یک DLL مورد نیاز را در پوشهی خروجی کپی میکنند که اجرای مرحلهی پروفایل یک ساخت PGO را آسانتر میکند.
Windows¶
bpo-46907: بهروزرسانی نصبکنندهی ویندوز برای استفاده از SQLite ۳.۳۸.۳.
bpo-47239: رفع خروجی --list و --list-paths برای مدیر نصب پایتون هنگامی که در یک محیط مجازی فعال استفاده میشود.
bpo-46907: بهروزرسانی نصبکنندهی ویندوز برای استفاده از SQLite ۳.۳۸.۲.
bpo-46785: رفع شرایط رقابت بین
os.stat()و حذف پیوند یک پرونده روی ویندوز، با استفاده از کدهای خطای بازگرداندهشده توسطFindFirstFileW()در صورت نیاز درwin32_xstat_impl.bpo-40859: بهروزرسانی ساخت ویندوز برای استفاده از xz-5.2.5
مکاواس¶
bpo-46907: بهروزرسانی نصبکنندهی macOS به SQLite ۳.۳۸.۴.
Tools/Demos¶
gh-91583: رفع رگرسیون در کد تولیدشده توسط Argument Clinic برای توابع دارای پارامتر
defining_class.gh-91575: افزودن اسکریپت
Tools/scripts/generate_re_casefix.pyو هدف make نسخهیregen-reبرای تولید دادههای اضافی جهت تطبیق بیتوجه به بزرگی و کوچکی حروف مطابق با نسخهی فعلی یونیکد.gh-91551: حذف ویرایشگر رنگ قدیمی Pynche. این ویرایشگر به https://gitlab.com/warsaw/pynche منتقل شده است.
رابط C API¶
gh-88279: منسوخ کردن توابع C:
PySys_SetArgv()،PySys_SetArgvEx()،PySys_SetPath(). وصلهای از Victor Stinner.gh-92154: افزودن تابع
PyCode_GetCode(). این تابع معادل کد پایتونgetattr(code_object, 'co_code')را انجام میدهد.gh-92173: رفع آرگومان
closureبرایPyEval_EvalCodeEx().gh-91320: رفع هشدارهای کامپایلر C++ دربارهی «تبدیل نوع سبک قدیمی» (
g++ -Wold-style-cast) در API زبان C پایتون. استفاده از تبدیلهایreinterpret_cast<>وstatic_cast<>در C++ وقتی از API زبان C پایتون در C++ استفاده میشود. وصلهای از Victor Stinner.gh-80527: علامتگذاری توابع به عنوان منسوخشده توسط PEP 623:
PyUnicode_AS_DATA()،PyUnicode_AS_UNICODE()،PyUnicode_GET_DATA_SIZE()،PyUnicode_GET_SIZE(). وصلهای از Victor Stinner.gh-91768: نوع آرگومان توابع
Py_REFCNT()،Py_TYPE()،Py_SIZE()وPy_IS_TYPE()اکنون بهجایconst PyObject*برابر باPyObject*است. وصلهای از Victor Stinner.gh-91020: افزودن
PyBytes_Type.tp_allocبرای مقداردهی اولیهیPyBytesObject.ob_shashبرای زیرکلاسهای bytes.bpo-40421: افزودن تابع C-API به نام
PyFrame_GetLastiبرای دسترسی امن به ویژگیf_lastiشیء قاب از کدهای C.bpo-35134: حذف پروندهی سرآیند
Include/code.h. افزونههای C فقط باید پروندهی سرآیند اصلی<Python.h>را وارد کنند. وصله توسط Victor Stinner.bpo-47169: تابع
PyOS_CheckStack()اکنون در Stable ABI روی ویندوز صادر میشود.bpo-47169: تابع
PyThread_get_thread_native_id()در سکوهایی که وجود ندارد (مانند Solaris) از ABI پایدار مستثنی شده است.bpo-46343: توابع
PyErr_GetHandledException()وPyErr_SetHandledException()به عنوان جایگزینهای سادهتری برایPyErr_GetExcInfo()وPyErr_SetExcInfo()اضافه شدند.آنها در ABI پایدار گنجانده شدهاند.
Python 3.11.0 alpha 7¶
Release date: 2022-04-05
هسته و توکارها (Core and Builtins)¶
bpo-47212: ایجاد خطای
IndentationErrorبه جایSyntaxErrorبرای یکexceptخام بدون تورفتگی پس از آن. بهبود مکانهایSyntaxErrorبرای یک تولیدگر بدون پرانتز که به عنوان آرگومان استفاده شده است. وصله توسط Matthieu Dartiailh.bpo-47186: جایگزینی
JUMP_IF_NOT_EG_MATCHباCHECK_EG_MATCH+ پرش.bpo-47176: ساختهای Emscripten به دلیل محدودیتهای سکو نمیتوانند سیگنالها را به روش معمول مدیریت کنند. پایتون اکنون میتواند سیگنالها را مدیریت کند. برای استفاده، Module.Py_EmscriptenSignalBuffer را به عنوان یک SharedArrayBuffer تک بایتی تنظیم کنید و Py_EMSCRIPTEN_SIGNAL_HANDLING را روی ۱ قرار دهید. نوشتن یک عدد در SharedArrayBuffer باعث میشود سیگنال مربوطه در نخ پایتون ایجاد شود.
bpo-47186: جایگزینی
JUMP_IF_NOT_EXC_MATCHباCHECK_EXC_MATCH+ پرش.bpo-47120: جایگزینی آپکد پرش مطلق
JUMP_NO_INTERRUPTبا آپکد نسبیJUMP_BACKWARD_NO_INTERRUPT.bpo-46841: جلوگیری از تخصیصهای غیرضروری هنگام مقایسهی اشیای کد.
bpo-47182: رفع یک فروپاشی هنگام استفاده از یک نویسهی یونیکد نامگذاریشده مانند
"\N{digit nine}"پس از اینکه مفسر اصلی برای دومین بار مقداردهی اولیه شده است.bpo-47162: وبآسِمبلی نمیتواند با تبدیلهای نادرست اشارهگر تابع (تعداد یا انواع مختلف آرگومانها) کنار بیاید. پایتون اکنون میتواند از ترامپولینهای فراخوانی برای کاهش این مشکل استفاده کند.
PY_CALL_TRAMPOLINEرا برای فعال کردن ترامپولینهای فراخوانی تعریف کنید.bpo-46775: برخی از کدهای خطای سیستم ویندوز (>= 10000) اکنون به errno صحیح نگاشت میشوند و ممکن است زیرклаسی از
OSErrorرا ایجاد کنند. وصله توسط Donghee Na.bpo-47129: بهبود پیامهای خطا در خطاهای نحوی افاسترینگ مربوط به عبارتهای خالی.
bpo-47117: رفع یک فروپاشی در صورت عدم موفقیت در رمزگشایی نویسهها در حالت تعاملی، اگر بافرهای توکنساز مقداردهی اولیه نشده باشند. وصله توسط Pablo Galindo.
bpo-47127: سرعت بخشیدن به فراخوانیهای توابع C با آرگومانهای کلیدواژهای به میزان ۲۵ درصد با استفاده از تخصصیسازی. وصله توسط Kumar Aditya.
bpo-47120: دستورالعمل
JUMP_ABSOLUTEبا دستورالعمل پرش نسبیJUMP_BACKWARDجایگزین شد.bpo-42197: توابع
PyFrame_FastToLocalsWithError()وPyFrame_LocalsToFast()دیگر در طول پروفایلگیری یا ردیابی فراخوانی نمیشوند. کد زبان C میتواند با فراخوانیPyFrame_GetLocals()به ویژگیf_localsازPyFrameObjectدسترسی پیدا کند.bpo-47070: با کاهش تعداد دفعات فراخوانی
memcpy، کاراییarray_inplace_repeatبهبود یافت. متدهایrepeatوrepeatدرونجا (inplace) برایarray،bytes،bytearrayوunicodeobjectبازسازی شدند تا از_PyBytes_Repeatمشترک استفاده کنند.bpo-47053: کاهش واگرایی بهینهسازی (de-optimization) در آپکد تخصصیشدهی
BINARY_OP_INPLACE_ADD_UNICODE.bpo-47045: فیلد
f_stateاز ساختار _PyInterpreterFrame حذف شد. فیلدownerبه ساختار _PyInterpreterFrame اضافه شد تا مالکیت صریح شود و پاکسازی و آزاد کردن فریمها و تولیدگرها سادهتر گردد.
کتابخانه¶
bpo-46968: بررسی وجود سرآیند «sys/auxv.h» در
faulthandlerبرای جلوگیری از مشکلات کامپایل در سیستمهایی که این سرآیند در آنها وجود ندارد. پچ (Patch) توسط Pablo Galindo
هسته و توکارها (Core and Builtins)¶
bpo-46329: استفاده از بیت کمارزش
LOAD_GLOBALبرای نشان دادن این موضوع که آیا باید یکNULLقبل از متغیر سراسری قرار داده شود یا خیر. این کار به سادهتر شدن روند دنبالهی فراخوانی کمک میکند.bpo-46841: تسریع بایتکد بهصورت درونجا (in-place) با ذخیرهسازی آن به عنوان بخشی از
PyCodeObjectمتناظر.bpo-47012: افزایش سرعت پیمایش
bytesوbytearrayبه میزان ۳۰ درصد. پچ توسط Kumar Aditya.bpo-47009: بهبود کارایی
list.append()و درکهای فهرستی با بهینهسازی برای حالت رایجی که در آن نیازی به تغییر اندازه نیست. پچ توسط Dennis Sweeney.bpo-47005: بهبود کارایی
bytearray_repeatوbytearray_irepeatبا کاهش تعداد دفعات فراخوانیmemcpy.
کتابخانه¶
bpo-46829: منسوخ کردن ارسال پیام به درون
asyncio.Future.cancel()وasyncio.Task.cancel()
هسته و توکارها (Core and Builtins)¶
bpo-46993: افزایش سرعت ایجاد
bytearrayازlistوtupleبه میزان ۴۰ درصد. پچ توسط Kumar Aditya.bpo-39829: فراخوانی
__len__()هنگام مقداردهی اولیه به یک فهرست حذف شد و مقداردهی اولیه بهlist_extendمنتقل شد. پچ توسط Jeremiah Pascual.bpo-46944: افزایش سرعت پرتاب استثنا در تولیدگر با قرارداد فراخوانی
METH_FASTCALL. پچ توسط Kumar Aditya.bpo-46841: تغییر
STORE_SUBSCRبرای استفاده از یک ورودی نهانگاه درونخطی (بهجای oparg آن) به عنوان یک شمارنده تطبیقی.bpo-46841: استفاده از نهانگاه درونخطی برای
PRECALLوCALL، و حذف زیرساخت داخلی برای مدیریت نهانگاههای غیردرونخطی (که اکنون استفاده نمیشوند).bpo-46881: تخصیص و مقداردهی اولیه ایستا (Statically) نویسههای latin1.
bpo-46838: بهبود خطاهای نحوی برای تعاریف توابع نادرست. پچ توسط Pablo Galindo
bpo-43721: اصلاح رشتههای مستند (docstrings) در
getter،setterوdeleterبرای شفافسازی اینکه آنها کپی جدیدی از ویژگی ایجاد میکنند.bpo-43224: اعمال تغییرات گرامری لازم برای PEP 646.
کتابخانه¶
bpo-47208: به فروشندگان اجازه میدهد
CTYPES_MAX_ARGCOUNTرا بازنویسی (override) کنند.bpo-23689: ماژول
re: رفع نشتی حافظه هنگامی که یک تطابق با یک سیگنال یا شکست در تخصیص حافظه متوقف میشود. وصله (Patch) از Ma Lin.bpo-47167: اجازه دادن به بازنویسی بررسی انطباق آینده در
asyncio.Task.bpo-47151: هنگامی که زیرفرایند (subprocess) تلاش میکند از vfork استفاده کند، اگر vfork خطایی برگرداند، اکنون به fork برمیگردد. این امر امکان استفاده در شرایطی را فراهم میکند که vfork توسط هستهی سیستمعامل مجاز نیست.
bpo-47152: تبدیل ماژول
reبه یک بسته. منسوخ کردن ماژولهایsre_compile،sre_constantsوsre_parse.bpo-4833: افزودن
ZipFile.mkdir()bpo-27929: اصلاح
asyncio.loop.sock_connect()برای حل کردن نامها فقط برای خانوادههایsocket.AF_INETیاsocket.AF_INET6. حل نام ممکن است برای خانوادههای دیگر مانندsocket.AF_BLUETOOTHوsocket.AF_UNIXمنطقی نباشد.bpo-14265: افزودن نام کامل آزمون به خروجی unittest
bpo-47061: منسوخ کردن ماژول aifc.
bpo-39622: مدیریت Ctrl+C در برنامههای asyncio برای وقفه انداختن در وظیفهی اصلی.
bpo-47101:
hashlib.algorithms_availableاکنون فقط الگوریتمهایی را فهرست میکند که توسط ارائهدهندگان رمزنگاری فعالشده در OpenSSL 3.0 فراهم شدهاند. الگوریتمهای قدیمی فهرست نمیشوند مگر اینکه ارائهدهندهی قدیمی در زمینهی پیشفرض OSSL بارگذاری شده باشد.bpo-47099: تمام پیامهای استثنای
URLErrorکه درurllib.request.URLopenerبالا برده میشوند، اکنون شامل یک علامت دونقطه بینftp errorو بقیهی پیام هستند. پیش از این،open_ftp()علامت دونقطه را جا انداخته بود. وصله (Patch) از Oleg Iarygin.bpo-47099: زنجیرهسازی استثنا از
Exception.with_traceback()/sys.exc_info()به PEP 3134 تغییر یافته است. وصله (Patch) از Oleg Iarygin.bpo-47095: ماژول داخلی
_blake2درhashlibاکنونlibb2را از https://www.blake2.net/ به نسخهی همراه پایتون از blake2 ترجیح میدهد.bpo-47098: بستهی کد Keccak برای ماژول داخلی
_sha3درhashlibبا tiny_sha3 جایگزین شده است. این ماژول هنگامی که پایتون بدون OpenSSL ساخته شود به عنوان جایگزین استفاده میشود.bpo-47088: پیادهسازی
typing.LiteralString، بخشی از PEP 675. وصله (Patch) از Jelle Zijlstra.bpo-42885: بهینهسازی
re.search()،re.split()،re.findall()،re.finditer()وre.sub()برای عبارات باقاعدهای که با\Aیا^شروع میشوند.bpo-23691: از ورود مجدد پیمایشگر (iterator) تابع
re.finditer()محافظت کنید.bpo-47067: بهینهسازی فراخوانی شیءهای
GenericAliasبا استفاده از PEP 590vectorcallو با جایگزین کردنPyObject_SetAttrStringباPyObject_SetAttr.bpo-28080: افزودن پارامتر metadata_encoding در سازندهی
zipfile.ZipFileو گزینهی--metadata-encodingدر رابط خط فرمانzipfileتا امکان خواندن پروندههای زیپ با استفاده از کُدکهای غیر استاندارد برای رمزگذاری نامهای پرونده در درون آرشیو فراهم شود.bpo-47000: باعث میشود که تابع
io.text_encoding()هنگام فعال بودن حالت UTF-8 مقدار "utf-8" را برگرداند.bpo-42369: رفع مشکل امنیت نخ در
zipfile._SharedFile.tell()برای جلوگیری از بروز استثنای "zipfile.BadZipFile: Bad CRC-32 for file" هنگام خواندن یکZipFileاز چندین نخ.bpo-38256: رفع مشکل تابع
binascii.crc32()هنگامی که برای استفاده از crc32 کتابخانهی zlib کامپایلشده است تا روی ورودیهای با طول ۴ گیگابایت و بیشتر بهدرستی کار کند و نتیجهی اشتباه برنگرداند. روش جایگزین پیش از این، ارسال همیشه دادهها به تابع در بخشهای کوچکتر از ۴ گیگابایت یا فراخوانی مستقیم تابع ماژول zlib بود.همچنین امکان آزادی GIL توسط تابع
binascii.crc32()هنگام محاسبه روی ورودیهای بزرگتر، مشابه کارهایی که تابعzlib.crc32()و ماژولhashlibانجام میدهند، اضافه شد.این کار همچنین باعث بهبود کارایی در سیستمعامل ویندوز میشود، زیرا اکنون برای تابع
binascii.crc32()از پیادهسازی crc32 متعلق به zlib استفاده میکند که منجر به افزایش سرعت ۲ تا ۳ برابری میشود.این که کتابخانهی استاندارد (stdlib) در دو ماژول API مربوط به crc32 دارد، یک ویژگی عجیب تاریخی شناختهشده است. این تغییر ما را به یک پیادهسازی واحد در پشت آنها نزدیکتر میکند.
bpo-47066: پرچمهای درونخطی سراسری (بهعنوان مثال
(?i)) اکنون فقط میتوانند در ابتدای عبارتهای باقاعده استفاده شوند. استفاده از آنها در جایی غیر از ابتدای عبارت از پایتون ۳.۶ منسوخ شده بود.bpo-39394: اخطار مربوط به پرچمهای درونخطی که در ابتدای عبارت باقاعده قرار ندارند، اکنون شامل موقعیت آن پرچم است.
bpo-433030: افزودن پشتیبانی از گروهبندی اتمی (
(?>...)) و کمیتگذارهای تملکی (*+،++،?+،{m,n}+) درعبارتهای باقاعده.bpo-47062: پیادهسازی مدیر زمینهی
asyncio.Runner.bpo-46382: گزینهی
slots=Trueدرdataclass()اکنون جایگاههای از پیش تعریفشده در کلاسهای پایه را بهدرستی نادیده میگیرد. وصله توسط Arie Bovenberg.bpo-47057: استفاده از قرارداد FASTCALL برای روش
FutureIter.throw()bpo-47061: منسوخ کردن ماژولهای مختلف فهرستشده در PEP 594:
aifc, asynchat, asyncore, audioop, cgi, cgitb, chunk, crypt, imghdr, msilib, nntplib, nis, ossaudiodev, pipes, smtpd, sndhdr, spwd, sunau, telnetlib, uu, xdrlib
bpo-34790: حذف امکان ارسال اشیای همروال به
asyncio.wait().bpo-47039: استانداردسازی
repr()برای اشیای آینده (future) و وظیفهی asyncio.bpo-2604: رفع باگی که در آن آزمونهای مستنداتی (doctests) که از متغیرهای سراسری استفاده میکردند، هنگام اجرای چندباره با خطا مواجه میشدند.
bpo-45150: افزودن تابع کمکی
hashlib.file_digest()برای هش کردن کارآمد شیء پرونده.bpo-34861: تبدیل cumtime به کلید مرتبسازی پیشفرض برای cProfile
bpo-45997: اصلاح
asyncio.Semaphoreبرای رعایت دوبارهی ترتیب FIFO.bpo-47022: ماژولهای
asynchat،asyncoreوsmtpdحداقل از نسخهی ۳.۶ پایتون منسوخ شدهاند. مستندات و هخطارهای منسوخسازی آنها اکنون بهروزرسانی شدهاند تا ذکر کنند که در نسخهی ۳.۱۲ پایتون حذف خواهند شد (PEP 594).bpo-43253: رفع یک فروپاشی هنگام بستن انتقالهایی که در آنها دستهی سوکت زیرین روی حلقهی رویداد Proactor از پیش نامعتبر است.
bpo-40280: تابع
select.select()اکنون مقدارNULLرا برای هر fdset خالی بهselectمیفرستد.bpo-47004: اعمال اصلاحات باگ از importlib_metadata 4.11.3، از جمله اصلاح باگ EntryPoint.extras که به جای رشتههای extras، اشیای تطابق (match objects) برمیگرداند.
bpo-46998: امکان زیرکلاسسازی از
typing.Any. وصله توسط Shantanu Jain.bpo-46995: منسوخ کردن متد گمشدهی
asyncio.Task.set_name()برای پیادهسازیهای وظیفهی شخص ثالث، و برنامهریزی برای اجباری شدن آن در نسخهی ۳.۱۳ پایتون.bpo-46994: پذیرش صریح contextvars.Context در
asyncio.create_task()وasyncio.loop.create_task().bpo-46981: عبارت
typing.get_args(typing.Tuple[()])اکنون به جای((),)مقدار()را برمیگرداند.bpo-46968: افزودن
os.sysconf_names['SC_MINSIGSTKSZ'].bpo-46985: ارتقای pip wheel همراه با ensurepip (pip 22.0.4)
bpo-46968:
faulthandler: در لینوکس ۵.۱۴ و جدیدتر، اندازهی پشتهی هندلر سیگنال را که سیپایتون با استفاده ازgetauxval(AT_MINSIGSTKSZ)تخصیص میدهد، به صورت پویا تعیین کنید. این تغییر به درخواست افزونهی پایتون از هستهی لینوکس اجازهی موفقیت در استفاده از مجموعهی دستورالعملهای AMX_TILE روی پردازندهی Sapphire Rapids Xeon را میدهد و استفاده از ISA را در چارچوبها آزاد میکند.bpo-46917: مقدار
math.nanاکنون همیشه در دسترس است. وصله توسط Victor Stinner.bpo-46955: در معرض نمایش گذاشتن
asyncio.base_events.Serverبه عنوانasyncio.Server. وصله توسط Stefan Zabka.bpo-23325: ماژول
signalدیگر فرض نمیکند کهSIG_IGNوSIG_DFLتکنمونههای عدد صحیح کوچک هستند.bpo-46932: بهروزرسانی libexpat همراه به نسخهی 2.4.7
bpo-46933: ماژول
pwdاکنون اختیاری است. تابعos.path.expanduser()زمانی که ماژولpwdدر دسترس نباشد، مسیر را برمیگرداند.bpo-40059: PEP 680، ماژول
tomllib. پشتیبانی از تجزیهی TOML را اضافه میکند.bpo-464471: توابع
asyncio.timeout()وasyncio.timeout_at()به عنوان مدیران زمینه اضافه شدند. وصله توسط Tin Tvrtković و Andrew Svetlov.bpo-46805: توابع سوکت دیتاگرام خام برای asyncio اضافه شدند:
sock_sendto()،sock_recvfrom()وsock_recvfrom_into().bpo-46644: دیگر نیازی نیست که typeformهای معتبر فراخوانیپذیر باشند. این ویژگی به
typing.Annotatedاجازه میدهد تاtyping.ParamSpecArgsوdataclasses.InitVarرا پوشش دهد. وصله توسط Gregory Beauregard.bpo-46581: انتشار انتشار انتشار
ParamSpecرا برایGenericAliasهمراستا باConcatenate(و سایر موارد) میکند.bpo-45413: تعریف طرحوارههای نصب sysconfig installation schemes یعنی posix_venv و nt_venv برای استفاده در بوتاسترپینگ محیطهای مجازی جدید. اضافه کردن طرحوارهی نصب sysconfig نوع venv برای دریافت مورد مناسب از موارد بالا. این طرحوارهها دقیقاً مشابه طرحوارههای نصب از پیش موجود posix_prefix و nt هستند. ماژول
venvاکنون به جای هاردکد کردن مسیرها فقط بسته به پلتفرم، از طرحوارهی venv برای ایجاد محیطهای مجازی جدید استفاده میکند. توزیعکنندگان پاییندستی پایتون که طرحوارهی نصب posix_prefix یا nt را بهگونهای سفارشیسازی میکنند که با طرحوارهی نصب مورد استفاده در محیطهای مجازی سازگار نیست، تشویق میشوند طرحوارههای venv را سفارشیسازی نکنند. هنگامی که خود پایتون در یک محیط مجازی اجرا میشود،sysconfig.get_default_scheme()وsysconfig.get_preferred_scheme()باkey="prefix"مقدار venv را برمیگردانند.bpo-43224: پیادهسازی پشتیبانی از PEP 646 در typing.py.
bpo-43224: اجازه دادن به بازکردن بستهی اشیای types.GenericAlias، به عنوان مثال
*tuple[int, str].bpo-46557: اخطارهای ثبتشده توسط ماژول گزارشگیری اکنون بدون رشتهی قالببندی ثبت میشوند تا از گروهبندی هشدارها توسط سیستمهایی که گزارشها را بر اساس آرگومان msg گروهبندی میکنند، جلوگیری شود.
bpo-41370:
typing.get_type_hints()اکنون از ارزیابی رشتهها به عنوان ارجاعات پیشرو در PEP 585 generic aliases پشتیبانی میکند.bpo-46607: افزودن
DeprecationWarningبهLegacyInterpolationکه از پایتون ۳.۲ در رشته مستند منسوخ شده بود. در پایتون ۳.۱۳ حذف خواهد شد. بهجای آن ازBasicInterpolationیاExtendedInterpolationاستفاده کنید.bpo-26120: ماژول
pydocاکنون ایمپورتهای __future__ را از آیتمهای دادهی ماژول مستثنی میکند.bpo-46480: اضافه کردن
typing.assert_type(). وصله توسط Jelle Zijlstra.bpo-46421: رفع یک مشکل unittest که در آن اگر دستور به صورت
python -m unittestفراخوانی میشد و نام پرونده(ها) با نقطه (.) شروع میشد، یکValueErrorبرگردانده میشد.bpo-46245: اضافه کردن پارامتر اختیاری dir_fd در
shutil.rmtree().bpo-22859: متد
unittest.TestProgram.usageExit()به عنوان منسوخ علامتگذاری شده است و در پایتون ۳.۱۳ حذف خواهد شد.bpo-46170: بهبود پیام خطا هنگامی که سعی میکنید از یک نمونه از
typing.NewTypeزیرکلاس بسازید.bpo-40296: رفع پشتیبانی از مستعارهای عام (generic aliases) در
pydoc.bpo-20392: رفع عدمانطباق با پسوندهای پروندهی با حروف بزرگ در
MimeTypes.guess_type(). وصله توسط Kumar Aditya.bpo-46030: اضافه کردن ثابتهای FreeBSD به نامهای
LOCAL_CREDS،LOCAL_CREDS_PERSISTENTوSCM_CREDS2به ماژول socket.bpo-44439: رفع متد
.write()یک پروندهی عضو درZipFile؛ هنگامی که دادهی ورودی شیءای است که از پروتکل بافر پشتیبانی میکند، ممکن است طول پرونده اشتباه باشد.bpo-45171: رفع نحوهی مدیریت آرگومان
stacklevelدر توابع گزارشگیری در ماژولloggingبه طوری که در تمام توابع گزارشگیری سازگار باشد و همانطور که اعلام شده است، مشابه آرگومانstacklevelمورد استفاده درwarn()باشد.bpo-24959: رفع باگی که در آن
unittestگاهی اوقات قابها (frames) را از ردگیریهای (tracebacks) استثناهای مطرحشده در آزمونها حذف میکند.bpo-44859: استثناهای دقیقتر و سازگار با PEP 249 در
sqlite3ایجاد کنید.برای خطاهای
SQLITE_MISUSEبه جایProgrammingErrorخطایInterfaceErrorرا ایجاد کنید.هنگامی که تبدیل به BLOB با شکست مواجه میشود، مقدار
BufferErrorرا باValueErrorبازنویسی نکنید.اگر کاربر تلاش کند بیش از یک دستور SQL را با
execute()اجرا کند، به جایWarningخطایProgrammingErrorرا ایجاد کنید.اگر یک پرسوجوی SQL شامل نویسههای تهی باشد، به جای
ValueErrorخطایProgrammingErrorرا ایجاد کنید.
bpo-44493: افزودن نویسهی تهی پایاندهندهی مفقود در طول sockaddr_un
این مورد هنگام استفاده از سوکتهای دیتاگرام غیرانتزاعی AF_UNIX برای فرایندهای نوشتهشده به زبان برنامهنویسی دیگر، بهطور بالقوه قابلمشاهده بود.
bpo-41930: افزودن پشتیبانی از
serialize()وdeserialize()بهsqlite3. وصلهی ارائهشده توسط Erlend E. Aasland.bpo-33178: کلاسهای
ctypes.BigEndianUnionوctypes.LittleEndianUnionاضافه شدند، همانطور که در مستندات کتابخانه مستند شده بود اما هنوز پیادهسازی نشده بودند.bpo-43352: افزودن یک شیء Barrier در اولیههای همگامسازی کتابخانهی asyncio به منظور سازگاری با Barrier از کتابخانههای threading و multiprocessing
bpo-35859: ماژول
re، رفع چند باگ مربوط به گروه ثبتکننده. در موارد نادر، گروه ثبتکننده یک رشتهی نادرست دریافت میکند. وصلهی ارائهشده توسط Ma Lin.
مستندات¶
bpo-47126: بهروزرسانی نشانیهای وب PEP به فرم استاندارد جدید PEP 676.
bpo-47040: یادداشت سازگاری نسخههای قدیمی پایتون برای توابع
binascii.crc32()/zlib.adler32()/zlib.crc32()شفافسازی شد.bpo-46033: نحوهی اجرای دستور
forدر مستندات آن شفافسازی شد.bpo-45790: اصلاح عبارت نادرست در تعریف نوعهای توسعهای: آموزش دربارهی فیلد
ob_baseو ماکروهای استفادهشده برای دسترسی به محتویات آن.bpo-42340: مستندسازی این موضوع که در برخی شرایط
KeyboardInterruptممکن است کد را وارد یک وضعیت ناسازگار کند. یک روش جایگزین نمونه برای جلوگیری از آن در صورت نیاز ارائه شد.bpo-41233: پیوند دادن خطاهای ارجاعشده در
Doc/library/exceptions.rstبه بخش مربوط به خود درDoc/library/errno.rstو برعکس. پیش از این این کار فقط برای EINTR و InterruptedError انجام میشد. وصلهی ارائهشده توسط Yan "yyyyyyyan" Orestes.
آزمونها¶
bpo-47205: رد کردن آزمون برای حالت خطای
sched_getaffinity()وsched_setaffinity()روی FreeBSD.bpo-46126: بازیابی 'descriptions' هنگام اجرای آزمونها به صورت داخلی.
bpo-47104: بازنویسی آزمونهای
asyncio.to_thread()برای استفاده ازunittest.IsolatedAsyncioTestCase.bpo-40280: بدنهی آزمون اکنون روی بستر Emscripten با موفقیت اجرا میشود. تمام آزمونهای مبتنی بر fork، socket و زیرفرایند رد میشوند.
bpo-47037: صرفنظر کردن از آزمون ویژگی
strftime("%4Y")روی ویندوز. این کار میتواند باعث بروز خطای ادعا در ساختهای دیباگ شود.bpo-46587: اگر تابع
strftimeپلتفرم از افزونههای غیرقابل انتقال glibc پشتیبانی نکند، آزمونها رد میشوند.bpo-47015: یک نمونه آزمون برای
os.sendfile()از ماژول منسوخ شدهیasyncore(نگاه کنید به PEP 594) بهasyncioتبدیل شد. وصله توسط Oleg Iarygin.
ساخت¶
bpo-40280: افزودن گزینهی پیکربندی
--enable-wasm-dynamic-linkingبرای فعالسازیdlopenو MAIN_MODULE / SIDE_MODULE رویwasm32-emscripten.bpo-46023: ابزار
makesetupاکنون تمام تعریفهای تکراری ماژول را شناسایی کرده و از آنها رد میشود. اولین ورودی برنده است.bpo-40280: افزودن SOABI
wasm32-emscriptenبرای Emscripten وwasm32-wasiبرای WASI روی WASM ۳۲ بیتی و همچنین موارد همتایwasm64.bpo-47032: اطمینان از این که ساختهای نصب ویندوز هنگام شکست بخشی از ساخت، به درستی با یک کد خروج غیرصفر متوقف میشوند.
bpo-47024: بهروزرسانی OpenSSL به نسخهی 1.1.1n برای نصبکنندههای macOS و تمام ساختهای ویندوز.
bpo-46996: بستهی
tkinterاکنون به نسخهی Tcl/Tk ۸.۵.۱۲ یا جدیدتر نیاز دارد.bpo-46973: افزودن هدف make به نام
regen-configureبرای بازسازی اسکریپت پیکربندی با تصویر ظرف Christian به نامquay.io/tiran/cpython_autoconf:269.bpo-46917: ساخت پایتون اکنون نیازمند پشتیبانی از اعداد ممیز شناور IEEE 754 است. وصله توسط Victor Stinner.
bpo-45774: اسکریپت
configureاکنون بررسی میکند که تمام توابع API زبان C مربوط به SQLite که برای ماژول توسعهایsqlite3مورد نیاز هستند، پیدا شوند.
Windows¶
bpo-47194: بهروزرسانی
zlibبه نسخهی v1.2.12 برای حل کردن CVE 2018-25032.bpo-47171: امکان نصب برنامهی راهانداز
py.exeروی ویندوز ARM64 را فراهم میکند.bpo-46566: ارتقای مدیر نصب پایتون برای پشتیبانی از آرگومان جدید
-V:company/tagجهت پشتیبانی کامل از PEP 514 و شناسایی نصبهای ARM64. پسوند-64در آرگومانها منسوخ شده است، اما همچنان هر نصب غیر ۳۲ بیتی را انتخاب میکند. تنظیمPYLAUNCHER_ALLOW_INSTALLو مشخص کردن نسخهای که نصب نشده است، تلاش میکند نسخهی درخواستشده را از فروشگاه مایکروسافت نصب کند.bpo-47086: نصبکنندهی ویندوز اکنون به جای یک پروندهی کامپایلشدهی منفرد با پسوند
.chm، مستندات را به صورت پروندههای HTML مجزا شامل میشود.bpo-46907: بهروزرسانی نصبکنندهی ویندوز برای استفاده از SQLite 3.38.1.
bpo-44549: بهروزرسانی bzip2 به نسخهی 1.0.8 در ساختهای ویندوز برای کاهش اثر CVE 2016-3189 و CVE 2019-12900.
bpo-46948: با اطمینان از اینکه گزینهی Add to PATH در برنامهی نصب ویندوز هنگام تعمیر از مسیر صحیح استفاده میکند، از CVE 2022-26488 جلوگیری کنید.
مکاواس¶
Tools/Demos¶
bpo-40280: پوستهی محدود Emscripten را با REPL مربوط به رابط کاربری مرورگر Katie Bell از پروژهی python-wasm جایگزین کنید.
رابط C API¶
bpo-40421: توابع C-API با نامهای
PyFrame_GetBuiltins،PyFrame_GetGeneratorوPyFrame_GetGlobalsرا برای دسترسی ایمن به ویژگیهای شیء قاب از کدهای C اضافه کنید.bpo-46850: نوع خصوصی
_PyFrameEvalFunctionو توابع خصوصی_PyInterpreterState_GetEvalFrameFunc()و_PyInterpreterState_SetEvalFrameFunc()را به API داخلی C منتقل کنید. نوع تابع کالبک_PyFrameEvalFunctionاکنون از نوع_PyInterpreterFrameکه بخشی از API داخلی C است، استفاده میکند. وصل توسط Victor Stinner.bpo-46850: تابع خصوصی و مستندنشدهی
_PyEval_EvalFrameDefault()را به API داخلی C منتقل کنید. این تابع اکنون از نوع_PyInterpreterFrameکه بخشی از API داخلی C است، استفاده میکند. وصل توسط Victor Stinner.bpo-46850: تابع خصوصی و مستندنشدهی
_PyEval_CallTracing()را از C API حذف کنید. بهجای آن، تابع عمومیsys.call_tracing()را فراخوانی کنید. وصل توسط Victor Stinner.bpo-46850: تابع خصوصی و مستندنشدهی
_PyEval_GetCoroutineOriginTrackingDepth()را از C API حذف کنید. بهجای آن، تابع عمومیsys.get_coroutine_origin_tracking_depth()را فراخوانی کنید. وصل توسط Victor Stinner.bpo-46850: توابع خصوصی و مستندنشدهی زیر را از C API حذف کنید:
_PyEval_GetAsyncGenFirstiter()_PyEval_GetAsyncGenFinalizer()_PyEval_SetAsyncGenFirstiter()_PyEval_SetAsyncGenFinalizer()
بهجای آنها، توابع عمومی
sys.get_asyncgen_hooks()وsys.set_asyncgen_hooks()را فراخوانی کنید. وصل توسط Victor Stinner.bpo-46987: توابع خصوصی
_PySys_GetObjectId()و_PySys_SetObjectId()را حذف کنید. وصل توسط Donghee Na.bpo-46906: توابع جدیدی برای بستهبندی کردن و بازکردن بسته ممیز شناور با دقت مضاعف C (سریالسازی و سریالزدایی کردن) اضافه کنید:
PyFloat_Pack2()،PyFloat_Pack4()،PyFloat_Pack8()،PyFloat_Unpack2()،PyFloat_Unpack4()وPyFloat_Unpack8(). وصل توسط Victor Stinner.
پایتون ۳.۱۱.۰ آلفا ۶¶
تاریخ انتشار: ۲۰۲۲-۰۳-۰۷
هسته و توکارها (Core and Builtins)¶
bpo-46940: از بازنویسی اطلاعات فرادادهی
AttributeErrorبرای فراخوانیهای دسترسی به ویژگی تورتو جلوگیری کنید. وصل توسط Pablo Galindo.bpo-46927: نام نوع داده را در پیام خطا برای زیرنویسگذاری انواع غیرعام بگنجانید.
bpo-46921: پشتیبانی از vectorcall برای
super(). وصله توسط Ken Jin.bpo-46841: رفع مدیریت نادرست ورودیهای نهانگاه خطی هنگام تخصصیسازی
BINARY_OP.bpo-46841: از یک oparg برای سادهسازی ساخت پیامهای خطای مفید در
GET_AWAITABLEاستفاده کنید.bpo-46903: اطمینان حاصل کنید که زیرکلاسهای str را میتوان به عنوان نام ویژگیها برای نمونههایی با فرهنگلغات مجازی استفاده کرد. رفع رگرسیون در نسخهی ۳.۱۱alpha
bpo-46841: آمارهای دقیقتر شکست تخصصیسازی را برای
COMPARE_OPکه به دنبال آنEXTENDED_ARGآمده است، اضافه کنید.bpo-46891: رفع اشکال معرفیشده در طول نسخهی ۳.۱۱alpha که در آن زیرکلاسهای
types.ModuleTypeبا__slots__به درستی مقداردهی اولیه نمیشدند و منجر به فروپاشی مفسر میشدند.bpo-46841: از نهانسازی خطی برای
LOAD_ATTR،LOAD_METHODوSTORE_ATTRاستفاده کنید.bpo-46841: از نهانگاه خطی برای
BINARY_SUBSCRاستفاده کنید.bpo-46841: از نهانسازی خطی برای
COMPARE_OPاستفاده کنید.bpo-46864: منسوخسازی
PyBytesObject.ob_shash. این مورد در پایتون ۳.۱۳ حذف خواهد شد.bpo-46841: از نهانسازی خطی برای
UNPACK_SEQUENCEاستفاده کنید.bpo-46845: اندازهی دیکشنری را با حذف مقدار هش از جدول هش وقتی همه کلیدهای درجشده یونیکد هستند کاهش میدهد. برای نمونه،
sys.getsizeof(dict.fromkeys("abcdefg"))از ۳۵۲ بایت روی پلتفرم ۶۴ بیتی به ۲۷۲ بایت تبدیل میشود.bpo-46841: از نهانگاه خطی برای
LOAD_GLOBALاستفاده کنید.bpo-46852: تغییر نام متد خصوصی و مستندنشدهی
float.__set_format__()بهfloat.__setformat__()برای رفع یک خطای تایپی معرفیشده در پایتون ۳.۷. این متد فقط توسط test_float استفاده میشود. وصله توسط Victor Stinner.bpo-46852: حذف متد خصوصی و مستندنشدهی
float.__set_format__()که قبلاً در پایتون ۳.۷ با نامfloat.__setformat__()شناخته میشد. رشته مستند آن میگفت: «احتمالاً نمیخواهید از این تابع استفاده کنید. این عمدتاً برای استفاده در مجموعهآزمونهای پایتون وجود دارد.» وصله توسط Victor Stinner.bpo-40116: رفع رگرسیونی که در آن ممکن است dict.update(other) ترتیب پیمایش other را هنگامی که other یک دیکشنری اشتراکگذاری کلید است، رعایت نکند.
bpo-46712: اشتراکگذاری شناسههای رشتهی سراسری در ماژولهای فریزشدهی عمیق.
bpo-46430: رفع نشت حافظه در رشتههای درونیسازیشدهی ماژولهای فریزشدهی عمیق.
bpo-46841: ذخیرهسازی نهانگاههای
BINARY_OPبه صورت خطی با استفاده از یک دستورالعمل جدیدCACHE.bpo-45107: ویژهسازی
LOAD_METHODبرای نمونههایی که دارای یک دیکشنری هستند.bpo-44337: کاهش میزان مصرف حافظهی دستورات ویژهسازیشدهی
LOAD_ATTRوSTORE_ATTR.bpo-46729: افزودن تعداد زیر-استثناها به
BaseException.__str__().bpo-45885: عدم خروج از حالت سازگاری
COMPARE_OPهنگام جمعآوری آمارهای ویژهسازی.bpo-46329: اصلاح گردآوری آمارهای ویژهسازی برای دستورات
PRECALL.
کتابخانه¶
bpo-46794: ارتقای نسخهی libexpat به ۲.۴.۶
هسته و توکارها (Core and Builtins)¶
bpo-46823: پیادهسازی یک آپکد ترکیبی ویژهسازیشدهی
LOAD_FAST__LOAD_ATTR_INSTANCE_VALUE. اصلاحیهای از Dennis Sweeney.bpo-46820: رفع مشکل تجزیه کردن یک مقدار لفظی عددی که بلافاصله (بدون فاصله) با کلیدواژههای «not in» دنبال شده است، مانند
1not in x. اکنون تجزیهکننده فقط یک هشدار صادر میکند، نه یک خطای نحوی.bpo-46329: انتقال
KW_NAMESپیش از دستورPRECALLدر دنبالهی فراخوانی. تغییرoperandمربوط بهCALLجهت تطابق باPRECALLبرای ویژهسازی آسانتر.bpo-46808: حذف ماکروی
NEXT_BLOCKاز compile.c و واداشتن کامپایلر به تولید خودکار بلوکهای ضمنی در صورت نیاز.bpo-46329: افزودن دستور
PUSH_NULL. این دستور بهعنوان پیشوند هنگام ارزیابی یک شیء فراخوانیپذیر استفاده میشود، بهطوری که پشته برای متدها و سایر فراخوانیها شکل یکسانی داشته باشد.PRECALL_FUNCTIONوPRECALL_METHODدر یک دستور واحدِPRECALLادغام میشوند.هیچ تغییری در معناشناسی ایجاد نشده است.
bpo-46762: رفع خطای شکست در بازرسی (assert) در نسخههای دیباگ هنگامی که کاراکتر '<'، '>' یا '=' آخرین نویسه در یک افاسترینگِ فاقد براکت بسته در انتها باشد.
bpo-46730: پیام خطای AttributeError ناشی از دریافت، تنظیم یا حذف یک ویژگی بدون تابع متناظر، اکنون ذکر میکند که صفت در واقع یک ویژگی است و همچنین نوع کلاسی را که به آن تعلق دارد مشخص میکند.
bpo-46724: اطمینان از اینکه تمامی پرشهای رو به عقب به جای
JUMP_FORWARDبا یک آرگومان به صورت(2**32)+offset، از دستورJUMP_ABSOLUTEاستفاده کنند.bpo-46732: اصلاح رشته مستند برای متد
__bool__(). اصلاحیهای از Jelle Zijlstra.bpo-46072: افزودن آمارهای تفصیلیتر مربوط به شکست ویژهسازی برای
BINARY_OP.bpo-46707: جلوگیری از عقبگرد (backtracking) نمایی احتمالی هنگام تولید برخی خطاهای نحویِ شامل تعداد زیادی براکت. اصلاحیهای از Pablo Galindo.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
bpo-45923: افزودن فرم تسریعشدهی
RESUMEکه بررسیهای تسریع را رد میکند.bpo-46702: اختصاصیسازی
UNPACK_SEQUENCEبرای بازکردن بستههایtupleوlist.bpo-46072: آمارهای جفت آپکد اکنون با
--enable-pystatsجمعآوری میشوند. تعریفDYNAMIC_EXECUTION_PROFILEیاDXPAIRSدیگر هیچ اثری ندارد.bpo-46675: اجازه دادن به داشتن بیش از ۱۶ آیتم در یک دیکشنری تقسیمشده قبل از اینکه ترکیب شود. حد مجاز اکنون ۲۵۴ است.
کتابخانه¶
bpo-40479: افزودن یک فراخوانی گمشده به
va_end()درModules/_hashopenssl.c.bpo-46323: استفاده از
PyObject_Vectorcall()هنگام فراخوانی تابع کالبک ctypes. وصله توسط Donghee Na.
هسته و توکارها (Core and Builtins)¶
bpo-46615: هنگام پیمایش مجموعهها به صورت داخلی در
setobject.c، ارجاعات قوی به آیتمهای حاصل از مجموعه بهدست آورید. این کار از فروپاشی در حالتهای خاصی از عملیات مختلف مجموعه که در آنها مجموعه تغییر میکند، جلوگیری میکند.bpo-45828: کامپایلر بایتکد اکنون تلاش میکند دستکاریهای پشته رانتایم را در زمان کامپایل (هر زمان که انجام آن امکانپذیر باشد) اعمال کند.
bpo-30496: یک مسئلهی جزئی قابلیت حمل در پیادهسازی
PyLong_FromLong()رفع شد، و یک مسیر سریع برای اعداد صحیح تکرقمی بهPyLong_FromLongLong()اضافه شد.
کتابخانه¶
bpo-25707: رفع نشت پرونده در
xml.etree.ElementTree.iterparse()هنگامی که پیمایشگر تمام نشده است. وصله توسط Jacob Walls.bpo-46877: اکسپورت کردن
unittest.doModuleCleanups()درunittest. وصله توسط Kumar Aditya.bpo-46848: برای عملکرد بهتر، از پیادهسازیهای بهینهسازیشدهی جستجوی رشته از
find()وrfind()برایfind()وrfind()استفاده کنید.bpo-46736: کلاس
SimpleHTTPRequestHandlerاکنون از دستور زبان HTML5 استفاده میکند. وصله توسط Donghee Na.bpo-44886: ارثبری انتقال دیتاگرام proactor مربوط به asyncio از
asyncio.DatagramTransport.bpo-46827: پشتیبانی از سوکتهای UDP در
asyncio.loop.sock_connect()برای حلقههای رویداد انتخابگرمحور. وصله توسط Thomas Grainger.bpo-46811: پشتیبانی مجموعهی آزمون از Expat نسخه >=2.4.5
bpo-46252: اگر
ssl.SSLSocketبه APIهای مبتنی بر انتقال ارسال شود، استثنایTypeErrorبالا آورده میشود.bpo-46784: رفع تداخل نمادهای libexpat با libexpat بارگذاریشدهی پویای کاربر یا پیونددادهشدهی ایستا در پایتون تعبیهشده.
bpo-46786: سریالسازی HTML در xml.etree.ElementTree اکنون برچسبهای
embed،source،trackوwbrرا به عنوان برچسبهای خالی، همانطور که در HTML 5 تعریف شده است، مینویسد.bpo-39327: تابع
shutil.rmtree()اکنون میتواند هنگام اجرا از سیستمعامل مهمان با پوشههای اشتراکی VirtualBox کار کند.bpo-45390: انتقال پیام
asyncio.CancelledErrorاز وظیفه داخلی به awaiter بیرونی.bpo-46756: رفع باگی در
urllib.request.HTTPPasswordMgr.find_user_password()وurllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated()که به کاربران اجازه میداد مجوز دسترسی را دور بزنند. برای مثال، دسترسی به URI دارایexample.org/foobarمجاز بود اگر کاربر برای URI دارایexample.org/fooاحراز هویت شده بود.bpo-46737: توابع
random.gauss()وrandom.normalvariate()اکنون دارای آرگومانهای پیشفرض هستند.bpo-46752: افزودن گروههای وظیفه به asyncio (همروندی ساختاریافته، الهامگرفته از مهدکودکهای Trio). این تغییر همچنین تغییر جدیدی در لغو وظیفه معرفی میکند، که در آن یک وظیفهی لغو شده نمیتواند دوباره لغو شود تا زمانی که متد .uncancel() را فراخوانی کند.
bpo-46333: متد
__repr__()ازtyping.ForwardRefاکنون پارامترmoduleرا ازtyping.ForwardRefدر صورت تنظیم شدن، شامل میشود.bpo-46643: در
typing.get_type_hints()، پشتیبانی از ارزیابی حاشیهنویسیهای رشتهایParamSpecArgsوParamSpecKwargsاضافه شد. وصله توسط گریگوری بورگارد (Gregory Beauregard).bpo-45863: هنگامی که ماژول
tarfileیک آرشیو با فرمت pax ایجاد میکند، برای بهرهمندی بازکنندههای قدیمی آرشیو، علاوه بر زمانسنجهای با دقت کامل موجود در سرآیند توسعهیافتهی pax، یک نمایش عدد صحیح از زمانسنجها را (در صورت امکان) در سرآیند ustar قرار میدهد.bpo-46066: منسوخسازی نحو مبتنی بر کلیدواژه (kwargs) برای تعاریف
typing.TypedDict. این نحو هنگام تعیین کامل بودن (totality) معناشناسی گیجکنندهای داشت و تا حد زیادی استفاده نمیشد. وصله توسط جینگچن یه (Jingchen Ye).bpo-46676: آرگومانها و kwargs در
typing.ParamSpecرا با خودشان برابر کنید. وصله توسط گریگوری بورگارد (Gregory Beauregard).bpo-46323: توابع
ctypes.CFUNCTYPE()وctypes.WINFUNCTYPE()اکنون اگر عضو_argtypes_آنها حاوی آرگومانهای زیادی باشد، در ایجاد نوع داده شکست میخورند. پیش از این، خطا تنها هنگام فراخوانی یک تابع ایجاد میشد. وصله توسط ویکتور استینر (Victor Stinner).bpo-46672: رفع خطای
NameErrorدرasyncio.gather()هنگامی که بررسی اولیه نوع داده با شکست مواجه میشود.bpo-46659: کلاسهای
calendar.LocaleTextCalendarوcalendar.LocaleHTMLCalendarاکنون در صورت عدم مشخص شدن محلی (locale)، به جای استفاده ازlocale.getdefaultlocale()، ازlocale.getlocale()استفاده میکنند. وصله توسط ویکتور استینر (Victor Stinner).bpo-46659: تابع
locale.getdefaultlocale()منسوخ شده است و در پایتون ۳.۱۳ حذف خواهد شد. به جای آن از توابعlocale.setlocale()،locale.getpreferredencoding(False)وlocale.getlocale()استفاده کنید. وصله توسط ویکتور استینر (Victor Stinner).bpo-46655: در
typing.get_type_hints()، پشتیبانی از ارزیابی حاشیهنویسیهای رشتهای خامTypeAliasاضافه شد. وصله توسط گریگوری بورگارد (Gregory Beauregard).bpo-45948: رفع ناهماهنگی در پیادهسازی C ماژول
xml.etree.ElementTree. اکنون، نمونهسازی ازxml.etree.ElementTree.XMLParserبا کلیدواژهیtarget=Noneیک هدف پیشفرضxml.etree.ElementTree.TreeBuilderرا فراهم میکند، درست مانند کاری که پیادهسازی پایتون انجام میدهد.bpo-46626: انتشار گزینهی
IP_BIND_ADDRESS_NO_PORTلینوکس در ماژولsocket.bpo-46521: رفع باگی در ماژول
codeopکه کدهای نامعتبر شامل نقلقولهای رشتهای را به اشتباه به عنوان کد معتبر شناسایی میکرد.bpo-46571: بهبود تابع
typing.no_type_check().اکنون این تابع کلاسها و توابع خارجی را تغییر نمیدهد. همچنین اکنون متدهای کلاس (:classmethod:) را به درستی به گونهای علامتگذاری میکنیم که نوعشان بررسی نشود.
bpo-46400: expat: بهروزرسانی libexpat از نسخه 2.4.1 به 2.4.4
bpo-46556: منسوخسازی پشتیبانی مستندنشده از استفادهی یک شیء
pathlib.Pathبه عنوان یک مدیر زمینه.bpo-46534: پیادهسازی PEP 673
typing.Self. ارسالشده توسط James Hilton-Balfe.bpo-46522: هماهنگسازی بیشتر خطاهای AttributeError مربوط به
__getattr__در ماژولهای مختلف با یک خطای AttributeError نمونهbpo-46475: افزودن
typing.Neverوtyping.assert_never(). ارسالشده توسط Jelle Zijlstra.bpo-46333: متدهای
__eq__()و__hash__()در کلاسtyping.ForwardRefاکنون پارامترmoduleکلاسtyping.ForwardRefرا در نظر میگیرند. ارجاعهای پیشرو از ماژولهای مختلف اکنون متمایز میشوند.bpo-46246: افزودن
__slots__ازدسترفته بهimportlib.metadata.DeprecatedList. ارسالشده توسط Arie Bovenberg.bpo-46232: ماژول
sslاکنون گواهیهای دارای رشتههای بیتی در DN را به درستی مدیریت میکند.bpo-46195: تابع
typing.get_type_hints()دیگرOptionalرا به پارامترهایی که مقدار پیشفرض آنهاNoneاست اضافه نمیکند. این تغییر با تغییرات PEP 484 در https://github.com/python/peps/pull/689 هماهنگ است.bpo-31369: افزودن
RegexFlagبهre.__all__و مستندسازی آن. افزودنNOFLAGبرای نشان دادن تنظیمنشدن هیچ پرچمی.bpo-45898: ماژول
ctypesدیگر نمادهایffi_type_*را درcfield.cتعریف نمیکند. این نمادها بیش از یک دهه است که توسط libffi فراهم شدهاند.bpo-44953: فراخوانی اشیای
operator.itemgetterو اشیایoperator.attrgetterاکنون به لطف استفاده از قرارداد فراخوانی vectorcall سریعتر شده است.bpo-44289: رفع مشکلی در متد
is_tarfile()هنگام استفاده از آرگومان fileobj: موقعیت در fileobj به جلو رانده میشد که باعث میشد باtarfile.TarFile.open()غیرقابل خواندن شود.bpo-44011: پیادهسازی مجدد پشتیبانی از SSL/TLS در asyncio، و قرض گرفتن پیادهسازی از کتابخانهی uvloop.
bpo-41086: سازندهی
configparser.ConfigParserدر صورتی که پارامترinterpolationاز نوعconfigparser.Interpolationنباشد، خطایTypeErrorرا ایجاد میکند.bpo-29418: پیادهسازی
inspect.ismethodwrapper()و رفعinspect.isroutine()برای مواردی که روشwraooer داده شده است. ارسالشده توسط Hakan Çelik.bpo-14156: کلاس argparse.FileType اکنون از آرگومان '-' در حالت دودویی پشتیبانی میکند و ویژگی .buffer متعلق به sys.stdin/sys.stdout را بر حسب مورد برمیگرداند. حالتهای شامل 'x' و 'a' هنگامی که آرگومان '-' است، معادل 'w' در نظر گرفته میشوند. وصلهای که توسط Josh Rosenberg مشارکت داده شده است.
مستندات¶
bpo-42238: پوشهی
Doc/tools/rstlint.pyبه مخزن خودش منتقل شده است و اکنون به عنوانsphinx-lintروی PyPI بستهبندی میشود.
آزمونها¶
bpo-46913: رفع test_faulthandler.test_sigfpe() اگر پایتون با sanitizer رفتار نامشخص (UBSAN) ساخته شده باشد: غیرفعال کردن UBSAN روی تابع faulthandler_sigfpe(). ارسالشده توسط Victor Stinner.
bpo-46760: حذف آفستهای بایتکد از مقادیر مورد انتظار در ماژول test.test_dis. این کار موانع تغییر ماشین مجازی (VM) یا کامپایلر را کاهش میدهد.
bpo-46708: جلوگیری از هشدار تغییر خطمشی پیشفرض حلقه رویداد asyncio پس از اجرای
test_asyncio.bpo-46678: تابع
make_legacy_pycدرLib/test/support/import_helper.pyدیگر هنگامی کهPYTHONPYCACHEPREFIXروی پوشهای روی دستگاهی متفاوت از محل ذخیرهسازی پروندههای موقت تنظیم میشود، با خطا مواجه نمیشود.bpo-46623: از آنجا که آزمونهای test_pair() و test_speech128() در test_zlib روی s390x در صورت استفاده از شتابدهندهی سختافزاری s390x با خطا مواجه میشوند، آنها را رد کنید. ارسال وصله توسط Victor Stinner.
ساخت¶
bpo-46860: هنگام ساخت روی سامانههای پروندهی حساس به بزرگی و کوچکی حروف (case-insensitive)، به
--with-suffixاحترام بگذارید.bpo-46656: ساخت پایتون اکنون به یک کامپایلر C11 نیاز دارد. ویژگیهای اختیاری C11 الزامی نیستند. ارسال وصله توسط Victor Stinner.
bpo-46656: ساخت پایتون اکنون به پشتیبانی از مقدار ممیز شناور Not-a-Number (NaN) نیاز دارد: کلاندستور
Py_NO_NANحذف شد. ارسال وصله توسط Victor Stinner.bpo-46640: ساخت پایتون اکنون به یک پروندهی سرآیند
<math.h>در C99 نیاز دارد که ثابتی به نامNAN، یا تابع درونساخت__builtin_nan()را فراهم کند. ارسال وصله توسط Victor Stinner.bpo-46608: به منظور صرفهجویی ۳۰۰ کیلوبایت فضای دیسک، دادههای فریزشده و مارشالشده (marshalled-frozen) را در صورت فریز عمیق (deep-freezing) مستثنی کنید. این کار شامل افزودن یک فیلد جدید
is_packageبه_frozenاست. ارسال وصله توسط Kumar Aditya.bpo-40280: رفع خرابیهای آزمون wasm32-emscripten و مسائل مربوط به سکو. - غیرفعالسازی فراامکانات سیستمی (syscalls) که پشتیبانی نمیشوند یا کار نمیکنند، مانند wait، getrusage، prlimit، mkfifo، mknod، setres[gu]id، setgroups. - استفاده از fd_count برای شمارش توصیفگرهای پرونده (fd) باز. - افزودن بررسیهای بیشتر برای subprocess و fork. - افزودن راهحلهای موقت برای _multiprocessing گمشده و شکست socket.accept(). - فعالسازی bzip2. - غیرفعالسازی پشتیبانی از پروندههای بزرگ. - غیرفعالسازی signal.alarm.
bpo-46430: درونیسازی کردن رشتهها در ماژولهای فریزشدهی عمیق. ارسال وصله توسط Kumar Aditya.
Windows¶
bpo-46744: پوشهی نصب پیشفرض برای همهی کاربران در ARM64 اکنون زیر پوشهی بومی
Program Filesقرار دارد، نهProgram Files (Arm)که برای پروندههای ARM (۳۲ بیتی) در نظر گرفته شده است.bpo-46567: پشتیبانی از Tcl و Tk را برای ویندوز ARM64 اضافه میکند. این تغییر همچنین IDLE را به نصب اضافه میکند.
bpo-46638: تضمین میکند که مجازیسازی رجیستری به طور مداوم غیرفعال بماند. برای نسخه ۳.۱۰ و پیش از آن، فعال میماند (برخی از نوشتنهای رجیستری محافظت میشوند)، در حالی که برای نسخه ۳.۱۱ و پس از آن غیرفعال است (تغییرات رجیستری روی همهی برنامهها تأثیر میگذارد).
IDLE¶
رابط C API¶
bpo-46748: سرآیندهای عمومی پایتون دیگر
<stdbool.h>را ایمپورت نمیکنند، و این امر کدهایی را که پایتون را تعبیه/گسترش میدهند در تعریفbool،trueوfalseآزاد میگذارد.bpo-46836: انتقال تعریف نوع
PyFrameObject(struct _frame) به پروندهی سرآیند API داخلی C به نامpycore_frame.h. ارسال وصله توسط Victor Stinner.bpo-45459: تغییر نام پروندهی سرآیند
Include/buffer.hبهInclude/pybuffer.hجهت جلوگیری از تداخل با پروژههایی که از پیش پروندهی سرآیندbuffer.hرا دارند. ارسال وصله توسط Victor Stinner.bpo-45412: حذف کلاندستور
HAVE_PY_SET_53BIT_PRECISION(انتقالیافته به API داخلی C). ارسال وصله توسط Victor Stinner.bpo-46613: افزودن تابع
PyType_GetModuleByDef()که اجازه میدهد وقتی کلاسِ تعریفکنندهی یک متد در دسترس نیست، به وضعیت ماژول دسترسی داشته باشید.
Python 3.11.0 alpha 5¶
تاریخ انتشار: ۲۰۲۲-۰۲-۰۳
هسته و توکارها (Core and Builtins)¶
bpo-45773: حذف دو بهینهسازی «سوراخپویش» نامعتبر از کامپایلر بایتکد.
bpo-46564: هنگام ساخت شیء
super، آبجکتهای فریم ایجاد نکنید. اصلاحیه از کومار آدیتیا (Kumar Aditya).bpo-45885: اضافه شدن آمارهای خطای تخصیص دقیقتر در ارتباط با بایتکد
COMPARE_OP.bpo-44977: واگذاری
int()به__trunc__()اکنون منسوخ شده است. فراخوانیint(a)زمانی کهtype(a)متد__trunc__()را پیادهسازی میکند اما__int__()یا__index__()را پیادهسازی نمیکند، اکنون یکDeprecationWarningپرتاب میکند.bpo-46458: تغییر ترتیب کدهای تولیدشده توسط کامپایلر برای یک بلوک
try-exceptبه طوری که کد بلوکelseبلافاصله پس از بدنهیtryقرار گیرد (بدون پرش). این کار برای مسیر موفقیتآمیز بهینهتر است.bpo-46527: امکان ارسال دوبارهی
iterableبه عنوان یک آرگومان کلیدواژهای بهenumerate(). اصلاحیه از یله زیلسترا (Jelle Zijlstra).bpo-46528: جایگزینی چندین دستور دستکاری پشته (
DUP_TOP،DUP_TOP_TWO،ROT_TWO،ROT_THREE،ROT_FOURوROT_N) با دستورات جدیدCOPYوSWAP.bpo-46329: استفاده از دو یا سه بایتکد برای پیادهسازی بیشتر فراخوانیها.
فراخوانیهای بدون آرگومانهای نامگذاریشده به صورت دنبالهای از دو دستور پیادهسازی میشوند:
PRECALL; CALL. فراخوانیهای دارای آرگومانهای نامگذاریشده به صورت دنبالهای از سه دستور پیادهسازی میشوند:PRECALL; KW_NAMES; CALL. دو دستور مختلفPRECALLوجود دارد:PRECALL_FUNTIONوPRECALL_METHOD. مورد دوم باLOAD_METHODجفت میشود.این بخشبندی به پیشفراخوانی و فراخوانی اجازه میدهد تخصیص بهتری انجام شود و در نتیجه در نهایت کارایی بهتری حاصل شود.
هیچ تغییری در معناشناسی ایجاد نشده است.
bpo-46503: رفع یک خطای assert هنگام تجزیهی برخی دنبالههای گریز نامعتبر N در افاسترینگها.
bpo-46431: بهبود پیام خطا در فراخوانیهای نامعتبر به
BaseExceptionGroup.__new__().bpo-46476: رفع نشت حافظه در اشیاء کد تولیدشده توسط deepfreeze. اصلاحیه از کومار آدیتیا (Kumar Aditya).
bpo-46481: افزایش سرعت فراخوانیهای
weakref.ref.__call__()با استفاده از قرارداد فراخوانیvectorcallدر PEP 590. اصلاحیه از دونگهی نا (Donghee Na).bpo-46417: رفع یک حالت رقابتی در تنظیم ویژگی
__bases__یک نوع: تابع داخلیadd_subclass()اکنون عضوPyTypeObject.tp_subclassesرا پس از فراخوانیPyWeakref_NewRef()دریافت میکند که میتواند زبالهروبی را فعال کند و به طور غیرمستقیمPyTypeObject.tp_subclassesرا تغییر دهد. اصلاحیه از ویکتور استینر (Victor Stinner).bpo-46417: فرمان
python -X showrefcountاکنون تعداد کل ارجاعات را پس از پاکسازی و نابودی مفسر اصلی پایتون نشان میدهد. پیش از این، قبل از آن نمایش داده میشد. اصلاحیه از ویکتور استینر (Victor Stinner).bpo-43683: اضافه کردن آپکد ASYNC_GEN_WRAP برای پوشش دادن مقداری که باید در تولیدگرهای ناهمگام بازگردانده شود. نیاز به حالتدهی خاص به تولیدگرهای ناهمگام در دستور
YIELD_VALUEرا حذف میکند.bpo-46407: بهینهسازی برخی عملیات باقیمانده (modulo) در
Objects/longobject.c. اصلاحیه از جرمایا ویویان (Jeremiah Vivian).bpo-46409: افزودن بایتکد جدید
RETURN_GENERATORبرای ساخت تولیدگرها. فراخوانی عملکردهای پایتون را در ماشین مجازی سادهتر میکند، زیرا دیگر نیازی به حالتدهی خاص برای توابع تولیدگر ندارند.همچنین بایتکد
JUMP_NO_INTERRUPTرا اضافه کنید که مانندJUMP_ABSOLUTEعمل میکند، اما وقفهها را بررسی نمیکند.bpo-46406: پیادهسازی تقسیم عدد صحیح
//بهینهسازی شده است تا به کامپایلر کمک کند محدودیتهای آن را بهتر درک کند. هنگام تقسیم یک عدد صحیح بر مقداری کوچکتر از2**30، این عملیات میتواند روی پلتفرم amd64 تا ۲۰٪ سریعتر باشد.
کتابخانه¶
bpo-46383: اصلاح امضای نامعتبر تابع
module_freeدر_zoneinfoبرای حل کردن خرابی روی پلتفرم wasm32-emscripten.
هسته و توکارها (Core and Builtins)¶
bpo-46361: اطمینان حاصل کنید که اعداد صحیح «کوچک» ایجادشده توسط
int.from_bytes()وdecimal.Decimalبهدرستی کش میشوند.bpo-46161: رفع خطای ساخت کلاس هنگامی که آرگومانها ثابت هستند و از CALL_FUNCTION_EX استفاده میشود.
bpo-46028: اصلاح محاسبهی
sys._base_executableهنگامی که درون یک محیط مجازی قرار دارید که از پیوندهای نمادین با نامهای دودویی متفاوتی نسبت به محیط پایه استفاده میکند.bpo-46091: محاسبهی صحیح سطوح تورفتگی برای سطرهایی با نویسهی فضای خالی که با نویسههای ادامهی سطر به پایان میرسند. پچ توسط پابلو گالیندو (Pablo Galindo)
کتابخانه¶
bpo-30512: افزودن پشتیبانی از سوکت CAN برای NetBSD.
ساخت¶
bpo-46045: عدم استفاده از سمافورهای POSIX روی NetBSD
هسته و توکارها (Core and Builtins)¶
کتابخانه¶
bpo-46624: بازیابی پشتیبانی از آرگومانهای غیرصحیح
random.randrange()وrandom.randint().bpo-46591: قابلیت کلیکپذیر شدن نشانیوب مستندات IDLE در محاورهی دربارهی IDLE (About IDLE).
bpo-46565: حذف متغیرهای حلقهای که به فضاهای نام ماژولها نشت میکنند.
bpo-46553: در
typing.get_type_hints()، از ارزیابی حاشیهنویسیهای خام رشتهشدهیClassVarپشتیبانی کنید. پچ توسط گرگوری بورگارد (Gregory Beauregard).bpo-46544: از نشت متغیرهای میانی
xوuspaceدرtextwrap.TextWrapperجلوگیری کنید.bpo-46487: متد
get_write_buffer_limitsرا بهasyncio.transports.WriteTransportو انتقال SSL اضافه کنید.bpo-45173: توجه داشته باشید که موارد منسوخشدهی configparser در پایتون ۳.۱۲ حذف خواهند شد.
bpo-45162: رابطهای برنامهنویسی (API) منسوخشدهی
unittestکه در نسخه ۳.۱۱a1 حذف شده بودند، به طور موقت بازیابی شدند تا همزمان با انجام پاکسازیها در پروژههای خارجی، در نسخه ۳.۱۲ حذف شوند.bpo-46539: در
typing.get_type_hints()، از ارزیابی حاشیهنویسیهای رشتهشدهیClassVarوFinalدر داخلAnnotatedپشتیبانی کنید. پچ توسط گرگوری بورگارد (Gregory Beauregard).bpo-46510: افزودن آزمونهای مفقود برای
types.TracebackTypeوtypes.FrameType. محاسبهی مستقیم آنها از استثنای گرفتهشده بدون فراخوانیsys.exc_info().bpo-46491: به
typing.Annotatedاجازه دهید تاtyping.Finalوtyping.ClassVarرا پوشش دهد. پچ توسط گرگوری بورگارد (Gregory Beauregard).bpo-46483: متد
__class_getitem__()را ازpathlib.PurePathحذف کنید زیرا این کلاس قرار نبود عام باشد.bpo-46436: گزینهی خط فرمان
-d/--directoryرا در ماژولhttp.serverکه هنگام ترکیب با گزینهی خط فرمان--cgiنادیده گرفته میشد، اصلاح کنید. وصله توسط Géry Ogam.bpo-41403: کاری کنید که متد
mock.patch()هنگام دریافت آرگومان نامعتبر، خطایTypeErrorرا همراه با پیام خطای مرتبط بالا بیاورد. پیشتر اجازه میداد یک خطای مبهمAttributeErrorفرار کند.bpo-46474: در
importlib.metadata.EntryPoint.pattern، با محدود کردن ابهام در فاصلههای سفید متوالی، از بروز REDoS احتمالی جلوگیری کنید.bpo-46474: متد خصوصی از
importlib.metadata.Pathحذف شد. همگامسازی با importlib_metadata 4.10.0.bpo-46470: شاخهی استفادهنشده از
typing._remove_dups_flattenحذف شد.bpo-46469: کلاسهای عام
asyncioاکنون به جای همان کلاس،types.GenericAliasرا در__class_getitem__برمیگردانند.bpo-41906: از ارسال نمونههای فیلتر در مقادیر
filtersمربوط بهhandlersوloggersدر دیکشنری ارائهشده بهlogging.config.dictConfig()پشتیبانی کنید.bpo-46422: به جای یک
tupleمعمولی، ازdis.Positionsدرdis.Instructionاستفاده کنید.bpo-46434: ماژول
pdbاکنون دستورhelpرا هنگامی که__doc__موجود نیست (مثلاً هنگام اجرا با پروندههای پیشتولید شده و بهینهشدهی.pyc) بهخوبی مدیریت میکند.bpo-43869: پایتون از مبدأ زمان یکسانی در تمام پلتفرمها استفاده میکند. یک آزمون واحد صریح اضافه کنید تا اطمینان حاصل شود که اینطور است. وصله توسط Victor Stinner.
bpo-46414: تابع
typing.reveal_type()را اضافه کنید. وصله توسط Jelle Zijlstra.bpo-40280: ماژول
subprocessاکنون در صورت در دسترس بودن ماژولmsvcrt، ایمپورتهای مختص ویندوز و در سایر پلتفرمها، ایمپورتهای مختص POSIX را ایمپورت میکند. این کار باعث ایجاد یک استثنای تمیز در زمان در دسترس نبودن_posixsubprocessمیشود (مثلاً هدف مرورگر Emscripten).bpo-40066: کلاسهای
IntEnum،IntFlagوStrEnumاز نوع افزودهشده برای خروجی متدهایstr()وformat()خود استفاده میکنند.bpo-46316: با حذف بررسی غیرضروری برای ورودیهای خاص، متد
pathlib.Path.iterdir()را بهینهسازی کنید.bpo-29688: متد
pathlib.Path.absolute()(که همیشه وجود داشته است) مستند شد.bpo-43012: کلاس منسوخشده و داخلی
_Accessorمتعلق به ماژول pathlib برای آمادهسازی بستر جهت بهبودهای آتی ماژول حذف شد.bpo-46258: با جایگزینی دو مرحله تقسیم با یک جدول جستجو، تابع
math.isqrt()را برای اعداد صحیح مثبت کوچک سرعت ببخشید.bpo-46242: بهبود پیام خطا هنگام ایجاد یک نوع
enum.Enumجدید که از یکEnumموجود با_member_names_با استفاده ازenum.Enum.__call__()ارثبری میکند.bpo-43118: رفع باگی در تابع
inspect.signature()که باعث میشد روی برخی زیرکلاسهای کلاسهایی که دارای__text_signature__ارجاعدهنده به متغیرهای سراسری ماژول هستند، با خطا مواجه شود. وصله توسط Weipeng Hong.bpo-26552: رفع حالتی که در آن تابع شکستخوردهی
asyncio.ensure_future()همروال (coroutine) را نمیبست. وصلهای از Kumar Aditya.bpo-21987: رفع مشکلی در متد
tarfile.TarFile.getmember()که نام پوشهای را با خط اریب پایانی (trailing slash) دریافت میکرد.bpo-46124: بهروزرسانی
zoneinfoبرای استفاده از API قابلپیمایش importlib.resources.bpo-46103: اکنون تابع
inspect.getmembers()ویژگی__bases__را فقط از نوع کلاس دریافت میکند. وصلهای از Weipeng Hong.bpo-46080: رفع استثنا در تولید متن راهنمای argparse در صورتی که مقدار پیشفرض آرگومان
argparse.BooleanOptionalActionبرابر باargparse.SUPPRESSباشد و ویژگیhelpبرای آن مشخص شده باشد. وصلهای از Felix Fontein.bpo-44791: رفع جایگزینی
ParamSpecدرConcatenateبا عبارتهای پارامتری مختلف. جایگزینی با فهرستی از نوعها اکنون یک تاپل (tuple) از نوعها برمیگرداند. جایگزینی باConcatenateاکنون یکConcatenateبا فهرستهای الحاقشده از آرگومانها برمیگرداند.
مستندات¶
bpo-46463: رفع اسکریپت
escape4chm.pyکه هنگام ساخت پروندهی مستندات CHM استفاده میشود.
آزمونها¶
bpo-43478: ماکها (Mocks) دیگر نمیتوانند به عنوان مشخصات (specs) برای سایر ماکها فراهم شوند. در نتیجه، یک شیء که از پیش ماک شده است را نمیتوان به
mock.Mock()ارسال کرد. این کار میتواند اشکالات (bugs) موجود در آزمونها را آشکار کند؛ زیرا این ماکهای مشتقشده از Mock همیشه آزمونهای خاصی (مانند isinstance) را با موفقیت پشت سر میگذارند و توابع assert توکار (مانند assert_called_once_with) نیز بهطور بیشرط موفق خواهند شد.bpo-46616: اطمینان از اینکه
test_importlib.test_windowsکلیدهای رجیستری را پس از اتمام پاکسازی میکند.bpo-44359: آزمون test_ftplib اکنون خطاهای سوکت را بهطور بیصدا نادیده میگیرد تا از ثبت گزارش (logging) استثناهای نخکشی (threading) مدیریتنشده جلوگیری شود. وصلهای از Victor Stinner.
bpo-46600: رفع مشکل test_gdb.test_pycfunction() برای پایتون ساختهشده با
clang -Og. تحمل توابع درونخطی در ردگیری gdb. وصله توسط Victor Stinner.bpo-46542: رفع فروپاشی پایتون در test_lib2to3 هنگام استفاده از پایتون ساختهشده در حالت اشکالزدایی: محدود کردن حد بازگشت. وصله توسط Victor Stinner.
bpo-46576: آزمون test_peg_generator اکنون بهینهسازی کامپایلر را هنگام آزمایش کامپایل افزونههای C خود غیرفعال میکند تا سرعت آزمایش روی ساختهای غیرشکالزدایی CPython به طور قابل توجهی افزایش یابد.
bpo-46542: رفع آزمونهای
test_jsonکهRecursionErrorرا بررسی میکنند: اصلاح این آزمونها برای استفاده ازsupport.infinite_recursion(). وصله توسط Victor Stinner.bpo-13886: پرش از آزمونهای PTY مربوط به test_builtin روی نویسههای غیر اسکی در صورت بارگذاری ماژول readline. ماژول readline رفتار input() را تغییر میدهد، اما test_builtin برای آزمایش ماژول readline در نظر گرفته نشده است. وصله توسط Victor Stinner.
bpo-40280: افزودن دکوراتورهای
test.support.requires_fork()برای علامتگذاری آزمونهایی که بهos.fork()فعال نیاز دارند.bpo-40280: افزودن دکوراتور
test.support.requires_subprocess()برای علامتگذاری آزمونهایی که به ماژولsubprocessفعال یاos.spawn*نیاز دارند. پلتفرم wasm32-emscripten از فرایندها پشتیبانی نمیکند.bpo-46126: غیرفعال کردن «توضیحات» هنگام اجرای داخلی آزمونها.
ساخت¶
bpo-46602: مرتبسازی configure.ac بهطوریکه conftest.c بهجای الحاق، کوتاه شود. این کار در مواردی که حذف (rm) پروندهی conftest.c بین آزمونها انجامچ نمیشود، کمک میکند. مشکلات پاییندستی مانند SOABI مخدوش شده ممکن است رخ دهد.
bpo-46600: اصلاح آزمونی که بررسی میکند آیا کامپایلر C از گزینهی
-Ogدر اسکریپت./configureپشتیبانی میکند یا خیر، تا از-Ogروی clang که از آن پشتیبانی میکند نیز استفاده شود. وصله توسط Victor Stinner.bpo-38472: اصلاح تشخیص GCC در setup.py هنگام کامپایل متقاطع. کامپایلر C اکنون با LC_ALL=C اجرا میشود. پیشتر، تشخیص با یک locale آلمانی با خطا مواجه میشد.
bpo-46513: برنامهی configure دیگر از کلاندستور
AC_C_CHAR_UNSIGNEDاستفاده نمیکند وpyconfig.hدیگر نماد رزروشدهی__CHAR_UNSIGNED__را تعریف نمیکند.bpo-46471: استفاده از تکنمونههای سراسری برای اشیای بایت تکبایتی در deepfreeze.
bpo-46443: ساختار Deepfreeze اکنون از اعداد صحیح کوچک کششده استفاده میکند؛ زیرا مقداری فضا برای اعداد صحیح کوچک رایج ذخیره میکند.
bpo-46429: ادغام تمام پروندههای فریزشدهی عمقی در یک پرونده برای صرفهجویی در فضا. وصلهای از Kumar Aditya.
bpo-45569: فرآیند ساخت اکنون به طور پیشفرض از ارقام ۳۰ بیتی برای اعداد صحیح پایتون استفاده میکند. پیشتر بر اساس سکو، ارقام ۱۵ بیتی یا ۳۰ بیتی انتخاب میشدند. همچنان میتوانید با استفاده از گزینهی
--enable-big-digits=15برای اسکریپتconfigure، یا با تعریفPYLONG_BITS_IN_DIGITدرpyconfig.h، ارقام ۱۵ بیتی را انتخاب کنید.bpo-45925: بهروزرسانی نصبکنندهی ویندوز برای استفاده از SQLite 3.37.2.
bpo-43112: شناسایی musl libc به عنوان یک SOABI مجزا (برچسبگذاریشده به صورت
linux-musl).
Windows¶
bpo-33125: نصبکنندهی سنتی مبتنی بر EXE/MSI برای ویندوز اکنون برای ARM64 در دسترس است.
bpo-46362؛ روش os.path.abspath("C:CON") اکنون اصلاح شده است تا مقدار "\.CON" را برگرداند، نه همان مسیر را. این رگرسیون در تمام دستگاههای قدیمی DOS مانند COM1، LPT1 یا NUL وجود داشت.
bpo-44934: نصبکننده اکنون گزینهای مختص خط فرمان ارائه میدهد تا پوشهی نصب را به جای ابتدا، به انتهای
PATHاضافه کنید.
مکاواس¶
bpo-45925: بهروزرسانی نصبکنندهی macOS به SQLite 3.37.2.
IDLE¶
bpo-45296: شفافسازی close، quit و exit در IDLE. در منوی File، گزینههای 'Close' و 'Exit' اکنون به 'Close Window' (پنجرهی فعلی) و 'Exit IDLE' (با بستن تمام پنجرهها) تغییر یافتهاند. در Shell، عبارتهای 'quit()' و 'exit()' به معنای «بستن Shell» هستند. اگر پنجرهی دیگری وجود نداشته باشد، این کار IDLE را نیز میبندد.
رابط C API¶
bpo-40170: حذف کلاندستور
PyHeapType_GET_MEMBERS(). این مورد به اشتباه در API عمومی C قرار گرفته بود و فقط باید توسط خود پایتون به صورت داخلی استفاده شود. به جای آن از عضوPyTypeObject.tp_membersاستفاده کنید. وصلهای از Victor Stinner.bpo-40170: انتقال توابع خصوصی _Py_GetAllocatedBlocks() و _PyObject_DebugMallocStats() به API داخلی C. وصلهای از Victor Stinner.
bpo-46433: تابع داخلی _PyType_GetModuleByDef اکنون الگوهای ارثبری شامل انواع ایستا را به درستی مدیریت میکند.
bpo-45459:
Py_bufferو توابع مختلف مرتبط باPy_bufferاکنون بخشی از API محدود (limited API) و ABI پایدار هستند.bpo-14916: اصلاح باگ در توکنساز که مانع از تحلیل (parsing) توصیفگر فایل (FD) ارائهشده توسط
PyRun_InteractiveOneمیشد.
Python 3.11.0 alpha 4¶
Release date: 2022-01-13
هسته و توکارها (Core and Builtins)¶
bpo-46070: تابع
Py_EndInterpreter()اکنون به طور صریح تمام اشیاء در حال ردیابی توسط GC را از لیست ردیابی خارج میکند. پیشتر، اگر شیءای بعداً توسط مفسر دیگری استفاده میشد، فراخوانیPyObject_GC_UnTrack()روی آن شیء در صورتی که شیء قبلی یا بعدی ساختارPyGC_Headبه یک اشارهگر معلق تبدیل میشد، باعث فروپاشی میشد. وصله توسط Victor Stinner.bpo-46347: رفع نشتی حافظه در PyEval_EvalCodeEx.
bpo-46339: رفع یک فروپاشی در پارسر هنگام بازیابی متن خطا برای عبارتهای افاسترینگ چندسطری که از سطر اول رشته شروع نمیشوند. وصله توسط Pablo Galindo.
bpo-46331: شمارهسطر دستور ذخیرهکنندهی داکستینگ را تنظیم نکنید. رگرسیون ایجادشده در نسخهی ۳.۱۱ آلفا را برطرف میکند.
bpo-46314: حذف رویداد «call» اضافی هنگام ایجاد یک تابع لامبدا که به طور تصادفی در 3.11a4 معرفی شده بود.
bpo-46289: اعلان ASDL از
FormattedValueتغییر کرده است تا نشان دهد فیلدconversionاختیاری نیست.bpo-46297: رفع فروپاشی مفسر هنگام بالا آمدن سیستم با چندین مسیر PythonPath تنظیمشده در رجیستری ویندوز. وصله توسط Derzsi Dániel.
bpo-46237: رفع شمارهسطر خطاهای توکنساز درون افاسترینگها. وصله توسط Pablo Galindo.
bpo-46263: اکنون که getpath.c به پایتون خالص بازنویسی شده و منطق آن بهبود یافته است، همیشه انتظار داریم پیکربندی "use_frozen_modules" تنظیم شود.
bpo-46006: رفع یک رگرسیون زمانی که یک متد نوع مانند
__init__()در یک زیرمفسر تغییر میکند. رفع یک رگرسیون در_PyUnicode_EqualToASCIIId()و متدupdate_slot(). بازگرداندن تغییری که فرهنگ لغت یونیکد رشتههای درونیسازیشده را با زیرمفسرها سازگار میکرد: فرهنگ لغت درونیسازیشدهی داخلی دوباره توسط همه مفسرها به اشتراک گذاشته میشود. وصله توسط Victor Stinner.bpo-45923: افزودن آپکد RESUME. این یک عملیات بیاثر منطقی است. این آپکد توسط کامپایلر در هر جایی که یک تابع پایتون قابل ورود باشد، صادر میشود. این آپکد توسط مفسر برای انجام ردیابی و بررسیهای بهینهساز استفاده میشود.
کتابخانه¶
bpo-46208: رفع رگرسیون مربوط به بازنگرداندن مقدار مورد انتظار "../B" به جای "B" توسط os.path.normpath("A/../../B").
هسته و توکارها (Core and Builtins)¶
bpo-46240: اصلاح پیام خطا برای پرانتزهای بستهنشده هنگامی که توکنساز در هنگام گزارش خطا به انتهای منبع نمیرسد. وصله توسط Pablo Galindo.
bpo-46009: حذف آپکد
GEN_START.bpo-46235: عملیات ضرب دنباله خاص مانند
[0] * 1_000اکنون به دلیل بهینهسازیهای شمارش ارجاع سریعتر شده است. وصله توسط Dennis Sweeney.bpo-46221: دستور
PREP_RERAISE_STARدیگرlastiرا روی پشته قرار نمیدهد.bpo-46202: حذف
POP_EXCEPT_AND_RERAISEو جایگزینی آن با یک دنباله معادل از سایر آپکدها.
کتابخانه¶
bpo-46085: رفع مکانیسم نهانگاه پیمایشگر
OrderedDict.
هسته و توکارها (Core and Builtins)¶
bpo-46055: افزایش سرعت عملیات شیفت دادن شامل اعداد صحیح کوچکتر از
PyLong_BASE. وصله توسط Xinhang Xu.bpo-46110: افزودن بررسی حداکثر بازگشت به پارسر PEG برای جلوگیری از سرریز پشته. وصله توسط Pablo Galindo.
bpo-46107: رفع باگی که در آن
ExceptionGroup.split()وExceptionGroup.subgroup()فیلد__note__گروه استثنا را به بخشها کپی نمیکردند.bpo-45711: نمایهی وضعیت مفسر از استثناهای مدیریتشده (معروف به exc_info یا _PyErr_StackItem) اکنون فقط دارای فیلد
exc_valueاست و فیلدهایexc_typeوexc_tracebackحذف شدهاند؛ زیرا مقادیر آنها را میتوان ازexc_valueبهدست آورد.bpo-44525: جایگزینی چهار دستور بایتکدِ فراخوانی با یک دستور پیشفراخوانی و دو دستور فراخوانی.
دستورات
CALL_FUNCTION،CALL_FUNCTION_KW،CALL_METHODوCALL_METHOD_KWحذف شدند.دستورات فراخوانی
CALL_NO_KWوCALL_KW، و پیشوندPRECALL_METHODبرای جفت شدن باLOAD_METHODاضافه شدند.bpo-46039: حذف دستور
YIELD_FROMو جایگزینی آن با دستورSENDکه همان عملیات را انجام میدهد، اما بدون حلقه.bpo-45635: کد فراخوانیشده از
_PyErr_Display()برای بهبود مدیریت خطا بازنشناسی (refactor) شد. این کد اکنون بلافاصله پس از یک خطای غیرقابلبازیابی خارج میشود.bpo-46054: رفع خطای پارسر هنگام تجزیهی نویسههای غیر utf-8 در پروندههای منبع. وصله توسط Pablo Galindo.
bpo-46042: بهبود مکان نشانک در استثناهای
SyntaxErrorصادرشده توسط جدول نمادها. وصله توسط Pablo Galindo.bpo-46049: اطمینان از عملکرد صحیح پروندههای
._pthدر پلتفرمهایی غیر از ویندوز.bpo-46048: رفع مشکل تجزیهی پروندههای
._pthدر هنگام راهاندازی، بهطوریکه مسیرهای تکنویسهای بهدرستی خوانده شوند.bpo-37971: رفع باگی که در آن شماره سطرهای ارائهشده در ردگیری (traceback) هنگام بروز استثنا در اعمال دکوراتور نادرست بود.
bpo-46031: افزودن آپکدهای
POP_JUMP_IF_NOT_NONEوPOP_JUMP_IF_NONEبرای افزایش سرعت پرشهای شرطی.bpo-46025: رفع فروپاشی در ماژول
atexitکه مربوط به توابعی است که پیش از ایجاد استثنا، ثبت خود را لغو میکنند. وصله توسط Pablo Galindo.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
bpo-44525: تخصصیسازی دستور CALL_FUNCTION برای فراخوانی انواع توکار با یک آرگومان. افزایش سرعت
range(x)،list(x)و بهطور مشخصtype(obj).bpo-42918: رفع باگی که در آن تابع توکار
compile()هنگام ارسال چندین دستور در حالت 'single'، همیشه یکSyntaxErrorایجاد نمیکرد. وصله توسط Weipeng Hong.bpo-45953: مفسر اصلی در _PyRuntimeState.interpreters اکنون به صورت ایستا تخصیص مییابد (به عنوان بخشی از _PyRuntime). همین امر برای وضعیت اولیه نخ هر مفسر نیز صادق است. این یعنی تخصیص حافظه کمتر در طول راهاندازی رانتایم، و همچنین محلیسازی حافظه بهتر برای این شیءهای وضعیت کلیدی.
bpo-43413: بازنشانی تغییرات در
set.__init__. زیرکلاسsetدر صورتی که متد__new__()را با پارامترهای کلیدواژهی اضافی تعریف کند، باید یک متد__init__()نیز تعریف کند.bpo-43931: ثابت
Py_Versionاضافه شد که همان مقدارPY_VERSION_HEXرا دارد. وصلهای از Gabriele N. Tornetta.
کتابخانه¶
bpo-46342: آرایندهی
@typing.finalاکنون ویژگی__final__را روی شیء آراستهشده تنظیم میکند تا دروننگری در رانتایم امکانپذیر شود. وصلهای از Jelle Zijlstra.bpo-46328: متد
sys.exception()اضافه شد که نمونهی استثنای فعال را برمیگرداند.bpo-46307: متدهای
string.Template.is_valid()وstring.Template.get_identifiers()اضافه شدند.bpo-46306: فرض کنید که
types.CodeTypeهمیشه دارایtypes.CodeType.co_firstlinenoدرdoctestاست.bpo-40479: اصلاح گزینهی usedforsecurity در
hashlibتا با OpenSSL 3.0.0 در حالت FIPS به درستی کار کند.bpo-46070: رفع خطای احتمالی segfault هنگام ایمپورت کردن ماژول
asyncioاز زیرمفسرهای مختلف بهصورت موازی. وصلهای از Erlend E. Aasland.bpo-46244: ویژگی
__slots__ازtyping.ParamSpecوtyping.TypeVarحذف شد. آنها هیچ کاربردی نداشتند. وصلهای از Arie Bovenberg.bpo-46278: اعمال آرگومان
contextدر متدهایAbstractEventLoop.call_*(). پیادهسازیهای حلقه از پیش از آن پشتیبانی میکنند.bpo-46269: حذف حالت خاص
__new__درenum.Enum.__dir__().bpo-46266: بهبود ثابتهای روز در
calendar.اکنون تمام ثابتها (
MONDAYتاSUNDAY) مستندسازی، آزمایش و به__all__اضافه شدهاند.bpo-46257: توابع میانگین (mean)، واریانس (variance) و انحراف معیار (stdev) در ماژول statistics بهینهسازی شدند. اگر ورودی یک پیمایشگر باشد، به جای مصرف حافظه با تبدیل به یک فهرست، در یک مرحله مصرف میشود. الگوریتم تکمرحلهای حدوداً دو برابر سریعتر از کد دومرحلهای قبلی است.
bpo-41011: دو متغیر جدید به پروندهی pyvenv.cfg که توسط ماژول
venvتولید میشود، اضافه شد: executable برای فایل اجرایی و command برای خط فرمان استفادهشده جهت ایجاد محیط.bpo-46239: بهبود پیام خطا هنگام ایمپورت کردن
asyncio.windows_eventsروی سیستمعاملهای غیر ویندوزی.bpo-46238: استفاده مجدد از ثابتهای
_winapiدرasyncio.windows_events.bpo-46222: اضافهشدن ثابت sendfile به نام
SF_NOCACHEبرای FreeBSD در posixmodule.bpo-37295: افزودن مسیر سریع برای
0 <= k <= n <= 67برایmath.comb().bpo-46176: اضافهشدن ثابت
MAP_STACKبرای ماژول mmap.bpo-43424: ویژگی
webbrowser.MacOSXOSAScript._nameمنسوخ شد و به جای آن ازnameاستفاده کنید.bpo-45321: کدهای خطای گمشده به ماژول
xml.parsers.expat.errorsافزوده شد.bpo-46125: بازسازی آزمونها برای آزمایش مستقیم API قابل پیمایش. شامل تغییرات مربوط به importlib نسخه 5.4.0.
bpo-46118: ماژول importlib.resources و قابلیتهای مرتبط با آن به یک بسته منتقل شدند.
bpo-37578: پارامتر include_hidden به
glob()وiglob()اضافه شد تا هنگام استفاده از کاراکترهای خاص مانند*،**،?و[]، پروندهها و دایرکتوریهای مخفی نیز مطابقت داده شوند.bpo-20369: تابع
concurrent.futures.wait()هنگام دریافت آیندهنماهای تکراری دیگر به صورت نامحدود مسدود نمیشود. وصله توسط Kumar Aditya.bpo-46105: رعایت مشخصات هنگام تولید مشخصات نیازمندیها با URLها و امکانات اضافی (importlib_metadata نسخه 4.8.3).
bpo-44893: شیءهای EntryPoint دیگر تاپل نیستند. روش توصیه شده برای دسترسی از طریق ویژگی (('.name', '.group')) یا روش دسترسی (('.load()')) است. دسترسی از طریق اندیس منسوخ شده است و هشدار منسوخشدن را صادر خواهد کرد.
bpo-22815: چاپ موفقیتهای غیرمنتظره به همراه شکستها و خطاها در خلاصه نتایج در
unittest.TextTestResult.bpo-22047: فراخوانی
add_argument_group()روی یک گروه آرگومان منسوخ شده است. فراخوانیadd_argument_group()یاadd_mutually_exclusive_group()روی یک گروه متقابلاً انحصاری منسوخ شده است.این ویژگیها هرگز پشتیبانیچ نمیشدند و همیشه به درستی کار نمیکنند. توابع به طور اتفاقی از طریق وراثت روی API وجود دارند و در آینده حذف خواهند شد.
bpo-26952: ماژول
argparseهنگام تلاش برای رندر کردن راهنما برای یک گروه متقابلاً انحصاری خالی، خطایValueErrorرا با پیامی واضح ایجاد میکند. پیش از این، خطای مبهمIndexErrorرا ایجاد میکرد.bpo-45615: توابع موجود در ماژول
tracebackهنگامی که آرگومان استثنا از نوعBaseExceptionنباشد، به جایAttributeError، خطایTypeErrorایجاد میکنند.bpo-16594: پرچم allow_reuse_port را در socketserver اضافه کنید.
bpo-27718: رفع راهنما برای ماژول
signal. برخی از توابع (مانندsignal()وgetsignal()) حذف شده بودند.bpo-46032: متد
registry()از توابعfunctools.singledispatch()اکنون اولین آرگومان یا اولین حاشیهنویسی پارامتر را بررسی میکند و اگر پشتیبانی نشود، یک TypeError ایجاد میکند. پیش از این، "انواع" پشتیبانینشده نادیده گرفته میشدند (مانندtyping.List[int]) یا در زمان فراخوانی باعث بروز خطا میشدند (مانندlist[int]).bpo-46014: امکان استفاده از
typing.Unionوtypes.UnionTypeبه عنوان آرگومان توزیع برایfunctools.singledispatchاضافه شد. وصله ارائه شده توسط Yurii Karabas.bpo-27062: ویژگی
__all__به ماژولinspectاضافه شد، وصله توسط Kumar Aditya.bpo-46018: اطمینان حاصل کنید که تابع
math.expm1()در هنگام سرریز به زیر (underflow) خطایی ایجاد نکند.bpo-46016: افزودن ثابتهای
F_DUP2FDوF_DUP2FD_CLOEXECاز سیستمعامل FreeBSD به ماژولfcntl.bpo-45755: مستعادهای عام
typingاکنون هنگامی که بهdir()پاس داده میشوند، ویژگیهای کلاس کلاس عام اصلی را آشکار میکنند. این رفتار تا نسخهی ۳.۶ پایتون وجود داشت، اما در نسخههای ۳.۷ تا ۳.۹ تغییر کرد.bpo-45874: رشتهی پرسوجوی خالی، که شامل هیچ آرگومان پرسوجویی نمیشود، اکنون به درستی در
urllib.parse.parse_qslمدیریت میشود. این موضوع پیشتر هنگامی که تجزیهی سختگیرانه فعال بود، مشکلاتی ایجاد میکرد.bpo-44674: نحوهی رد کردن مقادیر پیشفرض تغییرپذیر در دیتاکلاسها را تغییر دهید. این ماژول پیشتر از فهرستی از انواع شناختهشده (فهرست، دیکشنری، مجموعه) استفاده میکرد. اکنون شیءهای هشناپذیر را به عنوان مقادیر پیشفرض رد میکند. این روش از هشناپذیری به عنوان پراکسی برای تغییرپذیری استفاده میکند. وصله توسط Eric V. Smith، ایده توسط Raymond Hettinger.
bpo-23882: پشتیبانی از بسته فضای نام (PEP 420) از کشف unittest حذف شد. این قابلیت در پایتون ۳.۴ معرفی شد اما از پایتون ۳.۷ به بعد دچار خرابی شده بود.
bpo-25066: یک متد
__repr__()به شیءهایmultiprocessing.Eventاضافه شد، وصله توسط Kumar Aditya.bpo-45643: ثابت
signal.SIGSTKFLTدر پلتفرمهایی که این سیگنال در آنها تعریف شده است، اضافه شد.bpo-44092: عمل Fetch در سرتاسر rollback دیگر استثنای
InterfaceErrorرا بالا نمیآورد. در عوض، مدیریت این موارد را به کتابخانهی SQLite واگذار میکنیم. وصله توسط Erlend E. Aasland.bpo-42413: جایگزینی
concurrent.futures.TimeoutErrorوasyncio.TimeoutErrorبا استثنای توکارTimeoutError، و حفظ این نامها به عنوان مستعارهای منسوخ.
مستندات¶
آزمونها¶
bpo-46296: افزودن یک مورد آزمون برای
enumبا_use_args_ == Trueو_member_type_ == object.bpo-46205: رفع توقف در runtest_mp به دلیل شرایط رقابت (race condition)
bpo-46263: رفع test_capi روی FreeBSD 14-dev: به jemalloc دستور داده میشود حافظه آزادشده را با بایتهای هرز پر نکند.
bpo-46262: پوشش دادن مسیر
ValueErrorدر آزمونهای مربوط بهenum.Flag._missing_().bpo-46150: اکنون بررسی میشود که
fakenameدرtest_pathlib.PosixPathTest.test_expanduserوجود نداشته باشد.bpo-46129: بازنویسی آزمونهای
asyncio.locksبا استفاده ازunittest.IsolatedAsyncioTestCase.bpo-23819: رفع آزمونهای
asyncioدر حالت بهینهسازیشدهی پایتون. وصله توسط Kumar Aditya.bpo-46114: رفع مورد آزمون برای نسخهی OpenSSL 3.0.1. کتابخانهی OpenSSL 3.0 از
0xMNN00PP0Lاستفاده میکند.
ساخت¶
bpo-44133: هنگامی که پایتون با
--without-static-libpythonپیکربندی میشود، کتابخانهی ایستای پایتون (libpython.a) دیگر ساخته نمیشود. وصله توسط Victor Stinner.bpo-44133: هنگامی که پایتون بدون
--enable-sharedساخته میشود، برنامهیpythonاکنون به پروندههای شیء پیوند داده میشود، نه اینکه به کتابخانهی ایستای پایتون (libpython.a) پیوند داده شود، تا اطمینان حاصل شود که تمام نمادها صادر میشوند. پیشتر، پیونددهنده برخی نمادها مانند تابعPy_FrozenMain()را حذف میکرد. وصله توسط Victor Stinner.bpo-40280: اسکریپت
configureدارای گزینهی جدیدی به نام--with-emscripten-targetبرای انتخاب مرورگر یا node به عنوان هدف ساخت Emscripten است.bpo-46315: بررسیهای
#ifdef HAVE_FEATUREبرای قابلیتهایی که روی سکوی WASI در دسترس نیستند، افزوده و اصلاح شدند.bpo-45723: یک رگرسیون در بررسی
configureبرایselect.epoll()رفع شد.bpo-46263: دستور
configureدیگرMULTIARCHرا روی سکوهای FreeBSD تنظیم نمیکند.bpo-46106: بستهی OpenSSL در ساختهای ویندوز، ساختهای نصبکنندهی macOS و CI به نسخهی 1.1.1m بهروزرسانی شد. وصله توسط Kumar Aditya.
bpo-46088: به طور خودکار زمان اجرای (runtime) بوتاستپ پایتون هنگام ساخت از طریق Visual Studio شناسایی یا نصب میشود.
bpo-46072: گزینهی پیکربندی --with-pystats برای فعال کردن جمعآوری آمارهای داخلی اضافه شد.
bpo-40280: پوشهی جدید
Tools/wasmشامل کمکیهای مرتبط با WebAssembly مانند جایگزینیconfig.siteبرای wasm32-emscripten، تولیدگر داراییهای wasm برای بستهبندی کتابخانهی استاندارد و یک فایل README است.bpo-46023: برنامهی makesetup دیگر افزونههایی را که به عنوان disabled علامتگذاری شدهاند، نمیسازد. این امر به کاربران اجازه میدهد ماژولها را در
Modules/Setup.localغیرفعال کنند.bpo-45949: از ماژول پایتون خالص
freeze_moduleبرای تمام پروندههای بوتاستپ importlib به جز موارد دیگر استفاده کنید. گزینهی configure مربوط به--with-freeze-moduleدیگر برای ساختهای متقاطع مورد نیاز نیست.
Windows¶
bpo-46217: پارامتری که روی ویندوز 8.1 و نسخههای اولیهی ویندوز 10 پشتیبانی نمیشد و ممکن بود باعث شکست در ساخت یا زمان اجرا (runtime) شود، حذف شد.
مکاواس¶
bpo-40477: برنامهی Python Launcher برای macOS اکنون اسکریپتها و در صورت نیاز، برنامهی Terminal را هنگام اجرا روی نسخههای اخیر macOS به درستی راهاندازی میکند.
رابط C API¶
bpo-46236: رفع یک اشکال در
PyFunction_GetAnnotations()که باعث میشد به جای یکdict، یکtupleبرگرداند.bpo-46140: توابع
PyBuffer_GetPointer()،PyBuffer_FromContiguous()،PyBuffer_ToContiguous()وPyMemoryView_FromBuffer()اکنون اطلاعات بافر را به صورتconst Py_buffer *به جایPy_buffer *دریافت میکنند، زیرا نیازی به تغییرپذیری ندارند. همچنین تابعPyBuffer_FromContiguous()اکنون بافر مبدأ را به صورتconst void *میپذیرد و به همین ترتیب تابعPyBuffer_GetPointer()فاصلهها (strides) را به صورتconst Py_ssize_t *دریافت میکند.bpo-45855: مستندسازی شد که آرگومان no_block در تابع
PyCapsule_Import()اکنون یک عملیات بیاثر است.bpo-45855: استفادهی منسوخشده از
PyImport_ImportModuleNoBlock()باPyImport_ImportModule()در ماژولهای کتابخانهی استاندارد جایگزین شد. وصله توسط Kumar Aditya.bpo-46007: کلاندستور (macro)
PyUnicode_CHECK_INTERNED()از رابط برنامهنویسی محدود C (limited C API) حذف شد. این کلاندستور هرگز در آنجا قابل استفاده نبود، زیرا از ساختارهای داخلی استفاده میکرد که در رابط برنامهنویسی محدود C در دسترس نیستند. وصله توسط Victor Stinner.
Python 3.11.0 alpha 3¶
Release date: 2021-12-08
هسته و توکارها (Core and Builtins)¶
bpo-46009: بازگردانی رفتار نسخهی ۳.۹ و پیش از آن هنگام ارسال مقدار non-None به یک تولیدگر (generator) تازه شروعشده. در نسخهی ۳.۹ این موضوع تأثیری بر وضعیت تولیدگر نداشت. در نسخههای ۳.۱۰.۰ و ۳.۱۰.۱ دستور
gen_func().send(0)معادلgen_func().throw(TypeError(...)است که تولیدگر را از کار میاندازد. از نسخهی ۳.۱۰.۲ به بعد، رفتار به حالت نسخهی ۳.۹ بازگردانده شده است.bpo-46004: رفع موقعیت
SyntaxErrorبرای خطاهای مربوط به حلقههای for با هدفهای نامعتبر. بستهی اصلاحی (patch) از Pablo Galindobpo-45711: تابع
_PyErr_ChainStackItem()دیگر مقادیرexc_infoرا نرمالسازی نمیکند (از جمله تنظیم ردگیری (traceback) روی نمونهی استثنا) زیراexc_infoهمیشه نرمالسازی شده است.bpo-45607: فیلد
__note__بهBaseExceptionاضافه شد. این فیلد به طور پیشفرضNoneاست اما میتوان آن را به رشتهای تنظیم کرد که به ردگیری استثنا اضافه میشود.bpo-45947: قرار دادن اشارهگرها به دیکشنری و مقادیر بلافاصله پیش از سرآیند GC. این کار تعداد بارگذاریهای حافظهی وابسته برای دسترسی به دیکشنری یا مقادیر را از ۳ به ۱ کاهش میدهد.
bpo-45915: تابع
is_valid_fdاکنون روی سیستمعاملهای لینوکس، مکاواس و ویندوز از دستور سریعترfcntl(fd, F_GETFD)استفاده میکند.bpo-44530: بازگردانی تغییر اعمالشده روی رویداد حسابرسی مربوط به
code.__new__از یک نسخهی پیشعرضه.bpo-42268: در صورتی که کامپایلر انتخابشده از ابزار پاکسازی حافظه (memory sanitizer) پشتیبانی نکند، مرحلهی پیکربندی با خطا مواجه خواهد شد. بستهی اصلاحی (patch) از Pablo Galindo
bpo-45711: سه مقدار
exc_infoاکنون همیشه با یکدیگر سازگار هستند. به طور خاص، فیلدهایtypeوtracebackاکنون از نمونهی استثنا مشتق میشوند. این موضوع بر مقادیر بازگشتیsys.exc_info()وPyErr_GetExcInfo()در صورت تغییر نمونهی استثنا هنگام مدیریت استثنا تأثیر میگذارد، و همچنین بر تابعPyErr_SetExcInfo()تأثیر دارد که اکنون آرگومانهایtypeوtracebackارائهشده به خود را نادیده میگیرد.bpo-45727: بهبود خطای سینتکس سفارشی که پیشنهاد میکند ممکن است یک کاما جا افتاده باشد، به طوری که فقط زمانی فعال شود که عبارتها بین پرانتزها یا قلابها تشخیص داده شوند. بستهی اصلاحی (patch) از Pablo Galindo
bpo-45885: تخصصیسازی آپکد (opcode)
COMPARE_OPبا استفاده از سازوکار PEP 659.bpo-45786: تخصیص فضا برای فریم مفسر در شیء فریم، به منظور جلوگیری از تخصیص اضافی هنگامی که عمر شیء فریم از فعالسازی فریم بیشتر است.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
bpo-45813: رفع خطای منجر به فروپاشی هنگام فراخوانی coro.cr_frame.clear() پس از آزاد شدن همروال.
bpo-45811: بهبود خطاهای توکنساز هنگام برخورد با نویسههای کنترلی نامرئی در پارسر. بستهی اصلاحی (patch) از Pablo Galindo
bpo-45848: اجازه دادن به پارسر برای دریافت خطاهای سطر مستقیماً از پروندههای رمزگذاریشده. بستهی اصلاحی (patch) از Pablo Galindo
bpo-45709: بازگردانی رفتار نسخهی ۳.۱۰ هنگام ردیابی یک استثنای بالارفته در یک دستور with.
bpo-44525: افزودن آپکد جدید
COPY_FREE_VARS، برای صریح کردن کپی کردن متغیرهای آزاد از تابع به فریم. این کار به بهینهسازی فراخوانیهای تابع پایتون کمک میکند.bpo-45829: تخصصیسازی آپکد
BINARY_SUBSCRبرای کلاسهایی با متد__getitem__پیادهسازیشده در پایتونbpo-45826: رفع یک فروپاشی هنگام فراخوانی
.with_traceback(None)رویNameError. این مشکل بهصورت داخلی درunittest.TestCase.assertRaises()رخ میدهد.bpo-45822: رفع یک باگ در پارسر که باعث میشد وقتی هیچ پرچمی ارائه نمیشود، کوکیهای کدگذاری PEP 263 را رعایت نکند. وصله توسط Pablo Galindo
bpo-45820: رفع خطای حافظه (segfault) هنگامی که پارسر بدون خواندن هیچ ورودیای با خطا مواجه میشود. وصله توسط Pablo Galindo
bpo-45636: سادهسازی پیادهسازی
BINARY_OPبا استفاده از ایندکسگذاری روی آرایهای از اشارهگرهای تابع (بهجای استفاده از ساختار شرطی روی oparg).bpo-42540: رفع فروپاشی هنگامی که
os.fork()با یک تخصیصدهندهی حافظهی غیرپیشفرضِ فعال فراخوانی میشود.bpo-45738: رفع محاسبهی محل خطا برای نویسههای ادامهی نامعتبر در پارسر. وصله توسط Pablo Galindo.
bpo-45636: حذف یک «مسیر سریع» (fast path) موجود برای قالببندی رشتهای به سبک قدیمی، از آنجا که به نظر میرسد دیگر تأثیر قابلاندازهگیری ندارد.
bpo-45753: افزایش کارایی بررسیهای بازگشتی با پیگیری تعداد فراخوانیهای باقیمانده پیش از سرریز.
bpo-45773: رفع توقف ناگهانی کامپایلر هنگام تلاش برای بهینهسازی الگوهای پرش خاص.
bpo-45764: پارسر اکنون هنگام جا انداختن پرانتز باز
(پس از یک دستورdefپیام خطای بهتری ارائه میدهد:>>> def f: File "<stdin>", line 1 def f: ^ SyntaxError: expected '('
bpo-45609: اختصاصیسازی آپکد
STORE_SUBSCRبا استفاده از سازوکار PEP 659.bpo-45636: جایگزینی تمام دستورات عددی
BINARY_*وINPLACE_*با یک پیادهسازی واحدBINARY_OP.bpo-45582: محاسبهی مسیر (که به عنوان
getpathشناخته میشود) به عنوان یک ماژول پایتون فریزشده دوباره پیادهسازی شده است. این تغییر نباید تأثیر محسوسی داشته باشد، اما ممکن است بر محاسبهی تمام مسیرهای ارجاعشده درsysوsysconfigتأثیر بگذارد.bpo-45450: بهبود پیام خطای نحوی برای آرگومانهای پرانتزدار. وصله توسط Pablo Galindo.
کتابخانه¶
bpo-27946: رفع فروپاشی احتمالی هنگام دریافت ویژگیای از
xml.etree.ElementTree.Elementهمزمان با جایگزینی دیکشنریattrib.bpo-45711: واداشتن
asyncioبه نرمالسازی استثناها بهمحض اینکه باPyErr_Fetch()ثبت میشوند، و پیش از اینکه به عنوان یک سهتایی exc_info ذخیره شوند. این تغییر، ماژولasyncioرا با بقیهی پایگاه کد هماهنگ میکند که در آن یک سهتایی exc_info همیشه نرمالسازی میشود.bpo-23819: جایگزینی assertها با استثناها در asyncio، وصله توسط Kumar Aditya.
bpo-13236: کلاسهای
unittest.TextTestResultوunittest.TextTestRunnerاکنون جریان خروجی را با بسامد بیشتری تخلیه (flush) میکنند.bpo-45917: تابع
math.exp2()اضافه شد که مقدار ۲ به توان x را برمیگرداند.bpo-37658: برطرف کردن مشکلی که در شرایط خاصی ممکن است باعث شود
asyncio.wait_for()به یک همروال اجازه دهد با موفقیت کامل شود، اما در بازگرداندن نتیجه شکست بخورد و به طور بالقوه باعث نشت حافظه یا مسائل دیگری شود.bpo-45876: بهبود دقت توابع stdev() و pstdev() در ماژول statistics. وقتی ورودیها اعداد اعشاری (floats) یا کسرها هستند، خروجی یک عدد اعشاری با گرد کردن صحیح است.
bpo-44649: مدیریت dataclass(slots=True) با فیلدی که دارای مقدار پیشفرضی است، اما مقدار init=False را دارد.
bpo-45803: پارامتر kw_only گمشده به dataclasses.make_dataclass() اضافه شد.
bpo-45837: متد
turtle.RawTurtle.settiltangle()از نسخهی ۳.۱ پایتون منسوخ شده است، اکنون یک هشدار منسوخسازی صادر میکند و در نسخهی ۳.۱۳ پایتون حذف خواهد شد.بهجای آن از
turtle.RawTurtle.tiltangle()استفاده کنید.turtle.RawTurtle.tiltangle()پیشتر به اشتباه به عنوان منسوخ برچسبگذاری شده بود که رشته مستند (docstring) آن اصلاح شد.وصله توسط Hugo van Kemenade.
bpo-45831: ماژول
faulthandlerاکنون میتواند رشتههای فقط اسکی (مانند نام پروندهها و نام تابعها) را با یک بار فراخوانی سیستمی write() هنگام برونریزی ردگیری (traceback) بنویسید. این کار خطر داشتن یک برونریزی غیرقابلخواندن را هنگامی که دو نخ (threads) یا دو فرایند (processes) یک ردگیری را در یک زمان در یک پرونده (مانند stderr) برونریزی میکنند، کاهش میدهد. وصله توسط Victor Stinner.bpo-45828: فراخوانیهای بازگشتی (callbacks) زبان C در
sqliteاکنون در صورت فعال بودن ردگیریهای فراخوانی بازگشتی، از استثناهای غیرقابلپرتاب (unraisable exceptions) استفاده میکنند. وصله توسط Erlend E. Aasland.bpo-41735: برطرف کردن قفل نخ (thread lock) در متد
zlib.Decompress.flush()قبل ازPyObject_GetBuffer.bpo-45235: بازگرداندن اصلاح باگ argparse که باعث ایجاد رگرسیون در نحوهی مدیریت آرگومانهای پیشفرض برای تجزیهکنندههای فرعی (subparsers) شده بود. این کار مانع از آن میشد که آرگومانهای سطح برگ نسبت به آرگومانهای سطح ریشه اولویت داشته باشند.
bpo-45754: برطرف کردن یک رگرسیون در نسخههای ۳.۱۱a1 و ۳.۱۱a2 پایتون که در آن
sqlite3به اشتباه هنگام بررسی طول دستورهای SQL ازSQLITE_LIMIT_LENGTHاستفاده میکرد. اکنون ازSQLITE_LIMIT_SQL_LENGTHاستفاده میشود. وصله توسط Erlend E. Aasland.bpo-45766: گزینهی proportional به
statistics.linear_regression()اضافه شد.bpo-45765: در importlib.metadata، کشف توزیع (distribution) برای یک مسیر خالی اصلاح شد.
bpo-45757: برطرف کردن باگی که در آن
disیک آپکد (opcode) نادرست تولید میکرد هنگامی کهEXTENDED_ARGبا یک آپکد که از آرگومان خود استفاده نمیکند، دنبال میشد.bpo-45644: قالببندی درونجایی پروندهی JSON با استفاده از
python3 -m json.tool infile infileاکنون به درستی کار میکند، پیشتر پرونده را خالی میگذاشت. وصله توسط Chris Wesseling.bpo-45703: هنگامی که یک بستهی فضای نام (namespace package) قبل از ایجاد/نصب ماژول دیگری از همان فضا در یک مکان متفاوت از
sys.pathدر حین اجرای برنامه وارد (import) میشود، فراخوانی تابعimportlib.invalidate_caches()اکنون تضمین میکند که ماژول جدید نیز شناخته شود.bpo-45535: بهبود خروجی تابع
dir()با Enumها.bpo-45664: برطرف کردن
types.resolve_bases()وtypes.new_class()برای نمونهیtypes.GenericAliasبه عنوان یک پایگاه (base).bpo-45663: برطرف کردن
dataclasses.is_dataclass()برای دیتاکلاسهایی که زیرکلاسهایtypes.GenericAliasهستند.bpo-45662: رفع نمایشی (repr) عنصر
dataclasses.InitVarبا یک مستعار نوع برای کلاس توکار، مانندInitVar[list[int]].bpo-43137: راهاندازی مرورگرهای وب GNOME از طریق ابزار gio به جای ابزار منسوخشده gvfs-open
bpo-45429: در سیستمعامل ویندوز، تابع
time.sleep()اکنون از یک تایمر قابل انتظار که از تایمرهای با وضوح بالا پشتیبانی میکند، استفاده میکند. وصلهای از Donghee Na و Eryk Sun.bpo-37295: بهینهسازی
math.comb()وmath.perm().bpo-45514: توابع میراثی منسوخشده در
importlib.resources.bpo-45507: افزودن آزمونها برای دنبالههای ناقص/گمشده در پیادهسازی gzip.decompress.
bpo-45359: پیادهسازی PEP 585 برای
graphlib.TopologicalSorter.bpo-44733: افزودن
max_tasks_per_childبهconcurrent.futures.ProcessPoolExecutor. این امکان به کاربران اجازه میدهد تا حداکثر تعداد وظایفی را که یک فرایند واحد باید پیش از راهاندازی مجدد اجرا کند، مشخص کنند.bpo-28806: بهبود کتابخانهی netrc. پروندهی netrc دیگر نیازی به داشتن تمام توکنها ندارد. و اگر نام ورود anonymous باشد، بررسی امنیتی دیگر لازم نیست.
bpo-43498: جلوگیری از یک خطای احتمالی "RuntimeError: dictionary changed size during iteration" هنگام تنظیم تعداد فرایندهای
ProcessPoolExecutor.bpo-42158: افزودن انواع MIME برای N-quads، N-triples، Notation3 و TriG به
mimetypes.bpo-30533: افزودن
inspect.getmembers_static()، که تمام اعضا را بدون راهاندازی جستجوی پویا از طریق پروتکل توصیفگر برمیگرداند. وصلهای از Weipeng Hong.
مستندات¶
bpo-42238: دستور
make -C Doc suspiciousبه زودی به نفعmake -C Doc checkحذف خواهد شد، آن را به عنوان منسوخ علامتگذاری کنید.bpo-45840: بهبود ارجاعات متقابل در مستندات مدل داده.
bpo-45640: توکنهای گرامری نشانهگذاریشدهی صحیح در مستندات اکنون قابل کلیک هستند و شما را به تعریف یک بخش مشخص از گرامر هدایت میکنند. وصلهای از Arthur Milchior.
bpo-45788: پیوند دادن مستندات sys.prefix به مستندات sysconfig دربارهی مسیرهای نصب.
bpo-45772: مستندات
socket.socketبه عنوان یک کلاس به جای یک تابع اصلاح شد.bpo-45392: بهروزرسانی رشته مستند
typeتوکار برای حذف یک سطر اضافی و اشاره به آرگومانهای کلیدواژهای برای سازنده.bpo-45250: بهروزرسانی مستندات برای ذکر این نکته که سیپایتون به طور مداوم پیمایشگرها را ملزم به تعریف
__iter__نمیکند.bpo-25381: در فصل گسترش مستندات گسترش، بهروزرسانی پاراگرافی دربارهی متغیرهای سراسری حاوی اطلاعات استثنا.
bpo-43905: مستندات
astuple()وasdict()گسترش یافتند؛ در مورد اعمال شدن deepcopy هشدار داده شد و یک راهحل جایگزین ارائه گردید.
آزمونها¶
bpo-45695: ساختهای خارج از درخت (Out-of-tree) با یک پوشهی منبع فقطخواندنی اکنون توسط CI آزمایش میشوند.
bpo-19460: افزودن آزمون جدید برای
Lib/email/mime/nonmultipart.py::MIMENonMultipart.bpo-45835: رفع حالت رقابت (race condition) در آزمونهای test_queue با چندین نخ (thread) «feeder».
bpo-45783: آزمون ابزار freeze اکنون جابهجاییها و حذفهای پرونده را مدیریت میکند.
bpo-45745: گزینهی خط فرمان
--findleaksاز regrtest حذف شد: بهجای آن از گزینهی--fail-env-changedاستفاده کنید. از نسخهی ۳.۷ پایتون، این گزینه نام مستعاری منسوخ برای گزینهی--fail-env-changedبود.bpo-45701: افزودن آزمونهایی با نوع دادهی
tupleهمراه باfunctools.lru_cache()بهtest_functools.
ساخت¶
bpo-44035: سامانه CI اکنون بررسی میکند که پروندههای autoconf با بستهی autoconf بهروز و بدون وصله دوباره تولید شده باشند.
bpo-45950: سیستم ساخت اکنون دوباره از یک مفسر _bootstrap_python برای فریز کردن (freezing) و فریز کردن عمیق استفاده میکند. برای افزایش سرعت فرایند ساخت، ابزارهای ساخت _bootstrap_python و _freeze_module دیگر با LTO ساخته نمیشوند.
bpo-45881: اسکریپت configure اکنون گزینههای
--with-build-pythonو--with-freeze-moduleرا برای سادهتر کردن ساخت متقاطع (cross compiling) میپذیرد.bpo-40280: سکوی Emscripten اکنون بهطور پیشفرض از پسوند
.wasmاستفاده میکند.bpo-40280: غیرفعال کردن ماژولهای توسعهی هستهی غیرقابلاستفاده در هدفهای WASM/Emscripten.
bpo-40280:
configureاکنون تابعshutdownمربوط به سوکت را بررسی میکند. این بررسی امکان غیرفعال کردنSYS_shutdownرا باac_cv_func_shutdown=noدر CONFIG_SITE فراهم میکند.bpo-40280:
configureاکنون توابعfork1, getegid, geteuid, getgid, getppid, getuid, opendir, pipe, system, wait, ttynameرا بررسی میکند.bpo-33393: بهروزرسانی
config.guessبه تاریخ ۲۰۲۱-۰۶-۰۳ وconfig.subبه تاریخ ۲۰۲۱-۰۸-۱۴. پروندهیMakefileاکنون دارای یک هدفupdate-configاست تا بهروزرسانی راحتتر شود.bpo-45866: دستور
make regen-allاکنون هنگامی که از پوشهای غیر از درخت منبع اجرا میشود (یعنی هنگام ساخت پایتون در خارج از درخت منبع)، همان خروجی را تولید میکند. ابزار pegen اکنون پوشه را از سرآیند "generated by pygen from <FILENAME>" حذف میکند. وصله توسط Victor Stinner.bpo-40280:
configureاکنون ماشینwasm32یاwasm64و سیستمعاملwasiیاemscriptenرا برای ساخت متقاطع میپذیرد؛ به عنوان مثالwasm32-unknown-emscripten،wasm32-wasiیاwasm32-unknown-wasi.bpo-41498: پایتون اکنون روی سکوهای بدون
sigset_tکامپایل میشود. چندین تابع در ماژولsignalهنگامی کهsigset_tوجود نداشته باشد، در دسترس نیستند.بر اساس وصلهی ارائه شده توسط Roman Yurchak برای pyodide.
bpo-45881: پروندهی
setup.pyاکنون ابتدا از متغیر محیطیCCبرای کشف مسیرهای multiarch و کامپایل متقاطع استفاده میکند.bpo-45886: اکنون میتوان مسیر برنامهی
_freeze_moduleرا در خط فرمان بازنشانی (override) کرد، برای نمونه:make FREEZE_MODULE=../x86_64/Program/_freeze_module.bpo-45873: حذف مرحلهی ساخت
_bootstrap_python. اسکریپت deepfreeze.py اکنون با استفاده از$(PYTHON_FOR_REGEN)اجرا میشود که میتواند پایتون ۳.۷ یا جدیدتر باشد (در ویندوز، ۳.۸ یا جدیدتر).bpo-45847: انتقال افزونههای داخلی hashlib به کلاندستور (macro)
PY_STDLIB_MODو تابعaddext().bpo-45723: افزودن کمکیهای
autoconfبرای ذخیره و بازیابی متغیرهای محیطی:SAVE_ENV: ذخیرهی$CFLAGS،$LDFLAGS،$LIBSو$CPPFLAGS.RESTORE_ENV: بازیابی$CFLAGS،$LDFLAGS،$LIBSو$CPPFLAGS.WITH_SAVE_ENV([SCRIPT]): اجرایSCRIPTکه باSAVE_ENVوRESTORE_ENVپوشانده شده است.
توسط Erlend E. Aasland وصل شد.
bpo-45573: ماژولهای اصلیِ اجباری که برای راهاندازی اولیه (bootstrap) پایتون مورد نیاز هستند، اکنون در
Modules/Setup.bootstrapقرار دارند.bpo-45573: برنامهی
configureاکنونModules/Setup.stdlibرا با سطرهای ماژول توسعهی فعال/غیرفعالشدهی مشروط ایجاد میکند. این پرونده هنوز استفاده نمیشود.bpo-45573: برنامهی
configureاکنون از یک قالب یکپارچه برای تنظیم وضعیت، پرچمهای کامپایلر و پرچمهای پیونددهنده در Makefile استفاده میکند. کلاندستور جدیدPY_STDLIB_MODسه متغیر را تنظیم میکند که توسطModules/Setupوsetup.pyمصرف میشوند.bpo-45816: پایتون اکنون از ساخت با Visual Studio 2022 (MSVC v143، نسخهی VS ۱۷.۰) پشتیبانی میکند. وصله توسط جرمی ویویان (Jeremiah Vivian).
bpo-45800: تنظیمات مربوط به افزونهی C ماژول
pyexpatاکنون توسطconfigureشناسایی میشوند. کتابخانهی بستهبندیشدهیexpatدرMakefileساخته میشود.bpo-45798: تنظیمات مربوط به افزونهی C داخلی ماژول
decimalاکنون توسطconfigureشناسایی میشوند. کتابخانهی بستهبندیشدهیlibmpdecدرMakefileساخته میشود.bpo-45723: برنامهی configure گزینهی جدیدی به نام
--with-pkg-configدارد تا pkg-config را غیرفعال کند یا آن را الزامی سازد.bpo-45774: وابستگیهای ساخت برای
sqlite3اکنون توسطconfigureوpkg-configشناسایی میشوند. وصله توسط ارلند ای. آسلند (Erlend E. Aasland).bpo-45763: وابستگیهای ساخت برای
zlib،bz2وlzmaاکنون توسطconfigureشناسایی میشوند.bpo-45747: وابستگیهای ساخت gdbm و dbm اکنون توسط
configureشناسایی میشوند.bpo-45743: در سیستمعامل macOS، سیستم ساخت دیگر
search_paths_firstرا به پیونددهنده ارسال نمیکند. این پرچم از زمان Xcode ۴ / macOS ۱۰.۶ حالت پیشفرض بوده است.bpo-45723: پروندهی
configure.acاکنون با autoconf 2.71 سازگار است. بررسیهای منسوخشدهیSTDC_HEADERSوAC_HEADER_TIMEحذف شدهاند.bpo-45723: برنامهی
configureاکنون در صورت غیبت pkg-config، یک هشدار چاپ میکند.bpo-45731: دستور
configure --enable-loadable-sqlite-extensionsاکنون بهجای منطق موجود در setup.py، توسط ماکروی جدیدPY_SQLITE_ENABLE_LOAD_EXTENSIONمدیریت میشود.bpo-45723: پرونده configure.ac اکنون برای سادهسازی و سرعت بخشیدن به اجرای تنظیمات، از ماکروهای کمکی سفارشی و
AC_CACHE_CHECKاستفاده میکند.bpo-45696: با تولید کد C که مجموعهای از اشیاء کد آمادهی استفاده تولید میکند، مرحلهی مارشالکردن برای ماژولهای فریزشده رد میشود. این کار زمان راهاندازی را ده درصد یا بیشتر افزایش میدهد.
bpo-45561: اجرای ابزار smelly.py از مسیر $(srcdir).
Windows¶
bpo-46105: محاسبهی
sys.pathدر یک محیط مجازی (venv) روی ویندوز اصلاح شد.bpo-45901: هنگامی که برنامهی پایتون از طریق مایکروسافت استور (Microsoft Store) نصب شود و بهعنوان برنامهی پیشفرض برای پروندههای
*.pyتنظیم گردد، آرگومانهای خط فرمان اکنون هنگام فراخوانی یک اسکریپت بدون راهاندازی صریح پایتون (یعنیscript.py argsبهجایpython script.py args) به پایتون منتقل خواهند شد.bpo-45616: توانایی برنامهی راهانداز پایتون (Python Launcher) در تشخیص بین نسخههای ۳.۱ و ۳.۱۰ هنگامی که یکی از آنها بهصراحت درخواست شود، اصلاح شد. پیشتر، اگر نسخهی ۳.۱۰ درخواست میشد اما نصب نبود، از نسخهی ۳.۱ استفاده میشد و اگر نسخهی ۳.۱ درخواست میشد اما نسخهی ۳.۱۰ نصب بود، از نسخهی ۳.۱۰ استفاده میگردد.
bpo-45850: پیادهسازی تغییرات برای ساخت با ماژولهای عمیقاً فریزشده روی ویندوز. توجه داشته باشید که اکنون به پایتون ۳.۱۰ بهعنوان پایتون «راهانداز» (bootstrap) یا «میزبان» (host) نیاز داریم.
bpo-45732: بهروزرسانی بستهی همراه Tcl/Tk به نسخهی ۸.۶.۱۲.
bpo-45720: برای کمک به بهبود زمان راهاندازی، ارجاع داخلی به
shlwapi.dllحذف شد. این DLL دیگر در آغاز هر فرایند پایتون بارگذاری نخواهد شد.
مکاواس¶
bpo-45732: بهروزرسانی نصبکنندهی macOS در python.org برای استفاده از Tcl/Tk نسخهی ۸.۶.۱۲.
رابط C API¶
bpo-39026: اصلاح Python.h برای ساخت افزونههای C با Xcode: حذف یک include نسبی از
Include/cpython/pystate.h.
پایتون ۳.۱۱.۰ آلفا ۲¶
تاریخ انتشار: ۲۰۲۱-۱۱-۰۵
هسته و توکارها (Core and Builtins)¶
bpo-45716: بهبود پیام
SyntaxErrorهنگام استفاده ازTrue،NoneیاFalseبه عنوان کلیدواژه در فراخوانی یک تابع. وصله توسط پابلو گالیندو (Pablo Galindo).bpo-45688:
sys.stdlib_module_namesاکنون شامل ماژول اختصاصی macOS یعنی_scproxyاست.bpo-45379: شفافسازی پیام
ImportErrorزمانی که تلاش میکنیم یک ماژول فریزشده را بهطور صریح ایمپورت کنیم، اما ماژولهای فریزشده غیرفعال هستند.bpo-44525: تخصصیسازی فراخوانیهای ساده به توابع پایتون (بدون ستارهآرگومانها، دیکشنری کلیدواژه یا بستار)
bpo-45530: موارد مرتبسازی با استفاده از تاپلها به عنوان کلید، اکنون در برخی موارد ممکن است بهطور چشمگیری سریعتر باشد. وصله توسط تیم پیترز (Tim Peters).
اگر اعضای تاپل یک ترتیب کامل را تعریف نکنند، ممکن است ترتیب نتیجه با نسخههای قبلی متفاوت باشد (برای اطلاعات بیشتر دربارهی ترتیب کامل به مقایسههای مقدار مراجعه کنید). این موضوع بهطور کلی درست است که نتیجهی مرتبسازی در غیاب یک ترتیب کامل روی اعضای فهرست، بهخوبی تعریفنشده است.
bpo-45526: در obmalloc، مقدار ADDRESS_BITS را طوری تنظیم کنید که هیچ بیتی نادیده گرفته نشود (پیشتر ۱۶ بیت نادیده گرفته میشد). این کار در صورتی که کرنل آدرسهای مجازی فضای کاربری با بازهای بیشتر از ۴۸ بیت را بدهد، امنتر است.
bpo-30570: یک فروپاشی در
issubclass()ناشی از بازگشت نامتناهی هنگام جستجوی تاپلهای ناسازگار__bases__برطرف شد.bpo-45521: یک باگ در کد درخت مبنایی (radix tree) obmalloc برطرف شد. روی ماشینهای ۶۴ بیتی، این باگ باعث میشد درخت بهجای ۴۸ بیتِ درنظرگرفتهشده، ۴۶ بیت از آدرسهای مجازی را نگه دارد.
bpo-45494: فروپاشی پارسر هنگام گزارش خطاهای مربوط به نویسههای ادامه نامعتبر برطرف شد. وصله توسط Pablo Galindo.
bpo-45445: پایتون اکنون اگر یک گزینهی
-Xنامعتبر در خط فرمان پیدا کند، در راهاندازی شکست میخورد. وصله توسط Pablo Galindo.bpo-45340: ویژگیهای شیء بهجای دیکشنری در یک آرایه نگهداری میشوند. دیکشنری یک شیء به صورت تنبل (lazily)، و فقط در صورت نیاز ایجاد میشود. مصرف حافظه یک شیء معمولی پایتون را حدود ۳۰٪ کاهش میدهد. وصله توسط Mark Shannon.
bpo-45408: یک فروپاشی در پارسر هنگام گزارش خطاهای توکنساز که همزمان با شناسایی پرانتزهای بستهنشده رخ میدهند، برطرف شد. وصله توسط Pablo Galindo.
bpo-29410: الگوریتم هش رشته SipHash13 اضافه شد و به طور پیشفرض استفاده میشود.
bpo-45385: نشتی ارجاع از descr_check برطرف شد. وصله توسط Donghee Na.
bpo-45367: آپکد
BINARY_MULTIPLYبا استفاده از مکانیسم PEP 659 بهBINARY_MULTIPLY_INTوBINARY_MULTIPLY_FLOATتخصصی شد.bpo-21736: ماژولهای استاندارد فریزشدهی کتابخانه (stdlib) اکنون در صورت امکان دارای
__file__مربوط به پروندهی .py هستند که در غیر این صورت از آن بارگذاری میشدند. برای بستهها،__path__اکنون بهجای اینکه یک فهرست خالی باشد، ورودی درستی دارد که اجازه میدهد زیرماژولهای فریزنشده وارد شوند. این موارد تنها در صورتی تنظیم میشوند که پوشهی کتابخانهی استاندارد هنگام راهاندازی رانتایم شناخته شده باشد. توجه داشته باشید که وجود پرونده در__file__تضمین نمیشود. هیچیک از این موارد روی ماژولهای فریزشدهی غیر کتابخانهی استاندارد و فعلاً ماژولهای فریزشدهای که با استفاده ازPyImport_ImportFrozenModule()وارد میشوند، تأثیری ندارد. همچنین در حال حاضرco_filenameبرای ماژول بهروزرسانی نمیشود.bpo-45020: برای ماژولهای فریزشدهی کتابخانهی استاندارد، نام اصلی ماژول به صورت
module.__spec__.loader_state.orignameثبت شود. اگر مقدار باmodule.__spec__.nameمتفاوت باشد، ماژول به عنوان یک نام مستعار در Tools/scripts/freeze_modules.py تعریف شده است. اگرNoneباشد، ماژول از یک پروندهی سورس خارج از کتابخانهی استاندارد آمده است.bpo-45324: در FrozenImporter.find_spec()، اکنون اطلاعات مورد نیاز در exec_module() برای بارگذاری ماژول حفظ میشود. این تغییر بیشتر بر جزئیات داخلی تأثیر میگذارد تا اینکه رفتار واردکننده را تغییر دهد.
bpo-45292: پیادهسازی PEP 654. اضافه کردن
ExceptionGroupوBaseExceptionGroup. بهروزرسانی کد نمایش ردگیری.bpo-40116: تغییر در پیادهسازی دیکشنریهای تقسیمشده (split dictionaries). کلاسهایی که نمونههای آنها یا در مجموعهی دقیق ویژگیها و یا در ترتیبی که آن ویژگیها تنظیم میشوند تفاوت دارند، همچنان میتوانند کلیدها را به اشتراک بگذارند. این کار نباید هیچ تأثیر قابلمشاهدهای روی کاربران پایتون یا C-API داشته باشد. وصله توسط Mark Shannon.
bpo-44050: افزونههایی که نشان میدهند از وضعیت سراسری استفاده میکنند (با تنظیم
m_sizeروی -1) بار دیگر میتوانند در مفسرهای چندگانه استفاده شوند. این به رفتار پایتون ۳.۸ برمیگردد.bpo-44525: زیرساخت تخصصی اولیه برای آپکد
CALL_FUNCTIONراهاندازی شد. تخصیصهای اولیه برای فراخوانیهای توابع C پیادهسازی شدند:CALL_FUNCTION_BUILTIN_Oبرای پرچمMETH_O.CALL_FUNCTION_BUILTIN_FASTبرای پرچمMETH_FASTCALLبدون کلیدواژهها.CALL_FUNCTION_LENبرایlen(o).CALL_FUNCTION_ISINSTANCEبرایisinstance(o, t).
bpo-44511: بهبود بایتکد تولیدشده برای الگوهای کلاس و نگاشت.
bpo-43706: افزایش سرعت فراخوانیهای
enumerate()با استفاده از شیوهی فراخوانیvectorcallدر PEP 590. وصلهای از Donghee Na.
کتابخانه¶
bpo-45679: رفع اشکال کش کردن
typing.Literalچندمقداره. عبارتLiteral[True, 2]دیگر باLiteral[1, 2]برابر نیست.bpo-42064: تبدیل
sqlite3به مقداردهی اولیه چندمرحلهای (PEP 489). وصلهها از Erlend E. Aasland.bpo-45438: رفع بازنمایی رشتهای typing.Signature برای انواع داخلی عام.
bpo-45613: ماژول
sqlite3اکنونsqlite3.threadsafetyرا بر اساس حالت پیشفرض نخکشی که کتابخانهی زیرین SQLite با آن کامپایلشده است، تنظیم میکند. وصله از Erlend E. Aasland.bpo-45574: رفع هشدار مربوط به استفادهنشده بودن
print_escape.bpo-45581: متد
sqlite3.connect()اکنون در صورت سیگنال دادن خطای حافظه توسط API زیرین SQLite، به درستیMemoryErrorرا پرتاب میکند. وصله از Erlend E. Aasland.bpo-45557: تابع
pprint.pprint()اکنون underscore_numbers را به درستی مدیریت میکند. پیش از این، همیشه آن را رویFalseتنظیم میکرد.bpo-44019: افزودن
operator.call()بهoperator.__all__. وصله از Kreusada.bpo-42174: متد
shutil.get_terminal_size()اکنون اگر تعداد ستونها یا سطرها 0 باشد، به مقادیر معقول بازمیگردد.bpo-35673: بهبود قابلیت بازرسی ویژگی
__loader__برای بستههای فضای نام. کلاسimportlib.machinery.NamespaceLoaderاکنون عمومی است و رابطimportlib.abc.InspectLoaderرا پیادهسازی میکند._NamespaceLoaderبرای سازگاری عقبگرد حفظ شده است.bpo-45515: افزودن ارجاعهایی به
zoneinfoدر مستنداتdatetime، که بیشتر جایگزین ارجاعهای قدیمی بهdateutil.tzشدهاند. تغییر از Paul Ganssle.bpo-45475: بازگردانی بهینهسازی پیمایش کردن
gzip.GzipFile،bz2.BZ2Fileوlzma.LZMAFile(نگاه کنید به bpo-43787) زیرا هنگامی که کاربر آنها را بدون داشتن ارجاعی به آنها پیمایش میکرد، باعث رگرسیون میشد. وصله از Inada Naoki.bpo-45489: بهروزرسانی
ForwardRefبرای پشتیبانی از عملگر|. وصله از Donghee Na.bpo-42222: پشتیبانی منسوخشده از آرگومانهای عدد اعشاری در randrange() حذف شد.
bpo-45428: رفع یک رگرسیون در py_compile هنگام خواندن نام پروندهها از ورودی استاندارد.
bpo-45467: رفع رمزگشای افزایشی و خواننده جریان در کُدک "raw-unicode-escape". پیش از این، اگر دنبالهی گریز تقسیم میشد، آنها با خطا مواجه میشدند.
bpo-45461: رفع رمزگشای افزایشی و خواننده جریان در کُدک "unicode-escape". پیش از این، اگر دنبالهی گریز تقسیم میشد، آنها با خطا مواجه میشدند.
bpo-45239: رفع مشکل از کار افتادن
email.utils.parsedate_tz()با بروز خطایUnboundLocalErrorروی برخی ورودیهای نامعتبر، به جای بازگرداندنNone. پچ از Ben Hoyt.bpo-45417: رفع رفتار درجهی دوم در ماژول enum: ایجاد کلاسهای enum با تعداد زیادی ورودی دارای رفتار درجهی دوم بود.
bpo-45249: رفع رفتار
traceback.print_exc()هنگام نمایش نشانک زمانی کهend_offsetدر استثنا روی 0 تنظیم شده است. پچ از Pablo Galindobpo-45416: رفع استفاده از
asyncio.Conditionبا اشیای صریحasyncio.Lock، که یک رگرسیون به دلیل حذف آرگومانهای صریح حلقه بود. پچ از Joongi Kim.bpo-20028: مقدار تهی برای escapechar/quotechar هنگام مقداردهی اولیهی
csv.Dialectمجاز نیست. پچ از Vajrasky Kok و Donghee Na.bpo-44904: رفع باگ در ماژول
doctestکه باعث میشد اگر رشته مستند شامل مثالی با یکclassmethodبه صورتpropertyباشد، با شکست مواجه شود. پچ از Alex Waygood.bpo-45406: باعث میشود
inspect.getmodule()خطایFileNotFoundErrorایجادشده توسطinspect.getabsfile()را بگیرد وNoneرا برگرداند تا نشان دهد ماژول قابل تشخیص نیست.bpo-45411: افزودن پسوندها برای پروندههای حاوی زیرنویس - .srt و .vtt - به ماژول mimetypes.py.
bpo-10716: مهاجرت pydoc به HTML5 (بدون تغییر ظاهر آن). اثر جانبی آن بهروزرسانی
ServerHTMLDocدر xmlrpc است که اکنون از CSS نیز استفاده میکند. ماژول cgitb اکنون کمتر به pydoc وابسته است (زیرا نمیتواند از پروندهی CSS استفاده کند).bpo-45262: جلوگیری از استفاده پس از آزادسازی (use-after-free) در asyncio. اطمینان حاصل کنید که نگهدارندهی حلقهی در حال اجرای کششده در هنگام تخصیصزدایی پاک میشود تا از استفاده پس از آزادسازی در get_running_loop جلوگیری شود.
bpo-45386: سازگاری بیشتر ماژول
xmlrpc.clientبا زمانهای اجرای C که در آن تابع زیرینstrftimeدر زبان C هنگام آزمایش گزینههای قالببندی سال منجر به بروز خطایValueErrorمیشود.bpo-20028: بهبود پیام خطای
csv.Dialectهنگام مقداردهی اولیه. پچ از Vajrasky Kok و Donghee Na.bpo-45343: بهروزرسانی بستهی همراه pip به نسخهی 21.2.4 و setuptools به نسخهی 58.1.0
bpo-45328: اصلاح
http.client.HTTPConnectionبرای کارکرد صحیح در سیستمعاملهایی که از گزینهی سوکتTCP_NODELAYپشتیبانی نمیکنند.bpo-45243: افزودن متدهای
setlimit()وgetlimit()بهsqlite3.Connectionبرای تنظیم و دریافت محدودیتهای SQLite بر اساس اتصال. پچ از Erlend E. Aasland.bpo-45320: موارد زیر از ماژول
inspectحذف شدند:- تابع
getargspecکه از نسخهی 3.0 پایتون منسوخ شده است؛ به جای آن از
inspect.signature()یاinspect.getfullargspec()استفاده کنید.
- تابع
تابع
formatargspecکه از نسخهی 3.5 پایتون منسوخ شده است؛ مستقیماً از تابعinspect.signature()و شیءSignatureاستفاده کنید.توابع مستندنشدهی
Signature.from_builtinوSignature.from_functionکه از نسخهی ۳.۵ پایتون منسوخ شدهاند؛ بهجای آن از متدSignature.from_callable()استفاده کنید.
وصله توسط Hugo van Kemenade.
bpo-45192: تابع
tempfile._infer_return_typeرا اصلاح کنید تا آرگومانdirدر توابع ماژولtempfileشیءای را بپذیرد که پروتکلos.PathLikeرا پیادهسازی میکند.وصله از Kyungmin Lee.
bpo-45160: هنگام ردیابی یک متغیر tkinter که توسط یک OptionMenu بستهی ttk استفاده میشود، فراخوانیهای بازگشتی دیگر دو بار انجام نمیشوند.
bpo-25625: اضافهکردن مدیر زمینهی
chdir()که نسبت به موازیسازی ایمن نیست، برای تغییر پوشهی کاری فعلی و سپس بازیابی آن هنگام خروج. یک پوشش ساده در اطرافchdir().bpo-24139: اضافهکردن پشتیبانی از کدهای نتیجهی توسعهیافتهی SQLite در
sqlite3.Error. وصله از Erlend E. Aasland.bpo-24444: رفع خطای رخداده در نمایش راهنمای
argparseهنگامی که راهنمای یک گزینه روی ۱+ فضای خالی تنظیم میشود یا زمانی که آرگومان choices یک ظرف خالی است.bpo-44547: پیادهسازی
Fraction.__int__، به طوری که یک نمونهیfractions.Fractionیعنیfبررسیisinstance(f, typing.SupportsInt)را با موفقیت پشت سر بگذارد.bpo-40321: اضافهکردن پشتیبانی از تغییر مسیرهای HTTP 308 به ماژول
urllib. برای جزئیات به RFC 7538 مراجعه کنید. وصله از Jochem Schulenklopper.bpo-41374: اطمینان حاصل کنید که ثابتهای
socket.TCP_*روی Cygwin 3.1.6 و بالاتر ارائه میشوند.bpo-35970: اضافهکردن پرچم راهنما به رابط خط فرمان ماژول base64. وصلهی مشارکتدادهشده توسط Robert Kuska.
مستندات¶
bpo-45726: بهبود مستندات برای
functools.singledispatch()وfunctools.singledispatchmethod.bpo-45680: اصلاح مستندات مربوط به اشیای
GenericAliasبه منظور شفافسازی این که کلاسهای غیرظرف نیز میتوانند__class_getitem__را پیادهسازی کنند. وصلهی مشارکتدادهشده توسط Alex Waygood.bpo-45618: بهروزرسانی نسخهی Sphinx مورد استفاده برای ساخت مستندات به 4.2.0. وصله از Maciej Olko.
bpo-45655: اضافهکردن بخش جدید «PEPهای مرتبط» به بالای مستندات مربوط به ماژول
typing. وصله از Alex Waygood.bpo-45604: اضافهکردن آرگومان
levelبه مستندات تابعmultiprocessing.log_to_stderr.bpo-45516: اضافهکردن توضیحات پروتکل به مستندات
importlib.abc.TraversableResources.bpo-45464: ذکر این نکته در مستندات استثناهای توکار که ارثبری از چندین نوع استثنا در یک زیرکلاس واحد به دلیل ناسازگاری احتمالی طرحبندی حافظه توصیه نمیشود.
bpo-45449: اضافهکردن یادداشت دربارهی PEP 585 در ماژول
collections.abc.bpo-45516: اضافهکردن توضیحات پروتکل به مستندات
importlib.abc.Traversable.bpo-20692: افزودن ورودی پرسشوپاسخ متداول برنامهنویسی برای توضیح این موضوع که دسترسی به ویژگی لفظی int مستلزم وجود یک فاصله بعد از آن یا پرانتز در اطراف لفظی است.
آزمونها¶
bpo-45678: افزودن آزمونهایی برای سناریوهایی که در آنها
functools.singledispatchmethodروی متدی قرار گرفته است که قبلاً توسط دو دکوراتور دیگر پوشانده شده است. وصلهای از Alex Waygood.bpo-45578: افزودن آزمونهایی برای
dis.distb()bpo-45678: افزودن آزمونهایی برای اطمینان از اینکه
functools.singledispatchmethodویژگیهای تابع هدف را به درستی دربرمیگیرد.bpo-45668: آزمونهای PGO اکنون زمانی که پایتون بدون ماژولهای توسعهای آزمون ساخته میشود، با موفقیت اجرا میشوند.
bpo-45577: افزودن زیرآزمونها برای تمامی پروتکلهای
pickleدرtest_zoneinfo.bpo-45566: اصلاح
test_frozen_pickleدرtest_dataclassesبرای بررسی تمامی نسخههایpickle.bpo-43592: ماژول
test.libregrtestاکنون حد آستانهی نرم منابع را برای حداکثر تعداد توصیفگرهای پرونده افزایش میدهد، هنگامی که مقدار پیشفرض برای مجموعهی آزمون ما بسیار کم است، همانطور که اغلب در macOS اینگونه بود.bpo-39679: افزودن موارد آزمون بیشتر برای
@functools.singledispatchmethodزمانی که با@classmethodیا@staticmethodترکیب میشود.bpo-45410: هنگامی که libregrtest یک فرایند کارگر را راهاندازی میکند، جریان خطای استاندارد (stderr) اکنون برای حفظ ترتیب پیامها در جریان خروجی استاندارد (stdout) نوشته میشود. از یک پایپ واحد برای stdout و stderr به جای دو پایپ استفاده کنید. پیش از این، پیامها نامنظم بودند که تحلیل گزارشهای buildbot را دشوارتر میکرد. وصلهای از Victor Stinner.
bpo-45402: اصلاح test_tools.test_sundry() هنگامی که پایتون در خارج از درخت سورس ساخته میشود: اصلاح نحوهی پیدا کردن برنامهی _freeze_module توسط ابزار freeze_modules.py. وصلهای از Victor Stinner.
bpo-45403: اصلاح test_sys.test_stdlib_dir() هنگامی که پایتون در خارج از درخت سورس ساخته میشود: مقایسهی مسیرهای نرمالشده. وصلهای از Victor Stinner.
bpo-45400: اصلاح test_name_error_suggestions_do_not_trigger_for_too_many_locals() از test_exceptions اگر نام پوشهای شامل "a1" باشد (مانند "Python-3.11.0a1"): استفاده از یک عبارت باقاعدهی سختگیرانهتر. وصلهای از Victor Stinner.
bpo-10572: تغییر نام آزمونهای
sqlite3ازtest_sqliteبهtest_sqlite3، و انتقال آنها بهLib/test/test_sqlite3. وصلهای از Erlend E. Aasland.
ساخت¶
bpo-43158: پروندهی
setup.pyاکنون از مقادیر اسکریپت configure برای ساخت ماژول توسعهای_uuidاستفاده میکند. دستور Configure اکنونlibuuidمربوط به util-linux را نیز شناسایی میکند.bpo-45666: اصلاح هشدار استفاده از
swprintfو%sدر_testembed.cbpo-45548: پروندههای
Modules/SetupوModules/makesetupبهبود یافتهاند. پروندهیSetupاکنون شامل قوانین کاری برای تمامی افزونهها است. کامنتهای منسوخشده حذف شدهاند. قوانین تعریفشده توسطmakesetupوابستگیها را به درستی پیگیری میکنند.bpo-45548: پیادهسازیهای
mathوcmathاکنون به یکlibmسازگار با C99 نیاز دارند و دیگر با راهحلهای موقت برای توابع مفقود acosh، asinh، atanh، expm1 و log1p عرضه نمیشوند.bpo-45595: پروندههای
setup.pyوmakesetupاکنون وابستگیهای ساختی را روی تمام پروندههای سرآیند پایتون و پروندههای سرآیند مختص ماژول پیگیری میکنند.bpo-45571: پروندهی
Modules/Setupاکنون به جایPY_CFLAGSازPY_CFLAGS_NODISTبرای کامپایل ماژولهای مشترک استفاده میکند.bpo-45570: ماژولهای
pyexpatو_elementtreeدیگر کلاندستورهای منسوخHAVE_EXPAT_CONFIG_HوUSE_PYEXPAT_CAPIرا تعریف نمیکنند. مقدارXML_POOR_ENTROPYاکنون درexpat_config.hتعریف میشود.bpo-43974: پروندهی
setup.pyدیگرPy_BUILD_CORE_MODULEرا تعریف نمیکند. در عوض، هر ماژولی که از API داخلی استفاده میکند، این کلاندستور را تعریف میکند.bpo-45548: تکمیل موارد مفقودشده در Modules/Setup.
bpo-45532: بهروزرسانی
sys.versionبرای استفاده ازmainبه عنوان اطلاعات جایگزین. وصله توسط Jeong YunWon.bpo-45536: اسکریپت
configureاکنون بررسی میکند که آیا سرآیندها و کتابخانههای OpenSSL، APIهای مورد نیاز را فراهم میکنند یا خیر. رایجترین APIها تأیید میشوند. این بررسی، OpenSSL منسوخشده یا مفقود را شناسایی میکند. خطاها مانع از اجرای configure نمیشوند.bpo-45221: رفع رگرسیون در نحوهی مدیریت گزینههای
LDFLAGSوCPPFLAGSکه در آنargparse.parse_known_args()ممکن بود یک گزینه را به عنوان یکی از آرگومانهای خط فرمان توکار تفسیر کند، برای مثال-hبرای راهنما.bpo-45440: ساخت پایتون اکنون نیازمند یک سرآیند
<math.h>از استاندارد C99 است که توابع زیر را فراهم کند:copysign()،hypot()،isfinite()،isinf()،isnan()،round(). وصله توسط Victor Stinner.bpo-45405: جلوگیری از
internal configure errorهنگام اجرایconfigureبا نسخههای جدیدتر clang غیر از Apple. وصله توسط David Bohman.bpo-45433: جلوگیری از پیوندزدن libpython با libcrypt.
Windows¶
bpo-43652: بهروزرسانی Tcl/Tk به نسخهی 8.6.11، واقعاً این بار. بهروزرسانی قبلی به اشتباه شامل 8.6.10 بود.
bpo-45337: ابزار venv اکنون زمانی که ممکن است محیط ایجادشده به دلیل بازمسیرها، پیوندها یا اتصالها نیاز باشد در مسیر متفاوتی دسترسی پیدا کند، هشدار میدهد. همچنین اکنون هنگام نیاز به مسیر جایگزین، اجزا را به درستی نصب یا ارتقا میدهد.
bpo-43851: ساخت SQLite با
SQLITE_OMIT_AUTOINITروی ویندوز. وصله توسط Erlend E. Aasland.
مکاواس¶
bpo-44828: جلوگیری از خطای محاورهی پروندهی tkinter در macOS 12 Monterey هنگام استفاده از Tk 8.6.11 ارائهشده توسط نصبکنندههای macOS در python.org. وصله توسط Marc Culler از پروژهی Tk.
IDLE¶
bpo-45495: افزودن کلیدواژههای زمینهای 'case' و 'match' به فهرست تکمیلها.
رابط C API¶
bpo-29103: تابع
PyType_FromSpec*اکنون نام کلاس را از مشخصات به یک بافر متعلق به کلاس کپی میکند، بهطوری که نسخهی اصلی میتواند با خیال راحت آزاد شود. وصله توسط Petr Viktorin.bpo-45522: فهرستهای آزاد داخلی برای قاب، عدد اعشاری، فهرست، دیکشنری، مولدهای ناهمگام و شیءهای زمینهای اکنون میتوانند غیرفعال شوند.
bpo-35134: حذف
PyWeakref_GET_OBJECT()از API محدود C. این تابع هرگز کار نمیکرد زیرا ساختارPyWeakReferenceدر API محدود C کدر است.bpo-35081: انتقال پروندهی سرآیند
interpreteridobject.hازInclude/بهInclude/internal/. این پرونده فقط توابع خصوصی را فراهم میکند. وصله توسط Victor Stinner.bpo-35134: پروندههای API غیرمحدود
cellobject.h،classobject.h،context.h،funcobject.h،genobject.hوlongintrepr.hبه پوشهیInclude/cpythonمنتقل شدهاند. علاوه بر این، پروندهی سرآیندeval.hحذف شد. این پروندهها نباید به صورت مستقیم گنجانده شوند، زیرا قبلاً درPython.hگنجانده شدهاند: Include Files. اگر به صورت مستقیم گنجانده شدهاند، به جای آن گنجاندنPython.hرا در نظر بگیرید. وصله توسط Victor Stinner.bpo-45474: موارد زیر هنگامی که
Py_LIMITED_APIتعریف شده باشد دیگر در دسترس نیستند:کلاندستور
Py_MARSHAL_VERSION
این موارد بخشی از API محدود نیستند.
توسط Victor Stinner وصل شد.
bpo-45434: حذف پروندهی سرآیند
pystrhex.h. این پرونده فقط شامل توابع خصوصی است. افزودنیهای C فقط باید پروندهی سرآیند اصلی<Python.h>را وارد کنند. وصله توسط Victor Stinner.bpo-45440: حذف کلاندستور
Py_FORCE_DOUBLE(). این کلاندستور توسط کلاندستورPy_IS_INFINITY()استفاده میشد. وصله توسط Victor Stinner.bpo-45434: پروندهی
<Python.h>دیگر پروندههای سرآیند<stdlib.h>،<stdio.h>،<errno.h>و<string.h>را زمانی که کلاندستورPy_LIMITED_APIروی0x030b0000(پایتون ۳.۱۱) یا بالاتر تنظیم شده است، شامل نمیشود. افزودنیهای C باید پروندههای سرآیند را به طور صریح پس از#include <Python.h>وارد کنند. وصله توسط Victor Stinner.bpo-41123: حذف کلاندستورهای
Py_UNICODE_COPY()وPy_UNICODE_FILL()که از پایتون ۳.۳ منسوخ شدهاند. بهجای آنها از توابعPyUnicode_CopyCharacters()یاmemcpy()(رشتهیwchar_t*) وPyUnicode_Fill()استفاده کنید. وصله توسط Victor Stinner.bpo-45412: حذف کلاندستورهای ریاضی زیر که از متغیر
errnoاستفاده میکنند:Py_ADJUST_ERANGE1()Py_ADJUST_ERANGE2()Py_OVERFLOWED()Py_SET_ERANGE_IF_OVERFLOW()Py_SET_ERRNO_ON_MATH_ERROR()
توسط Victor Stinner وصل شد.
bpo-45395: ماژولهای فریزشدهی سفارشی (آرایهی تنظیمشده روی
PyImport_FrozenModules) اکنون به عنوان موارد الحاقی در نظر گرفته میشوند، نه جایگزینی برای تمام ماژولهای فریزشدهی پیشفرض. ماژولهای کتابخانهی استاندارد فریزشده همچنان میتوانند با تنظیم فیلد «code» در درایهی آرایهی سفارشی روی NULL غیرفعال شوند.bpo-43760: افزودن توابع جدید
PyThreadState_EnterTracing()وPyThreadState_LeaveTracing()به API محدود C برای معلق کردن و از سرگیری ردیابی و پروفایلگیری. وصله توسط Victor Stinner.bpo-44220: متغیر
PyStructSequence_UnnamedFieldبه Stable ABI اضافه شد.
Python 3.11.0 alpha 1¶
تاریخ انتشار: ۲۰۲۱-۱۰-۰۵
امنیت¶
bpo-42278: برای جلوگیری از یک حالت رقابت (race condition) احتمالی، استفاده از
tempfile.mktemp()باTemporaryDirectoryجایگزین شد.bpo-44600: رفع شمارهسطرهای نادرست هنگام ردیابی برخی الگوهای ناموفق در دستورات match. وصله توسط Charles Burkland.
bpo-41180: رویدادهای حسابرسی به ماژول
marshalاضافه شدند و از ایجاد رویدادهایcode.__init__برای هر شیء کد مارشالنشده جلوگیری شد. اشیاء کدی که مستقیماً نمونهسازی میشوند همچنان یک رویداد ایجاد خواهند کرد و هندلرهای رویداد حسابرسی باید دادههای خام مارشال را بررسی یا جمعآوری کنند. این کار بار سربار عملکردی قابلتوجهی را هنگام بارگذاری از پروندههای.pycکاهش میدهد.bpo-44394: نسخهی تعبیهشدهی کتابخانهی libexpat به نسخهی 2.4.1 (از 2.2.8) بهروزرسانی شد تا اصلاح آسیبپذیری CVE 2013-0340 موسوم به «Billion Laughs» اعمال شود. این نسخه بیشتر روی ویندوز و مکاواس استفاده میشود.
bpo-43124: تابع داخلی
putcmdدر ماژولsmtplibبهگونهای اصلاح شد که ورودی را از نظر وجود نویسههای\rو\nپاکسازی کند تا از تزریق دستور (غیرمحتمل) جلوگیری شود.bpo-44022: ماژول
http.clientاکنون از خواندن بینهایت سرآیندهای HTTP احتمالی پس از دریافت پاسخ وضعیت100 Continueاز سرور جلوگیری میکند.
هسته و توکارها (Core and Builtins)¶
bpo-43760: تعداد شاخههای سختافزاری در هر ارسال دستور، با افزودن یک دستور ویژه برای ردیابی، از دو به یک کاهش یافت. وصلهای از Mark Shannon.
bpo-45061: یک تخصیصزدای (deallocator) به نوع bool اضافه شد تا خطاهای شمارش ارجاع در افزونههای C که به اشتباه Py_DECREF(Py_True) یا Py_DECREF(Py_False) را فراخوانی میکنند، شناسایی شوند. همچنین خطاهای شمارش ارجاع هنگامی که تکنمونهی تاپل خالی یا تکنمونهی رشتهی خالی یونیکد به اشتباه نابود میشود، شناسایی میشوند. وصلهای از Victor Stinner.
bpo-24076: تابع sum() برای جمع زدن اعداد صحیح تکرقمی بهینهسازی بیشتری شد.
bpo-45190: پایگاههای دادهی یونیکد به نسخهی 14.0.0 بهروزرسانی شدند.
bpo-45167: رفع مشکل کپی عمیق (deepcopy) اشیاء
types.GenericAlias.bpo-45155: توابع
int.to_bytes()وint.from_bytes()اکنون مقدار پیشفرض"big"را برای آرگومانbyteorderمیپذیرند. تابعint.to_bytes()همچنین مقدار پیشفرض1را برای آرگومانlengthمیپذیرد.
کتابخانه¶
bpo-44219: قفل GIL هنگام اجرای فراخوانیهای سیستمی
isattyروی توصیفگرهای پروندهی دلخواه رها میشود. بهویژه، این تغییر رویos.isatty()،os.device_encoding()وio.TextIOWrapperتأثیر میگذارد. به تبع آن،io.open()در حالت متنی نیز تحت تأثیر قرار میگیرد. این تغییر یک بنبست را درos.isatty()حل میکند. وصلهای از Vincent Michel در bpo-44219.
هسته و توکارها (Core and Builtins)¶
bpo-44959: قابلیت بازگشت به ماژولهای توسعهای با پسوند '.sl' روی سیستم عامل HP-UX اضافه شد.
کتابخانه¶
bpo-45121: رفع مشکلی که در آن
Protocol.__init__هنگام فراخوانی مستقیم یا از طریقsuper()خطایRecursionErrorایجاد میکند. وصله توسط Yurii Karabas ارائه شده است.
هسته و توکارها (Core and Builtins)¶
bpo-44348: تابع تخصیصزدای نوع
BaseExceptionاکنون از مکانیسم سطل زباله (trashcan) برای جلوگیری از سرریز پشته استفاده میکند. برای مثال، هنگامی که یک نمونهیRecursionErrorایجاد میشود، میتوان آن را از طریق ویژگی__context__یا ویژگی__traceback__به یک خطای RecursionError دیگر پیوند داد و سپس زنجیرهای از استثناها ایجاد میشود. هنگامی که زنجیره نابود میشود، اگر زنجیره در مقایسه با حافظهی پشتهی موجود بیش از حد طولانی باشد، فراخوانیهای تو در توی تابع تخصیصزدا میتوانند با سرریز پشته از کار بیفتند. وصلهای از Victor Stinner.bpo-45123: تابع PyAiter_Check اصلاح شد تا فقط وجود __anext__ را بررسی کند (نه __aiter__ را). نام PyAiter_Check به PyAIter_Check و PyObject_GetAiter به PyObject_GetAIter تغییر یافت.
bpo-1514420: مفسر دیگر هنگام قالببندی یک استثنا، تلاشی برای باز کردن پروندههایی با نامهای داخل علامتهای بزرگتر و کوچکتر (مانند "<string>" یا "<stdin>") نمیکند.
bpo-41031: هماهنگسازی قالببندی کد C و پایتون برای استثناهای غیرقابل چاپ و استثناها در ماژول
__main__.bpo-37330: توابع
open()،io.open()،codecs.open()و کلاسfileinput.FileInputدیگر مقدار'U'(خطسرهای همگانی یا "universal newline") را در حالت پرونده نمیپذیرند. این پرچم از نسخهی ۳.۳ پایتون منسوخ شده بود. وصله توسط Victor Stinner.bpo-45083: هنگامی که مفسر یک استثنا را رندر میکند، نام آن اکنون دارای یک qualname کامل است. پیشتر، تنها نام کلاس به نام ماژول متصل میشد که گاهی اوقات باعث نمایش نام کامل نادرستی میشد.
(این مسئله تنها بر رندر کردن استثنای کد C تأثیر داشت و ماژول
tracebackاز پیش از qualname استفاده میکرد).bpo-34561: مرتبسازی فهرستها اکنون از استراتژی ادغام-ترتیب (merge-ordering) تابع
powersort()اثر Munro و Wild استفاده میکند. بر خلاف استراتژی قبلی، این روش به طور اثباتپذیری در آنتروپی توزیع طولهای اجرا (run lengths) نزدیک به بهینه است. بیشتر استفادههایlist.sort()احتمالاً تفاوت زمانی چشمگیری را مشاهده نخواهند کرد، اما ممکن است در مواردی که استراتژی قبلی بهطور استثنایی ضعیف بود، بهبودهای چشمگیری را ببینید. با این حال، از آنجا که این موارد همگی تقریبهای خطی-زمانیِ سریع برای مسئلهای هستند که ماهیتاً برای حلِ واقعاً بهینهی آن به زمان درجهی دوم نیاز است، ممکن است سناریوهایی را طراحی کنید که در آنها استراتژی قبلی عملکرد بهتری داشته است.bpo-45056: کامپایلر اکنون ثابتهای استفادهنشدهی انتهایی را از co_consts حذف میکند.
bpo-45020: افزودن یک گزینهی خط فرمان جدید به نام «-X frozen_modules=[on|off]» برای انصراف از (یا پذیرش) استفاده از ماژولهای فریزشدهی اختیاری. مقدار پیشفرض این گزینه «on» است (یا اگر از درخت سورس اجرا شود، «off» خواهد بود).
کتابخانه¶
bpo-45012: در ماژول
posix، در طول فراخوانیهای سیستمیstat()،lstat()وfstatat()که توسطos.DirEntry.stat()انجام میشوند، قفل GIL آزاد میشود. وصله توسط Stanisław Skonieczny.
هسته و توکارها (Core and Builtins)¶
bpo-45018: باگ مربوط به پیکلسازی پیمایشگرهای محدودهای (range iterators) که بیش از
2**32بار تکرار شده بودند، برطرف شد.bpo-45000: هنگام تلاش برای حذف
__debug__اکنون یک خطایSyntaxErrorبالا آورده میشود. وصله توسط Donghee Na.bpo-44963: پیادهسازی متدهای
send()وthrow()برای اشیایanext_awaitable. وصله توسط Pablo Galindo.
کتابخانه¶
bpo-44962: رفع یک مشکل رقابت (race condition) در WeakKeyDictionary و WeakValueDictionary و WeakSet هنگامی که دو نخ (thread) تلاش میکنند آخرین حذف معلق را ثبت نهایی کنند. این کار مشکل asyncio.create_task را حل کرده و از دست رفتن داده در asyncio.run هنگامی که shutdown_asyncgens اجرا نمیشود را برطرف میکند.
هسته و توکارها (Core and Builtins)¶
bpo-24234: پیادهسازی متد ویژه
__bytes__()روی نوع دادهیbytes، به طوری که شیء بایتیbبررسیisinstance(b, typing.SupportsBytes)را با موفقیت پشت سر بگذارد.bpo-24234: پیادهسازی متد ویژه
__complex__()روی نوع دادهیcomplex، به طوری که عدد مختلطzبررسیisinstance(z, typing.SupportsComplex)را با موفقیت پشت سر بگذارد.bpo-44954: رفع یک باگ لبهای (corner case) که در آن نتیجهی تابع
float.fromhex('0x.8p-1074')به شکل نادرستی گرد میشد.bpo-44947: بهبود خطای نحوی (syntax error) برای کامای اضافی در دستورات ایمپورت. وصله توسط Pablo Galindo.
bpo-44945: اختصاصیسازی دستور BINARY_ADD با استفاده از مکانیزم PEP 659. این تغییر پنج دستور جدید اضافه میکند:
BINARY_ADD_ADAPTIVE
BINARY_ADD_FLOAT
BINARY_ADD_INT
BINARY_ADD_UNICODE
BINARY_ADD_UNICODE_INPLACE_FAST
کتابخانه¶
bpo-44929: رفع برخی حالات خاص در نمایش رشتهای
enum.Flagدر REPL. توسعه توسط Pablo Galindo.
هسته و توکارها (Core and Builtins)¶
bpo-44914: برچسبهای نسخهی کلاس دیگر بازیافت نمیشوند.
این بدان معناست که یک برچسب نسخه (version tag) به عنوان یک شناسه یکتا برای وضعیت یک کلاس عمل میکند. ما برای تخصیص مؤثر دستور LOAD_ATTR و سایر دستورات به این موضوع اتکا میکنیم.
bpo-44698: بازگردانی رفتار به توان رساندن مختلط با توانِ دارای مقدار عدد صحیح از نوع
floatیاcomplex.bpo-44895: یک متغیر اشکالزدایی
PYTHONDUMPREFSFILEبرای ایجاد یک پروندهی برونریزی که توسط--with-trace-refsتولید میشود، اضافه شد. توسعه توسط Donghee Na.bpo-44900: افزودن پنج فرادستور برای سریعسازی PEP 659:
LOAD_FAST LOAD_FAST
STORE_FAST LOAD_FAST
LOAD_FAST LOAD_CONST
LOAD_CONST LOAD_FAST
STORE_FAST STORE_FAST
bpo-44889: پیادهسازی اولیهی تخصیص تطبیقی
LOAD_METHOD. فرمهای تخصصی زیر اضافه شدند:LOAD_METHOD_CACHEDLOAD_METHOD_MODULELOAD_METHOD_CLASS
bpo-44890: آمارهای تخصیص همیشه در ساختهای اشکالزدایی جمعآوری میشوند.
bpo-44885: تصحیح موقعیتهای AST برای افاسترینگها با مشخصات قالب و عبارات تکرارشده. توسعه توسط Pablo Galindo
bpo-44878: حذف حلقه از مفسر بایتکد. تمام دستورات با یک کلان دستور DISPATCH خاتمه مییابند، بنابراین حلقه دیگر اضافی است.
bpo-44878: حذف دستور switch برای حلقهی مفسر هنگام استفاده از gotoهای محاسبهشده. این کار تضمین میکند که ما فقط یک جدول نگاشت در مفسر داریم.
bpo-44874: منسوخ کردن کلاندستورهای قدیمی سطل زباله (
Py_TRASHCAN_SAFE_BEGIN/Py_TRASHCAN_SAFE_END). این موارد باید با کلاندستورهای جدیدPy_TRASHCAN_BEGINوPy_TRASHCAN_ENDجایگزین شوند.bpo-44872: استفاده از کلاندستورهای جدید سطل زباله (Py_TRASHCAN_BEGIN/END) در frameobject.c به جای موارد قدیمی (Py_TRASHCAN_SAFE_BEGIN/END).
bpo-33930: رفع خطای قطعهبندی (segmentation fault) با بازگشت عمیق هنگام پاکسازی شیءهای متد. وصله توسط Augusto Goulart و Pablo Galindo.
bpo-25782: رفع باگی که در آن
PyErr_SetObjectهنگامی که استثنای فعلی در زنجیرهی زمینهی خود دارای یک چرخه است، متوقف میشود.bpo-44856: رفع نشتهای ارجاع در مسیرهای خطای
update_bases()و__build_class__. وصله توسط Pablo Galindo.bpo-44826: پیادهسازی اولیه برای تخصصیسازی تطبیقی STORE_ATTR
سه فرم تخصصییافته از STORE_ATTR اضافه شدهاند:
STORE_ATTR_SLOT
STORE_ATTR_SPLIT_KEYS
STORE_ATTR_WITH_HINT
bpo-44838: رفع باگی که باعث میشد پارسر یک
SyntaxErrorسفارشی نادرست برای عبارتهای نامعتبر 'if' ایجاد کند. وصله توسط Pablo Galindo.bpo-44821: ایجاد مشابههای فرهنگ لغت نمونه (__dict__) به صورت مشتاقانه (eagerly)، برای بهبود منظم بودن طرحبندی شیء و کمک به تخصصیسازی.
bpo-44792: بهبود خطاهای نحوی برای عبارتهای if. وصله توسط Miguel Brito
bpo-34013: عمومیسازی پیام خطای سفارشی دستور قدیمی نامعتبر (مانند پیامی که وقتی "print" بدون پرانتز فراخوانی میشود تولید میشود) جهت شامل شدن عبارتهای عمومیتر. وصله توسط Pablo Galindo
bpo-44732: تغییر نام
types.Unionبهtypes.UnionType.bpo-44725: نمایش آمار تخصصیسازی در پایتون از طریق
_opcode.get_specialization_stats().bpo-44717: بهبود AttributeError در ایمپورتهای حلقوی زیرماژولها.
bpo-44698: رفع رفتار تعریفنشده در به توان رساندن شیء مختلط.
bpo-44653: پشتیبانی از انواع
typingدر جایگزینی پارامتر در نوع union.bpo-44676: افزودن قابلیت سریالسازی شیءهای
types.Union. وصله ارائه شده توسط Yurii Karabas.bpo-44633: جایگزینی پارامتر نوع اشتراکی (union type) با انواع نادرست اکنون بهجای بازگرداندن
NotImplementedخطایTypeErrorپرتاب میکند.bpo-44661: بهروزرسانی
property_descr_setبرای استفاده از vectorcall در صورت امکان. وصلهای توسط Donghee Na.bpo-44662: افزودن
__module__بهtypes.Union. این کار همچنین مشکلاتtypes.Unionرا باtyping.Annotatedبرطرف میکند. وصلهای که توسط Yurii Karabas ارائه شده است.bpo-44655: گنجاندن نام نوع در خطاهای صفت unset __slots__. وصله از پابلو گالیندو (Pablo Galindo)
bpo-44655: هنگام ارائهی پیشنهادها برای ویژگیهای گمشده، ویژگی گمشدهای با همان نام ویژگیِ دارای خطا را نگنجانید. وصلهای توسط Pablo Galindo.
bpo-44646: رفع هش نوع اشتراکی (union type): دیگر به ترتیب آرگومانها بستگی ندارد.
bpo-44636: ادغام اشتراک انواع برابر. برای مثال، نتیجهی
int | intاکنونintاست. رفع مقایسهی نوع اشتراکی با اشیاء غیرهشپذیر. برای مثال،int | str == {}دیگر خطای TypeError پرتاب نمیکند.
کتابخانه¶
bpo-44611: در ویندوز،
os.urandom(): از واسط برنامهنویسی کاربردی BCryptGenRandom بهجای واسط برنامهنویسی کاربردی CryptGenRandom که در واسط برنامهنویسی کاربردی مایکروسافت ویندوز منسوخ شده است، استفاده میکند. وصلهای توسط Donghee Na.
هسته و توکارها (Core and Builtins)¶
bpo-44635: تبدیل
Noneبهtype(None)در سازندهی نوع اشتراکی (union type).bpo-26280: پیادهسازی تخصیص تطبیقی برای BINARY_SUBSCR
سه فرم تخصصی از BINARY_SUBSCR اضافه شدهاند:
BINARY_SUBSCR_LIST_INT
BINARY_SUBSCR_TUPLE_INT
BINARY_SUBSCR_DICT
bpo-44589: الگوهای نگاشت در دستورات
matchبا دو یا چند کلید لفظی برابر، اکنون در زمان کامپایل خطایSyntaxErrorپرتاب خواهند کرد.bpo-44606: رفع
__instancecheck__و__subclasscheck__برای نوع اشتراکی (union type).bpo-42073: دکوراتور
@classmethodاکنون میتواند توصیفگرهای دیگرِ شبیه به classmethod را پوشش دهد.bpo-41972: بهینهسازی الگوریتم جستجوی رشتهی fastsearch.h برای داشتن یک حلقهی داخلی کوتاهتر در بیشتر موارد.
bpo-44590: تمام دادههای لازم برای اجرای یک تابع پایتون (متغیرهای محلی، پشته و غیره) اکنون در یک پشتهی مختص هر نخ (per-thread) نگهداری میشوند. اشیاء فریم بهصورت تنبل (lazily) و بر حسب تقاضا تخصیص داده میشوند. این کار کارایی را در مجموعهی بنچمارک استاندارد حدود ۷ درصد افزایش میدهد. دروننگری و اشکالزدایی بدون تأثیر باقی میمانند زیرا اشیاء فریم در صورت نیاز همیشه در دسترس هستند. وصلهای توسط Mark Shannon.
bpo-44584: اشکالزدایی نخ (متغیر محیطی
PYTHONTHREADDEBUG) در نسخهی ۳.۱۰ پایتون منسوخ شده است و در نسخهی ۳.۱۲ حذف خواهد شد. این ویژگی نیازمند نسخهی ساخت اشکالزدایی (debug build) از پایتون است. وصلهای توسط Victor Stinner.bpo-43895: یک نهانگاه داخلی منسوخ شده از دستههای پروندهی شیء مشترک که در سال ۱۹۹۵ اضافه شده بود و تلاش میکرد (اما تضمین نمیکرد) که یک پروندهی .so برای دور زدن اشکالات سیستمعاملهای شبیه به posix در اواسط دههی ۱۹۹۰ دو بار با dlopen باز نشود، از dynload_shlib.c حذف شد.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
bpo-43950: اشیاء کد اکنون میتوانند اطلاعات ستون را برای دستورالعملها در صورت موجود بودن فراهم کنند. این قابلیت در طول چاپ ردگیری برای نمایش عبارتهای مسئول خطاها استفاده میشود.
تهیه شده توسط پابلو گالیندو (Pablo Galindo)، باتوهان تاشکایا (Batuhan Taskaya) و عمار عسکر (Ammar Askar) به عنوان بخشی از PEP 657.
bpo-44562: حذف استفاده از
PyObject_GC_Del()در مسیر خطا هنگام مقداردهی اولیهtypes.GenericAlias.
کتابخانه¶
bpo-41486: رفع یک رگرسیون مصرف حافظه و عملکرد کپی در نسخههای بتای قبلی ۳.۱۰ اگر کسی از یک بافر خروجی بزرگتر از 4GiB با zlib.decompress روی دادههای ورودی استفاده میکرد که به آن اندازه گسترش مییابند.
هسته و توکارها (Core and Builtins)¶
bpo-43908: انواع هیپ با پرچم
Py_TPFLAGS_IMMUTABLETYPEاکنون میتوانند پروتکل vectorcall مربوط به PEP 590 را به ارث ببرند. پیش از این، این امر فقط برای انواع ایستا امکانپذیر بود. وصله توسط Erlend E. Aasland.bpo-44553: پیادهسازی متدهای GC برای
types.Unionجهت شکستن چرخههای ارجاع و جلوگیری از نشتی حافظه.bpo-44490: افزودن ویژگی
__parameters__و عملگر__getitem__بهtypes.Union. وصله توسط Yurii Karabas.bpo-44523: حذف انتقال مستقیم برای تابع
hash()اشیاءweakref.proxyجهت جلوگیری از پیامدهای ناخواسته زمانی که شیء ارجاعدادهشدهی اصلی از بین میرود در حالی که پراکسی بخشی از یک شیء هشپذیر است. وصله توسط Pablo Galindo.bpo-44483: رفع خرابی در اشیاء
types.Unionهنگام ایجاد یک اجتماع (union) از یک شیء با فیلد معیوب__module__.bpo-44486: ماژولها همیشه یک دیکشنری خواهند داشت، حتی زمانی که توسط
types.ModuleType.__new__()ایجاد شوند.bpo-44472: رفع قابلیت ltrace هنگام ایجاد استثناها. وصله توسط Pablo Galindo
bpo-12022: اکنون به جای یک
AttributeError، یک خطایTypeErrorدر دستوراتwithوasync withبرای اشیایی که به ترتیب از پروتکلهای مدیر زمینه یا مدیر زمینه ناهمگام پشتیبانی نمیکنند، بالا آورده میشود.bpo-44297: اطمینان حاصل کنید که شمارهسطر هنگام ورود به محدودهی درک (comprehension) تنظیم میشود. این کار تضمین میکند که ردیابیها از جمله عبارتهای تولیدگر، شمارهسطر صحیح را نشان دهند.
bpo-44456: بهبود خطای نحو هنگام ترکیب الگوهای جایگاهی و کلیدواژه. وصله توسط Pablo Galindo.
bpo-44409: رفع اطلاعات مکان خطا برای خطاهای توکنساز که در هنگام مقداردهی اولیهی توکنساز بالا آورده میشوند. وصله توسط Pablo Galindo.
bpo-44396: رفع خرابی احتمالی در توکنساز هنگام بالا آوردن خطاهای نحو برای رشتههای بستهنشده. وصله توسط Pablo Galindo.
bpo-44376: توانرسانی دقیق عدد صحیح (مانند
i**2یاpow(i, 2)) با توان کوچک، به دلیل کاهش سربار در چنین مواردی بسیار سریعتر است.bpo-44313: اشیاء و ماژولهای واردشدهی مستقیم (از طریق دستورات import و from import) دستورات
LOAD_METHOD/CALL_METHODرا برای اشیاء مستقیماً دسترسیپذیر روی فضای نام خود تولید نمیکنند. آنها اکنون ازLOAD_ATTR/CALL_FUNCTIONمعمولی استفاده میکنند.bpo-44338: پیادهسازی تخصیص تطبیقی برای LOAD_GLOBAL
دو شکل تخصیصیافته از LOAD_GLOBAL اضافه شدند:
LOAD_GLOBAL_MODULE
LOAD_GLOBAL_BUILTIN
bpo-44368: بهبود خطاهای نحوی برای مقصدهای نامعتبر "as". وصله توسط پابلو گالیندو
bpo-44349: رفع یک حالت خاص هنگام نمایش متن از پروندههایی با کدگذاری در خطاهای نحوی. وصله توسط پابلو گالیندو.
bpo-44337: پیادهسازی اولیهی تخصیص تطبیقی LOAD_ATTR
چهار شکل تخصیصیافته از LOAD_ATTR اضافه شدند:
LOAD_ATTR_SLOT
LOAD_ATTR_SPLIT_KEYS
LOAD_ATTR_WITH_HINT
LOAD_ATTR_MODULE
bpo-44335: رفع یک رگرسیون هنگام شناسایی نویسههای نادرست در خطاهای نحوی. وصله توسط پابلو گالیندو
bpo-43693: محاسبهی آفستهای متغیرهای سلولی در کامپایلر انجام میشود، نه در زمان اجرا (runtime). این کار سربار مدیریت متغیرهای سلولی و آزاد را کاهش میدهد، بهویژه در مواردی که یک متغیر هم آرگومان است و هم متغیر سلولی.
bpo-44317: بهبود خطای توکنساز با موقعیتهای بهبودیافته. وصله توسط پابلو گالیندو.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
bpo-44305: بهبود پیام خطا برای بلوکهای
tryبدون بلوکهایexceptیاfinally. وصله توسط پابلو گالیندو.bpo-43413: سازندگان زیرکلاسهای برخی از کلاسهای توکار (مانند
tuple،list،frozenset) دیگر آرگومانهای کلیدواژهای دلخواه را نمیپذیرند. [در 3.11a4 به حالت قبل برگشت] زیرکلاسsetاکنون میتواند یک متد__new__()با پارامترهای کلیدواژهای اضافی بدون بازنویسی__init__()تعریف کند.bpo-43667: بهبود پشتیبانی از یونیکد در محلیهای (locales) غیر UTF روی اوراکل سولاریس. این مسئله سایر سیستمهای سولاریس را تحت تأثیر قرار نمیدهد.
bpo-43693: آپکد جدید MAKE_CELL اضافه شده است که به طور مؤثر بخشی از کار انجامشده در ورود به تابع را به کامپایلر و حلقهی ارزیابی منتقل میکند. علاوه بر ایجاد اشیاء سلولی مورد نیاز، آپکد جدید آرگومانهای مرتبط (و سایر متغیرهای محلی) را در هنگام ورود به تابع به متغیرهای سلولی تبدیل میکند.
bpo-44232: رفع یک رگرسیون در
type()هنگامی که یک فراکلاس یک استثنا ایجاد میکند. تابع C به نامtype_new()باید هنگام ایجاد استثنا توسط سازندهی فراکلاس و در صورتی که کلاس برنده فراکلاس نباشد، استثنا را به درستی گزارش کند. وصله توسط Victor Stinner.bpo-44201: جلوگیری از عوارض جانبی بررسی خطاهای نحوی تخصصی در REPL که باعث میشد پس از شناسایی خطای نحوی، توکنهای اضافی درخواست کند. وصله توسط Pablo Galindo
bpo-43693: اشیاء
PyCodeObjectاکنون دارایco_fastlocalnamesوco_fastlocalkindsبه عنوان منبع معتبر اطلاعات متغیرهای محلی سریع شدند. اشیاء کد مارشالشده بر این اساس تغییر کردهاند.bpo-44184: رفع فروپاشی در هنگام خروج پایتون زمانی که یک تابع تخریبگر (deallocator) آخرین ارجاع قوی به یک نوع هیپ را حذف میکند. وصله توسط Victor Stinner.
bpo-44187: پیادهسازی تسریع (quickening) در مفسر. این ویژگی فعلاً مزایایی ارائه نمیدهد، اما زمینهساز بهینهسازیهای آینده است. برای توضیحات کامل به PEP 659 مراجعه کنید.
bpo-44180: پارسر خطاهای نحوی عامی را که در موقعیتی دورتر از موقعیتِ پیموده شده در گذر اول رخ میدهند، گزارش نمیکند. وصله توسط Pablo Galindo
bpo-44168: رفع پیام خطا در پارسر مربوط به آرگومانهای کلیدواژهای با عبارتهای نامعتبر. وصله توسط Pablo Galindo
bpo-44156: نهانگاههای رشته در
compile.cاکنون با زیرمفسر سازگار هستند.bpo-44143: رفع یک فروپاشی در پارسر که هنگام بروز خطاهای توکنساز در حضور یک استثنای موجود آشکار میشد. وصله توسط Pablo Galindo.
bpo-44032: انتقال متغیرهای محلی «سریع» و سایر متغیرها از شیء قاب به یک پشته دادهی به ازای هر نخ.
bpo-44114: رفع امضاهای نادرست توابع dictkeys_reversed و dictitems_reversed در کد C، که باعث خرابی بیلدهای وبآسملی میشد.
bpo-44110: بهبود پیام خطای
str.__getitem__()bpo-26110: افزودن آپکد
CALL_METHOD_KWبرای تسریع فراخوانیهای متد با آرگومانهای کلیدواژهای. ایده از PyPy گرفته شده است. یک عارضه جانبی این است که اجرایCALL_METHODاکنون در حلقهی ارزیابی بدون شاخه است.bpo-28307: کامپایلر اکنون قالببندی سادهی C-style را با قالب لفظی حاوی فقط کدهای قالب %s، %r و %a با تبدیل آنها به عبارتهای افاسترینگ بهینهسازی میکند.
bpo-43149: اصلاح پیام خطای نحوی مربوط به چندین نوع استثنا به گونهای که به «گروههای استثنا» اشاره نکند. وصله توسط Pablo Galindo
bpo-43822: پارسر هنگام ایجاد استثناها، خطاهای توکنساز را بر خطاهای نحوی سفارشی اولویت خواهد داد. وصله توسط Pablo Galindo.
bpo-40222: مدیریت استثنا با «هزینهی صفر».
از یک جدول جستجو برای تعیین نحوهی مدیریت استثناها استفاده میکند.
دستورات بلوکی SETUP_FINALLY و POP_TOP را حذف میکند و سربار زمان اجرای دستورات try را از بین میبرد.
اندازهی شیء قاب را حدود ۶۰٪ کاهش میدهد.
وصله توسط Mark Shannon
bpo-43918: مستندسازی امضا و آرگومان
defaultدر رشته مستند تابع توکار جدیدanext.bpo-43833: اگر پس از لفظی عددی بلافاصله یکی از کلیدواژههای and، else، for، if، in، is، or بیاید، یک هشدار انقضا صادر کنید. اگر بلافاصله پس از آن کلیدواژه یا شناسهی دیگری بیاید، خطای نحوی (syntax error) با پیام آموزندهتری ایجاد کنید.
bpo-43879: افزودن native_thread_id به PyThreadState. وصله توسط Gabriele N. Tornetta.
bpo-43693: محاسبهی آفستهای سلول نسبت به متغیرهای محلی در کامپایلر. این کار به مفسر اجازه میدهد تا متغیرهای محلی و سلولها را به عنوان یک آرایهی واحد در نظر بگیرد که کمی کارآمدتر است. همچنین آپکد LOAD_CLOSURE را به نام مستعاری برای LOAD_FAST تبدیل کنید. حفظ LOAD_CLOSURE کمک میکند تا بایتکد کمی خواناتر بماند.
bpo-17792: پیامهای خطای دقیقتر برای دسترسی به متغیرهای محلی متصلنشده یا متغیرهای آزاد.
bpo-28146: رفع یک پیام خطای گیجکننده در
str.format().bpo-11105: هنگام کامپایل کردن اشیای
ast.ASTبا ارجاعات بازگشتی از طریقcompile()، مفسر دیگر متوقف نمیشود بلکه یکRecursionErrorایجاد میکند.bpo-39091: رفع فروپاشی هنگام ارسال یک شیء غیر-استثنا به متد
throw()تولیدگر. وصله توسط Noah Oxerbpo-33346: درکهای ناهمگام اکنون درون درکها در توابع ناهمگام مجاز هستند. درکهای بیرونی به طور ضمنی ناهمگام میشوند.
کتابخانه¶
bpo-45371: رفع مشکل rpath مربوط به clang در
distutils. کامپایلر UnixCCompiler اکنون از گزینهی درست clang برای افزودن یک پوشهی کتابخانهی زمان اجرا (rpath) به یک کتابخانهی مشترک استفاده میکند.bpo-45329: رفع دسترسی به حافظه آزادشده در
pyexpat.xmlparserهنگامی که آن را با نسخهی کتابخانهی expat نصبشدهی <= 2.2.0 میسازید.bpo-41710: در سیستمعامل یونیکس، اگر تابع
sem_clockwait()در کتابخانهی C موجود باشد (glibc 2.30 و جدیدتر)، متدthreading.Lock.acquire()اکنون برای مهلت زمانی، بهجای استفاده از ساعت سیستم (time.CLOCK_REALTIME)، از ساعت یکنواخت (time.CLOCK_MONOTONIC) استفاده میکند تا تحت تأثیر تغییرات ساعت سیستم قرار نگیرد. وصله توسط Victor Stinner.bpo-1596321: اصلاح تابع
threading._shutdown()هنگامی که ماژولthreadingابتدا از نخی متفاوت از نخ اصلی وارد شده است: دیگر در زمان خروج پایتون خطایی ثبت نمیشود.bpo-45274: رفع یک شرایط رقابت در متد
Thread.join()از ماژولthreading. اگر تابع توسط یک سیگنال متوقف شود و کنترلکنندهی سیگنال یک استثنا ایجاد کند، مطمئن شوید که نخ در یک حالت سازگار باقی میماند تا از بنبست جلوگیری شود. وصله توسط Victor Stinner.bpo-21302: در سیستمعاملهای یونیکس،
time.sleep()اکنون در صورت عدم دسترسی بهclock_nanosleep()و دسترسی بهnanosleep()، از تابعnanosleep()استفاده میکند.nanosleep()امکان توقف با دقت نانوثانیه را فراهم میکند.bpo-21302: در ویندوز،
time.sleep()اکنون از یک تایمر قابل انتظار استفاده میکند که وضوح آن ۱۰۰ نانوثانیه (۱۰-7 ثانیه) است. پیش از این، وضوح آن ۱ میلیثانیه (۱۰-3 ثانیه) بود. وصله توسط Benjamin Szőke و Victor Stinner.bpo-45238: رفع
unittest.IsolatedAsyncioTestCase.debug(): اکنون متدها و فراخوانیهای بازگشتی ناهمگام را اجرا میکند.bpo-36674:
unittest.TestCase.debug()اکنون اگر کلاس یا متد آزمون با دکوراتور پرش تزئین شده باشد، یکunittest.SkipTestایجاد میکند.bpo-45235: رفع مشکلی که در آن argparse مقادیر را در یک فضای نام ارائهشده هنگام استفاده از یک زیرتحلیلگر با مقادیر پیشفرض حفظ نمیکرد.
bpo-45183: باعث میشود تا ()zipimport.zipimporter.find_spec هنگامی که پروندهی زیپ زیرین حذف شده و نهانگاه داخلی از طریق invalidate_cache() بازنشانی شده است، استثنایی ایجاد نکند.
bpo-45234: یک رگرسیون در توابع
copyfile()،copy()،copy2()برطرف شد؛ زمانی که منبع یک پوشه باشد، این تابع اکنون خطایFileNotFoundErrorرا ایجاد میکند که در عوض بایدIsADirectoryErrorرا ایجاد کند.bpo-45228: رفع سرریز بافر پشته در تجزیهی آدرس شبکه J1939.
bpo-45225: استفاده از تابع نگاشت (map) به جای genexpr در capwords.
bpo-42135: رفع خطای تایپی:
importlib.find_loaderدر واقع قرار است در پایتون ۳.۱۲ حذف شود نه ۳.۱۰، درست مانند بقیه موارد در PR 25169.وصله توسط Hugo van Kemenade.
bpo-20524: بهبود پیامهای خطا در عملیات
.format()برای انواعstr،float،intوcomplex. قالب جدید اکنون الگوی مسئلهدار و نوع شیء را نمایش میدهد.bpo-45168: تغییر خروجی
dis.dis()به منظور حذف مقادیر آرگومان عملگری که به دلیل فراهم نبودنco_consts،co_namesو غیره قابل حل نیستند. پیشتر خود آرگومان عملگر در فیلد مقدار تکرار میشد که مفید نیست و میتواند گیجکننده باشد.bpo-21302: در سیستمعاملهای یونیکس،
time.sleep()اکنون در صورت موجود بودن از تابعclock_nanosleep()استفاده میکند که اجازه میدهد توقف اجرا برای یک بازهی زمانی با دقت نانوثانیه مشخص شود.bpo-45173: موارد زیر از ماژول
configparserحذف شدند: کلاسSafeConfigParser، ویژگیfilenameاز کلاسParsingError، متدreadfp()از کلاسConfigParserکه از پایتون ۳.۲ منسوخ شده بودند.وصله توسط Hugo van Kemenade.
bpo-44987: رشتههای خالص اسکی اکنون در زمان ثابت توسط
unicodedata.normalize()نرمالسازی میشوند. وصله توسط Donghee Na.bpo-35474: فراخوانی
mimetypes.guess_all_extensions()باstrict=Falseدیگر روی نتیجهی فراخوانی بعدی باstrict=Trueتأثیری نمیگذارد. همچنین، تغییر دادن فهرست بازگرداندهشده دیگر روی وضعیت سراسری تأثیری ندارد.bpo-45166: تابع
typing.get_type_hints()اکنون باFinalکه درForwardRefپیچیده شده است، کار میکند.bpo-45162: حذف بسیاری از ویژگیهای منسوخشدهی قدیمی
unittest:نامهای مستعار «
fail*» و «assert*» برای متدهایTestCase.متد از ابتدا معیوب
TestCaseیعنیassertDictContainsSubset().پارامتر نادیده گرفتهشدهی use_load_tests در متد
<unittest.TestLoader.loadTestsFromModule> TestLoader.loadTestsFromModule().نام مستعار قدیمی
_TextTestResultبرایTextTestResult.
bpo-38371: حذف متد منسوخشدهی
split()از_tkinter.TkappType. وصله توسط Erlend E. Aasland.bpo-20499: بهبود سرعت و دقت تابع statistics.pvariance().
bpo-45132: حذف متدهای
__getitem__()از کلاسهایxml.dom.pulldom.DOMEventStream،wsgiref.util.FileWrapperوfileinput.FileInputکه از پایتون ۳.۹ منسوخ شده بودند.وصله توسط Hugo van Kemenade.
bpo-45129: به دلیل نگرانیهای امنیتی مهم، پارامتر
asyncio.loop.create_datagram_endpoint()به نام reuse_address که در پایتون ۳.۹ غیرفعال شده بود، اکنون بهطور کامل حذف شده است. این کار به دلیل رفتار گزینهی سوکتSO_REUSEADDRدر پروتکل UDP انجام شده است.وصله توسط Hugo van Kemenade.
bpo-45124: دستور
bdist_msiکه در پایتون ۳.۹ منسوخ شده بود، اکنون حذف شده است.بهجای آن از
bdist_wheel(بستههای wheel) استفاده کنید.وصله توسط Hugo van Kemenade.
bpo-30856: متدهای
unittest.TestResultیعنیaddFailure()،addError()،addSkip()وaddSubTest()اکنون بلافاصله پس از بروز استثنا در آزمون یا اتمام زیرآزمون فراخوانی میشوند. پیشتر آنها فقط پس از اتمام پاکسازی آزمون فراخوانی میشدند.bpo-45034: نحوهی قالببندی خطا برای
struct.packبا حالتهای'H'و'h'و اعداد بسیار بزرگ/کوچک تغییر کرد. اکنون محدودههای عددی واقعی نمایش داده میشوند، در حالی که پیشتر عبارتهای حسابی نمایش داده میشدند.bpo-25894: ماژول
unittestاکنون همیشه زیرآزمونهای ردشده و ناموفق را بهطور جداگانه گزارش میکند: نویسههای جداگانه در حالت پیشفرض و سطرهای جداگانه در حالت پرجزئیات. همچنین اکنون توضیحات آزمون برای خطاها در متد آزمون، کلاس و پاکسازیهای ماژول چاپ میشوند.bpo-45081: رفع مشکلی که در آن دیتاکلاسهایی که از زیرکلاسهای
typing.Protocolارثبری میکنند دارای__init__نادرست هستند. وصله توسط Yurii Karabas تهیه شده است.bpo-45085: ماژول
binhexکه در پایتون ۳.۹ منسوخ شده بود، اکنون حذف شده است. توابع زیر از ماژولbinasciiکه در پایتون ۳.۹ منسوخ شده بودند نیز اکنون حذف شدهاند:a2b_hqx()،b2a_hqx()؛rlecode_hqx()،rledecode_hqx().
تابع
binascii.crc_hqx()همچنان در دسترس باقی میماند.توسط Victor Stinner وصل شد.
bpo-40360: بسته
lib2to3اکنون منسوخ شده است و ممکن است نتواند پایتون ۳.۱۰ یا جدیدتر را تجزیه کند. PEP 617 (پارسر جدید PEG برای سیپایتون) را ببینید. وصله توسط Victor Stinner.bpo-45075: تغییر نام متد
traceback.StackSummary.format_frame()بهtraceback.StackSummary.format_frame_summary(). این متد برای نسخهی ۳.۱۱ اضافه شده بود، بنابراین هنوز منتشر نشده بود.کد و مستندات بهروزرسانی شدند تا تمایز بهتری بین frame و FrameSummary قائل شوند.
bpo-31299: افزودن گزینهای برای حذف کامل قابها از یک ردگیری با بازگرداندن
Noneاز بازنویسیformat_frame().bpo-41620: متد
run()اکنون همیشه یک نمونهیTestResultبرمیگرداند. پیشتر اگر کلاس یا متد آزمون با یک دکوراتور پرش تزئین شده بود، مقدارNoneرا برمیگرداند.bpo-45021: رفع یک بنبست بالقوه در هنگام خاموش شدن فرزوندهای (child processes) انشعابیافته هنگام استفاده از ماژول
concurrent.futuresbpo-43913: رفع اشکالات مربوط به پاکسازی کلاسها و ماژولها در
unittest:توابع ثبتشده با
addModuleCleanup()فراخوانیچ نمیشدند، مگر اینکه کاربرtearDownModule()را در ماژول آزمون خود تعریف کند.توابع ثبتشده با
addClassCleanup()در صورتی کهtearDownClassرویNoneتنظیم شده باشد، فراخوانی نمیشدند.میانجیگری (Buffering) در
TestResultبا توابع ثبتشده توسطaddClassCleanup()وaddModuleCleanup()کار نمیکرد.خطاها در توابع ثبتشده با
addClassCleanup()وaddModuleCleanup()در حالتهای میانجیگری و اشکالزدایی بهدرستی مدیریت نمیشدند.خطاها در
setUpModule()و توابع ثبتشده باaddModuleCleanup()به ترتیب نادرستی گزارش میشدند.و چندین باگ جزئی دیگر.
bpo-45030: رفع سرریز عدد صحیح در ترشیکردن (pickling) و کپی کردن پیمایشگر محدوده (range iterator).
bpo-45001: تجزیهی تاریخ ایمیل در برابر ورودیهای ناقص مقاومتر شد؛ بهویژه سرآیند
Date:که فقط شامل فضای خالی است. وصله (patch) توسط Wouter Bolsterlee.bpo-45010: حذف پشتیبانی از متد ویژهی
__div__درunittest.mock. این متد در پایتون ۳ استفاده نمیشود.bpo-39218: بهبود دقت محاسبات واریانس با استفاده از
x*xبهجایx**2.bpo-43613: بهبود سرعت
gzip.compress()وgzip.decompress()با فشردهسازی و خارجسازی از حالت فشرده بهصورت یکجا در حافظه بهجای استفاده از شیوهی جریان (streamed fashion).bpo-37596: اطمینان از اینکه شیءهای
setوfrozensetهمیشه بهطورmarshalledقابل تولید مجدد (reproducibly) باشند.bpo-44019: تابع جدیدی به نام
operator.callاضافه شده است، بهطوریکهoperator.call(obj, *args, **kwargs) == obj(*args, **kwargs)برقرار باشد.bpo-42255: کلاس
webbrowser.MacOSXمنسوخ شده است و در پایتون ۳.۱۳ حذف خواهد شد. این کلاس آزمایشنشده و مستندنشده است و همچنین توسط خودwebbrowserاستفاده نمیشود. وصله توسط Donghee Na.bpo-44955: متد
stopTestRun()اکنون همیشه بهطور ضمنی همراه با متدstartTestRun()برای شیءهایTestResultکه درrun()ایجاد میشوند، فراخوانی میشود. پیشتر این متد برای متدها و کلاسهای آزمونی که با یک دکوراتور پرش (skipping decorator) تزئین شده بودند، فراخوانی نمیشد.bpo-39039: هنگامی که در طول استخراج پرونده خطایی از zlib رخ دهد، tarfile.open استثنای
ReadErrorرا بالا میآورد (raises).bpo-44935: ماژول
subprocessروی سولاریس اکنون برای کارایی بهتر ازos.posix_spawn()نیز استفاده میکند.bpo-44911: کلاس
IsolatedAsyncioTestCaseدیگر هنگام لغو وظایف نشتکرده (leaked tasks) استثنایی پرتاب نخواهد کرد. وصله توسط Bar Harel.bpo-41322: اخطار
DeprecationWarningبرای آزمونها و آزمونهای ناهمگامی که مقداری غیر از None برمیگردانند اضافه شد (زیرا این امر ممکن است نشاندهندهی یک آزمون بهنحو نادرست نوشتهشده باشد، برای مثال آزمونی که به شکل یک تابع تولیدگر نوشته شده است).bpo-44524: هنگام زیرکلاسزدن از ناممستعار فرم ویژهی typing، پیام استثنا را مفیدتر کنید. وصله ارائهشده توسط Yurii Karabas.
bpo-38956: مقدار پیشفرض
argparse.BooleanOptionalActionهنگام استفاده باargparse.ArgumentDefaultsHelpFormatterدیگر دو بار چاپ نمیشود.bpo-44860: اصلاح طرحوارهی
posix_userدرsysconfigبهنحویکه بهsys.platlibdirوابسته نباشد.bpo-44859: بهبود مدیریت استثناها در
sqlite3و بالا آوردن استثناهای دقیقتر.اکنون هنگام کافی نبودن حافظه برای کدگذاری یک دستور به UTF-8 در متدهای
Connection.__call__()وCursor.execute()، بهجایsqlite3.WarningخطایMemoryErrorبالا آورده میشود.اکنون هنگامی که دستور حاوی نویسههای جانشین در
Connection.__call__()وCursor.execute()است، بهجایsqlite3.WarningخطایUnicodEncodeErrorبالا آورده میشود.اکنون برای آرگومان اسکریپت غیررشتهای در
Cursor.executescript()بهجایValueErrorخطایTypeErrorبالا آورده میشود.اکنون برای اسکریپتی که حاوی نویسهی تهی است، بهجای قطع کردن آن در
Cursor.executescript()، خطایValueErrorبالا آورده میشود.مدیریت صحیح استثناهای بالاآمده هنگام دریافت مقدار بولی نتیجهی هندلر پیشرفت.
افزودن آزمونهای فراوان که موارد خاص مختلف را پوشش میدهند.
bpo-44581: ارتقای pip بستهبندیشده به نسخهی 21.2.3 و setuptools به نسخهی 57.4.0
bpo-44849: رفع مشکل تابع
os.set_inheritable()روی سیستمعامل FreeBSD 14 برای توصیفگر پروندهی بازشده با پرچمO_PATH: نادیده گرفتن خطایEBADFرویioctl()و استفادهی جایگزین از پیادهسازیfcntl(). وصله توسط Victor Stinner.bpo-44605: دکوراتور @functools.total_ordering() اکنون با فراکلاسها کار میکند.
bpo-44524: رفع مشکلی که در آن ویژگیهای
__name__و__qualname__از فرمهای ویژهی مشترک میتوانستندNoneباشند.bpo-44839: خطای
MemoryErrorبالاآمده در توابع تعریفشده توسط کاربر اکنون خطایMemoryErrorرا درsqlite3تولید میکند. خطایOverflowErrorاکنون بهDataErrorتبدیل میشود. پیشتر در این مواردOperationalErrorتولید میشد.bpo-44822: توابع تعریفشده توسط کاربر و تجمیعکنندههای
sqlite3کهرشتههاییبا نویسههای تهی تعبیهشده برمیگردانند، دیگر برش داده نمیشوند. وصله توسط Erlend E. Aasland.bpo-44801: اطمینان حاصل کنید که متغیر
ParamSpecدر Callable تنها میتواند با یک عبارت پارامتر (فهرستی از انواع داده، سهنقطه، ParamSpec یا Concatenate) جایگزین شود.bpo-44806: زیرکلاسهای غیرپروتکل
typing.Protocolاکنون متد__init__به ارثبردهشده از کلاسهای پایهی پروتکل را نادیده میگیرند.bpo-27275: متدهای
collections.OrderedDict.popitem()وcollections.OrderedDict.pop()دیگر متدهای__getitem__و__delitem__از زیرکلاسهای OrderedDict را فراخوانی نمیکنند.bpo-44793: رفع مشکل بررسی تعداد آرگومانها هنگام اشتراک یک نوع عام با پارامتر
ParamSpec.bpo-44784: در آزمونهای importlib.metadata، بازنویسی رفتار هشدارها تحت خطاهای DeprecationWarning مورد انتظار (importlib_metadata 4.6.3).
bpo-44667: تابع
tokenize.tokenize()به طور نادرست یک توکنNEWLINEتولید نمیکند اگر منبع با نویسهی خط جدید تمام نشود اما آخرین سطر یک کامنت باشد، زیرا تابع در حال حاضر در حال تولید یک توکنNLاست. وصله توسط Pablo Galindobpo-44771: افزودن ماژول
importlib.simpleکه آداپتورها را از یک رابط خوانندهی منابع سطح پایین به یک رابطTraversableResourcesپیادهسازی میکند. رابط برمبنای API قدیمی (path,contents, ...) اکنون به طور کامل توسط API روش.files()با یک سازگاری موقت ارائهشده برای بارگذارهای منابع بدون آن قابلیت، پشتیبانی میشود. برابری ویژگی باimportlib_resources5.2.bpo-44752: ماژول
rcompleterبرای جلوگیری از اثر جانبی ارزیابی متد مربوطه، تابعgetattr()را روی اشیایpropertyفراخوانی نمیکند.bpo-44747: بازسازی نحوهی استفاده از
sys._getframeدر ماژولtyping. وصلهای توسط Yurii Karabas.bpo-42378: رفع مشکل بازنویسی شدن پروندهی گزارش (log) هنگامی که
logging.FileHandlerدرatexitبا پارامتر filemode برابر با'w'استفاده میشود. توجه کنید که اگر جریان گزارش به دلیل خاموش شدن گزارشگیری از قبل بسته شده باشد، این کار باعث میشود پیام موجود در atexit ثبت نشود.bpo-44720: اشیای
weakref.proxyکه به غیرپیمایشگرها ارجاع میدهند، اکنون بهجای رفع ارجاع از جایگاه صفرtp_iternextو ایجاد خرابی، خطایTypeErrorپرتاب میکنند.bpo-44704: پیادهسازی
collections.abc.Set._hash()اکنون باfrozenset.__hash__()مطابقت دارد.bpo-44666: رفع مشکل در
compileall.compile_file()هنگامی کهsys.stdoutتغییر مسیر داده شده است. وصله توسط Stefan Hölzl.bpo-44688: متد
sqlite3.Connection.create_collation()اکنون نامهای ترتیبگذاری غیر اسکی را میپذیرد. وصله توسط Erlend E. Aasland.bpo-44690: بهکارگیری حالت سختگیرانه binascii.a2b_base64 در base64.b64decode.
bpo-42854: رفع یک باگ در ماژول
_sslکه هنگام استفاده از_ssl._SSLSocket.write()و_ssl._SSLSocket.read()برای مقدار بزرگی از پارامترlen، خطایOverflowErrorپرتاب میکرد. وصله توسط Pablo Galindo.bpo-44686: جایگزینی
unittest.mock._importerباpkgutil.resolve_name.bpo-44353: سریعتر کردن
NewType.__call__با پیادهسازی آن به زبان C. وصلهای توسط Yurii Karabas.bpo-44682: تغییر دایرکتیو commands در ماژول
pdbبرای عدم اجازه به تنظیم دستورات برای یک نقطهی توقف نامعتبر و نمایش خطای مناسب.bpo-44353: بازسازی
typing.NewTypeاز تابع به کلاس فراخوانیپذیر. وصلهای توسط Yurii Karabas.bpo-44678: افزودن یک پیام خطای مجزا برای پُرکنندهی ناپیوسته در حالت سختگیرانه binascii.a2b_base64.
bpo-44524: افزودن ویژگیهای گمشدهی
__name__و__qualname__به کلاسهای ماژولtyping. وصلهای توسط Yurii Karabas.bpo-40897: اولویت دادن به استفاده از سازندهی کلاس فعلی در
inspect.signature(). وصله توسط Weipeng Hong.bpo-44638: افزودن ارجاعی به پروژهی zipp و راهنمایی دربارهی نحوهی استفاده از آن.
bpo-44648: رفع خطای اشتباهی که توسط
inspect.getsource()هنگام بررسی یک کلاس در نشست تعاملی پرتاب میشود. بهجایTypeError، باید خطایOSErrorبا پیام خطای مناسب باشد.bpo-44608: رفع نشت حافظه در
_tkinter._flatten()اگر با یک دنباله یا مجموعه فراخوانی شود، اما نه با فهرست یا تاپل.bpo-44594: رفع یک حالت مرزی برای زنجیرهسازی استثناهای
ExitStackوAsyncExitStack. آنها اکنون هنگام پرتاب استثنا، اگر__context__صراحتاً رویNoneتنظیم شده باشد، با رفتار بلوکwithمطابقت خواهند داشت.bpo-42799: در ماژول
fnmatch، اندازهی نهانگاه برای الگوهای عبارت منظم کامپایلشده (functools.lru_cache()) از ۲۵۶ به ۳۲۷۶۸ افزایش یافت که توابع زیر را تحت تأثیر قرار میدهد:fnmatch.fnmatch()،fnmatch.fnmatchcase()،fnmatch.filter().bpo-41928: بهروزرسانی
shutil.copyfile()بهطوریکه وقتی مسیری باos.path.sepختم میشود و وجود ندارد، به جای خطای گیجکنندهیIsADirectoryError، خطایFileNotFoundErrorرا بالا بیاورد؛ توابعshutil.copy()وshutil.copy2()نیز تحت تأثیر قرار میگیرند.bpo-44569: تابعی به نام
StackSummary.format_frame()در ماژولtracebackاضافه شد. این امکان به کاربران داده میشود که نحوهی قالببندی سطرهای منفرد را در ردگیریها بدون پیادهسازی مجدد منطق مدیریت ردگیریهای بازگشتی سفارشیسازی کنند.bpo-44566: مدیریت زیرکلاس StopIteration که از تولیدگر @contextlib.contextmanager برخاسته است
bpo-44558: ایجاد سازگاری در پیادهسازی
indexOf()بین نسخههای C و پایتون. وصلهای از Donghee Na.bpo-41249: اصلاح
TypedDictبرای کار با تابعtyping.get_type_hints()و ارزیابی بهتعویقافتاده حاشیهنویسیها در سراسر ماژولها.bpo-44554: بازسازی پردازش آرگومان در تابع
pdb.main()برای سادهسازی تشخیص خطاها در بارگذاری ورودی و شفافسازی رفتار پیرامون فراخوانی ماژول یا اسکریپت.bpo-34798: شکستن پاراگراف مربوط به پارامترهای ساخت
pprint.PrettyPrinterبرای خوانایی بیشتر.bpo-44539: افزودن پشتیبانی برای شناسایی پروندههای JPEG بدون نشانگرهای JFIF یا Exif.
bpo-44461: رفع باگ مربوط به مدیریت خطای ایمپورت در
pdbبه دلیل وجود بستهای که ماژول__main__نداردbpo-43625: رفع باگ در تشخیص سرآیندهای پروندهی CSV توسط
csv.Sniffer.has_header()و بهبود مستندات آن.bpo-44516: بهروزرسانی نسخهی درونپوسته (vendored) pip به 21.1.3
bpo-42892: رفع خطایی که هنگام تجزیهی یک ایمیل چندبخشی ناقص توسط
email.message.EmailMessageپرتاب میشد.bpo-44468: تابع
typing.get_type_hints()اکنون حاشیهنویسیها را در کلاسها و کلاسهای پایه با مقدار غیرمنتظرهی__module__پیدا میکند. پیش از این، آن عناصر MRO را نادیده میگرفت.bpo-44491: امکان پاکسازی فراخوانی بازگشتی اعتبارسنج
sqlite3با ارسالNoneبهset_authorizer(). وصلهای از Erlend E. Aasland.bpo-43977: تنظیم پرچمهای مناسب
Py_TPFLAGS_MAPPINGوPy_TPFLAGS_SEQUENCEبرای زیرکلاسهایی که پیش از ثبت والد به عنوان یکcollections.abc.Mappingیاcollections.abc.Sequenceایجاد شدهاند.bpo-44482: رفع نشت منبع بسیار بعید در ماژول
globدر پیادهسازیهای جایگزین پایتون.bpo-44466: ماژول
faulthandlerاکنون تشخیص میدهد که آیا خطای مهلکی در طول مجموعهسازی جمعآوریکنندهی زباله رخ میدهد یا خیر. وصلهای از Victor Stinner.bpo-44471: اکنون در متدهای
contextlib.ExitStack.enter_context()وcontextlib.AsyncExitStack.enter_async_context()برای اشیایی که به ترتیب از پروتکلهای مدیر زمینه یا مدیر زمینهی ناهمگام پشتیبانی نمیکنند، به جایAttributeErrorخطایTypeErrorبالا آورده میشود.bpo-44404: متد
after()درtkinterاکنون از فراخوانیپذیرهای بدون ویژگی__name__پشتیبانی میکند.bpo-41546: کاری کنید که ماژول
pprint(مانند دستور توکارprint) وقتی مقدار آنNoneاست، تلاشی برای نوشتن درstdoutنکند.bpo-44458: متغیر
BUFFER_BLOCK_SIZEاکنون به صورت static تعریف میشود تا از تداخلهای پیونددهی (linking) هنگام پیوند ایستا (statically linked) کتابخانههای bz2، lmza یا zlib جلوگیری شود.bpo-44464: حذف استثنای مربوط به flake8 در رابطهای منسوخ importlib.metadata. همگامسازی با importlib_metadata نسخه ۴.۶.
bpo-44446: در نظر گرفتن این احتمال که ممکن است
linenoدرtraceback.FrameSummaryبرابر باNoneباشد.bpo-44439: اصلاح در متدهای
bz2.BZ2File.write()/lzma.LZMAFile.write()؛ هنگامی که دادهی ورودی شیءای است که از پروتکل بافر پشتیبانی میکند، ممکن است طول پرونده نادرست باشد.bpo-44434: تابع _thread.start_new_thread() دیگر در زمان خروج از نخ به شکل صریح PyThread_exit_thread() را صدا نمیزند، این فراخوانی اضافی بود. روی لینوکس با glibc، تابع pthread_exit() اگر نتواند پروندهی libgcc_s.so را با dlopen() باز کند (مثلاً خطای EMFILE)، کل فرایند را متوقف میکند. وصله توسط Victor Stinner.
bpo-42972: نوع _thread.RLock اکنون بهطور کامل پروتکل GC را پیادهسازی میکند: افزودن یک تابع پیمایش و پرچم
Py_TPFLAGS_HAVE_GC. وصله توسط Victor Stinner.bpo-44422: تابع
threading.enumerate()اکنون از یک قفل بازورودپذیر استفاده میکند تا از توقف (hang) در فراخوانی بازورودپذیر جلوگیری کند. وصله توسط Victor Stinner.bpo-38291: ایمپورت کردن typing.io یا typing.re اکنون یک
DeprecationWarningچاپ میکند.bpo-37880: اکشنهای argparse یعنی store_const و append_const هرکدام زمانی که آرگومان کلیدی
constفراهم نشده باشد، مقدار پیشفرضNoneرا دریافت میکنند. پیش از این، این حالت یکTypeErrorایجاد میکرد.bpo-44389: اصلاح منسوخسازی
ssl.OP_NO_TLSv1_3bpo-27827: متد
pathlib.PureWindowsPath.is_reserved()اکنون محدودهی بزرگتری از نامهای رزرو شدهی پروندهها، از جمله نامهای دارای فاصلههای انتهایی یا دو نقطه را شناسایی میکند.bpo-44395: اصلاح
as_string()برای انتقال صحیح unixfrom. وصله توسط Donghee Na.bpo-34266: مدیریت استثناهای ناشی از تجزیه و تحلیل آرگومان دستور run/restart در
pdb.bpo-44362: بهبود پیامهای منسوخسازی، گزارش خطا و مستندات مربوط به موارد منسوخشده در ماژول
ssl.bpo-44342: [Enum] تغییر pickling از روش مقدارمحور به ناممحور.
bpo-44356: [Enum] اجازهی استفاده از چندین میکساین (mixin) نوع داده در صورتی که همه یکسان باشند.
bpo-44351: بازگردانی تابع
parse_makefile()بهdistutils.sysconfigزیرا رفتار آن با پیادهسازی مشابهاش درsysconfigمتفاوت است.bpo-35800: کلاس
smtpd.MailmanProxyاکنون حذف شده است زیرا بدون یک ماژول خارجی یعنیmailmanغیرقابل استفاده است. وصله توسط Donghee Na.bpo-44357: افزوده شدن تابعی که جذر مکعب (rth root) عدد دادهشده را برمیگرداند
math.cbrt()bpo-44339: تغییر تابع
math.pow(±0.0, -math.inf)به گونهای که بهجای بالا آوردن خطایValueError، مقدارinfرا برگرداند. این تغییر، مدیریت حالتهای خاصmath.powرا با استاندارد IEEE 754 سازگار میکند.bpo-44242: بررسی پرچم مفقود را از ایجاد enum حذف کرده و به یک دکوراتور
verifyمنتقل کنید.bpo-44246: در ماژول
importlib.metadata، سازگاری خروجی حاصل ازDistribution.entry_points(EntryPoints) را بازگردانی کنید تا انتظارات پیادهسازیهای قدیمیتر را برآورده کرده و برای این موارد هشدارهای منسوخسازی صادر کند: الف. شیءهایEntryPointsبار دیگر تغییرپذیر میشوند و امکان استفاده ازsort()و سایر عملیات جهشیافته مبتنی بر فهرست را فراهم میکنند. با تبدیل کردن نتیجه به یک دنبالهی تغییرپذیر (مثلاًlist(dist.entry_points).sort())، از بروز هشدارهای منسوخسازی جلوگیری کنید. ب. نتایجEntryPointsبار دیگر امکان دسترسی از طریق اندیس را فراهم میکنند. برای جلوگیری از هشدارهای منسوخسازی، ابتدا نتیجه را به یک Sequence تبدیل کنید (مثلاًtuple(dist.entry_points)[0]).bpo-44246: در importlib.metadata.entry_points، رفع تکرار توزیعها دیگر نیازی به بارگذاری متادیتای کامل برای شیءهای PathDistribution ندارد و کارایی بارگذاری نقطهی ورود را حدود ۱۰ برابر بهبود میبخشد.
bpo-43858: افزودن تابعی که کپی یک دیکشنری از سطوح گزارشگیری را برمیگرداند:
logging.getLevelNamesMapping()bpo-44260: سازندهی
random.Randomدیگر بدون نیاز، انتروپی سیستم را نمیخواند.bpo-44254: در سیستم عامل مک، رنگی را به متن دکمههای turtledemo اختصاص دهید که روی پسزمینهی روشن یا تاریک کار کند. برنامهنویسان نمیتوانند مورد دوم را کنترل کنند.
bpo-44258: پشتیبانی از PEP (پیشنهاد بهبود پایتون) ۵۱۵ برای مقداردهی اولیهی Fraction از روی رشته.
bpo-44235: توابع منسوخ شده در ماژول
gettextرا حذف کنید. وصله توسط Donghee Na.bpo-38693: در importlib.resources استفاده از افاسترینگها به
.formatترجیح داده شود.bpo-33693: کتابخانهی Importlib.metadata اکنون استفاده از افاسترینگها را به .format ترجیح میدهد.
bpo-44241: گنجاندن تغییرات جزئی از importlib_metadata 4.1: پروتکل SimplePath، پشتیبانی از Metadata 2.2.
bpo-43216: حذف
@asyncio.coroutineدکوراتور که امکان سازگاری همروالهای مبتنی بر مولد قدیمی را با کد async/await فراهم میکرد؛ حذفasyncio.coroutines.CoroWrapperکه برای پوشش دادن شیءهای همروال قدیمی در حالت دیباگ استفاده میشد. این دکوراتور از نسخهی ۳.۸ پایتون منسوخ شده بود و حذف آن ابتدا برای نسخهی ۳.۱۰ برنامهریزی شده بود. وصله توسط Illia Volochii.bpo-44210: عمومی (public) کردن importlib.metadata._meta.PackageMetadata.
bpo-43643: اعلام ویژگی readers.MultiplexedPath.name به عنوان یک پراپرتی طبق مشخصات.
bpo-27334: مدیر زمینه
sqlite3اکنون در صورت شکست خوردن ثبت نهایی (commit)، یک عملیات بازگردانی (rollback) انجام میدهد (و در نتیجه قفل پایگاه داده را آزاد میکند). وصله توسط Luca Citi و Erlend E. Aasland.bpo-4928: مستندسازی رفتار موجود در POSIX: پروندههای NamedTemporaryFile در صورتی که فرایند سازنده با سیگنال SIGKILL متوقف شود، حذف نمیشوند.
bpo-44154: بهینهسازی پیکلسازی (pickling) در
fractions.Fractionبرای مؤلفههای بزرگ.bpo-33433: برای آدرسهای IPv6 نگاشتشده به IPv4 (RFC 4291 بخش 2.5.5.2)، بررسی
ipaddress.IPv6Address.is_privateبه آدرس IPv4 نگاشتشده ارجاع داده میشود. این کار باگی را حل میکند که در آن آدرسهای IPv4 نگاشتشدهی عمومی توسط بررسی IPv6 به عنوان خصوصی در نظر گرفته میشدند.bpo-44150: افزودن آرگومان اختیاری weights به تابع statistics.fmean().
bpo-44142: تابع
ast.unparse()اکنون پرانتزهای اضافی را هنگام استفاده از تاپلها به عنوان هدفهای انتساب (مثلاً در حلقههای for) حذف میکند.bpo-44145: محاسبات
hmacهنگام فراخوانی رابط برنامهنویسی کاربردی C مربوط به OpenSSL یعنیHMAC_Update(ویژگی جدیدی در نسخهی 3.9) قفل GIL را آزاد نمیکردند. این امر ناخواسته مانع از محاسبات موازی میشد که سایر الگوریتمهایhashlibپشتیبانی میکنند.bpo-44095: کلاس
zipfile.Pathاکنون از ویژگیهایzipfile.Path.stem،zipfile.Path.suffixesوzipfile.Path.suffixپشتیبانی میکند.bpo-44077: اکنون امکان دریافت فیلدهای سرآیند IP مربوط به نوع خدمات (ToS) که با نام خدمات متمایز (DS) یا نقطهکد خدمات متمایز (DSCP) و اعلان صریح ازدحام (ECN) شناخته میشوند، با استفاده از
socket.IP_RECVTOSفراهم شده است.bpo-37788: رفع یک نشت ارجاع زمانی که یک شیء نخ (Thread) هرگز join نمیشود.
bpo-38908: زیرکلاسهای
typing.Protocolکه فقط متغیرهای دادهای در آنها اعلان شده است، اکنون هنگام بررسی باisinstanceخطایTypeErrorایجاد میکنند، مگر اینکه باruntime_checkable()تزئین شده باشند. پیشتر این بررسیها بدون خطا انجام میشدند. وصلهی ارائه شده توسط Yurii Karabas.bpo-44098: شیء
typing.ParamSpecدیگر در بخش__parameters__اکثر انواع عامtypingیافت نخواهد شد، مگر در مکانهای استفادهی معتبری که توسط PEP 612 مشخص شدهاند. این کار از استفادهی نادرستی مانندtyping.List[P][int]جلوگیری میکند. این تغییر به این معناست که استفادههای نادرستی که ممکن است در نسخهی بتا ۱ از 3.10 و نسخههای پیشین بدون خطا عبور کرده باشند، اکنون خطا ایجاد خواهند کرد.bpo-44089: امکان زیرکلاسسازی
csv.Errorدر نسخهی 3.10 فراهم شد (این کار در نسخهی 3.9 و پیش از آن مجاز بود، اما در نسخههای اولیهی 3.10 غیرمجاز شده بود).bpo-44081: تابع
ast.unparse()اکنون اگر پارامتری وجود نداشته باشد، از فضاهای خالی اضافی برای جداسازی عبارتlambdaو:استفاده نمیکند.bpo-44061: رفع رگرسیون در نسخهی قبلی هنگام فراخوانی
pkgutil.iter_modules()با فهرستی از اشیایpathlib.Pathbpo-44059: ثبت مرورگر SerenityOS در ماژول
webbrowser.bpo-36515: ماژول
hashlibهنگامی که برای پلتفرمهای ARM کامپایلشده است، دیگر دسترسیهای حافظهی همترازنشده (unaligned) انجام نمیدهد.bpo-40465: ویژگیهای ماژول random که در پایتون ۳.۹ منسوخ شده بودند، حذف شدند.
bpo-44018: تابع random.seed() دیگر ورودیهای bytearray را تغییر نمیدهد.
bpo-38352: اضافهکردن
IO،BinaryIO،TextIO،MatchوPatternبهtyping.__all__. پچ توسط Jelle Zijlstra.bpo-44002: ماژول
urllib.parseاکنون به جای پیادهسازی سفارشیِ خود، از تابعfunctool.lru_cache()برای نهانگاههای داخلی تجزیه و قالببندی URL استفاده میکند.رابط برنامهنویسی (API) کلاس داخلی و مستندنشدهی
Quotedدر ماژولurllib.parseاکنون منسوخ شده است و در نسخهی ۳.۱۴ حذف خواهد شد.bpo-43972: هنگامی که کلاس
http.server.SimpleHTTPRequestHandlerبرای یک مسیر پوشه که با/ختم نمیشود، کد وضعیت301 (Moved Permanently)را ارسال میکند، یک سرآیندContent-Length: 0اضافه کنید. این کار رفتار برنامههای کلاینت را بهبود میبخشد.bpo-28528: رفع باگی در ماژول
pdbکه در آن متدcheckline()اگر پس ازreset()فراخوانی شود، استثنایAttributeErrorرا پرتاب میکند.bpo-43853: بهبود مدیریت رشتهها برای توابع تعریفشدهی کاربر و توابع تجمعی در ماژول
sqlite3:اکنون امکان ارسال رشتههای دارای نویسههای تهی تعبیهشده به UDFها فراهم شده است
خطاهای تبدیل اکنون به درستی
MemoryErrorرا بالا میآورند
توسط Erlend E. Aasland وصل شد.
bpo-43666: سیستم AIX: ممکن است
Lib/_aix_support.get_platform()در یک AIX WPAR با خطا مواجه شود. به نظر میرسد مجموعهپروندهی bos.rte دارای یک تاریخ ساخت (builddate) هم در LPAR و هم در WPAR است، بنابراین به جای bos.mp64 از این مجموعهپرونده پرسوجو میشود. برای جلوگیری از موقعیت مشابه (نبود تاریخ ساخت در ODM)، مقداری (۹۹۸۸) که برای تکمیل یک ساخت کافی باشد، ارائه شده است. وصله توسط M Felt.bpo-43650: رفع
MemoryErrorدرshutil.unpack_archive()که روی پروندههای بزرگ در داخلshutil._unpack_zipfile()دچار شکست میشود. وصله توسط ایگور بولشاکوف (Igor Bolshakov).bpo-43612: تابع
zlib.compress()اکنون یک پارامتر wbits را میپذیرد که به کاربران اجازه میدهد دادهها را به عنوان یک بلوک deflate خام بدون سرآیندها و بدنههای پایانی zlib در یک مرحله فشرده کنند. پیشتر این کار نیازمند نمونهسازی یکzlib.compressobjبود. همچنین هنگامی که از wbits=31 استفاده میشود، جایگزین سریعتری برایgzip.compressفراهم میکند.bpo-43392: تابع
importlib._bootstrap._find_and_load()اکنون بررسی دو مرحلهای را پیادهسازی میکند تا هنگام ایمپورت شدن ماژولها و آماده بودن آنها، از قفلشدن جلوگیری شود. این کار عملکرد فراخوانیهای مکرر بهimportlib.import_module()وimportlib.__import__()را بهبود میبخشد.bpo-43318: رفع باگی که در آن
pdbهمیشه نقاط شکست پاکشده را بازنمیتاباند.bpo-43234: پس از یک منسوخسازی در پایتون ۳.۸، ارسال اجراکنندههایی غیر از
concurrent.futures.ThreadPoolExecutorبهloop.set_default_executor()ممنوع شد. وصله توسط ایلیا ولوچی (Illia Volochii).bpo-43232: ممنوعیت عملیات مخرب احتمالی که پیشتر منسوخ شده بودند روی
asyncio.trsock.TransportSocket. وصله توسط ایلیا ولوچی (Illia Volochii).bpo-30077: پشتیبانی از فشردهسازی شبهپوششی aifc/sowt اپل اضافه شد
bpo-42971: افزودن تعریف
errno.EQFULLبرای پلتفرمهایی که این ثابت را تعریف میکنند (مانند macOS).bpo-43086: پارامتر اختیاری جدیدی به نام
strict_modeبه binascii.a2b_base64 اضافه شد. هنگامی کهscrict_modeرویTrueتنظیم شود، تابع a2b_base64 فقط محتوای معتبر base64 را میپذیرد. جزئیات بیشتر دربارهی اینکه «محتوای معتبر base64» چیست، در مستندات تابع قابل مشاهده است.bpo-43024: بهبود امضای راهنمای
traceback.print_exception()،traceback.format_exception()وtraceback.format_exception_only().bpo-33809: افزودن متد
traceback.TracebackException.print()که اطلاعات استثنای قالببندیشده را چاپ میکند.bpo-42862: ماژول
sqlite3اکنون ازfunctools.lru_cache()برای پیادهسازی نهانگاه دستور اتصال استفاده میکند. به عنوان یک بهینهسازی کوچک، اندازهی پیشفرض نهانگاه دستور از ۱۰۰ به ۱۲۸ افزایش یافته است. وصله توسط ارلند ای. آسلند (Erlend E. Aasland).bpo-41818: سومندرا گانگولی (Soumendra Ganguly): افزودن termios.tcgetwinsize() و termios.tcsetwinsize().
bpo-40497: متد
subprocess.check_output()اکنون هنگامی که آرگومان کلیدواژهای نامعتبر check توسط کد کاربر ارسال شود، یکValueErrorبالا میآورد. پیشتر چنین استفادهای بعدها با یکTypeErrorبا خطا مواجه میشد. وصله توسط رمی لاپیر (Rémi Lapeyre).bpo-37449: کتابخانهی
ensurepipاکنون از APIهای قابلپیمایشimportlib.resources.files()استفاده میکندbpo-40956: استفاده از Argument Clinic در
sqlite3. وصلهها توسط ارلند ای. آسلند (Erlend E. Aasland).bpo-41730: هشدار
DeprecationWarningاکنون هنگام ایمپورت کردنtkinter.tixبالا میآید، که از پایتون ۳.۶ در مستندات منسوخ اعلام شده است.bpo-20684: حذف تابع استفادهنشدهی
_signature_get_bound_paramاز ماژولinspect- توسط Anthony Sottile.bpo-41402: رفع مشکل متد
email.message.EmailMessage.set_content()هنگام فراخوانی با دادهی دودویی (binary) و کدگذاری (encoding) انتقال محتوای7bit.bpo-32695: آرگومانهای کلیدواژهای compresslevel و preset در تابع
tarfile.open()اکنون مستندسازی و آزمایش شدهاند.bpo-41137: استفاده از کدگذاری utf-8 هنگام خواندن پروندههای .pdbrc. وصله توسط Srinivas Reddy Thatiparthy
bpo-24391: بهبود reprهای اشیاء همگامسازی
threading:Semaphore،BoundedSemaphore،EventوBarrier.bpo-5846: توابع زیر از ماژول
unittestمنسوخ شدند و برنامهریزی شده است که در نسخهی ۳.۱۳ پایتون حذف شوند:findTestCases()makeSuite()getTestCaseNames()
بهجای آن از متدهای
TestLoaderاستفاده کنید:توسط Erlend E. Aasland وصل شد.
bpo-40563: پشتیبانی از اشیاء مسیرمانند روی dbm/shelve. وصله توسط Hakan Çelik و Henry-Joseph Audéoud.
bpo-34990: رفع یک باگ Y2k38 در ماژول compileall که در آن کامپایل پروندهها با زمان ویرایش پس از سال ۲۰۳۸ با شکست مواجه میشد.
bpo-39549: در حالی که کد مربوط به reprlib.Repr پیشتر از مقدار رشتهای سختکدشدهی '...' استفاده میکرد، این PR آن را بهگونهای بهروزرسانی میکند که از ویژگی «fillvalue» استفاده کند که مقدار پیشفرض آن '...' است و میتواند در نمونههای فردی reprlib.Repr یا زیرکلاسهای آنها بازنشانی شود.
bpo-37022: ماژول
pdbاکنون استثناهای حاصل ازrepr()را با دستوراتpوppخود نمایش میدهد.bpo-38840: رفع مشکل
test___all__روی پلتفرمهایی که فاقد پیادهسازی حافظهی مشترک هستند.bpo-39359: افزودن یک بررسی مفقود که اطمینان حاصل میکند گذرواژه یک شیء از نوع bytes برای یک پروندهی zip رمزنگاریشده است.
bpo-38741: ماژول
configparser: استفاده از ']' درون سرآیند یک بخش (section header) دیگر موجب کوتاهشدن نام بخش در کاراکتر ']' نخواهد شد.bpo-38415: افزودن رفتار مفقود به تابع
contextlib.asynccontextmanager()برای مطابقت با تابعcontextlib.contextmanager()بهطوریکه توابع دکوریتورشده خودشان بتوانند به عنوان دکوریتور عمل کنند.bpo-30256: عبور دادن آرگومان
manager_ownedمربوط به BaseProxy در multiprocessing از طریق AutoProxy.bpo-27513: تابع
email.utils.getaddresses()اکنون علاوه بر مقادیر رشتهای، اشیاءemail.header.Headerرا نیز میپذیرد. وصله توسط Zackery Spytz.bpo-16379: افزودن کد و نام خطای SQLite به استثناهای
sqlite3. وصله توسط Aviv Palivoda، Daniel Shahaf و Erlend E. Aasland.bpo-26228: ماژول pty.spawn دیگر روی سیستمعاملهای FreeBSD، مکاوس و سولاریس متوقف نمیشود.
bpo-33349: ابزار lib2to3 اکنون تولیدگرهای ناهمگام را در همه جا تشخیص میدهد.
bpo-29298: رفع خطای
TypeErrorهنگامی که زیرتجزیهکنندههای اجباری بدونdestهیچ آرگومانی دریافت نمیکنند. وصله توسط Anthony Sottile.
مستندات¶
bpo-45216: حذف مستندات اضافی که متدها را در
difflibفهرست میکنند. این مستندات در pydoc دوبار رندر میشدند و در برخی جاها منسوخ بودند.bpo-45024: مستندات
collections.abcبهگونهای گسترش یافته است که بهطور صریح نحوه کارکرد بررسیهای نمونه و زیررده را پوشش دهد؛ همراه با مثالهای آزمون مستند (doctest) اضافی و فهرستی جامع از ABCها که عضویت را صرفاً بر اساس وجود متد ویژه مناسب آزمایش میکنند. وصله توسط Raymond Hettinger.bpo-44957: ترویج نحو اتحاد PEP 604 با استفاده از آن در صورت امکان. همچنین، به
X | Yبرجستهتر در بخش مربوط بهUnionو بهX | Noneدر بخش مربوط بهOptionalاشاره شد.bpo-16580: معادلهای کدی برای متدهای
int.to_bytes()وint.from_bytes()اضافه شد، و همچنین آزمونهایی برای اطمینان از معتبر بودن این معادلهای کدی قرار گرفت.bpo-44903: پروندهی
othergui.rst، تمامی ارجاعات به آن و فهرست چارچوبهای رابط کاربری گرافیکی (GUI) در بخش پرسشهای متداول حذف شدند. بهجای آنها، پیوندهایی به صفحهی چارچوبهای رابط کاربری گرافیکی در ویکی پایتون اضافه کردهام.bpo-33479: مستندات Tkinter با بخشهای جدید «معماری» و «مدل نخکشی» بهطور قابلتوجهی گسترش یافته است.
bpo-36700: ارجاعات RFC مربوط به
base64بهروزرسانی شدند تا به RFC 4648 اشاره کنند؛ بخشی اضافه شد تا کاربران را به بخش جدید «ملاحظات امنیتی» در RFC هدایت کند.bpo-44740: جایگزینی مواردی از حروف بزرگ «Web» و «Internet» با نسخههای حروف کوچک بر اساس کتاب سبک تجدیدنظر شدهی Associated Press در سال ۲۰۱۶.
bpo-44693: بهروزرسانی تعریف __future__ در واژهنامه با جایگزین کردن واژهی گیجکنندهی «ماژول شبه» (pseudo-module) با توضیحی دقیقتر.
bpo-35183: افزودن مثالهای نمونه به مستندات os.path.splitext
bpo-30511: شفافسازی اینکه
shutil.make_archive()به دلیل اتکا بر تغییر پوششهی کاری فعلی، نخایمن نیست.bpo-44561: بهروزرسانی سه پیوند منقضیشده در Doc/distributing/index.rst: «ساختار پروژه»، «ساخت و بستهبندی پروژه» و «بارگذاری پروژه در نمایهی بستهبندی پایتون (Python Packaging Index)».
bpo-44651: حذف مدخل «coercion» در Doc/glossary.rst به دلیل تعریف منسوخ آن.
bpo-42958: رشته مستند و مستندات
filecmp.cmp()بهروزرسانی شدند تا دقیقتر و کمتر گیجکننده باشند، بهویژه در رابطه با آرگومان shallow.bpo-44631: بازسازی کد
repr()مربوط به_Environ(ماژول os).bpo-44613: ماژول importlib.metadata دیگر موقتی نیست.
bpo-44558: انطباق رشته مستند و پیادهسازی پایتونی
countOf()با رفتار پیادهسازی C آن.bpo-44544: فهرست تمام آرگومانهای با نام برای
textwrap.wrap()،textwrap.fill()وtextwrap.shorten(). اکنون پیوندهای ناوبری به ویژگیهایTextWrapوجود دارد که ضمن به حداقل رساندن تکرار در مستندات، ناوبری را بسیار آسانتر میکند.bpo-38062: شفافسازی این که atexit به صورت داخلی از مقایسههای برابری استفاده میکند.
bpo-40620: تبدیل مثالهای بخش ۴.۳ آموزش controlflow.rst به سبک نمایشی مفسر.
bpo-43066: افزودن یک هشدار به مستندات
zipfile: آرگومان نام پرونده با یک اسلش در ابتدا ممکن است باعث شود آرشیو در سیستمعاملهای ویندوز غیرقابل باز شدن باشد.bpo-39452: بازنویسی
Doc/library/__main__.rst. گسترش محدوده سند برای بحث صریح و تمایز بین__main__.pyدر بستهها در مقایسه با عبارت__name__ == '__main__'(و اصطلاحات پیرامون آن).bpo-13814: در پرسشهای متداول طراحی، پاسخ به این سوال که «چرا تولیدگرها از دستور with پشتیبانی نمیکنند؟»
bpo-27752: مستندات csv.Dialect توصیفیتر شده است.
bpo-44453: اصلاح مستندات مربوط به نوع دادهی بازگشتی تابع
sysconfig.get_path().bpo-44392: افزودن یک بخش جدید در مستندات API زبان C برای نوعهای استفاده شده در راهنمایی نوع. مستندسازی
Py_GenericAliasوPy_GenericAliasType.bpo-38291: علامتگذاری
typing.ioوtyping.reبه عنوان منسوخ از نسخهی ۳.۸ پایتون در مستندات. آنها هرگز به درستی توسط بررسیکنندههای نوع پشتیبانی نمیشدند.bpo-44322: مستندسازی اینکه آرگومانهای SyntaxError دارای یک تاپل جزئیات هستند و اینکه جزئیات برای خطاها در عبارتهای جایگزینی فیلد افاسترینگ تنظیم میشوند.
bpo-42392: مستندسازی منسوخ شدن و حذف پارامتر
loopبرای بسیاری از توابع و کلاسها درasyncio.bpo-44195: اصلاح ارجاعات به
TraversableResourcesدر مستندات. هیچTraversableReaderوجود ندارد.bpo-41963: مستندسازی این که
ConfigParserهنگام خواندن پروندههای پیکربندی، کامنتها را حذف میکند.bpo-44072: اصلاح مکان اضافه شدن پشتیبانی
**در هرم کلاس پایه انتزاعی عددی، یعنی در numbers.Complex، نه numbers.Integral.bpo-43558: افزودن نکته به مستندات
dataclassesمبنی بر اینکه متد__init__()هر کلاس پایهای باید در__post_init__()فراخوانی شود، به همراه یک مثال کد.bpo-44025: شفافسازی اینکه چه زمانی '_' در دستورات match یک کلیدواژه است و چه زمانی نیست.
bpo-41706: اصلاح مستندات دربارهی نحوهی فراخوانی متدهایی مانند
__add__هنگام ارزیابی عبارتهای عملگر.bpo-41621: مستندسازی اینکه پارامتر
default_factoryدرcollections.defaultdictبه طور پیشفرضNoneاست و صرفاً جایگاهی است.bpo-41576: مستندسازی BaseException به نفع except خالی
bpo-21760: اصلاح توضیحات مربوط به __file__. وصله توسط Furkan Onder
bpo-39498: افزودن یک نمایه «ملاحظات امنیتی» که به ماژولهای کتابخانهی استاندارد حاوی ملاحظات امنیتی مستندشدهی صریح پیوند میدهد.
bpo-33479: حذف ادعای بدون قید و شرط مبنی بر اینکه tkinter ایمن در برابر نخ (threadsafe) است. این موضوع برای چندین سال درست نبوده و احتمالاً هیچگاه هم درست نبوده است. توضیح در خصوص آنچه درست است ممکن است بعداً، پس از بحثهای بیشتر و احتمالاً پس از وصلهکردن _tkinter.c اضافه شود،
آزمونها¶
bpo-40173: اصلاح
test.support.import_helper.import_fresh_module().bpo-45280: افزودن یک مورد آزمون برای
typing.NamedTupleخالی.bpo-45269: پوششدادن حالتی که نوع دادهی
markersنامعتبر بهc_make_encoderارسال میشود.bpo-45128: اصلاح خرابی
test_multiprocessing_forkناشی از دستکاریtest_loggingوsys.modules.bpo-45209: اصلاح هشدار
UserWarning: resource_trackerدر_test_multiprocessing._TestSharedMemory.test_shared_memory_cleaned_after_process_terminationbpo-45185: فعالسازی موارد آزمون
TestEnumerationsدر بدنهی آزمونtest_ssl.bpo-45195: اصلاح test_readline.test_nonascii(): گاهی اوقات نویسهی خط جدید در انتها نوشته نمیشود، بنابراین آن را در خروجی انتظار نداشته باشید. وصله توسط Victor Stinner.
bpo-45156: اصلاح حلقهی بینهایت روی
unittest.mock.seal()در ماکهای ایجادشده توسطcreate_autospec().bpo-45125: بهبود آزمونهای ذخیرهسازی (pickling) و مستندات شیءهای
SharedMemoryوSharableList.bpo-44860: بهروزرسانی
test_sysconfig.test_user_similar()برای طرحوارهی posix_user: مقدارplatlibازsys.platlibdirاستفاده نمیکند. وصله توسط Victor Stinner.bpo-45052: آزمون
WithProcessesTestSharedMemory.test_shared_memory_basicsنادیده گرفته شده بود، زیرا سطرself.assertEqual(sms.size, sms2.size)با خطا مواجه میشد. این سطر اکنون حذف شده و آزمون از حالت پرش خارج شده است.انگیزهی اصلی برای حذف این سطر از آزمون این است که اندازهی (
size) شیءSharedMemoryتضمینی برای یکسانبودن ندارد. این مقدار توسط سکو (platform) تعیین میشود.bpo-44895: ابزار libregrtest اکنون نهانگاه نوع داده را دیرتر پاکسازی میکند تا خطر هشدار اشتباه هنگام بررسی نشت ارجاع کاهش یابد. پیشتر، نهانگاه نوع داده خیلی زود پاک میشد و libregrtest تحت شرایط بسیار خاصی هشدار اشتباهی دربارهی نشت ارجاع صادر میکرد. وصله توسط Irit Katriel و Victor Stinner.
bpo-45042: اصلاح این مسئله که کلاسهای آزمون دکورشده با
@hashlib_helper.requires_hashdigestهمیشه نادیده گرفته میشدند.bpo-25130: افزودن فراخوانیهای
gc.collect()در آزمونها برای پشتیبانی از PyPy.bpo-45011: اختیاری کردن آزمونهای وابسته به ماژول توسعهی C به نام
_asyncioبرای امکان اجرا روی پیادهسازیهای جایگزین پایتون. وصله توسط Serhiy Storchaka.bpo-44949: اصلاح آزمونهای تاریخچهی خودکار test_readline: گاهی اوقات نویسهی خط جدید در انتها نوشته نمیشود، بنابراین آن را در خروجی انتظار نداشته باشید.
bpo-44891: آزمونهایی برای شفافسازی حفظ
id()هنگام استفاده ازobj * 1روی شیءهایstrوbytesاضافه شدند. اصلاحیه از نیکیتا سوبولف (Nikita Sobolev).bpo-44852: امکان بیصدا کردن کلی DeprecationWarnings هنگام اجرای مجموعهآزمونهای رگرسیون اضافه شد.
bpo-40928: به کاربرانی که آزمونهای رگرسیون test_decimal را روی سیستمعامل macOS اجرا میکنند، دربارهی پیامهای بالقوهی بیخطر «malloc can't allocate region» که توسط test_decimal تولید میشوند، اطلاعرسانی کنید.
bpo-44734: مشکل دقت ممیز شناور در آزمونهای لاکپشت (turtle) رفع شد.
bpo-44708: آزمونهای رگرسیون، هنگامی که با -w اجرا میشوند، اکنون به جای اجرای مجدد کل پروندهی آزمون، فقط متدهای آزمون آسیبدیده را مجدداً اجرا میکنند.
bpo-42095: آزمونهای تعاملپذیری برای plistهای اپل اضافه شدند: تولید پروندههای plist با plistlib پایتون و تجزیه با plutil اپل؛ و برعکس.
bpo-44647: یک متغیر محیطی دائمی با مقدار یونیکد به آزمونهای رگرسیون اضافه شد تا اطمینان حاصل شود که آنها در آینده این سناریوی استفاده را مدیریت میکنند. اگر محیط آزمون شما به این دلیل دچار مشکل شد، باگ را به ما گزارش دهید و موقتاً مقدار PYTHONREGRTEST_UNICODE_GUARD=0 را در محیط آزمون خود تنظیم کنید.
bpo-44515: آزمونهای contextlib که اخیراً اضافه شدهاند، تنظیم شدند تا از فرض استفاده از GC شمارندهی ارجاع جلوگیری شود.
bpo-44287: رفع test_popen() مربوط به asyncio در test_windows_utils با استفاده از مهلت زمانی طولانیتر. به جای استفاده از مهلت زمانی سختکدشدهی ۱۰ ثانیهای، از مهلت زمانی آزمودهشده در نبرد با درجهی نظامی
test.support.SHORT_TIMEOUTاستفاده کنید: این مقدار به صورت پیشفرض ۳۰ ثانیه است، اما روی باتهای ساخت کند طولانیتر میشود. اصلاحیه از ویکتور استینر (Victor Stinner).bpo-44451: بازنشانی صافیهای
DeprecationWarningدرtest.test_importlib.test_metadata_api.APITests.test_entry_points_by_indexبرای جلوگیری از خطایStopIterationدر صورت نادیده گرفته شدنDeprecationWarnings.bpo-44363: در نظر گرفتن پاککنندهی آدرس در test_capi. آزمون test_capi اکنون هنگام اجرا با پاککنندهی آدرس GCC با موفقیت عبور میکند.
bpo-44364: افزودن آزمونهای غیرصحیح برای تابع
math.sqrt().bpo-43921: رفع test_ssl.test_wrong_cert_tls13(): از
suppress_ragged_eofs=Falseاستفاده کنید، زیراread()میتواند روی ویندوزssl.SSLEOFErrorایجاد کند. اصلاحیه از ویکتور استینر (Victor Stinner).bpo-43921: رفع آزمون test_pha_required_nocert() در test_ssl: گرفتن دو مورد EOF دیگر (زمانی که متد
recv()یک رشتهی خالی برمیگرداند). اصلاحیه از ویکتور استینر (Victor Stinner).bpo-44131: افزودن test_frozenmain به test_embed برای آزمون کردن تابع C متعلق به
Py_FrozenMain(). اصلاحیه از ویکتور استینر (Victor Stinner).bpo-31904: نادیده گرفتن بزرگی و کوچکی حروف رشتهی خطا در test_file_not_exists().
bpo-42083: افزودن آزمون برای بررسی اینکه
PyStructSequence_NewTypeیکPyStructSequence_Descرا که فیلدdocآن رویNULLتنظیم شده است، میپذیرد.bpo-35753: رفع خرابی در doctest هنگام تجزیهی ماژولهایی توسط doctest که شامل توابع غیرقابل بستهبندی هستند، با نادیده گرفتن آن توابع.
bpo-30256: افزودن آزمون برای صفهای تو در تو هنگام استفاده از شیءهای اشتراکی
multiprocessingیعنیAutoProxy[Queue]داخلListProxyوDictProxy
ساخت¶
bpo-45220: جلوگیری از ساخت خودکار با نسخههای پیشنمایش SDK ویندوز ۱۱. این مورد را میتوان با تنظیم متغیر محیطی
DefaultWindowsSDKVersionپیش از ساخت، لغو کرد.bpo-45020: فریز کردن ماژولهای کتابخانهی استاندارد که در زمان راهاندازی ایمپورت میشوند. این کار بهبود عملکرد چشمگیری در زمان راهاندازی فراهم میکند. در صورت نیاز، از گزینهی خط فرمان اضافهشدهی قبلی "-X frozen_modules=off" برای اجبار به ایمپورت کردن ماژولهای منبع استفاده کنید.
bpo-45188: نسخههای ساخت ویندوز اکنون ماژولهای فریزشده را به عنوان بخش نخست از ساخت دوباره بازسازی میکنند. پیشتر بازسازی در بخشهای بعدی ساخت انجام میشد که در صورت تغییر هرگونه ماژول، نیازمند راهاندازی مجدد بود.
bpo-45163: خطای ساخت پلتفرم Haiku را برطرف میکند.
bpo-45067: تابع ncurses به نام extended_color_content در سال ۲۰۱۷ معرفی شد
(https://invisible-island.net/ncurses/NEWS.html#index-t20170401). این
بستهی ncurses-devel در CentOS 7 نسخهی قدیمیتری از ncurses داشت که منجر به خطای کامپایل میشد. برای کامپایل کردن ncurses با پشتیبانی از رنگهای توسعهیافته، نسخهی کتابخانهی ncurses را با شرط >= 20170401 بررسی میکنیم.
bpo-45019: تولید سطرها در پروندههای مربوط به ماژولهای فریزشده. تا پیش از این هر یک از پروندهها باید به صورت دستی ویرایش میشدند. این تغییر، افزودن و اصلاح ماژولهای فریزشده را آسانتر میکند.
bpo-44340: افزودن پشتیبانی برای ساخت با clang thin lto از طریق --with-lto=thin/full. وصلهی نوشتهشده توسط Donghee Na و Brett Holman.
bpo-44535: امکان ساخت با استفاده از نصب Visual Studio 2022 روی ویندوز را فراهم کنید.
bpo-43298: بهبود پیام خطا هنگام ساخت بدون نصب بودن یک SDK ویندوز.
bpo-44381: ساخت ویندوز اکنون
EnableControlFlowGuardرا که رویguardتنظیم شده است برای فعال کردن CFG میپذیرد.bpo-41282: رفع دستور خراب
make installکه باعث میشد ماژولهای توسعهی کتابخانهی استاندارد در طول فاز نصب cpython به طور غیرضروری و نادرست دوباره ساخته شوند.
Windows¶
bpo-45375: یک خطای ادعا (assertion) را به دلیل جستجوی کتابخانهی استاندارد در مسیرهای نرمالسازینشده برطرف میکند.
bpo-45022: بهروزرسانی نسخهی ویندوز برای شامل شدن libffi 3.4.2
bpo-45007: بهروزرسانی به OpenSSL 1.1.1l در ساخت ویندوز
bpo-44848: ارتقای برنامهی نصب ویندوز برای استفاده از SQLite 3.36.0.
bpo-44572: جلوگیری از مصرف ورودی استاندارد در ماژول
platformbpo-44582: شتابدهی به سرعت راهاندازی
mimetypesبا استفاده از پیادهسازی بومی اسکن رجیستری.bpo-41299: رفع جیتر (jitter) ۱۶ میلیثانیهای هنگام استفاده از مهلتهای زمانی در
threading، مانندthreading.Lock.acquire()یاthreading.Condition.wait().bpo-42686: ساخت ماژول
sqlite3با توابع ریاضی فعالشده. وصلهی نوشتهشده توسط Erlend E. Aasland.bpo-40263: این یک باگ پیگیریشده از https://bugs.python.org/issue26903 است. پس از اعمال آن، با یک مشکل شرط (assertion) با اختلاف یک واحد مواجه میشویم. شرط درست نبود.
مکاواس¶
bpo-45007: بهروزرسانی ساختهای (build) نصبکنندهی مکاواس برای استفاده از OpenSSL 1.1.1l.
bpo-34602: هنگام ساخت (building) سیپایتون (CPython) روی مکاواس با دستور
./configure --with-undefined-behavior-sanitizer --with-pydebug، اندازهی پشته (stack) اکنون چهار برابر میشود تا کل بدنهی (suite) آزمونها با موفقیت اجرا شوند.bpo-44848: بهروزرسانی نصبکنندهی مکاواس برای استفاده از SQLite 3.36.0.
bpo-44689: تابع
ctypes.util.find_library()اکنون روی مکاواس ۱۱ بیگ سور (Big Sur) به درستی کار میکند، حتی اگر پایتون روی نسخهی قدیمیتری از مکاواس ساخته شده باشد. پیشتر، هنگام ساخت روی سیستمهای قدیمیتر مکاواس، تابعfind_libraryبه دلیل تغییرات در نحوهی ذخیرهسازی کتابخانههای سیستم، قادر به یافتن کتابخانههای سیستمی مکاواس هنگام اجرا روی بیگ سور نبود.bpo-41972: مسیر سرآیند (header) کاربر در ساخت چارچوب (framework build) در sysconfig تغییر کرده است تا یک جزء 'pythonX.Y' اضافه شود تا با رفتار distutils مطابقت داشته باشد.
bpo-43109: اجازه دادن به گزینهی پیکربندی --with-lto برای کار با Xcode یا ابزارهای خط (line) فرمان ارائهشده توسط اپل.
bpo-34932: افزودن پشتیبانی از socket.TCP_KEEPALIVE برای مکاواس. وصله (patch) توسط شین هاروی (Shane Harvey).
IDLE¶
bpo-45296: روی ویندوز، پیام خروج/ترک را تغییر دهید تا به جای <Ctrl-Z Return> که در IDLE کار نمیکند، استفاده از Ctrl-D را پیشنهاد دهد که کار میکند.
bpo-45193: باعث میشود جعبههای تکمیل خودکار مجدداً روی اوبونتو ظاهر شوند.
bpo-40128: رفع نسبی تکمیلها روی مکاواس هنگامی که از tcl/tk 8.6.11 استفاده نمیشود (همانند 3.9). فراخوانی اضافهشدهی update_idletask باید بیخطر باشد و احتمالاً در غیر این صورت مفید خواهد بود.
bpo-33962: انتقال تنظیم فاصلهی تورفتگی (indent) از برگهی Font به برگهی جدید Windows. وصله (patch) توسط مارک روزمن (Mark Roseman) و تری جان ریدی (Terry Jan Reedy).
bpo-40468: تفکیک برگهی General در کادرمحاورهای تنظیمات به برگههای Windows و Shell/ED. انتقال منابع راهنما که منوی Help را گسترش میدهند به برگهی Extensions. ایجاد فضا برای گزینههای جدید و کوتاهتر کردن کادرمحاورهای. مورد دوم باعث میشود کادرمحاورهای با صفحهنمایشهای کوچک بهتر سازگار شود.
bpo-41611: جلوگیری از استثناهای (exceptions) مدیریتنشده در
AutoCompleteWindow.winconfig_event().bpo-41611: رفع مشکل فریز شدن گاهبهگاه IDLE هنگام تکمیل خودکار با کلید Tab روی مکاواس.
bpo-44010: برجستهسازی دستور جدید match عبارت soft keywords:
match،case، و_؛ با این حال، این برجستهسازی کامل نیست و در برخی موارد نادر، از جمله برخی از کاراکترهای_در الگوهایcaseنادرست خواهد بود.bpo-44026: گنجاندن پیشنهادات رفع خطای املایی مفسر (interpreter) در سطر (line) پیام برای خطاهای NameError و AttributeError. وصله (patch) توسط ای. پین (E. Paine).
Tools/Demos¶
bpo-44786: رفع یک هشدار در عبارت باقاعده (regular expression) در اسکریپت c-analyzer.
bpo-44967: ابزار pydoc اکنون هنگامی که یک ماژول (module) پیدا نشود، یک کد وضعیت غیرصفر برمیگرداند (returns).
bpo-44978: به ابزار Argument Clinic اجازه دهید تا متدهای ویژهی (special methods)
__complex__را مدیریت کند.bpo-43425: پروژهی نمایشی 'test2to3' حذف شد؛ این پروژه استفاده از lib2to3 را برای پشتیبانی از Python 2.x و Python 3.x از یک سورس واحد در یک بستهی distutils نشان میداد. وصله توسط Donghee Na
bpo-44074: کاری کنید patchcheck بهطور خودکار نام شاخهی اصلی صحیح را شناسایی کند (پیشتر مقدار پیشفرض آن روی 'master' ثبت شده بود)
bpo-20291: پشتیبانی از پارامترهای جایگاهی چندآرگومانی به Argument Clinic اضافه شد.
رابط C API¶
bpo-41710: تابع PyThread_acquire_lock_timed() اکنون در صورتی که مهلت زمانی بیش از حد بزرگ باشد، آن را محدود میکند، نه اینکه فرایند را متوقف کند. وصله توسط Victor Stinner.
bpo-44687: متد
BufferedReader.peek()هنگامی که کل پرونده قبلاً بافر شده باشد دیگر استثنایValueErrorرا بالا نمیآورد.bpo-45116: افزودن کلاندستور
Py_ALWAYS_INLINEبرای درخواست از کامپایلر تا همواره یک تابع درونخطی ایستا را بهصورت درونخطی (inline) درج کند. کامپایلر میتواند آن را نادیده بگیرد و تصمیم بگیرد تابع را بهصورت درونخطی درج نکند. وصله توسط Victor Stinner.bpo-45094: افزودن کلاندستور
Py_NO_INLINEبرای غیرفعال کردن درج درونخطی (inlining) روی یک تابع. وصله توسط Victor Stinner.bpo-45061: افزودن یک تخصیصزدای (deallocator) به نوع
boolبرای شناسایی اشکالات شمارش ارجاع در افزونههای C که به اشتباهPy_DECREF(Py_True);یاPy_DECREF(Py_False);را فراخوانی میکنند. وصله توسط Victor Stinner.bpo-42035: افزودن تابع جدید
PyType_GetQualName()برای دریافت نام کامل نوع.bpo-41103: حذف پروتکل بافر قدیمی را بازنشانی میکند زیرا آنها بخشی از ABI پایدار هستند.
bpo-44751: گنجاندن
crypt.hاز سرآیند عمومیPython.hحذف شد.bpo-42747: پرچم نوع
Py_TPFLAGS_HAVE_VERSION_TAGاکنون هیچ کاری انجام نمیدهد. پرچمPy_TPFLAGS_HAVE_AM_SEND(که در نسخهی ۳.۱۰ اضافه شده بود) حذف شد. هر دو غیرضروری بودند زیرا امکان داشتن اشیاء نوع با فیلدهای گمشدهی مربوطه وجود ندارد.bpo-44530: مقدار
co_qualnameبه ساختارPyCodeObjectاضافه شد تا نام کامل از کامپایلر به اشیاء کد منتقل شود.وصله توسط Gabriele N. Tornetta
bpo-44441: تابع
Py_RunMain()اکنونPyImport_Inittabرا در هنگام خروج به مقدار اولیهی خود بازنشانی میکند. باید بتوانPyImport_AppendInittab()یاPyImport_ExtendInittab()را در هر مقداردهی اولیه پایتون فراخوانی کرد. وصله توسط Victor Stinner.bpo-39947: حذف ۴ تابع خصوصی API سطل زباله (trashcan) C که فقط برای سازگاری عقبگرد ABI پایدار با پایتون ۳.۸ و قدیمیتر نگهداری میشدند، از آنجا که API سطل زباله در پایتون ۳.۸ و قدیمیتر با محدودیت C API قابل استفاده نبود. API سطل زباله از C API محدود در پایتون ۳.۹ مستثنی شد.
توابع حذفشده:
_PyTrash_deposit_object()
_PyTrash_destroy_chain()
_PyTrash_thread_deposit_object()
_PyTrash_thread_destroy_chain()
رابط برنامهنویسی کاربردی (API) سطل زباله هرگز با رابط برنامهنویسی کاربردی محدود (limited C API) قابل استفاده نبود، زیرا کلاندستورهای قدیمی سطل زباله مستقیماً به اعضای
PyThreadStateمانند_tstate->trash_delete_nestingدسترسی داشتند، در حالی که ساختارPyThreadStateدر رابط برنامهنویسی کاربردی محدود کدر است.همچنین ثابت
PyTrash_UNWIND_LEVELرا از رابط برنامهنویسی کاربردی (API) حذف کنید.توسط Victor Stinner وصل شد.
bpo-40939: مستندات مربوط به رابط برنامهنویسی کاربردی (API) حذفشدهی
PyParser_*حذف شدند.bpo-43795: فهرست موجود در محتویات API محدود اکنون به جای
_frameنام عمومیPyFrameObjectرا نشان میدهد. شناسهی ناموجود_nodeدیگر در این فهرست ظاهر نمیشود.bpo-44378: تابع
Py_IS_TYPE()برای جلوگیری از اخطار کامپایلر دیگر ازPy_TYPE()استفاده نمیکند: دیگر نوعconst PyObject*بهPyObject*تبدیل نمیشود (cast). وصله توسط ویکتور استینر (Victor Stinner).bpo-39573: کلاندستورهای
Py_TYPE()وPy_SIZE()را به توابع inline ایستا تبدیل کنید. اکنون باید از توابعPy_SET_TYPE()وPy_SET_SIZE()برای تنظیم نوع و اندازهی شیء استفاده شود. وصله توسط ویکتور استینر (Victor Stinner).bpo-44263: تابع
PyType_Ready()اکنون اگر نوعی با پرچمPy_TPFLAGS_HAVE_GCتعریف شود اما تابع پیمایش نداشته باشد (PyTypeObject.tp_traverse)، خطایی ایجاد میکند. وصله توسط ویکتور استینر (Victor Stinner).bpo-43795: تابع مستندنشدهی
Py_FrozenMain()از رابط برنامهنویسی کاربردی محدود (Limited API) حذف شد.bpo-44113: توابع زیر برای پیکربندی مقداردهی اولیهی پایتون منسوخ میشوند:
PySys_AddWarnOptionUnicode()PySys_AddWarnOption()PySys_AddXOption()PySys_HasWarnOptions()Py_SetPath()Py_SetProgramName()Py_SetPythonHome()Py_SetStandardStreamEncoding()_Py_SetProgramFullPath()
به جای آن از رابط برنامهنویسی کاربردی (API) جدید
PyConfigمربوط به پیکربندی مقداردهی اولیهی پایتون استفاده کنید (PEP 587).bpo-44094: توابع
PyErr_SetFromErrnoWithUnicodeFilename()،PyErr_SetFromWindowsErrWithUnicodeFilename()وPyErr_SetExcFromWindowsErrWithUnicodeFilename()حذف شدند. این توابع مستندنشده بودند و از نسخهی ۳.۳ پایتون منسوخ شده بودند.bpo-43795: تابع
PyCodec_Unregister()اکنون به درستی به عنوان یک تابع در DLL مربوط به ABI پایدار ویندوز (Windows Stable ABI DLL) صادر میشود.bpo-44029: رابطهای برنامهنویسی (API) منسوخشدهی
Py_UNICODEحذف شدند: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. برای ارجاع به PEP 393 و PEP 624 مراجعه کنید.bpo-42035: تابع جدید
PyType_GetName()برای دریافت نام کوتاه نوع داده اضافه شد.
Python 3.10.0 beta 1¶
Release date: 2021-05-03
امنیت¶
bpo-43434: ایجاد شیءهای
sqlite3.Connectionاکنون باعث تولید رویدادهای حسابرسیsqlite3.connectوsqlite3.connect/handleنیز میشود. پیش از این، این رویدادها تنها توسط فراخوانیهایsqlite3.connect()تولید میشدند. وصله توسط Erlend E. Aasland.bpo-43998: ماژول
sslپیشفرضهای مطمئنتری برای مجموعهرمزها (cipher suites) تنظیم میکند. رمزهای فاقد محرمانگی پیشرو (forward secrecy) و دارای MAC با الگوریتم SHA-1 به طور پیشفرض غیرفعال هستند. سطح امنیتی ۲ کلیدهای ضعیف RSA، DH و ECC با امنیت کمتر از ۱۱۲ بیت را ممنوع میکند.SSLContextبه طور پیشفرض از نسخهی پروتکل TLS 1.2 به عنوان حداقل نسخه استفاده میکند. تنظیمات بر اساس پژوهشهای Hynek Schlawack انجام شده است.bpo-43882: وجود نویسههای خط جدید (newline) یا تب در بخشهایی از یک URL میتواند امکان برخی از انواع حملات را فراهم کند.
در پیرو مشخصات کنترلکننده برای URLها که توسط WHATWG تعریف شده است،
urllib.parse()اکنون نویسههای خط جدید اسکی و تبها را از URLها حذف میکند و از چنین حملاتی جلوگیری میکند.bpo-43472: تضمین میکند که هوکهای حسابرسی در سطح مفسر، هنگام فراخوانی از طریق ماژول
_xxsubinterpreters، رویدادcpython.PyInterpreterState_Newرا دریافت کنند.bpo-43362: رفع آزادسازی نامعتبر حافظه در ماژول _sha3. این مشکل در نسخهی 3.10.0a1 ایجاد شده بود. پایتون ۳.۹ و نسخههای قبلی تحت تأثیر قرار نمیگیرند.
bpo-43762: افزودن رویدادهای حسابرسی برای
sqlite3.connect/handle()،sqlite3.Connection.enable_load_extension()وsqlite3.Connection.load_extension(). وصله توسط Erlend E. Aasland.bpo-43756: افزودن رویداد حسابرسی جدید
glob.glob/2جهت گنجاندن آرگومانهای جدید root_dir و dir_fd که بهglob.glob()وglob.iglob()اضافه شدهاند.bpo-36384: ماژول
ipaddressدیگر هیچگونه صفر پیشفرضی را در رشتههای آدرس IPv4 نمیپذیرد. صفرهای پیشفرض مبهم هستند و توسط برخی کتابخانهها به عنوان نمادگذاری مبنای هشت (octal) تفسیر میشوند. برای مثال، تابع قدیمیsocket.inet_aton()صفرهای پیشفرض را به عنوان نمادگذاری مبنای هشت در نظر میگیرد. پیادهسازی glibc در تابع مدرنinet_pton()هیچ صفر پیشفرضی را نمیپذیرد. مدتی بود که ماژولipaddressصفرهای پیشفرض مبهم را میپذیرد.bpo-43075: رفع آسیبپذیری انکار سرویس عبارت باقاعده (ReDoS) در
urllib.request.AbstractBasicAuthHandler. عبارت باقاعدهی آسیبپذیر در برابر ReDoS دارای پیچیدگی بدترین حالت درجهی دوم (quadratic) است و امکان ایجاد انکار سرویس را هنگام شناسایی RFCهای نامعتبر دستکاریشده فراهم میکند. این مشکل ReDoS در سمت کلاینت است و نیاز دارد که مهاجمان از راه دور، سرور HTTP را کنترل کنند.bpo-42800: هوکهای حسابرسی اکنون برای دسترسی به ویژگیهای frame.f_code، traceback.tb_frame و کد/قاب تولیدگر (generator) فراخوانی میشوند.
bpo-37363: افزودن رویدادهای حسابرسی به ماژول
http.client.
هسته و توکارها (Core and Builtins)¶
bpo-43977: جلوگیری از اینکه کلاسها همزمان هم دنباله و هم نگاشت باشند، هنگام تطبیق الگو (pattern matching).
bpo-43977: استفاده از
tp_flagsروی شیء کلاس برای تعیین اینکه آیا موضوع در زمان تطبیق الگو یک دنباله است یا نگاشت. این کار نیاز به ایمپورت کردنcollections.abcرا در زمان تطبیق الگو از بین میبرد.bpo-43892: اعتبارسنجی صحیح الگوهای مقادیر لفظی را هنگام تجزیهی بلوکهای
matchبازیابی کنید.bpo-43933: هنگام اجرای فراخوانی به
__exit__، مقدار frame.f_lineno را روی شماره سطر کلیدواژهی 'with' تنظیم کنید.bpo-43933: اگر موقعیت کنونی در یک قاب (frame) شماره سطری نداشته باشد، برای انطباق با PEP 626، ویژگی f_lineno را به جای -1 روی None تنظیم کنید. این موضوع بهطور معمول نباید ممکن باشد، اما ممکن است در برخی شرایط غیرعادی رخ دهد.
bpo-43963: ایمپورت کردن ماژول
_signalدر یک زیرمفسر (subinterpreter) دیگر اثرات جانبی ندارد.bpo-42739: بازنمایی داخلی جدولهای شماره سطر تغییر یافته است تا از نشانگرها (sentinels) استفاده نکند، و یک پارامتر طول صریح به تابع API خارج از فرایند
PyLineTable_InitAddressRangeاضافه شده است. این کار مدیریت جدولهای شماره سطر را در برخی شرایط مستحکمتر میکند.
کتابخانه¶
bpo-43908: انواع
reرا تغییرناپذیر کنید. وصله توسط Erlend E. Aasland.bpo-43908: نوع
array.arrayرا تغییرناپذیر کنید. وصله توسط Erlend E. Aasland.
هسته و توکارها (Core and Builtins)¶
bpo-43901: اشیای کلاس و ماژول را تغییر دهید تا دیکشنریهای حاشیهنویسی خالی را بر حسب تقاضا و به صورت تنبل (lazy-create) ایجاد کنند. دیکشنریهای حاشیهنویسی برای سازگاری با نسخههای قبلی در __dict__ شیء ذخیره میشوند.
bpo-43892: الگوهای تطبیق اکنون به جای استفادهی مجدد از گرههای درخت نحوی انتزاعی (AST) عبارت، از گرههای اختصاصی جدید AST (مانند
MatchValue،MatchSingleton،MatchSequence،MatchStar،MatchMappingوMatchClass) استفاده میکنند.MatchAsوMatchOrاکنون به عنوان گرههای الگو تعریف شدهاند تا گرههای عبارت. وصله توسط Nick Coghlan.bpo-42725: استفاده از
await/yield/yield fromو عبارتهای نامگذاریشده در یک حاشیهنویسی هنگامی که PEP 563 فعال است، اکنون ممنوع است.bpo-43754: هنگام اجرای تطبیق الگوی ساختاری (PEP 634)، نامهای اسیرشده (Captured names) اکنون تا زمانی که تمام الگو با موفقیت تطبیق یابد، بدون اتصال باقی میمانند.
bpo-42737: حاشیهنویسیها برای اهداف پیچیده (همهی موارد به جز نامهای ساده) با دستور
from __future__ import annotationsدیگر هیچگونه اثرات زمان اجرا (runtime) ایجاد نمیکنند.bpo-43914: استثناهای
SyntaxErrorکه توسط مفسر ایجاد میشوند، به جای تعیین محل تشخیص مشکل، محدودهی کامل خطای عبارتی که خود خطای نحوی را تشکیل میدهد برجسته میکنند. وصله توسط Pablo Galindo.bpo-38605: پیشفرض شدن
from __future__ import annotationsرا لغو کنید. این پیرو تصمیم شورای راهبری (Steering Council) برای به تعویق انداختن تغییرات PEP 563 حداقل تا پایتون ۳.۱۱ است. برای اطلاعات بیشتر در مورد این تصمیم، ایمیل اصلی را ببینید: https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/. وصله توسط Pablo Galindo.bpo-43475: هشهای مقادیر NaN اکنون به هویت شیء بستگی دارند. پیش از این، آنها همیشه به مقدار ۰ هش میشدند، حتی با اینکه مقادیر NaN با یکدیگر برابر نیستند. داشتن هش یکسان برای مقادیر نامساوی باعث ایجاد تجمع (pile-up) در جدولهای هش میشد.
bpo-43859: پیام خطا را برای استثناهای
IndentationErrorبهبود دهید. وصله توسط Pablo Galindobpo-41323: تاشدن تاپل ثابت (Constant tuple folding) در بهینهساز بایتکد اکنون از تاپل موجود در جدول ثابت استفادهی مجدد میکند.
bpo-43846: استفاده از پشتهی داده (Data stack) برای عبارتهای لفظی و فراخوانی بزرگ به میزان قابلتوجهی کاهش یافته است.
bpo-38530: هنگام چاپ
NameErrorایجادشده توسط مفسر، تابعPyErr_Display()پیشنهادهایی از نامهای متغیر مشابه را در تابعی که استثنا از آنجا ایجاد شده است ارائه خواهد داد. وصله توسط Pablo Galindobpo-43823: خطاهای نحوی را برای مقادیر لفظی دیکشنری نامعتبر بهبود دهید. وصله توسط Pablo Galindo.
bpo-43822: بهبود خطاهای نحوی در پارسر برای کاماهای گمشده بین عبارتها. پچ توسط Pablo Galindo.
bpo-43798: گرههای
ast.aliasاکنون ویژگیهای فرادادهی مکان منبع مانند lineno و col_offset را در بر میگیرند.bpo-43797: بهبود پیامهای خطای
SyntaxErrorبرای مقایسههای نامعتبر. پچ توسط Pablo Galindo.bpo-43760: پرچم بررسی فعال بودن ردیابی (tracing) از پشته به پشتهی C منتقل شد. این کار باید سرعت دیسپچ را در مفسر افزایش دهد.
bpo-43682: متدهای ایستا (
@staticmethod) و متدهای کلاس (@classmethod) اکنون ویژگیهای متد (__module__،__name__،__qualname__،__doc__،__annotations__) را به ارث میبرند و دارای یک ویژگی جدید__wrapped__هستند. پچ توسط Victor Stinner.bpo-43751: رفع باگی که در آن
anext(ait, default)به اشتباه مقدار None را برمیگرداند.bpo-42128: دیگر به
__match_args__اجازه داده نمیشود که یک فهرست باشد.bpo-43683: افزودن آپکد GEN_START. آغاز تولیدگر، از جمله نوع ناهمگام یا همروال را نشانهگذاری میکند و ارسال مقادیر به یک تولیدگر یا همروال تازهساختهشده را مدیریت میکند.
کتابخانه¶
bpo-43105: کتابخانهی Importlib اکنون هنگام ایجاد شیءهای مشخصهی ماژول از مکانهای پرونده، مسیرهای نسبی را حل میکند.
هسته و توکارها (Core and Builtins)¶
bpo-43682: متدهای ایستا (
@staticmethod) اکنون به عنوان توابع معمولی قابل فراخوانی هستند. پچ توسط Victor Stinner.bpo-42609: جلوگیری از فروپاشیها در اعتبارسنج و بهینهساز درخت نحوی انتزاعی (AST) هنگام کامپایل کردن برخی عبارتهای بسیار طولانی مانند
"+0"*1000000. اکنون به جای آنRecursionErrorبالا آورده میشود.bpo-38530: هنگام چاپ
AttributeError، تابعPyErr_Display()پیشنهادهایی از نام ویژگیهای مشابه را در شیءای که استثنا از آن بالا آورده شده است ارائه میدهد. پچ توسط Pablo Galindo
کتابخانه¶
bpo-44015: در ()@dataclass، اگر KW_ONLY بیش از یک بار مشخص شده باشد، یک TypeError بالا بیاورید.
bpo-25478: یک متد total() به collections.Counter() اضافه شد تا مجموع شمارشها را محاسبه کند.
bpo-43733: تغییر
netrc.netrcبرای استفاده از کدگذاری UTF-8 پیش از استفاده از کدگذاری locale.bpo-43979: حذف یک درک فهرستی غیرضروری پیش از حلقهزنی از
urllib.parse.parse_qsl(). پچ توسط Christoph Zwerschke و Donghee Na.bpo-43993: بهروزرسانی pip بستهبندیشده به نسخهی 21.1.1.
bpo-43957: [Enum] منسوخ کردن خطای
TypeErrorهنگامی که یک عضو غیرعضو در بررسی شمول (containment check) استفاده میشود؛ در نسخهی 3.12 به جای آنTrueیاFalseبرگردانده خواهد شد و اگر مقدار یا عضوی از آن enum باشد یا یکی از مقادیر اعضای آن باشد، شمول مقدارTrueرا برمیگرداند.bpo-42904: برای سازگاری رو به عقب با نسخههای جزئی قبلی پایتون، اگر
typing.get_type_hints()هیچ آرگومان دیکشنری فضای نامی دریافت نکند،typing.get_type_hints()در طول ارزیابی حاشیهنویسیهای نوع رشتهای (ارجاعات پیشرو رشتهای) درون یک کلاس، ابتدا فضاهای نام سراسری و سپس محلی را جستجو خواهد کرد.bpo-43945: [Enum] منسوخ کردن رفتار غیر استاندارد mixin برای format(): در نسخهی 3.12 عضو enum، نه مقدار عضو، برای فراخوانیهای format() استفاده خواهد شد.
bpo-41139: منسوخ کردن رابط برنامهنویسی کاربردی (API) مستندنشدهی
cgi.log().bpo-43937: رفع مشکل کار کردن ماژول
turtleبا پنجرهی ریشه (root) غیرپیشفرض.bpo-43930: بهروزرسانی پپ (pip) همراه به نسخهی ۲۱.۱ و ستتولز (setuptools) به نسخهی ۵۶.۰.۰
bpo-43907: رفع یک باگ در پیادهسازی پیکل تمامپایتونی هنگام استفاده از پروتکل ۵، که در آن نمونههای bytearray که چند بار در گراف شیء پیکلشده تکرار شده بودند، بهاشتباه به نسخههای تکراری از شیء bytearray پیکلگشایی میشدند.
bpo-43926: در
importlib.metadata، ارائهی یک رابط یکنواخت برایDescription، امکان کدگذاری هر فیلد با مقادیر چندسطری، حذف سطرهای ادامهدهنده از مقادیر چندسطری، و افزودن یک ویژگی.jsonبرای دسترسی آسان به فرم سازگار با JSON در PEP 566. هماهنگسازی باimportlib_metadata 4.0.bpo-43920: کتابخانهی OpenSSL 3.0.0: متد
load_verify_locations()اکنون زمانی که cadata حاوی هیچ گواهی معتبری نباشد، یک پیام خطای سازگار برمیگرداند.bpo-43607: ماژول
urllibاکنون میتواند مسیرهای ویندوز با پیشوندهای\\?\را به مسیرهای URL تبدیل کند.bpo-43817: افزودن تابع
inspect.get_annotations()، که حاشیهنویسیهای تعریفشده روی یک شیء را به شکلی ایمن محاسبه میکند. این تابع ناسازگاریهای دسترسی به حاشیهنویسیها را از انواع مختلف اشیاء مدیریت میکند و فرضهای بسیار کمی دربارهی شیء ارسالشده در نظر میگیرد. تابعinspect.get_annotations()همچنین میتواند حاشیهنویسیهای رشتهایشده را به شکل صحیحی به حالت اولیه برگرداند.inspect.signature()،inspect.from_callable()وinspect.from_function()اکنون برای بازیابی حاشیهنویسیها، تابعinspect.get_annotations()را فراخوانی میکنند. این بدان معناست کهinspect.signature()وinspect.from_callable()نیز میتوانند حاشیهنویسیهای رشتهایشده را به حالت اولیه برگردانند.bpo-43284: تابع platform.win32_ver نسخهی ویندوز را از sys.getwindowsversion().platform_version استخراج میکند که آن هم به نوبه خود نسخه را از kernel32.dll میگیرد (که ممکن است نسخهای متفاوت از خود ویندوز داشته باشد). بنابراین platform.win32_ver را تغییر دهید تا نسخه را با استفاده از تابع خصوصی _syscmd_ver ماژول platform تعیین کند تا نسخهی دقیقی برگردانده شود.
bpo-42854: ماژول
sslاکنون به صورت داخلی ازSSL_read_exوSSL_write_exاستفاده میکند. این توابع از خواندن و نوشتن دادههای بزرگتر از ۲ گیگابایت پشتیبانی میکنند. نوشتن دادههای با طول صفر دیگر با خطای نقض پروتکل مواجه نمیشود.bpo-42333: انتقال ماژول توسعهای
_sslبه مقداردهی اولیه چندمرحلهای.bpo-43880: ماژول
sslاکنون برای گزینههای OP_NO_SSL/TLS*، نسخههای قدیمی TLS، پروتکلهای قدیمی و سایر ویژگیهایی که از پایتون ۳.۶، ۳.۷ یا OpenSSL 1.1.0 به اینسو منسوخ شدهاند، هشدار DeprecationWarning صادر میکند.bpo-41559: پیشنهاد PEP 612 اکنون به طور کامل در پایتون پیادهسازی شده است؛ اشیاء توکار
types.GenericAliasدیگر شاملtyping.ParamSpecدر__parameters__نیستند (به استثنایGenericAliasمربوط بهcollections.abc.Callable). این بدان معناست که استفادههای نامعتبر قبلی ازParamSpec(مانندlist[P]) که در نسخههای اولیهی پایتون ۳.۱۰ آلفا کار میکردند، اکنون در طول جایگزینی، خطایTypeErrorایجاد خواهند کرد.bpo-43867: کلاس
Serverدر ماژولmultiprocessingاکنون به طور صریح استثنایSystemExitرا گرفته و در این حالت اتصال کلاینت را میبندد. این اتفاق زمانی رخ میدهد که متدServer.serve_client()به پایان پرونده (EOF) میرسد.bpo-40443: حذف ایمپورتهای استفادهنشده: pyclbr دیگر از copy استفاده نمیکند و typing دیگر از ast استفاده نمیکند. اصلاحیه توسط Victor Stinner.
bpo-43820: حذف نسخهی غیرضروری فضای نام ارسالشده به dataclasses.make_dataclass().
bpo-43787: افزودن متد
__iter__()بهbz2.BZ2File،gzip.GzipFileوlzma.LZMAFile. این کار پیمایش آنها را حدود ۲ برابر سریعتر میکند. اصلاحیه توسط Inada Naoki.bpo-43680: منسوخ کردن io.OpenWrapper و _pyio.OpenWrapper: بهجای آنها از io.open و _pyio.open استفاده کنید. تا پیش از پایتون ۳.۹، _pyio.open یک متد ایستا نبود و builtins.open روی OpenWrapper تنظیم شده بود تا هنگام تنظیم شدن روی یک متغیر کلاس، به یک متد کراندار تبدیل نشود. تابع _io.open یک تابع توکار است، در حالی که _pyio.open یک تابع پایتونی است. در پایتون ۳.۱۰، تابع _pyio.open() اکنون یک متد ایستا است و builtins.open() اکنون همان io.open() است.
bpo-43680: تابع پایتونی
_pyio.open()برای رفتار کردن به شکل تابع توکارio.open()به یک متد ایستا تبدیل میشود: یعنی وقتی به عنوان یک متغیر کلاس ذخیره میشود، به یک متد کراندار تبدیل نمیشود. این کار از آنجا امکانپذیر شده است که متدهای ایستا اکنون در پایتون ۳.۱۰ فراخوانیپذیر هستند. علاوه بر این، تابع_pyio.OpenWrapper()به یک نام مستعار ساده برای_pyio.open()تبدیل میشود. اصلاحیه توسط Victor Stinner.bpo-41515: برطرف کردن
KeyErrorایجادشده درtyping.get_type_hints()به دلیل ماژولهای مصنوعی (synthetic) که درsys.modulesظاهر نمیشوند.bpo-43776: هنگامی که آرگومانهای
subprocess.Popenبه صورت یک رشته یا به عنوانpathlib.Pathارائه شوند، نمایش (repr) نمونهی Popen اکنون مقدار درستی را نشان میدهد.bpo-42248: [Enum] اطمینان حاصل کنید استثناهای ایجادشده در
_missing__آزاد میشوندbpo-43744: برطرف کردن مشکل تطابق نام عضو enum با ابتدای نام یک متغیر خصوصی
bpo-43772: اصلاح مقدار بازگشتی
TypeVar.__ror__. ارسال شده توسط Jelle Zijlstra.bpo-43764: افزودن پارامتر match_args به دکوراتور @dataclass برای امکان عدم تولید __match_args__.
bpo-43799: کتابخانهی OpenSSL 3.0.0: تعریف
OPENSSL_API_COMPAT1.1.1 برای سرکوب هشدارهای منسوخ شدن. پایتون به توابع واسط (API) نسخهی 1.1.1 OpenSSL نیاز دارد.bpo-43478: دیگر نمیتوان از ماکها (Mock) به عنوان مشخصات (spec) برای سایر ماکها استفاده کرد. در نتیجه، یک شیء که از پیش ماک شده است نمیتواند ویژگیای داشته باشد که با استفاده از
autospec=Trueماک شود یا موضوع فراخوانیcreate_autospec(...)قرار گیرد. این کار میتواند اشکالات را در آزمونها آشکار کند زیرا این ماکهای مشتقشده از ماک، همیشه آزمونهای خاصی را با موفقیت پشت سر میگذارند (مثلاًisinstance()) و توابع assert توکار (مانند assert_called_once_with) بدون قید و شرط موفق خواهند شد.bpo-43794: افزودن ثابتهای
ssl.OP_IGNORE_UNEXPECTED_EOF(نسخهی 3.0.0 OpenSSL)bpo-43785: بهبود کارایی
bz2.BZ2Fileبا حذف RLock از BZ2File. این کار باعث میشود BZ2File در مواجهه با چندین خواننده یا نویسندهی همزمان، ناامن از نظر نخ (thread-unsafe) باشد، درست همانطور که کلاسهای معادل آن درgzipوlzmaهمیشه بودهاند. ارسالشده توسط Inada Naoki.bpo-43789: کتابخانهی OpenSSL 3.0.0: هنگامی که اولین فراخوانی یک شرایط خطا را اعلام کرده است، تابع فراخوانی بازگشتی (callback) را برای بار دوم فراخوانی نکنید.
bpo-43788: پروندههای سرآیند برای کدهای خطای
sslاکنون مخصوص نسخهی OpenSSL هستند. استثناها اکنون دلیل و کدهای کتابخانهی صحیح را نشان خواهند داد. اسکریپتmake_ssl_data.pyبازنویسی شده است تا از پروندهی متنی OpenSSL با کدهای خطا استفاده کند.bpo-43766: پیادهسازی PEP 647 در ماژول
typingبا افزودنTypeGuard.bpo-25264: تابع
os.path.realpath()اکنون یک آرگومان صرفاً کلیدواژهای به نام strict را میپذیرد. وقتی رویTrueتنظیم شود، اگر مسیری وجود نداشته باشد یا حلقهای از پیوندهای نمادین برخورد شود، استثنایOSErrorایجاد میشود.bpo-43780: در
importlib.metadata، تغییرات نسخه ۳.۱۰ کتابخانهی importlib_metadata را ادغام کنید: افزودن کشسازی مبتنی بر mtime در طول کشف توزیع. استفاده از نتیجهی دیکشنری تابعentry_points()به عنوان منسوخشونده علامتگذاری شد.gh-47383: ویژگیهای
P.argsوP.kwargsازtyping.ParamSpecاکنون نمونههایی از کلاسهای جدیدtyping.ParamSpecArgsوtyping.ParamSpecKwargsهستند، که امکان یکrepr()مفیدتر را فراهم میکند. ارسالشده توسط Jelle Zijlstra.bpo-43731: افزودن یک پارامتر
encodingبه تابعlogging.fileConfig().bpo-43712: افزودن پارامترهای
encodingوerrorsبهfileinput.input()وfileinput.FileInput.bpo-38659: یک دکوراتور
simple_enumبه ماژولenumاضافه شده است تا یک کلاس عادی را به یک Enum تبدیل کند. تابعtest_simple_enumبرای آزمون enumهای ساده در برابر یک Enum عادی متناظر اضافه شده است. ماژولهای کتابخانهی استاندارد برای استفاده ازsimple_enumبهروزرسانی شدند.bpo-43764: رفع مشکلی که در آن تولید
__match_args__ممکن است برای برخی ازdataclassesبا شکست مواجه شود.bpo-43752: اصلاح رگرسیون در
sqlite3برای بلابهای با اندازهی صفر که دارای مبدل هستند، به طوری که بهجایNoneمقدارb""برگردانده میشد. این رگرسیون توسط PR 24723 ایجاد شده بود. وصله توسط Erlend E. Aasland.bpo-43655: پنجرههای محاورهای
tkinterاکنون توسط مدیران پنجره در مکاواس (macOS) و X Window به عنوان پنجرههای محاورهای شناخته میشوند.bpo-43723: متدهای زیر در
threadingاکنون منسوخ شدهاند و باید جایگزین شوند: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
اصلاحیه از Jelle Zijlstra.
bpo-2135: منسوخ کردن پیادهسازیهای find_module() و find_loader() در importlib و zipimport.
bpo-43534: توابع
turtle.textinput()وturtle.numinput()اکنون یک پنجرهی گذرا ایجاد میکنند که به نیابت از پنجرهی بوم (canvas) کار میکند.bpo-43532: امکان مشخص کردن فیلدهای فقط-کلیدواژه را به دیتاکلاسها اضافه میکند. این فیلدها به آرگومانهای فقط-کلیدواژه برای تابع تولیدشدهی __init__ تبدیل خواهند شد.
bpo-43522: مشکل مربوط به
hostname_checks_common_nameرا اصلاح میکند. کتابخانهی OpenSSL پرچمهای میزبان را از struct SSL_CTX به struct SSL کپی نمیکند.bpo-8978: بهبود پیام خطا برای
tarfile.open()هنگامی کهlzmaیاbz2در دسترس نیستند. وصله توسط Anthony Sottile.bpo-42967: هنگام تجزیهی رشتههای پرسوجوی
str، به آرگومانseparatorاز نوعbytesدرurllib.parse.parse_qsوurllib.parse.parse_qslاجازه میدهد. پیشتر، این حالت یکTypeErrorایجاد میکرد.bpo-43296: بهبود مدیریت خطای
sqlite3: خطاهایsqlite3_value_blob()کهSQLITE_NOMEMرا تنظیم میکنند، اکنونMemoryErrorایجاد میکنند. وصله توسط Erlend E. Aasland.bpo-43312: توابع جدید
sysconfig.get_preferred_scheme()وsysconfig.get_default_scheme()برای استعلامگرفتن از یک سکو (پلتفرم) جهت دریافت نامهای طرحوارهی ترجیحی «user»، «home» و «prefix» (پیشفرض) اضافه شدهاند.bpo-43265: بهبود مدیریت خطای
sqlite3.Connection.backup(). پیام خطا برای نامهای پایگاه دادهی ناموجود اکنون بهجایSQL logic errorبرابر باunknown database <database name>است. وصله توسط Erlend E. Aasland.bpo-41282: طرحوارههای نصب در
distutils.command.installاکنون ازsysconfigبارگذاری میشوند.bpo-41282: ماژول
distutils.sysconfigدرsysconfigادغام شده است.bpo-43176: پردازش یک دیتاکلاس که از یک دیتاکلاس فریزشده بدون فیلد ارثبری میکند، اصلاح شد. اکنون به درستی بهعنوان یک خطا شناسایی میشود.
bpo-43080: ماژول
pprintاکنون ازdataclasses.dataclassپشتیبانی میکند. این وصله توسط Lewis Gaul تهیه شده است.bpo-39950: متد
pathlib.Path.hardlink_to()را اضافه کنید که جایگزینlink_to()میشود. متد جدید دارای همان ترتیب آرگومانهایsymlink_to()است.bpo-42904: تابع
typing.get_type_hints()اکنون هنگام ارزیابی حاشیهنویسیهای PEP 563 در داخل کلاس مذکور، فضای نام محلی آن کلاس را بررسی میکند.bpo-42269: پارامتر
slotsبه دکوراتورdataclasses.dataclassاضافه شد تا بهطور خودکار مقادیر__slots__را برای کلاس تولید کند. این وصله توسط Yurii Karabas ارائه شده است.bpo-39529: استفاده از تابع
asyncio.get_event_loop()بدون حلقهی رویداد در حال اجرا منسوخ شد. انتشار هشدار منسوخشدگی برای توابعasyncioکه به طور ضمنی اشیاءFutureیاTaskرا ایجاد میکنند، در صورتی که هیچ حلقهی رویدادی در حال اجرا نباشد و هیچ آرگومان loop صریحی ارسال نشود: توابعensure_future()،wrap_future()،gather()،shield()،as_completed()و سازندههایFuture،Task،StreamReader،StreamReaderProtocol.bpo-18369: کلاسهای Certificate و PrivateKey به ماژول ssl اضافه شدند. گواهیها و کلیدها اکنون میتوانند از بافر حافظه نیز بارگذاری شوند.
bpo-41486: از یک کد مدیریت بافر خروجی جدید برای ماژولهای
bz2/lzma/zlibاستفاده کنید و تابع.readall()را به کلاس_compression.DecompressReaderاضافه کنید. این تغییرات بهبودهایی در کارایی به همراه دارند. وصله توسط Ma Lin.bpo-31870: تابع
ssl.get_server_certificate()اکنون دارای یک پارامتر timeout است.bpo-41735: رفع مشکل قفلهای نخ در ماژول zlib که ممکن است در موارد نادر به خطا بخورند. وصله توسط Ma Lin.
bpo-36470: رفع مشکل دیتاکلاسها با
InitVars وreplace(). وصله توسط Claudiu Popa.bpo-40849: در معرض نمایش گذاشتن پرچم ssl به نام X509_V_FLAG_PARTIAL_CHAIN
bpo-35114: تابع
ssl.RAND_status()اکنون به جای1یا0، یک مقدار بولی (همانطور که مستند شده است) برمیگرداند.bpo-39906: متدهای
pathlib.Path.stat()وchmod()اکنون برای سازگاری با توابع متناظر در ماژولos، یک آرگومان فقط-کلیدواژه به نام follow_symlinks را میپذیرند.bpo-39899: تابع
os.path.expanduser()اکنون اگر نام پایه (basename) پوشهی خانگی کاربر فعلی با نام کاربری آنها مطابقت نداشته باشد، از حدس زدن پوشههای خانگی ویندوز خودداری میکند.pathlib.Path.expanduser()وhome()اکنون بهطور پایدار هنگامی که یک پوشهی خانگی قابل حل نیست، استثنایRuntimeErrorرا بالا میآورند. پیش از این، هنگامی که متغیر محیطی"USERNAME"تنظیم نشده بود، ممکن بود یک استثنایKeyErrorدر ویندوز بالا برود.bpo-36076: پشتیبانی از SNI به
ssl.get_server_certificate()اضافه شد.bpo-38490: قابلیتهای کوواریانس، همبستگی پیرسون و رگرسیون خطی ساده به ماژول statistics اضافه شد. وصله توسط Tymoteusz Wołodźko.
bpo-33731: تابع locale.localize() را فراهم میکند که یک رشته عدد نرمالشده را به قالب locale تبدیل میکند.
bpo-32745: اصلاح یک رگرسیون در نحوهی مدیریت نوع
ctypes.c_wchar_pدر ctypes: کاراکترهای تهی تعبیهشده باعث بروز خطایValueErrorمیشوند. وصله از Zackery Spytz.
مستندات¶
bpo-43987: افزودن سند «بهترین روشهای حاشیهنویسی» به عنوان یک راهنمای عملی جدید.
bpo-43977: مستندسازی پرچمهای نوع جدید
Py_TPFLAGS_MAPPINGوPy_TPFLAGS_SEQUENCE.bpo-43959: مستندات مربوط به PyContextVar C-API شفافسازی شد.
bpo-43938: بهروزرسانی مستندات دیتاکلاسها برای بیان این موضوع که FrozenInstanceError از AttributeError مشتق شده است.
bpo-43778: رفع افزونهی Sphinx glossary_search: اگر پوشهی _static/ وجود ندارد، آن را ایجاد کنید.
bpo-43755: بهروزرسانی مستندات برای بازتاب این موضوع که از نسخهی ۳ پایتون بهبعد، عبارتهای لامبدای بدون پرانتز دیگر نمیتوانند بخش عبارت در یک بند
ifدر درک مجموعهها (comprehensions) و عبارتهای تولیدگر باشند.bpo-43739: اصلاح کد نمونه در Doc/extending/extending.rst برای اعلان و مقداردهی اولیهی متغیر pmodule از نوع درست.
آزمونها¶
bpo-43961: رفع test_logging.test_namer_rotator_inheritance() روی ویندوز: به جای
os.rename()ازos.replace()استفاده کنید. بستهی اصلاحی از Victor Stinner.bpo-43842: رفع یک مشکل رقابت (race condition) در آزمون SMTP مربوط به test_logging. هنگامی که asyncore.loop() در حال پایش توصیفگر پرونده است، توصیفگر پرونده (سوکت) را از یک نخ دیگر نبندید. بستهی اصلاحی از Victor Stinner.
bpo-43843:
test.libregrtestاکنون اگر نخی استثنایی را پرتاب کند ولی آن را صید نکند، آزمون را به عنوان ENV_CHANGED (محیط اجرای تغییریافته) علامتگذاری میکند. این ماژول قلابی رویthreading.excepthook()تنظیم میکند. برای علامتگذاری آزمون به عنوان شکستخورده، از گزینهی--fail-env-changedاستفاده کنید. بستهی اصلاحی از Victor Stinner.bpo-43811: آزمودن نسخههای مختلف OpenSSL روی GitHub Actions. برای سرعت بخشیدن به آزمونها از ccache استفاده کنید.
bpo-43791: OpenSSL 3.0.0: غیرفعال کردن آزمون پروتکلهای قدیمی TLS ۱.۰ و ۱.۱. آزمونها با خطای TLSV1_ALERT_INTERNAL_ERROR با شکست مواجه میشوند.
ساخت¶
Windows¶
bpo-35306: افزودن آرگومانهای اضافی به تابع
os.startfile().bpo-43538: جلوگیری از پرتاب خطا توسط
pathlib.Path.exists()هنگام ارسال یک نام پروندهی نامعتبر.bpo-38822: رفع مشکل عدم کارکرد
os.stat()روی پوشههای غیرقابلدسترسی که دارای اسلش پایانی هستند، به جای بازگشت به فرادادهی پوشه والد. این موضوع به طور ضمنی رویos.path.exists()وos.path.isdir()تأثیر گذاشت.bpo-26227: رفع کدگشایی نامهای میزبان در
socket.gethostbyaddr()وsocket.gethostbyname_ex().bpo-40432: اسکریپت بازسازی pegen در ویندوز بهروزرسانی شد تا پایتون ۳.۸ یا بالاتر را پیدا کرده و استفاده کند. پیش از این، بازسازی pegen از قبل به نسخهی ۳.۸ یا بالاتر نیاز داشت، اما ممکن است اسکریپت از نسخههای پایینتر پایتون استفاده کرده باشد.
bpo-43745: انتشار ویندوز در واقع به OpenSSL 1.1.1k بهروزرسانی شد. نسخههای قبلی برچسب اشتباه داشتند و در واقع دوباره شامل 1.1.1i بودند.
bpo-43652: بهروزرسانی Tcl و Tk به 8.6.11 در برنامهی نصب ویندوز.
bpo-43492: ارتقای برنامهی نصب ویندوز برای استفاده از SQLite 3.35.5.
bpo-30555: رفع خطاهای
WindowsConsoleIOدر حضور تغییر مسیر fd. وصله توسط Segev Finer.
مکاواس¶
bpo-42119: رفع بررسی مسیرهای SDK سیستمعامل macOS هنگام ساخت پایتون. محدود کردن جستجو برای تطابق با محتویات SDKها، یعنی فقط پروندههای موجود در
/System/Library،/System/IOSSupport، و/usrبه غیر از/usr/local. پیش از این، فرض بر این بود که هر چیزی تحت/Systemدر یک SDK قرار دارد که این امر باعث ایجاد مشکلاتی در ساختار جدید سیستم فایل در نسخههای 10.15 و بالاتر میشود که در آنها ممکن است سیستم فایلهای کاربر به نظر برسد که زیر/Systemمتصل (mount) شدهاند. مسیرهای موجود در/Libraryنیز به اشتباه به عنوان مکانهای SDK در نظر گرفته میشدند.bpo-43568: حذف پشتیبانی از MACOSX_DEPLOYMENT_TARGET < 10.3
bpo-44009: ارائهی فایل اجرایی "python3.x-intel64" برای امکان مجبور کردن قابلاعتماد ساختارهای چارچوب universal2 در macOS به اجرا تحت شبیهسازی Intel-64 مربوط به Rosetta 2 روی مکهای دارای تراشهی Apple Silicon. این کار میتواند برای آزمایش یا زمانی که بستههای universal2 هنوز در دسترس نیستند مفید باشد.
bpo-43851: ساخت SQLite با
SQLITE_OMIT_AUTOINITروی macOS. وصله توسط Erlend E. Aasland.bpo-43492: بهروزرسانی برنامهی نصب macOS برای استفاده از SQLite 3.35.4.
bpo-42235:
Mac/BuildScript/build-installer.pyاکنون هنگام ساخت روی macOS 10.15 یا بالاتر از «--enable-optimizations» و--with-ltoاستفاده خواهد کرد.
IDLE¶
bpo-37903: افزودن کنشهای ماوس به نوار کناری پوسته. کلیک چپ و کشیدن اختیاری، یک یا چند سطر را انتخاب میکند، درست مانند نوار کناری شماره سطر ویرایشگر. کلیک راست پس از انتخاب، یک منوی زمینهای با گزینهی «کپی با اعلانها» ظاهر میکند. این کار اعلانهای نوار کناری را با سطرهای متن انتخابشده ترکیب میکند.
bpo-43981: رفع نشت ارجاع در test_sidebar و test_squeezer. وصلهها توسط Terry Jan Reedy و Pablo Galindo
bpo-37892: ایجاد تورفتگی در ورودی پوستهی IDLE با فضای خالی (space) به جای تبها (tabs)
bpo-43655: پنجرههای محاورهای IDLE اکنون توسط مدیران پنجره در macOS و X Window به عنوان پنجرههای محاورهای شناخته میشوند.
bpo-37903: پوستهی IDLE اکنون اعلانها را در یک نوار کناری جداگانه نمایش میدهد.
رابط C API¶
bpo-43916: افزودن یک پرچم نوع جدید
Py_TPFLAGS_DISALLOW_INSTANTIATIONبرای غیرمجاز کردن ایجاد نمونههای نوع. وصله توسط Victor Stinner.bpo-43774: حذف کلان دستور
PYMALLOC_DEBUGکه دیگر استفاده نمیشود. قلابهای اشکالزدایی روی تخصیصدهندههای حافظه اکنون به طور پیشفرض در صورتی که پایتون در حالت اشکالزدایی ساخته شود (اگر کلان دستورPy_DEBUGتعریف شده باشد) نصب میشوند. علاوه بر این، آنها اکنون میتوانند در ساخت پایتون در حالت انتشار نیز استفاده شوند (به عنوان مثال: با استفاده از متغیر محیطیPYTHONMALLOC=debug).bpo-43962: تابع _PyInterpreterState_IDIncref() اکنون _PyInterpreterState_IDInitref() را فراخوانی میکند و همیشه id_refcount را افزایش میدهد. پیش از این، فراخوانی _xxsubinterpreters.get_current() میتوانست هنگام تخصیصزدایی یک شیء _xxsubinterpreters.InterpreterID، ناسازگاری در id_refcount ایجاد کند. وصله توسط Victor Stinner.
bpo-28254: افزودن توابع جدید C-API برای کنترل وضعیت جمعآوریکنندهی زباله:
PyGC_Enable()،PyGC_Disable()،PyGC_IsEnabled()، که متناظر با توابع موجود در ماژولgcهستند.bpo-43908: پرچم
Py_TPFLAGS_IMMUTABLETYPEرا برای اشیاء نوع تغییرناپذیر معرفی کرده و تابعPyType_Ready()را بهروزرسانی میکند تا آن را برای انواع ایستا تنظیم کند. بستهوصله (Patch) از Erlend E. Aasland.bpo-43795: تابع
PyMem_Calloc()اکنون در API محدود C (Py_LIMITED_API) در دسترس است.bpo-43868: تابع
PyOS_ReadlineFunctionPointer()دیگر توسط سرآیندهای API محدود C و توسطpython3.dllروی ویندوز صادر (export) نمیشود. مانند هر تابعی که مقدارFILE*را میپذیرد، این تابع نیز بخشی از ABI پایدار نیست.bpo-43795: تعاریف ABI پایدار و API محدود از یک مانیفست مرکزی تولید میشوند (PEP 652).
bpo-43753: تابع
Py_Is(x, y)افزوده شد تا بررسی کند آیا شیء x همان شیء y است یا خیر، که مشابه عبارتx is yدر پایتون است. همچنین توابعPy_IsNone()،Py_IsTrue()وPy_IsFalse()افزوده شدند تا بررسی کنند آیا یک شیء به ترتیب تکنمونهیNone، تکنمونهیTrueیا تکنمونهیFalseاست یا خیر. بستهوصله (Patch) از Victor Stinner.
نسخهی آلفای ۷ از پایتون ۳.۱۰.۰¶
تاریخ انتشار: ۲۰۲۱-۰۴-۰۵
امنیت¶
bpo-42988: CVE 2021-3426: ویژگی
getfileماژولpydocکه ممکن بود برای خواندن دلخواه پروندهها روی دیسک (آسیبپذیری پیمایش پوشه) مورد سوءاستفاده قرار گیرد، حذف شد. علاوه بر این، حتی کد منبع ماژولهای پایتون نیز میتوانند حاوی دادههای حساسی مانند گذرواژهها باشند. این آسیبپذیری توسط David Schwörer گزارش شده است.bpo-43285: ماژول
ftplibاز این پس بهطور پیشفرض به مقادیر آدرس IP بازگرداندهشده از سوی سرور در پاسخ به دستور PASV اعتماد نمیکند. این امر مانع از آن میشود که یک سرور مخرب FTP با استفاده از پاسخ، ترکیبهای آدرس IPv4 و درگاه (Port) را روی شبکهی کلاینت پویش (Probe) کند.کدهایی که به رفتار آسیبپذیر قبلی نیاز دارند، میتوانند یک صفت
trust_server_pasv_ipv4_addressرا روی نمونههایftplib.FTPخود روی مقدارTrueتنظیم کنند تا این قابلیت دوباره فعال شود.bpo-43439: قلابهای حسابرسی برای
gc.get_objects()،gc.get_referrers()وgc.get_referents()افزوده شدند. بستهوصله (Patch) از Pablo Galindo.
هسته و توکارها (Core and Builtins)¶
bpo-27129: بهروزرسانی عدد جادویی بایتکد سیپایتون.
bpo-43672: هنگام فراخوانی find_loader() خطای ImportWarning بالا آورده میشود.
bpo-43660: رفع فروپاشی (Crash) که هنگام جایگزینی
sys.stderrبا یک شیء فراخوانیپذیر که میتواند شیء را در حین چاپ شدن یک استثنا حذف کند، رخ میداد. بستهوصله (Patch) از Pablo Galindo.bpo-27129: مفسر بایتکد به جای بایتها، از افستهای دستورالعمل در سطح داخلی استفاده میکند. این امر تعداد دستورالعملهای EXTENDED_ARG مورد نیاز را کاهش داده و ارسال دستورالعمل را تا حدی سادهتر و بهینهتر میکند.
کتابخانه¶
bpo-40645: رفع نشت ارجاع در افزونهی
_hashopenssl. بستهوصله (Patch) از Pablo Galindo.
هسته و توکارها (Core and Builtins)¶
bpo-42134: فراخوانیهای find_module() توسط سیستم ایمپورت اکنون خطای ImportWarning را صادر میکنند.
bpo-41064: بهبود خطای نحو (Syntax error) برای استفادهی نامعتبر از عنصرهای ستارهدار مضاعف ('**') در افاسترینگها. بستهوصله (Patch) از Pablo Galindo.
bpo-43575: افزایش سرعت فراخوانیهای
map()با استفاده از قرارداد فراخوانیvectorcallدر PEP 590. بستهوصله (Patch) از Donghee Na.bpo-42137: سیستم ایمپورت اکنون ترجیح میدهد به جای
module_repr()از__spec__برایModuleType.__repr__استفاده کند.bpo-43452: اعمال بهینهسازیهای کوچک روی
_PyType_Lookup()برای بهبود کارایی جستجوی نهانگاه در حالت رایجِ یافت شدن در نهانگاه (cache hit).bpo-43555: گزارش آفست ستون برای
SyntaxErrorدر صورت وجود نویسههای ادامهی سطر نامعتبر. وصله توسط پابلو گالیندو (Pablo Galindo).bpo-43517: رفع تشخیص نادرست ایمپورتهای دایرهای هنگام استفاده از
from pkg.mod import attrکه باعث ایجاد مثبتهای کاذب در کدهای چندنخی غیرساده میشد.bpo-43497: ارسال اخطارهای نحو (SyntaxWarnings) برای ادعاها با ثوابت تاپل؛ این یک رگرسیون است که در نسخهی python3.7 وارد شده بود.
bpo-39316: ردیابیاکنون شمارهسخطهای صحیحی را برای دسترسی به ویژگیها فراهم میکند، زمانی که ویژگی در سطری متفاوت از شیء قرار دارد. این امر اشکالزدایی و پروفایلگیری را برای زنجیرهمتدهای چندسطری بهبود میبخشد.
bpo-35883: اگر آرگومان خط فرمان حاوی یک نویسهی یونیکد نامعتبر باشد، پایتون دیگر در زمان راهاندازی با خطای مهلک متوقف نمیشود. تابع
Py_DecodeLocale()اکنون دنباله بایتهایی را که بهعنوان نویسههای یونیکد خارج از بازهی [U+0000; U+10ffff] دیکد میشوند، خنثی میکند.bpo-43410: رفع باگی که باعث میشد پارسر هنگام بروز خطاهای نحوی در حین خواندن ورودی از stdin از کار بیفتد. وصله توسط پابلو گالیندو (Pablo Galindo).
bpo-43406: رفع یک شرایط رقابت احتمالی که در آن
PyErr_CheckSignalsتلاش میکند یک هندلر سیگنال غیرپایتونی را اجرا کند.bpo-42128: افزودن
__match_args__به struct sequence objects. وصله توسط پابلو گالیندو (Pablo Galindo).bpo-43390: سیپایتون اکنون پرچم
SA_ONSTACKرا درPyOS_setsigبرای هندلرهای سیگنال پیشفرض ماشین مجازی تنظیم میکند. این کار با سایر کدهای درونفرآیندی که یک ماژول توسعهای یا ابزار تعبیهشده ممکن است فرا بخواند (مانند cgo در زبان Go) سازگارتر است؛ جایی که پشتههای نخ بسیار کوچک هنجار هستند وsigaltstack()برای فراهم کردن هندلرهای سیگنال استفاده شده است. این تغییر برای اکثریت قاطع فرآیندهایی که از sigaltstack استفاده نمیکنند، یک عملیات بیاثر (no-op) است.bpo-43287: افزایش سرعت فراخوانیهای
filter()با استفاده از قرارداد فراخوانیvectorcallدر PEP 590. وصله توسط دونگی نا (Donghee Na).bpo-37448: افزودن نگاشت حافظه مبتنی بر درخت رادیکس برای ردیابی آرناهای obmalloc در حال استفاده. استفاده از آن برای جایگزینی پیادهسازی قدیمی address_in_range(). رویکرد درخت رادیکس افزایش اندازههای استخر را فراتر از اندازهی صفحهی سیستمعامل آسان میکند. تقویت اندازهی استخر و آرنا به obmalloc اجازه میدهد درصد بهطور قابلتوجهی بالاتری از درخواستها را از مسیرهای فوقسریع خود مدیریت کند.
همچنین این مزیت را دارد که رفتار ناسالم حافظه در address_in_range() قبلی را از بین میبرد. تابع قدیمی address_in_range() با حاشیهنویسیهای _Py_NO_SANITIZE_ADDRESS، _Py_NO_SANITIZE_THREAD و _Py_NO_SANITIZE_MEMORY علامتگذاری شده بود. آن حاشیهنویسیها دیگر مورد نیاز نیستند.
برای غیرفعال کردن نگاشت درخت رادیکس، یک پرچم پیشپردازنده را به شکل زیر تنظیم کنید:
-DWITH_PYMALLOC_RADIX_TREE=0.Co-authored-by: Tim Peters <tim.peters@gmail.com>
bpo-29988: مدیریت استثناهای ناهمگام و درخواستهای رها کردن GIL فقط هنگام بازگشت از یک فراخوانی یا در لبههای پشتی حلقهها. این امر تضمین میکند که
__exit__()همیشه در دستورات with فراخوانی میشود، حتی برای وقفهها.
کتابخانه¶
bpo-43720: مستندسازی منسوخ شدنهای مختلف کتابخانهی استاندارد در imp، pkgutil و importlib.util برای حذف در پایتون 3.12.
bpo-43433: کلاس
xmlrpc.client.ServerProxyدیگر پرسوجو (query) و قطعه (fragment) را در نشانیوب سرور نادیده نمیگیرد.bpo-31956: متد
index()ازarray.arrayاکنون دارای پارامترهای اختیاری start و stop است.bpo-40066: Enum: تنظیم
repr()برای نمایش فقط enum و نام عضو (نه مقدار و نه کمانکها) وstr()برای نمایش فقط نام عضو. بهروزرسانی و بهبود مستندات برای تطابق با آن.bpo-42136: منسوخسازی تمامی متدهای module_repr() موجود در importlib، زیرا استفاده از آنها در پایتون ۳.۱۲ در حال کنار گذاشته شدن است.
bpo-35930: بالا آوردن یک استثنا که در یک نمونهی «future» ایجاد شده است، چرخههای ارجاع ایجاد خواهد کرد.
bpo-41369: اتمام بهروزرسانی کتابخانهی خارجی libmpdec به نسخهی ۲.۵.۱. پچ توسط Stefan Krah.
bpo-43422: بازنشانی API زبان C مربوط به _decimal که در bpo-41324 اضافه شده بود.
bpo-43577: رفع بنبست هنگام استفاده از کالبک عیبیابی
ssl.SSLContextباssl.SSLContext.sni_callback().bpo-43571: اکنون ایجاد سوکتهای MPTCP با IPPROTO_MPTCP امکانپذیر است.
bpo-43542: مقادیر
image/heicوimage/heifبهmimetypesاضافه شدند.bpo-40645: ماژول
hmacاکنون هنگامی که آرگومان digestmod یک نام هش یا تابع هش داخلی باشد، از پیادهسازی HMAC اوپناساسال استفاده میکند.bpo-43510: پیادهسازی PEP 597: افزودن اخطار
EncodingWarning، گزینهی-X warn_default_encoding، متغیر محیطیPYTHONWARNDEFAULTENCODINGو مقدار آرگومانencoding="locale".bpo-43521: تابع
ast.unparseاکنون میتواند مقادیر NaN و مجموعههای خالی را رندر کند.bpo-42914: تابع
pprint.pprint()یک آرگومان اختیاری بولی جدید به نامunderscore_numbersدریافت میکند تا اعداد صحیح را با ارقامی که هزارگان آنها با یک نویسهی زیرخط (underscore) جدا شدهاند برای خوانایی بهتر چاپ کند (برای مثال1_000_000به جای1000000).bpo-41361: فراخوانیهای
rotate()به لطف تجزیه آرگومان سریعتر، اکنون کمی سریعتر شدهاند.bpo-43423: تابع
subprocess.communicate()دیگر هنگام بروز مهلت زمانی روی ویندوز، اگر بافر ورودی/خروجی stdout یا stderr خالی باشد، خطای IndexError ایجاد نمیکند.bpo-27820: رفع خطای قدیمی در smtplib.SMTP که در آن انجام AUTH LOGIN با مقدار initial_response_ok=False با شکست مواجه میشد.
دلیل این است که اگر یک رشتهی چالش (challenge) داده شود، SMTP.auth_login _همیشه_ یک رمز عبور برمیگرداند، بنابراین با استاندارد AUTH LOGIN سازگار نیست.
همچنین خطای مربوط به آزمون smtpd را رفع میکند.
bpo-43445: افزودن ماژولهای فریزشده به
sys.stdlib_module_names. برای مثال، افزودن نامهای"_frozen_importlib"و"_frozen_importlib_external".bpo-43245: افزودن پشتیبانی از آرگومانهای کلیدواژهای به
ChainMap.new_child().bpo-29982: افزودن پارامتر اختیاری ignore_cleanup_errors به
tempfile.TemporaryDirectory()و اجازه دادن به تلاشهای چندگانهیcleanup(). مشارکت توسط C.A.M. Gerlach.bpo-43428: شامل تغییرات از importlib_metadata 3.7:
بهبودهای عملکردی در کشف توزیعها.
entry_pointsفقط توزیعهای یکتا را برمیگرداند.شیء جدیدی به نام
EntryPointsرا برای نگهداری مجموعهای از نقطههای ورود با متدهای کمکی برای انتخاب نقطههای ورود بر اساس گروه یا نام معرفی میکند. اگر پارامترهای انتخاب فراهم شوند،entry_pointsاکنون این شیء را برمیگرداند، اما برای سازگاری به بازگرداندن یک شیء دیکت (dict) ادامه میدهد. کاربران تشویق میشوند که به رابط انتخاب تکیه کنند. نتیجهی شیء دیکت احتمالاً در آینده منسوخ خواهد شد.تابع packages_distributions برای بازگرداندن نگاشتی از بستهها به توزیعهایی که آنها را فراهم میکنند، اضافه شد.
bpo-43332: بهبود کارایی شبکهسازی
http.clientهنگام استفاده از یک پراکسی از طریقset_tunnel(). در جریان راهاندازی اتصال، فراخوانیهای ارسال کوچک کمتری انجام میشوند.bpo-43420: بهبود عملکرد محاسبات
fractions.Fractionبرای اجزای بزرگ. مشارکتکننده: Sergey B. Kirpichev.bpo-43356: امکان ارسال یک شمارهی سیگنال به
_thread.interrupt_main().bpo-43399: رفع کار نکردن
ElementTree.extendروی پیمایشگرها هنگام استفاده از پیادهسازی پایتونbpo-43369: بهبود مدیریت خطای
sqlite3: اگرsqlite3_column_text()وsqlite3_column_blob()مقدارSQLITE_NOMEMرا تنظیم کنند، اکنونMemoryErrorبالا آورده میشود. پچ توسط Erlend E. Aasland.bpo-43368: رفع یک رگرسیون معرفیشده در PR 24562 که در آن یک رشتهبایت خالی بهجای
b''به عنوانNoneدرsqlite3دریافت میشد. پچ توسط Mariusz Felisiak.bpo-41282: سطح پشتهی (stacklevel) هشدار
DeprecationWarningصادر شده ازimport distutilsاصلاح شد.bpo-42129: ماژول
importlib.resourcesاکنون بستههای فضای نام را محترم میشمارد، منابع را از هر مکان در فضای نام همانطور که درimportlib_resourcesنسخه ۳.۲ معرفی شد ادغام میکند و شامل تغییرات اتفاقی تا نسخه ۵.۰.۳ است.bpo-43295: تابع
datetime.datetime.strptime()اکنون هنگام تطبیق'z'با مشخصکنندهی قالب%zبهجایIndexErrorخطایValueErrorرا بالا میآورد.bpo-43125: اگر base64mime.body_encode بایتهای خالی دریافت کند، رشتهی خالی برگردانده شود.
bpo-43084: تابع
curses.window.enclose()اکنون به جای1یا0، مقدارTrueیاFalseرا (همانطور که مستند شده بود) برمیگرداند.bpo-42994: اضافه کردن انواع MIME برای opus، AAC، 3gpp و 3gpp2
bpo-14678: اضافه کردن یک متد invalidate_caches() به کلاس zipimport.zipimporter برای پشتیبانی از importlib.invalidate_caches(). پچ توسط Desmond Cheong.
bpo-42782: شکست سریع در
shutil.move()برای جلوگیری از ایجاد دایرکتوریهای مقصد در صورت بروز خطا.bpo-40066: توابع
repr()وstr()در enumها تغییر کردهاند:repr()اکنون به شکل EnumClass.MemberName وstr()به شکل MemberName است. علاوه بر این، enumهای کتابخانهی استاندارد که محتویات آنها به عنوان ویژگیهای ماژول در دسترس هستند، مانندRegexFlag.IGNORECASE، مقدارrepr()خود را به شکل module.name دارند، به عنوان مثالre.IGNORECASE.bpo-26053: رفع باگی که در آن دستور اجرای تعاملی
pdbآرگومانها را از خط فرمان پوسته انعکاس میداد، حتی اگر آن آرگومانها در اعلان pdb بازنویسی شده بودند.bpo-24160: رفع باگی که در آن نقاط ایست (breakpoints) در حالت تعاملی (
pdb) در طول چندین نشست (sessions) دیباگر باقی نمیماندند.bpo-40701: هنگامی که متغیر سراسری
tempfile.tempdirروی مقداری از نوع بایتها (bytes) تنظیم میشود، اکنون به شکلی سازگار مدیریت میشود. پیشتر در این وضعیت ممکن بود از برخی رابطهای برنامهنویسی (API) مربوط به tempfile در صورت موجود نبودن پوشه، استثناهایی پرتاب شوند. همچنین تضمین میکند که توابعtempfile.gettempdir()وtempfile.gettempdirb()به ترتیب همیشه مقادیرstrوbytesرا برگردانند.bpo-39342: قرار دادن
X509_V_FLAG_ALLOW_PROXY_CERTSدر دسترس به صورتVERIFY_ALLOW_PROXY_CERTSبرای امکان اعتبارسنجی گواهی پراکسی همانطور که در https://docs.openssl.org/1.1.1/man7/proxy-certificates/ توضیح داده شده است.bpo-31861: افزودن builtins.aiter و builtins.anext. وصله توسط جاشوا برونسون (@jab)، دنیل پوپ (@lordmauve) و جاستین وانگ (@justin39).
مستندات¶
bpo-43199: پاسخ به پرسش «چرا دستور goto وجود ندارد؟» در پرسشهای متداول طراحی و تاریخچه (Design and History FAQ).
bpo-43407: شفافسازی شد که نتیجهی تابع
time.monotonic()،time.perf_counter()،time.process_time()یاtime.thread_time()را میتوان با نتیجهی هر فراخوانی بعدی به همان تابع مقایسه کرد، نه فقط فراخوانی بلافاصلهی بعدی.bpo-43354: اصلاح مستندات نوع داده برای
Fault.faultCode؛ نوع داده باید به جایstrبرابر باintباشد.bpo-41933: شفافسازی عبارتپردازی s * n در بخش عملیاتهای رایج دنباله (Common Sequence Operations)
آزمونها¶
ساخت¶
bpo-43179: معرفی و استفادهی صحیح از ALIGNOF_X به جای SIZEOF_X برای کد مربوط به همترازسازی (alignment) در روالهای بهینهسازیشدهی رشته. وصله توسط جسیکا کلارک.
bpo-43631: بهروزرسانی سیستمعاملهای مکاوس، ویندوز و CI به نسخه OpenSSL 1.1.1k.
bpo-43617: بهبود configure.ac: بررسی وجود بستهی autoconf-archive و حذف نسخههای محلی ماژولهای M4.
bpo-43466: اسکریپت
configureاکنون از گزینهی--with-openssl-rpathپشتیبانی میکند.bpo-43372: استفاده از
_freeze_importlibبرای تولید کد مربوط به ماژول__hello__. این رویکرد تضمین میکند که کد با نسخهی مفسر مطابقت دارد. پیشتر، از PYTHON_FOR_REGEN برای تولید کد استفاده میشد که ممکن است نادرست باشد. قالب مارشالکردن برای شیءهای کد با bpo-42246، ثبت نهایی 877df851 تغییر کرده است. کد و اندازههای مورد انتظار کد در آزمون ctypes test_frozentable را بهروزرسانی کنید.
Windows¶
IDLE¶
bpo-42225: مستندسازی اینکه محیط IDLE ممکن است در یونیکس به دلیل قوانین تغییر چهرهی IP (IP masquerade) پیکربندینشده یا نقص در نمایش نویسههای رنگی پیچیده (غیر ascii) با خطا مواجه شود.
رابط C API¶
bpo-43688: اگر پایتون در حالت دیباگ ساخته شود (در صورتی که ماکروی
Py_DEBUGتعریف شده باشد)، رابط برنامهنویسی (API) محدود C اکنون پشتیبانی میشود. در رابط برنامهنویسی محدود C، توابعPy_INCREF()وPy_DECREF()اکنون به جای دسترسی مستقیم به عضوPyObject.ob_refcnt، به عنوان فراخوانیهای تابع کدر پیادهسازی میشوند، به این شرط که پایتون در حالت دیباگ ساخته شده باشد و ماکرویPy_LIMITED_APIپایتون ۳.۱۰ یا جدیدتر را هدف قرار دهد. پشتیبانی از رابط برنامهنویسی محدود C در حالت دیباگ ممکن شد زیرا ساختارPyObjectاز پایتون ۳.۸ به بعد در حالت انتشار (release) و دیباگ یکسان است (نگاه کنید به bpo-36465).رابط برنامهنویسی (API) محدود C همچنان در ساخت ویژهی
--with-trace-refs(ماکرویPy_TRACE_REFS) پشتیبانی نمیشود.توسط Victor Stinner وصل شد.
bpo-43244: حذف پروندهی سرآیند
pyarena.hهمراه با توابع زیر:PyArena_New()PyArena_Free()PyArena_Malloc()PyArena_AddPyObject()
این توابع مستندنشده بودند، از API محدود C کنار گذاشته شده بودند و فقط بهصورت داخلی توسط کامپایلر استفاده میشدند. بستهی اصلاحی (Patch) توسط Victor Stinner.
bpo-43244: توابع کامپایلر و پارسر را که از نوع
struct _modاستفاده میکنند حذف کنید، زیرا API عمومی AST C حذف شده است:PyAST_Compile()PyAST_CompileEx()PyAST_CompileObject()PyFuture_FromAST()PyFuture_FromASTObject()PyParser_ASTFromFile()PyParser_ASTFromFileObject()PyParser_ASTFromFilename()PyParser_ASTFromString()PyParser_ASTFromStringObject()
این توابع مستندنشده بودند و از API محدود C کنار گذاشته شدند. بستهی اصلاحی (Patch) توسط Victor Stinner.
bpo-43244: پروندههای سرآیند
ast.h،asdl.hوPython-ast.hرا حذف کنید. این توابع مستندنشده بودند و از API محدود C کنار گذاشته شدند. بیشتر نامهای تعریفشده توسط این پروندههای سرآیند پیشوندPyنداشتند و بنابراین میتوانستند باعث تداخل نام شوند. برای مثال،Python-ast.hکلاندستوری (macro) به نامYieldتعریف میکرد که با نامYieldاستفادهشده توسط سرآیند ویندوز<winbase.h>تداخل داشت. بهجای آن از ماژولastپایتون استفاده کنید. بستهی اصلاحی (Patch) توسط Victor Stinner.bpo-43541: یک رگرسیون در
PyEval_EvalCodeEx()را رفع کنید: شمارش ارارجاعها روی توابع توکار (builtins) اصلاح شد. بستهی اصلاحی (Patch) توسط Victor Stinner.bpo-43244: پروندهی سرآیند
symtable.hو توابع مستندنشده را حذف کنید:PyST_GetScope()PySymtable_Build()PySymtable_BuildObject()PySymtable_Free()Py_SymtableString()Py_SymtableStringObject()
تابع
Py_SymtableString()به اشتباه بخشی از ABI پایدار بود اما نمیتوانست استفاده شود، زیرا پروندهی سرآیندsymtable.hاز API محدود C مستثنی شده بود.ماژول
symtableدر پایتون همچنان در دسترس است و بدون تغییر باقی مانده است.توسط Victor Stinner وصل شد.
bpo-43244: حذف تابع
PyAST_Validate(). ساختن یک شیء درخت نحوی انتزاعی (AST) (نوعmod_ty) با API عمومی C دیگر امکانپذیر نیست. این تابع پیشتر از API محدود C حذف شده بود (PEP 384). تکهکد از Victor Stinner.
Python 3.10.0 alpha 6¶
Release date: 2021-03-01
امنیت¶
bpo-42967: رفع آسیبپذیری مسمومیت نهانگاه وب (web cache poisoning) با تنظیم پیشفرض جداکنندهی آرگومانهای پرسوجو به
&و امکان انتخاب جداکنندهی سفارشی توسط کاربر.
هسته و توکارها (Core and Builtins)¶
bpo-43321: رفع خطای
SystemErrorکه هنگام استفاده ازPyArg_Parse*()با#اما بدون تعریفPY_SSIZE_T_CLEANرخ میداد.bpo-36346: توابع
PyArg_Parse*()اکنون هنگام استفاده از قالبهایuیاZهشدارDeprecationWarningصادر میکنند. برای جزئیات PEP 623 را ببینید.bpo-43277: افزودن تابع جدید
PySet_CheckExact()به C-API برای بررسی اینکه آیا یک شیء نمونهای ازsetاست اما نمونهای از یک زیرنوع نیست. تکهکد از Pablo Galindo.bpo-42990: سازندهی
types.FunctionTypeاکنون اگر دیکشنری globals فاقد کلید"__builtins__"باشد، به جای استفاده از{"None": None}به عنوان توابع توکار، توابع توکار فعلی را به ارث میبرد: رفتاری مشابه با عملکردهای توابعeval()وexec(). تعریف یک تابع با دستورdef function(...): ...در پایتون تحت تأثیر قرار نمیگیرد، متغیرهای سراسری را نمیتوان با این نحو بازنویسی کرد: این روش نیز توابع توکار فعلی را به ارث میبرد. تکهکد از Victor Stinner.bpo-42990: توابع دارای ویژگی
__builtins__جدیدی هستند که برای جستجوی نمادهای توکار هنگام اجرای یک تابع استفاده میشود، به جای جستجو در__globals__['__builtins__']. تکهکد از Mark Shannon و Victor Stinner.bpo-43149: بهبود پیام خطا در پارسر برای گروههای استثنای بدون پرانتز. تکهکد از Pablo Galindo.
bpo-43121: رفع پیام خطای نادرست
SyntaxErrorبرای کامای گمشده در مقادیر لفظی. تکهکد از Pablo Galindo.
کتابخانه¶
bpo-42819:
readline: غیرفعال کردن صریح جایگذاری کروشهدار (bracketed paste) در مفسر تعاملی، حتی اگر در inputrc تنظیم شده باشد، به طور پیشفرض فعال باشد (مانند GNU Readline 8.1)، یا کاربرreadline.read_init_file()را فراخوانی کند. REPL پایتون پشتیبانی از جایگذاری کروشهدار را پیادهسازی نکرده است. همچنین، حالت کروشهدار دنبالهی گریز"\x1b[?2004h"را در خروجی استاندارد (stdout) مینویسد که باعث شکست آزمون در برنامههایی میشود که از آن پشتیبانی نمیکنند. همچنان میتوان آن را با فراخوانیreadline.parse_and_bind("set enable-bracketed-paste on")به طور صریح فعال کرد. تکهکد از Dustin Rodrigues.
هسته و توکارها (Core and Builtins)¶
bpo-42808: فراخوانیهای سادهی
type(object)اکنون به لطف شیوهی فراخوانیvectorcallسریعتر شدهاند. وصله توسط Dennis Sweeney.bpo-42217: ساختار کامپایلر را طوری تغییر دهید که شیءهای
co_codeوco_linetableمشابه را در یک ماژول ادغام کند؛ همانکاری که پیشتر برایco_constsانجام شده بود.bpo-41972: توابع جستجوی زیررشته مانند
str1 in str2وstr2.find(str1)اکنون گاهی اوقات از الگوریتم مقایسهی رشتهی «دوجهتی» (Two-Way) استفاده میکنند تا از رفتار درجهی دوم روی رشتههای طولانی جلوگیری کنند.bpo-42128: پیادهسازی PEP 634 (تطبیق الگوی ساختاری). وصله توسط Brandt Bucher.
کتابخانه¶
bpo-40692: در
concurrent.futures.ProcessPoolExecutor، اعتبارسنچی کنید کهmultiprocess.synchronize()روی یک سکوی مشخص موجود باشد و در مجموعهی آزمونconcurrent.futuresبه آن بررسی تکیه کنید تا بتوانیم آزمونهای نامرتبط باProcessPoolExecutorرا روی آن سکوها اجرا کنیم.
هسته و توکارها (Core and Builtins)¶
bpo-38302: اگر
object.__ipow__()مقدارNotImplementedرا برگرداند، عملگر درست همانطور که انتظار میرود بهobject.__pow__()وobject.__rpow__()بازمیگردد.
کتابخانه¶
bpo-43316: برنامهی خط فرمان
python -m gzipاکنون هنگام شناسایی یک پسوند پشتیبانینشده بهدرستی با خطا مواجه میشود. این برنامه با یک کد خروج غیرصفر خارج میشود و یک پیام خطا را در stderr چاپ میکند.bpo-43317: اندازهی تکه را برای تابع اصلی ماژول
gzipروی io.DEFAULT_BUFFER_SIZE تنظیم کنید. این کار کمی سریعتر از ثابت ۱۰۲۴ بایتی است که پیشتر استفاده میشد.bpo-43146: مدیریت None در نسخههای تکآرگومان
print_exception()وformat_exception().bpo-43260: رفع این مشکل که TextIOWrapper نمیتواند پس از نوشتن متنهای بسیار بزرگ، بافر داخلی را برای همیشه تخلیه کند.
bpo-43258: جلوگیری از تخصیص غیرضروری زمینهی تابع تجمیعی
sqlite3هنگامی که هیچ سطری با یک پرسوجوی تجمیعی مطابقت ندارد. وصله توسط Erlend E. Aasland.bpo-43251: بهبود مدیریت خطای
sqlite3: شکستهایsqlite3_column_name()اکنون منجر بهMemoryErrorمیشوند. وصله توسط Erlend E. Aasland.bpo-40956: رفع خطای قطعی حافظه (segfault) در
sqlite3.Connection.backup()اگر هیچ آرگومانی ارائه نشده باشد. این رگرسیون توسط PR 23838 ایجاد شده بود. وصله توسط Erlend E. Aasland.bpo-43172: ماژول readline اکنون هنگام ساخته شدن مستقیماً در برابر libedit، آزمونهای خود را با موفقیت میگذارند. تفاوتهای API ناسازگار موجود بر اساس استفاده از libreadline در برابر libedit در رفتار
readline.get_begidx()وreadline.get_endidx()باقی میماند.bpo-43163: رفع باگی در
codeopکه باعث میشد وقتی قطعهکدهای چندسطری دارای پرانتزهای بستهنشده هستند، برای ورودی بیشتر درخواست نکند. وصله توسط Pablo Galindobpo-43162: منسوخ کردن قابلیت پشتیبانینشدهی دسترسی به اعضای enum به عنوان ویژگیهای سایر اعضای enum
bpo-43146: رفع رگرسیون اخیر در مدیریت آرگومان None در توابع ماژول
traceback.bpo-43102: متد __new__ در namedtuple مقدار __builtins__ خود را به جای یک دیکشنری واقعی روی None تنظیم کرده بود. این موضوع مشکلاتی را برای ابزارهای دروننگری ایجاد کرد.
bpo-43106: افزودن
O_EVTONLY،O_FSYNC،O_SYMLINKوO_NOFOLLOW_ANYبرای مکاواس (macOS). وصله توسط Donghee Na.bpo-42960: افزودن ثابت
resource.RLIMIT_KQUEUESاز سیستمعامل FreeBSD به ماژولresource.bpo-42151: پیادهسازی پایتون خالص ماژول
xml.etree.ElementTreeرا وادار کنید تا در خصوص مقادیر پیشفرض صفتها (با تنظیم نکردنspecified_attributes=1) دقیقاً مشابه پیادهسازی C (_elementree) رفتار کند.bpo-29753: در ctypes، اکنون فیلدهای بیتی بستهبندیشده به درستی محاسبه میشوند و اولین آیتم از فیلدهای بیتی بستهبندیشده اکنون به درستی کوچک میشود.
مستندات¶
bpo-27646: شفافسازی اینکه عبارت 'yield from <expr>' با هر پیمایشپذیر (iterable) کار میکند، نه فقط پیمایشگرها (iterator).
bpo-36346: برخی از واسطهای برنامهنویسی (API) منسوخ یونیکد را که در مستندات به عنوان «در نسخهی ۴.۰ حذف خواهد شد» ذکر شدهاند، به «۳.۱۲» بهروزرسانی کنید. برای جزئیات به PEP 623 مراجعه کنید.
آزمونها¶
bpo-43288: رفع مشکل test_importlib برای رد شدن صحیح آزمونهای پروندههای یونیکد در صورتی که سامانه فایلبندی از آنها پشتیبانی نکند.
ساخت¶
bpo-43174: ساخت ویندوز اکنون از گزینهی کامپایلر
/utf-8استفاده میکند.bpo-43103: اضافه کردن یک گزینهی پیکربندی جدید
--without-static-libpythonبرای عدم ساخت کتابخانهی ایستایlibpythonMAJOR.MINOR.aو عدم نصب پروندهی شیءpython.o.bpo-13501: اسکریپت پیکربندی اکنون میتواند با استفاده از گزینهی خط فرمان
--with-readline=editlineبه جای readline از libedit استفاده کند.bpo-42603: اسکریپت پیکربندی را وادار کنید تا برای شناسایی مکان سرآیندها و کتابخانههای Tcl/Tk که برای ساخت tkinter استفاده میشوند، از pkg-config بهره بگیرد.
در سیستمعامل macOS، پیکربندی Tcl/Tk ارائه شده توسط pkg-config به چارچوبهای Tcl/Tk نصبشده در
/{System/,}Library/Frameworksترجیح داده خواهد شد. اگر هر دو وجود داشته باشند و دومی ترجیح داده شود، لازم است گزینههای پیکربندی مناسب--with-tcltk-*به صراحت تنظیم شوند.bpo-39448: اضافه کردن هدف makefile به نام «regen-frozen» که کد مربوط به ماژول فریزشدهی
__hello__را دوباره تولید میکند.
Windows¶
bpo-43155: تابع
PyCMethod_New()اکنون درpython3.libموجود است.
مکاواس¶
bpo-41837: بهروزرسانی ساخت نصبکنندهی macOS برای استفاده از OpenSSL 1.1.1j.
IDLE¶
bpo-43283: مستندسازی این موضوع که چاپ کردن در پوستهی IDLE اغلب کندتر از چاپ کردن در یک پایانه (terminal) سیستمی است و میتوان با قالببندی اولیه یک رشتهی واحد پیش از چاپ، سرعت آن را افزایش داد.
رابط C API¶
bpo-43278: همیشه اطلاعات کامپایلر و سیستم را در سطر اول پیام خوشآمدگویی پوسته تعاملی پایتون (REPL) قرار دهید.
bpo-43270: حذف کلاندستور خصوصی
_PyErr_OCCURRED(): به جای آن از تابع عمومیPyErr_Occurred()استفاده کنید.bpo-35134: انتقال پروندههای odictobject.h، parser_interface.h، picklebufobject.h، pydebug.h و pyfpe.h به پوشهی cpython/. این پروندهها نباید به طور مستقیم گنجانده شوند، زیرا پیشتر توسط Python.h گنجانده شدهاند: Include Files.
bpo-35134: انتقال پروندههای pyarena.h، pyctype.h و pytime.h به پوشهی cpython/. این پروندهها نباید به طور مستقیم گنجانده شوند، زیرا پیشتر توسط Python.h گنجانده شدهاند: Include Files.
bpo-40170: تابع
PyExceptionClass_Name()اکنون همیشه به عنوان یک تابع اعلام میشود تا جزئیات پیادهسازی پنهان بمانند. این کلاندستور پیشتر به عضوPyTypeObject.tp_nameبه طور مستقیم دسترسی پیدا میکرد. پچ توسط Erlend E. Aasland.bpo-43239: تابع
PyCFunction_New()اکنون هنگام کامپایل با-fvisibility=hiddenدر رابط دودویی کاربردی (ABI) صادر میشود.bpo-40170: تابع
PyIter_Check()اکنون همیشه به عنوان یک تابع اعلام میشود تا جزئیات پیادهسازی پنهان بمانند. این ماکرو پیشتر بهPyTypeObject.tp_iternextمستقیماً دسترسی داشت. وصلهای از Erlend E. Aasland.bpo-40170: تبدیل ماکرو
PyDescr_IsData()به یک تابع برای پنهان کردن جزئیات پیادهسازی: این ماکرو مستقیماً بهPyTypeObject.tp_descr_setدسترسی پیدا میکرد. پچ توسط Erlend E. Aasland.bpo-43181: تبدیل ماکرو
PyObject_TypeCheck()به یک تابع درونخطی (inline) ایستا. پچ توسط Erlend E. Aasland.
نسخهی ۳.۱۰.۰ آلفا ۵¶
تاریخ انتشار: ۲۰۲۱-۰۲-۰۲
امنیت¶
bpo-42938: اجتناب از بافرهای ایستا هنگام محاسبهی repr مقادیر
ctypes.c_doubleوctypes.c_longdouble.
هسته و توکارها (Core and Builtins)¶
bpo-42990: بازسازی خانوادهی توابع
PyEval_.یک تابع جدید
_PyEval_Vectorاضافه شده است تا فراخوانیهای پایتون از C سادهسازی شود.تابع
_PyEval_EvalCodeWithNameحذف شدتابع
PyEval_EvalCodeExبهعنوان بخشی از API حفظ شده است، اما بهصورت داخلی استفاده نمیشود
bpo-38631: جایگزینی فراخوانیهای
Py_FatalError()در کامپایلر با استثناهای معمولیSystemError. پچ توسط Victor Stinner.bpo-42997: بهبود پیام خطا برای مفقود بودن ":" پیش از بلوکها. پچ توسط Pablo Galindo.
bpo-43017: بهبود پیام خطا در پارسر هنگام استفاده از تاپلهای بدون پرانتز در درک مجموعهها (comprehensions). پچ توسط Pablo Galindo.
bpo-42986: رفع خرابی پارسر هنگام گزارش خطاهای نحو (سینتکس) در افاسترینگها با نویسههای خط جدید. پچ توسط Pablo Galindo.
bpo-40176: خطاهای نحوی برای مقادیر لفظی رشتهای خاتمهنیافته اکنون بهجای گزارش EOF/EOL به ابتدای رشته اشاره میکنند.
bpo-42927: نهانگاه درونخطی برای
LOAD_ATTRاکنون دسترسی به ویژگیهای تعریفشده توسط__slots__را نیز بهینهسازی میکند. این کار خواندن چنین ویژگیهایی را تا ۳۰ درصد سریعتر میکند.bpo-42864: بهبود پیامهای خطا در پارسر هنگامی که پرانتزها بسته نشدهاند. پچ توسط Pablo Galindo.
bpo-42924: رفع کپی کردن نادرست دادهها از ابتدای بافر در تکرار
bytearray، حتی اگر دادهها در بافر افست داشته باشند (مثلاً پس از انتساب مجدد یک اسلایس در ابتدایbytearrayبه یک رشتهی بایتی کوتاهتر).bpo-42882: رفع مشکل تابع
_PyUnicode_FromId()(API مربوط به (_Py_IDENTIFIER(var)) هنگام فراخوانی مکررPy_Initialize()/Py_Finalize(): حفظ مقدار_PyRuntime.unicode_ids.next_index.bpo-42827: رفع خرابی هنگام محاسبهی سطر خطای یک
SyntaxErrorدر برخی عبارتهای چندخطی.bpo-42823: ویژگی frame.f_lineno حتی زمانی که frame.f_trace روی True تنظیم شده باشد نیز درست است
کتابخانه¶
bpo-37324: نامهای مستعار منسوخ شده به کلاسهای پایه انتزاعی مجموعهها از ماژول
collectionsحذف شدند.
هسته و توکارها (Core and Builtins)¶
کتابخانه¶
bpo-43108: نشت ارجاع در ماژول
cursesبرطرف شد. وصله توسط پابلو گالیندو (Pablo Galindo)bpo-43077: بهروزرسانی pip بستهبندیشده به نسخهی 21.0.1 و setuptools به نسخهی 52.0.0.
bpo-41282: منسوخ اعلام کردن
distutilsدر مستندات و افزودن هشدار هنگام ایمپورت.bpo-43014: بهبود کارایی ماژول
tokenizeبه میزان ۲۰ تا ۳۰ درصد. وصله توسط آنتونی سوتیل (Anthony Sottile).bpo-42323: رفع تابع
math.nextafter()برای مقادیر NaN روی سیستم AIX.bpo-42955: افزودن
sys.stdlib_module_namesکه حاوی فهرست نامهای ماژولهای کتابخانهی استاندارد است. وصله توسط ویکتور استینر (Victor Stinner).bpo-42944: رفع مشکل
random.Random.sampleهنگامی که آرگومانcountsبرابر باNoneنیست.bpo-42934: استفاده از پارامتر جدید
compactدرTracebackExceptionدرونTestResultبه منظور کاهش زمان و حافظهی مصرفشده توسط قالببندی ردگیری.bpo-42931: افزودن تابع
randbytes()بهrandom.__all__.bpo-38250: [Enum] پرچمهایی که از یک بیت تشکیل شدهاند اکنون کانونیکال در نظر گرفته میشوند و تنها پرچمهایی خواهند بود که از فهرستکردن و پیمایش یک کلاس Flag یا یک عضو Flag بازگردانده میشوند. پرچمهای چندبیتی به عنوان نام مستعار در نظر گرفته میشوند؛ آنها از جستجوها و عملیاتی که منجر به مقدارشان میشود بازگردانده خواهند شد. پیمایش برای هر دو کلاس Flag و اعضای Flag به ترتیب تعریف انجام میشود.
bpo-42877: افزودن پارامتر
compactبه سازندهیtraceback.TracebackExceptionبه منظور کاهش زمان و حافظه برای موارد استفادهای که تنها نیاز به فراخوانیTracebackException.format()وTracebackException.format_exception_only()دارند.bpo-42923: تابع
Py_FatalError()و ماژولfaulthandlerاکنون فهرست ماژولهای توسعهای را هنگام بروز خطای مهلک برونریزی میکنند.bpo-42848: بازگشت (recursion) از
TracebackExceptionحذف شد تا بتواند زنجیرههای طولانی استثنا را مدیریت کند.bpo-42901: [Enum] انتقال ایجاد عضو از
EnumMeta.__new__به_proto_member.__set_name__، که به اعضا اجازه میدهد در__init_subclass__ایجاد شده و قابل مشاهده باشند.bpo-42780: رفع تابع os.set_inheritable() برای توصیفگرهای پرونده O_PATH روی لینوکس.
bpo-42866: رفع یک نشت ارجاع در تابع
getcodec()از کُدکهای CJK. وصله توسط ویکتور استینر (Victor Stinner).bpo-42846: تبدیل ۶ ماژول توسعهای کُدک CJK (شامل (_codecs_cn، _codecs_hk، _codecs_iso2022، _codecs_jp، _codecs_kr و _codecs_tw) به API راهاندازی چندمرحلهای (PEP 489). وصله از Victor Stinner.
bpo-42851: حذف پشتیبانی از __init_subclass__ برای اعضای enum
bpo-42834: نهانگاههای داخلی ماژول
_jsonرا با زیرتفسیرگرها سازگار کنید.bpo-41748: رفع قوانین تجزیه HTMLParser برای صفات عنصری که حاوی کاما همراه با فاصله هستند. وصله از Karl Dubost.
bpo-40810: نیاز به SQLite نسخهی ۳.۷.۱۵ یا جدیدتر. وصله از Erlend E. Aasland.
bpo-1635741: تبدیل ماژول توسعهای _multibytecodec (کُدکهای CJK) به راهاندازی چندمرحلهای (PEP 489). وصله از Erlend E. Aasland.
bpo-42802: دستور
bdist_wininstدر distutils که در پایتون ۳.۸ منسوخ شده بود، حذف شد. دستورbdist_wheelدر distutils اکنون برای توزیع بستههای دودویی در ویندوز توصیه میشود.bpo-24464: تابع توکار مستندنشدهی
sqlite3.enable_shared_cacheاکنون منسوخ شده است و برنامهریزی شده تا در پایتون ۳.۱۲ حذف شود. مستندات SQLite3 استفاده از آن را به شدت منع میکنند. وصله از Erlend E. Aasland.bpo-42384: باعث شود pdb مقدار sys.path[0] را دقیقاً مشابه اجرای معمولی پایتون پر کند.
bpo-42383: رفع اشکال در pdb: پیش از این اگر هدف اشکالزدایی با استفاده از یک مسیر نسبی مشخص میشد و پوشهی جاری تغییر میکرد، pdb در راهاندازی مجدد آن شکست میخورد.
bpo-42005: رفع رابط خط فرمان ماژولهای
cProfileوprofileبرای گرفتن خطایBrokenPipeError.bpo-41604: شمارندهی ارجاع user_ptr قبلی را هنگام شکست خوردن set_panel_userptr کاهش ندهید.
bpo-41149: اجازهی اجرای فراخوانیپذیرهایی که مقدار بولی
Falseدارند هنگامی که به عنوان هدف بهThreading.threadارسال میشوند. وصله از Barney Stratford.bpo-38307: افزودن صفت 'end_lineno' به اشیاء کلاس و تابع که در درخت بازگرداندهشده توسط توابع pyclbr ظاهر میشوند. این صفت و صفت موجود 'lineno' وسعت دستورات class و def را مشخص میکنند. وصله از Aviral Srivastava.
bpo-39273: ثابتهای
BUTTON5_*اکنون در صورت موجود بودن در ماژولcursesدر معرض دید قرار میگیرند.bpo-33289: اصلاح فراخوانی
tkinter.colorchooserبرای بازگرداندن سهتایی RGB از اعداد صحیح به جای اعداد اعشاری. وصله از Cheryl Sabella.
مستندات¶
آزمونها¶
ساخت¶
bpo-43031: ارسال گزینهی
--timeout=$(TESTTIMEOUT)به وظیفهی پیشفرض پروفایل دستور./python -m test --pgo.bpo-36143: دستور
make regen-allاکنونregen-keywordرا نیز اجرا میکند. وصله توسط Victor Stinner.bpo-42874: حذف پرچمهای grep -q و -E در بخش اعتبارسنجی tzpath اسکریپت configure برای سازگاری بهتر با کاربران برخی از پلتفرمها (بهویژه Solaris 10).
bpo-31904: افزودن مسیر جستجوی کتابخانه توسط wr-cc در add_cross_compiling_paths() برای VxWorks.
bpo-42856: افزودن گزینهی
--with-wheel-pkg-dir=PATHبه اسکریپت./configure. در صورت مشخص شدن، ماژولensurepipبهدنبال بستههای ویلsetuptoolsوpipدر این پوشه میگردد: اگر هر دو موجود باشند، این بستههای ویل به جای بستههای ویل همراه ensurepip استفاده میشوند.برخی از سیاستهای بستهبندی توزیعهای لینوکس استفاده از وابستگیهای همراه را توصیه نمیکنند. برای مثال، فدورا بستههای ویل را در پوشهی
/usr/share/python-wheels/نصب میکند و بستهیensurepip._bundledرا نصب نمیکند.
Windows¶
مکاواس¶
bpo-42504: اطمینان حاصل کنید که مقدار sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') همیشه یک رشته است، حتی زمانی که مقدار بهعنوان یک عدد صحیح قابل تجزیه باشد.
IDLE¶
bpo-43008: باعث میشود IDLE تابع
sys.excepthook()را در حالت عادی و ۲-فرایندی فراخوانی کند. وصله توسط Ken Hilton.bpo-33065: رفع مشکل اشکالزدایی کلاسهای کاربر با متد __repr__.
bpo-23544: غیرفعال کردن Debug=>Stack Viewer زمانی که کد کاربر در حال اجرا است یا اشکالزدا فعال است، برای جلوگیری از توقف کامل یا فروپاشی. وصله توسط Zackery Spytz.
bpo-32631: پایان دادن به ماژول توسعهی نمونهی zzdummy: کار کردن گزینههای منو؛ افزودن رشتههای مستند و آزمونها با پوشش ۱۰۰ درصدی.
رابط C API¶
bpo-42979: هنگامی که پایتون در حالت اشکالزدایی (با ادعاهای C) ساخته میشود، فراخوانی یک جایگاه نوع مانند
sq_length(__len__()در پایتون) اکنون با یک خطای مهلک مواجه میشود اگر جایگاه با یک استثنای تنظیمشده با موفقیت اجرا شود، یا بدون تنظیم هیچ استثنایی با شکست مواجه شود. پیام خطا شامل جایگاه، نام نوع و استثنای فعلی (در صورت تنظیم استثنا) است. وصله توسط Victor Stinner.bpo-43030: رفع هشدار کامپایلر در
Py_UNICODE_ISSPACE()روی پلتفرمهایی باwchar_tعلامتدار.
نسخهی ۳.۱۰.۰ آلفا ۴¶
تاریخ انتشار: ۲۰۲۱-۰۱-۰۴
هسته و توکارها (Core and Builtins)¶
bpo-42814: رفع رفتار تعریفنشده در
Objects/genericaliasobject.c.bpo-42806: رفع آفستهای ستون برای گرههای
astاز نوع افاسترینگ که توسط پرانتز احاطه شدهاند و برای گرههایی که چند سطر را در بر میگیرند. وصله توسط Pablo Galindo.bpo-40631: رفع رگرسیونی که در آن یک عبارت ستارهدار پرانتزگذاریشدهی منفرد یک هدف انتساب معتبر بود.
bpo-27794: بهبود پیام خطا برای نوشتنها/حذفهای ناموفق در شیءهای property. در صورت امکان، اکنون نام ویژگی نمایش داده میشود. وصله ارائه شده توسط یوری کاراباس (Yurii Karabas).
bpo-42745: جستجوی صفت نوع را برای هر مفسر به صورت نهانگاه درآورید. وصله از Victor Stinner.
bpo-42246: پرش به پرشها در صورتی که با PEP 626 مغایرت داشته باشد، حذف نمیشوند.
bpo-42246: مطمئن شوید که ویژگیهای
f_lastiوf_linenoیک فریم هنگام بروز یا بازایجاد استثنا بهدرستی تنظیم میشوند. برای PEP 626 لازم است.bpo-32381: کوکی کدگذاری (مانند
# coding: latin1) اکنون در دستور ارسالشده به گزینهی خط فرمان-cنادیده گرفته میشود. پچ توسط Victor Stinner.bpo-30858: بهبود موقعیت خطا در عبارتهایی که حاوی انتساب هستند. اصلاحیه از Pablo Galindo و Lysandros Nikolaou.
bpo-42615: حذف دستورهای پرش که به دلیل حذف بلوکهای بایتکد غیرقابلدسترس اضافی شده بودند.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
bpo-32381: اصلاح نام کدگذاری هنگام اجرای یک پروندهی
.pycدر ویندوز:PyRun_SimpleFileExFlags()اکنون از کدگذاری صحیح برای رمزگشایی نام پرونده استفاده میکند.
کتابخانه¶
bpo-42195: مقادیر
__args__برای عام پارامتریشدهیtyping.Callableوcollections.abc.Callableاکنون سازگار شدند. مقادیر__args__برایcollections.abc.Callableاکنون مسطح (flatten) میشوند، در حالی که مقادیر مربوط بهtyping.Callableتغییر نکردهاند. برای امکانپذیر کردن این تغییر، اکنون میتوان ازtypes.GenericAliasزیرکلاسسازی کرد و متد__class_getitem__ازcollections.abc.Callableاکنون زیرکلاسی ازtypes.GenericAliasرا برمیگرداند. آزمونهای مربوط به typing نیز بهروزرسانی شدند تا از زیرکلاسسازی مواردی مانندCallable[..., T]خودداری کنند؛ زیرا این موارد یک کلاس پایهی معتبر نیستند. در نهایت، هر دوCallableدیگرargtypesخود را درCallable[[argtypes], resulttype]برای آمادهسازی جهت PEP 612 اعتبارسنجی نمیکنند. وصله توسط کن جین (Ken Jin).bpo-40137: تبدیل ماژول functools برای استفاده از
PyType_FromModuleAndSpec().bpo-40077: تبدیل
arrayبرای استفاده از انواع هیپ و ایجاد وضعیت ماژول برای آنها.bpo-42008: اصلاح بذرگذاری (seeding) در _random.Random().
bpo-1635741: انتقال ماژول توسعهی
pyexpatبه مقداردهی اولیه چندمرحلهای (PEP 489).
هسته و توکارها (Core and Builtins)¶
bpo-40521: دیکشنری یونیکد از رشتههای درونیسازیشده را با زیرمفسرها سازگار میکند. وصله توسط Victor Stinner.
bpo-39465: تابع
_PyUnicode_FromId()را با مفسرهای فرعی سازگار میکند. هر مفسر اکنون دارای آرایهای از اشیای شناسه (رشتههای درونیسازیشدهی رمزگشاییشده از UTF-8) است. وصله توسط Victor Stinner.
کتابخانه¶
bpo-42257: مدیریت رشتهی خالی در اجرایی متغیر در platform.libc_ver()
bpo-42772: تابع randrange() اکنون زمانی که step بدون آرگومان stop مشخص شود، یک خطای TypeError بالا میآورد. پیش از این، آرگومان step را بهطور سکوتوار نادیده میگرفت.
bpo-42759: مقایسهی تساوی
tkinter.Variableوtkinter.font.Fontاصلاح شد. شیءهایی که به مفسرهای مختلف Tcl تعلق دارند اکنون همیشه با یکدیگر متفاوت هستند، حتی اگر نام یکسانی داشته باشند.bpo-42756: پیکربندی سوکت دامنهی Unix در LMTP برای استفاده از مهلت زمانی پیشفرض سراسری سوکت، زمانی که مهلت زمانی بهطور صریح ارائه نشده است.
bpo-23328: اجازه دادن به نویسهی / در فیلدهای نام کاربری و رمز عبور در متغیرهای محیطی _PROXY.
bpo-42740: توابع
typing.get_args()وtyping.get_origin()اکنون از نوعهای اجتماع (union types) PEP 604 و الحاقات PEP 612 بهCallableپشتیبانی میکنند.bpo-42655: پارامتر extra_groups در ماژول
subprocessاکنون به درستی به سیستکال setgroups() منتقل میشود.bpo-42727: تابع
EnumMeta.__prepare__اکنون**kwdsرا میپذیرد تا به طور مناسب از__init_subclass__پشتیبانی کند.bpo-38308: افزودن weights اختیاری به statistics.harmonic_mean().
bpo-42721: هنگامی که دیالوگهای پرسوجوی ساده (
tkinter.simpledialog)، جعبههای پیام (tkinter.messagebox) یا دیالوگ انتخاب رنگ (tkinter.colorchooser) بدون آرگومانهای master و parent ایجاد شوند و پنجرهی ریشه پیشفرض هنوز ایجاد نشده باشد وNoDefaultRoot()فراخوانی نشده باشد، یک پنجرهی ریشهی مخفی موقت جدید به صورت خودکار ایجاد خواهد شد. این پنجره به عنوان پنجرهی ریشهی پیشفرض تنظیم نخواهد شد و بلافاصله پس از بستن پنجرهی دیالوگ نابود میشود. این کار کمک میکند تا از این پنجرههای دیالوگ ساده در برنامههایی که به رابط کاربری گرافیکی (GUI) دیگری نیاز ندارند، استفاده شود.bpo-25246: بهینهسازی متد
collections.deque.remove().bpo-35728: یک پارامتر root به
tkinter.font.nametofont()اضافه شد.bpo-15303: ماژول
tkinterاکنون از ابزارکهایی با مقدار بولی False پشتیبانی میکند.bpo-42681: بررسیهای محدودهی اعداد رنگ و جفت در ماژول
cursesاصلاح شد.bpo-42685: قرارگیری پنجرههای پرسوجوی ساده در Tkinter (مانند
tkinter.simpledialog.askinteger()) بهبود یافت. آنها اکنون در صورت مشخص شدن و نمایش داده شدن، در مرکز پنجرهی والد و در غیر این صورت در مرکز صفحه تراز میشوند.bpo-9694: راهنمای Argparse دیگر از عبارت گیجکنندهی «optional arguments» استفاده نمیکند. به جای آن از «options» استفاده میکند.
bpo-1635741: انتقال ماژول توسعهی
_threadبه API مقداردهی اولیهی چندمرحلهای (PEP 489) و تبدیل نوعهای ایستای آن به نوعهای هیپ.bpo-37961: رفع فروپاشی (crash) در
tracemalloc.Traceback.__repr__()(که در پایتون ۳.۹ پسرفت کرده بود).bpo-42630: توابع و سازندههای
tkinterکه به یک پنجرهی ریشهی پیشفرض نیاز دارند، اگر پنجرهی ریشه هنوز ایجاد نشده باشد یا نتواند به طور خودکار ایجاد شود، اکنون به جایAttributeErrorیاNameErrorمبهم، خطایRuntimeErrorهمراه با پیام توصیفی بالا میآورند.bpo-42639: تابع
atexit._run_exitfuncs()اکنون به جای ثبت مستقیم استثناهای کالبک درsys.stderrو بالا آوردن آخرین استثنا، آنها را با استفاده ازsys.unraisablehookثبت (log) میکند.bpo-42644: تابع
logging.disableاکنون نوعها و مقدار پارامتر خود را اعتبارسنجی میکند. همچنین به جای مقادیر عددی، اکنون رشتههای نمایانگر سطوح را میپذیرد (همانندlogging.setLevel).bpo-42639: در هنگام خروج از پایتون، اگر یک کالبک ثبتشده با
atexit.register()با خطا مواجه شود، استثنای آن ثبت میشود. پیش از این، تنها برخی از استثناها ثبت میشدند و آخرین استثنا همیشه به صورت بیصدا نادیده گرفته میشد.bpo-36541: اصلاح lib2to3.pgen2 برای توانایی تجزیهی سینتکس آرگومانهای فقط جایگاهی PEP-570.
bpo-42382: در
importlib.metadata: - اشیایEntryPointاکنون یک شیء.distرا که بهDistributionارجاع میدهد، هنگام ساخته شدن از روی یکDistributionمعرض نمایش میگذارند. - افزودن پشتیبانی برای کشف بستهها تحت قوانین نرمالسازی بسته. - شیء بازگردانده شده توسطmetadata()اکنون دارای یک پروتکل به طور رسمی تعریف شده به نامPackageMetadataبا پشتیبانی اعلامشده برای متد.get_all()است. - همگامسازی شده با importlib_metadata 3.3.bpo-41877: بررسی برای خطاهای املایی مقادیر autospect، auto_spec و set_spec که به عنوان آرگومان به patch، patch.object و create_autospec فرستاده میشوند، اضافه شد.
bpo-39717: [tarfile] بهروزرسانی ایجاد استثنای تو در تو برای استفاده از
from Noneیاfrom ebpo-41877: خطای AttributeError برای خطاهای املایی مشکوک ادعاها در ماکها اکنون به این نکته اشاره میکند که علت، خطاهای املایی ادعاها است و همچنین مشخص میکند که اگر غلط املایی در واقع یک نام ویژگی مورد نظر باشد، چه کاری باید انجام دهید. سند unittest.mock نیز برای انعکاس مجموعه فعلی خطاهای املایی شناختهشده بهروزرسانی شده است.
bpo-41559: پیادهسازی PEP 612: اضافهشدن
ParamSpecوConcatenateبهtyping. وصله توسط Ken Jin.bpo-42385: StrEnum: اصلاح _generate_next_value_ برای برگرداندن یک str
bpo-31904: تعریف THREAD_STACK_SIZE برای VxWorks.
bpo-34750: [Enum] اکنون از
_EnumDict.update()پشتیبانی میشود.bpo-42517: Enum: نامهای خصوصی به عضو تبدیل نمیشوند / خطایی تولید نمیکنند -- آنها به عنوان ویژگیهای عادی باقی میمانند
bpo-42678:
Enum: فراخوانی__init_subclass__پس از اضافه شدن اعضاbpo-28964:
ast.literal_eval()اطلاعات شمارهی سطر را (در صورت موجود بودن) در پیام خطا برای گرههای ناسازگار اضافه میکند.bpo-42470: تابع
random.sample()دیگر روی دنبالهای که یک مجموعه نیز هست، هشدار نمیدهد.bpo-31904: اگر پوشهی خانگی کاربر در سیستم VxWorks برابر با None باشد، تابع
posixpath.expanduser()مقدار path ورودی را تغییر نداده و برمیگرداند.bpo-42388: رفع رفتار subprocess.check_output(..., input=None) هنگام داشتن text=True به طوری که با مستندات و universal_newlines=True سازگار باشد.
bpo-34463: برطرفشدن اختلاف بین
tracebackو مفسر در قالببندی SyntaxError هنگامی که lineno تنظیم نشده است (tracebackتغییر یافت تا با مفسر مطابقت پیدا کند).bpo-42393: بالا آوردن خطای
OverflowErrorبه جای قطع خاموش درsocket.ntohs()وsocket.htons(). قطع خاموش در پایتون ۳.۷ منسوخ شد. وصله توسط Erlend E. Aaslandbpo-42222: هماهنگسازی نحوهی پردازش آرگومان
random.randrange()برای مطابقت باrange().آزمون عدد صحیح و تبدیل در
randrange()اکنون ازoperator.index()استفاده میکند.آرگومانهای غیر عدد صحیح برای
randrange()منسوخ شدهاند.خطای
ValueErrorبه نفعTypeErrorمنسوخ شده است.اکنون کمی سریعتر از قبل اجرا میشود.
(تهیهشده توسط Raymond Hettinger و Serhiy Storchaka.)
bpo-42163: بازگردانی سازگاری برای
os.uname_resultدر خصوص deepcopy و _replace.bpo-42090: نگارش
zipfile.Path.joinpathاکنون آرگومانهای دلخواه را میپذیرد، درست مانندpathlib.Path.joinpath.bpo-1635741: انتقال ماژول _csv به API مقداردهی اولیهی چندمرحلهای (PEP 489).
bpo-42059: انواع
typing.TypedDictایجادشده با استفاده از نحو سبک فراخوانی جایگزین، اکنون هنگام تنظیم ویژگیهای کلاس__required_keys__و__optional_keys__به آرگومان کلیدواژهایtotalبه درستی احترام میگذارند.bpo-41960: افزودن پارامترهای
globalnsوlocalnsبهinspect.signature()وinspect.Signature.from_callable().bpo-41907: رفع رفتار
format()برایIntFlagbpo-41891: اطمینان از اینکه asyncio.wait_for منتظر اتمام وظیفه میماند
bpo-24792: رفع باگی که در آن
zipimporterگاهی اوقات علت نادرستی از خطاهای ایمپورت را گزارش میکند.bpo-31904: رفع ماژولهای site و sysconfig برای VxWorks RTOS که هیچ دایرکتوری خانگی ندارد.
bpo-41462: افزودن پشتیبانی
os.set_blocking()برای VxWorks RTOS.bpo-40219: پایین آوردن ابزارک ساختگی
tkinter.ttk.LabeledScaleبرای جلوگیری از پنهان شدن بخشی از برچسب محتوا.bpo-37193: رفع نشتی حافظه در
socketserver.ThreadingMixInکه در پایتون ۳.۷ معرفی شده بود.bpo-39068: رفع شرایط رقابت مقداردهی اولیه در
a85encode()وb85encode()درbase64. وصله توسط Brandon Stansbury.
مستندات¶
bpo-17140: افزودن مستندات برای کلاس
multiprocessing.pool.ThreadPool.bpo-34398: برجستهسازی فهرستهای واژهنامه در نتایج جستجوی مستندات. وصله توسط Ammar Askar.
آزمونها¶
bpo-42794: بهروزرسانی test_nntplib برای استفاده از نام گروه رسمی news.aioe.org جهت آزمایش. وصله توسط Donghee Na.
bpo-31904: رد کردن برخی از آزمونهای asyncio در VxWorks.
bpo-42641: بهبود
test_select.test_select(): اکنون به جای ۱۰ ثانیه، ۵۰۰ میلیثانیه زمان میبرد. برای قابل حملتر کردن آزمون، به جای پوسته از پایتون استفاده کنید.bpo-31904: رد کردن برخی آزمونها در _test_all_chown_common() روی VxWorks.
bpo-42199: رفع خطای assertNotInBytecode در کمکی بایتکد.
bpo-41443: افزودن بررسیهای بیشتر روی ویژگی در test_posix.py
bpo-31904: غیرفعال کردن os.popen و آزمونهای تحت تأثیر آن روی VxWorks
bpo-41439: پورت کردن test_ssl و test_uuid به VxWorks RTOS.
ساخت¶
bpo-42692: رفع بررسی __builtin_available روی کامپایلرهای قدیمیتر. وصله توسط Joshua Root.
bpo-27640: افزودن گزینهی
--disable-test-modulesبه اسکریپتconfigure: عدم ساخت و نصب ماژولهای آزمون. وصله توسط Xavier de Gaye، Thomas Petazzoni و Peixing Xin.bpo-42604: اکنون تمام پلتفرمها مقداری را برای متغیر ساخت «EXT_SUFFIX» که از SOABI مشتق شده است استفاده میکنند (برای نمونه در freeBSD، مقدار «EXT_SUFFIX» اکنون بهجای ".so" برابر با ".cpython-310d.so" است). پیشتر فقط لینوکس، مک و VxWorks از مقداری برای «EXT_SUFFIX» که شامل «SOABI» بود استفاده میکردند.
bpo-42598: رفع اعلانهای ضمنی تابع در configure که ممکن بود به بررسیهای پیکربندی نادرست منجر شوند. وصلهی ارائه شده توسط Joshua Root.
bpo-31904: فعالسازی libpython3.so برای VxWorks.
bpo-29076: افزودن پشتیبانی از پوستهی fish به نصبکنندهی macOS.
مکاواس¶
Tools/Demos¶
رابط C API¶
bpo-42591: اکسپورت کردن تابع
Py_FrozenMain(): رفع یک رگرسیون در پایتون ۳.۹.۰. پایتون ۳.۹ از-fvisibility=hiddenاستفاده میکند و این تابع به طور صریح اکسپورت نشده بود و در نتیجه اکسپورت نشد.bpo-32381: حذف تابع خصوصی
_Py_fopen()که دیگر مورد نیاز نیست. بهجای آن از_Py_wfopen()یا_Py_fopen_obj()استفاده کنید. وصله توسط Victor Stinner.bpo-1635741: پورت کردن ماژول توسعهی
resourceبه وضعیت ماژولbpo-42111: بهروزرسانی ماژول
xxlimitedبرای ارائهی نمونهی بهتری از نحوهی استفاده از C API محدود.bpo-40052: رفع هشدار/خطای ساخت تراز (alignment) در تابع
PyVectorcall_Function(). وصله توسط Andreas Schneider، Antoine Pitrou و Petr Viktorin.
Python 3.10.0 آلفا ۳¶
تاریخ انتشار: ۲۰۲۰-۱۲-۰۷
امنیت¶
bpo-40791: افزودن
volatileبه متغیر انباشتگر درhmac.compare_digest، که باعث میشود بهینهسازیهای مختلکنندهی زمان ثابت (constant-time) کمتر اتفاق بیفتند.
هسته و توکارها (Core and Builtins)¶
bpo-42576: از این پس
types.GenericAliasهنگام تلاش برای مقداردهی اولیه با یک آرگومان کلیدواژهای، یکTypeErrorبالا میآورد. پیش از این، اگر مفسر با نمادهای رفع اشکال کامپایل میشد، این امر باعث فروپاشی مفسر میشد. این موضوع روی مفسرهایی که برای انتشار کامپایل شدهاند تأثیری ندارد. وصل توسط Ken Jin.bpo-42536: چندین نوع دادهی توکار و کتابخانهی استاندارد اکنون تضمین میکنند که تاپلهای نتیجهی داخلی آنها همیشه توسط جمعآور زباله ردیابی میشوند:
پیش از این، ممکن بود توسط یک زبالهروبی قبلی از حالت ردیابی خارج شوند. وصل توسط Brandt Bucher.
bpo-42500: بهبود مدیریت استثناها در نزدیکی حد بازگشتی. تبدیل تعدادی خطای مهلک (Fatal Error) به RecursionErrors.
bpo-42246: PEP 626: پس از یک دستور return، ویژگی f_lineno یک قاب همیشه آخرین سطر اجراشده است.
bpo-42435: افزایش سرعت مقایسهی شیءهای bytes با شیءهای غیر bytes هنگامی که گزینهی
-bمشخص شده است. افزایش سرعت مقایسهی شیءهای bytearray با شیءهای غیر بافر.
کتابخانه¶
bpo-1635741: انتقال ماژول توسعهای
_warningsبه API مقداردهی اولیهی چندمرحلهای (PEP 489). وصل توسط Victor Stinner.
هسته و توکارها (Core and Builtins)¶
bpo-41686: در ویندوز، رویداد
SIGINTیعنی_PyOS_SigintEvent()، اکنون حتی اگر پایتون به گونهای پیکربندی شده باشد که هندلرهای سیگنال را نصب نکند (اگرPyConfig.install_signal_handlersبرابر با 0 باشد، یاPy_InitializeEx(0))، ایجاد میشود.bpo-42381: امکان استفاده از عبارتهای انتساب در مجموعههای لفظی (set literals) و درک مجموعهها (set comprehensions) بر اساس PEP 572 فراهم شد. این وصله توسط Pablo Galindo ارائه شده است.
bpo-42202: بازنمایی داخلی حاشیهنویسیهای پارامترهای تابع به تاپل رشتهها تغییر یافت. وصله توسط یوری کاراباس (Yurii Karabas) فراهم شد.
bpo-42374: رفع یک رگرسیون که توسط پارسر جدید معرفی شده بود؛ جایی که یک عملگر گراز دریایی بدون پرانتز در عبارتهای تولیدگر مجاز نبود.
bpo-42316: اجازه دادن به یک عملگر گراز دریایی بدون پرانتز در اندیسهای زیرنویس.
bpo-42349: اطمینان حاصل کنید که فرانتاند کامپایلر یک گراف جریان کنترل خوشساختار تولید میکند. در بکاند کامپایلر تهاجمیتر عمل کنید، زیرا اکنون انجام این کار ایمن است.
bpo-42296: در ویندوز، رگرسیونی در مدیریت سیگنال رفع شد که مانع از وقفه دادن به یک برنامه با استفاده از CTRL+C میشد. هندلر سیگنال میتواند در نخی متفاوت از نخ پایتون اجرا شود، در این صورت آزمونی که تصمیم میگیرد آیا نخ میتواند سیگنالها را مدیریت کند یا خیر، اشتباه است.
bpo-42332: شیءهای
types.GenericAliasاکنون میتوانند هدف مرجعهای ضعیف (weakrefs) باشند.bpo-42282: بهینهسازی زیرعبارتهای ثابتی که به عنوان بخشی از عبارتهای نامگذاریشده ظاهر میشوند (پیشتر بهینهساز درخت نحوی انتزاعی (AST) وارد عبارتهای نامگذاریشده نمیشد). وصله از نیک کافلان (Nick Coghlan).
bpo-42266: رفع یک باگ در نهانگاه آپکد LOAD_ATTR که به مانکیپچ کردن (monkey-patching) یک ویژگی در سطح کلاس برای تبدیل آن به یک توصیفگر احترام نمیگذاشت. وصله از پابلو گالیندو (Pablo Galindo).
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
bpo-42246: دقت رویدادهای ردیابی سطر و صفت
f_linenoاز اشیای Frame بهبود یافت. برای جزئیات بیشتر به PEP 626 مراجعه کنید.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
bpo-42233: به شیءهای
GenericAliasاجازه دهید از عبارتهای نوع اجتماع استفاده کنند. این امر به عبارتهایی مانندlist[int] | dict[float, str]اجازه میدهد، در حالی که پیشتر یک خطایTypeErrorپرتاب میشد. این کار همچنین رفع میکند که عبارتهای نوع اجتماع شیءهایGenericAliasرا جداسازی (de-duplicate) نکنند. (مشارکت توسط کن جین (Ken Jin) در bpo-42233.)bpo-26131: سیستم ایمپورت هنگامی که به استفاده از
load_module()بازمیگردد، یکImportWarningرا تریگر میکند.
کتابخانه¶
bpo-5054: متد CGIHTTPRequestHandler.run_cgi() به طور نادرستی HTTP_ACCEPT را پارس کرده است. تابع اختصاصی getallmatchingheaders با متد عام get_all جایگزین شود و آزمونهای مربوطه اضافه شوند.
وصلهی اصلی توسط مارتین پنتر (Martin Panter). ویرایششده توسط سنتیل کوماران (Senthil Kumaran).
bpo-42562: رفع مشکلی که در آن dis در پارس کردن تابعی که شماره سطر ندارد شکست میخورد. وصله فراهمشده توسط یوری کاراباس (Yurii Karabas).
bpo-17735: تابع
inspect.findsource()اکنون هنگامی که ویژگیco_linenoیک شیء کد از طول پرونده بیشتر باشد، به جایIndexErrorاستثنایOSErrorرا بالا میآورد. این اتفاق میتواند رخ دهد، برای مثال، وقتی یک پرونده پس از ایمپورت شدن ویرایش میشود. پول ریکوئست (PR) توسط ایریت کاتریل (Irit Katriel).bpo-42116: رفع مدیریت کامنتهای پایانی توسط
inspect.getsource().bpo-42532: حذف فراخوانی غیرمنتظرهی
__bool__هنگام ارسال آرگومانspec_argبه یک ماک.bpo-38200: افزودن itertools.pairwise()
bpo-41818: اصلاح test_master_read() بهطوریکه در تمام پلتفرمهایی که هنگام خواندن از بخش اصلی (master)، یا OSError بالا میآورند یا b"" برمیگردانند، با موفقیت اجرا شود.
bpo-42487: متد ChainMap.__iter__ دیگر __getitem__ را روی نگاشتهای زیرین فراخوانی نمیکند
bpo-42482: کلاس
TracebackExceptionدیگر ارجاعی به شیء ردگیری (traceback) استثنا نگه نمیدارد. در نتیجه، نمونههای TracebackException برای استثناهای معادل اما نابرابر، اکنون برابر مقایسه میشوند.bpo-41818: کاری کنید که test_openpty() به دلیل صفر بودن تعداد ردیفها و/یا تعداد ستونها، از موفقیت غیرمنتظره جلوگیری کند.
bpo-42392: حذف پارامتر loop از توابع
asyncio.subprocessوasyncio.tasks. پچ ارائهشده توسط Yurii Karabas.bpo-42392: حذف پارامتر loop از توابع
asyncio.open_connectionوasyncio.start_server. پچ ارائهشده توسط Yurii Karabas.bpo-28468: افزودن تابع
platform.freedesktop_os_release()برای تجزیهی پروندههایos-releaseدر freedesktop.org.bpo-42299: ماژول
formatterکه در پایتون ۳.۴ منسوخ شده بود، حذف شد. این ماژول تا حدی منسوخ، کماستفاده و فاقد آزمون است. این ماژول در اصل قرار بود در پایتون ۳.۶ حذف شود، اما چنین حذفهایی تا پس از پایان چرخهی حیات (EOL) پایتون ۲.۷ به تعویق افتاد. کاربران فعلی باید هر کلاسی را که استفاده میکنند در کد خود کپی کنند. پچ توسط Donghee Na و Terry J. Reedy.bpo-26131: منسوخ کردن zipimport.zipimporter.load_module() به نفع exec_module().
bpo-41818: بهروزرسانی آزمونها برای کتابخانهی pty. متد test_basic() به test_openpty() تغییر یافته است؛ این بررسی میکند که آیا ترمیوس پیرو و اندازهی پنجرهی پیرو بهدرستی توسط pty.openpty() تنظیم میشوند یا خیر. برای افزودن پشتیبانی از FreeBSD، NetBSD، OpenBSD و Darwin، این مورد همچنین test_master_read() را اضافه میکند که نشان میدهد pty.spawn() نباید برای خروج از حلقهی کپی خود به یک OSError وابسته باشد.
bpo-42392: حذف پارامتر loop از
__init__در تمام کلاسهایasyncio.locksوasyncio.Queue. پچ ارائهشده توسط Yurii Karabas.bpo-15450: وادار کردن
filecmp.dircmpبه رعایت زیرکلاسسازی. اکنون ویژگیfilecmp.dircmp.subdirsهنگام زیرکلاسسازی dircmp درست طبق انتظار رفتار میکند.bpo-42413: استثنای
socket.timeoutاکنون یک نام مستعار (alias) برایTimeoutErrorاست.bpo-31904: پشتیبانی از ماژول signal روی VxWorks.
bpo-42406: ما مسئلهای را در
pickle.whichmoduleاصلاح کردیم که در آن ایمپورت کردنmultiprocessingمیتوانست نحوهی تشخیص ماژولِ متعلق به یک شیء را توسط pickle تغییر دهد و بهطور بالقوه باعث مختل شدن بازگردانی (unpickling) آن اشیاء شود.bpo-42403: سادهسازی کد راهاندازی (bootstrap) خارجی
importlib: بخشimportlib._bootstrap_externalاکنون برای ایمپورت ماژولهای توکار از ایمپورتهای معمولی استفاده میکند. هنگامی که این ماژول ایمپورت میشود، تابع توکار__import__()از پیش کاملاً کار میکند و بنابراین میتواند برای ایمپورت کردن ماژولهای توکاری مانندsysاستفاده شود. پچ توسط Victor Stinner.bpo-1635741: تبدیل انواع ماژول _sre به انواع هیپ (PEP 384). پچ توسط Erlend E. Aasland.
bpo-42375: بهروزرسانی ماژول subprocess برای پشتیبانی از DragonFlyBSD.
bpo-41713: پورت کردن ماژول توسعهای
_signalبه رابط برنامهنویسی کاربردی (API) مقداردهی اولیهی چندمرحلهای (PEP 489). وصله توسط Victor Stinner و Mohamed Koubaa.bpo-37205: توابع
time.time()،time.perf_counter()وtime.monotonic()دیگر نمیتوانند با یک خطای مهلک در پایتون مواجه شوند، بلکه در صورت بروز خطا، یک استثنای معمولی پایتون را بالا میآورند.bpo-42328: متد
tkinter.ttk.Style.map()اصلاح شد. این تابع اکنون نمایش وضعیت پیشفرض را به عنوان یک دنباله خالی میپذیرد (همانطور که توسطStyle.map()بازگردانده میشود). ساختار نتیجه اکنون در تمام پلتفرمها یکسان است و به مقدارwantobjectsبستگی ندارد.bpo-42345: رفع مسائل مختلف مربوط به مدیریت پارامترهای
typing.Literal(مسطحسازی، حذف موارد تکراری، استفاده از نوع داده برای کلید نهانگاه). وصله ارائهشده توسط Yurii Karabas.bpo-37205: توابع
time.perf_counter()روی ویندوز وtime.monotonic()روی مکاواس اکنون در سطح کل سیستم کار میکنند. پیش از این، آنها از یک آفست محاسبهشده در زمان راهاندازی استفاده میکردند تا افت دقت ناشی از نوع دادهی عدد اعشاری را کاهش دهند. برای جلوگیری از این افت دقت، ازtime.perf_counter_ns()وtime.monotonic_ns()که در پایتون ۳.۷ اضافه شدهاند، استفاده کنید.bpo-42318: پشتیبانی از نویسههای غیر BMP در
tkinterروی مکاواس اصلاح شد.bpo-42350: کلاس :threading.Thread
threading.Threadدر زمان انشعاب (fork) اصلاح شد: اگر نخ از قبل متوقف شده باشد، هیچ کاری انجام ندهید (بهعنوانمثال، انشعاب در هنگام خروج پایتون فراخوانی شود). پیش از این، خطایی در فرایند فرزند ثبت میشد.bpo-42333: پورت کردن ماژول توسعهای _ssl به انواع دادهی هیپ.
bpo-42014: فراخوانی بازگشتی
onerrorاز تابعshutil.rmtreeاکنون هنگام شکستos.openتابع درست را دریافت میکند.bpo-42237: رفع مشکل
os.sendfile()روی سیستمعامل illumos.bpo-42308: افزودن
threading.__excepthook__برای امکان بازیابی مقدار اصلیthreading.excepthook()در صورتی که روی یک مقدار خراب یا متفاوت تنظیم شده باشد. وصله توسط Mario Corchero.bpo-42131: پیادهسازی متدهای مشخصات/PEP 451 روی zipimport.zipimporter شامل find_spec()، create_module() و exec_module().
این کار همچنین امکان منسوخسازی مستندشدهی find_loader()، find_module() و load_module() را فراهم میکند.
bpo-41877: اشیای ماک که ناامن نیستند، اکنون در صورت دسترسی به ویژگیای با پیشوند asert، aseert یا assrt، یک AttributeError ایجاد میکنند؛ این موضوع علاوه بر پیشوندهای قبلی یعنی assert یا assret است.
bpo-42264: ماژول
sqlite3.OptimizedUnicodeاز زمان پایتون ۳.۳ که به عنوان یک نام مستعار برایstrدرآمد، مستندنشده و منسوخ بود. این ماژول اکنون منسوخ شده و قرار است در پایتون ۳.۱۲ حذف شود.bpo-42251: افزودن توابع
threading.gettrace()وthreading.getprofile()برای بازیابی توابعی که به ترتیب توسطthreading.settrace()وthreading.setprofile()تنظیم شدهاند. وصله توسط Mario Corchero.bpo-42249: اصلاح مشکل نوشتن پروندههای دودویی Plist با حجم بزرگتر از ۴ گیگابایت.
bpo-42236: روی سیستمعامل یونیکس، اگر حالت UTF-8 پایتون فعال باشد، تابع
os.device_encoding()اکنون بهجای کدگذاری دستگاه، مقدار'UTF-8'را برمیگرداند.bpo-41754: ماژول webbrowser: نادیدهگرفتن NotADirectoryError هنگام فراخوانی
xdg-settings.bpo-42183: رفع خطای سرریز پشته (stack overflow) برای repr() وظیفه (Task) یا آینده (Future) در asyncio.
این سرریز در برخی شرایط رخ میدهد که یک Task یا Future بهصورت بازگشتی خودش را برمیگرداند.
bpo-42140: بهبود تابع asyncio.wait برای ایجاد مجموعه آیندهنماها تنها در یک مرتبه.
bpo-42133: بهروزرسانی ماژولهای مختلف در کتابخانهی استاندارد برای استفاده از
__spec__.loaderبه عنوان پشتیبان (fallback) هنگامی که__loader__روی یک ماژول تعریف نشده است.bpo-26131: متدهای
load_module()یافتشده درimportlibاکنون یکDeprecationWarningرا فعال میکنند.bpo-39825: ویندوز: تغییر
sysconfig.get_config_var('EXT_SUFFIX')به قالب کامل مورد انتظارplatform_tag.extension. پیش از این به صورت سختکد شده روی.pydتنظیم شده بود، اما اکنون باdistutils.sysconfigسازگار است و نتیجهای مانند.cp38-win_amd64.pydخواهد داشت. این تغییر ویندوز را با سایر پلتفرمها هماهنگ میکند.bpo-26389: توابع
traceback.format_exception()،traceback.format_exception_only()وtraceback.print_exception()اکنون میتوانند یک شیء استثنا را به عنوان آرگومان صرفاً جایگاهی (positional-only) بپذیرند.bpo-41889: Enum: رفع باگ رگرسیون مربوط به ارثبری از یک enum با ارثبری چندگانه
bpo-41861: تبدیل
sqlite3برای استفاده از انواع هیپ (PEP 384). وصلهای از Erlend E. Aasland.bpo-40624: افزودن پشتیبانی از عملگر XPath
!=در xml.etreebpo-28850: رفع نادیده گرفته شدن بازنویسیهای متد
pprint.PrettyPrinter.format()برای محتویات ظروف کوچک. تابعpprint._safe_repr()حذف شد.bpo-41625: قرار دادن
splice()به عنوانos.splice()در ماژولos. وصلهای از Pablo Galindobpo-34215: شفافسازی پیام خطا برای
asyncio.IncompleteReadErrorهنگامی که مقدارexpectedبرابر باNoneاست.bpo-41543: افزودن پشتیبانی از مدیر زمینه ناهمگام برای contextlib.nullcontext.
bpo-21041: ویژگی
pathlib.PurePath.parentsاکنون از نمایهگذاری منفی پشتیبانی میکند. وصلهی ارائه شده توسط Yaroslav Pankovych.bpo-41332: افزودن متد گمشدهی connect_accepted_socket() به
asyncio.AbstractEventLoop.bpo-12800: استخراج یک پیوند نمادین از یک فایل tarball باید موفقیتآمیز باشد و در صورت وجود قبلی، پیوند نمادین را بازنویسی کند. راهحل این است که فایل یا پیوند نمادین موجود پیش از استخراج حذف شود. بر اساس وصلهای از Chris AtLee، Jeffrey Kintscher و Senthil Kumaran.
bpo-40968: ماژولهای
urllib.requestوhttp.clientاکنون هنگامی که هیچ زمینهی سفارشیای ارائه نشده باشد، پسوندhttp/1.1ALPN را در جریان دستدهی TLS ارسال میکنند.bpo-41001: افزودن
os.eventfd()برای ارائهی یک رابط سطح پایین برای توصیفگر پروندهی اعلان رویداد لینوکس.bpo-40816: افزودن AsyncContextDecorator به contextlib برای پشتیبانی از مدیر زمینه ناهمگام به عنوان یک دکوراتور.
bpo-40550: رفع مشکل زمان بررسی/زمان کنش (time-of-check/time-of-action) در subprocess.Popen.send_signal.
bpo-39411: افزودن شناسهی
is_asyncبه شیءهایFunctionدرpyclbr. این وصله توسط Batuhan Taskaya ارائه شده است.bpo-35498: افزودن پشتیبانی از اسلایس به
pathlib.PurePath.parents.
مستندات¶
bpo-42238: اقدام آزمایشی برای منسوخ کردن دستور
make suspicious؛ ابتدا با حذف آن از بخش ساخت CI و مستندات، اما حفظ آن برای کاربردهای دستی.bpo-42153: اصلاح نشانیوب (URL) مربوط به اسناد پروتکل IMAP.
bpo-41028: تغییردهندههای زبان و نسخه که پیشتر در هر شاخهی cpython نگهداری میشدند، اکنون توسط docsbuild-script مدیریت میشوند.
آزمونها¶
bpo-41473: فعالسازی مجدد test_gdb روی gdb نسخهی ۹.۲ و جدیدتر: باگ https://bugzilla.redhat.com/show_bug.cgi?id=1866884 در gdb نسخهی ۱۰.۱ رفع شده است.
bpo-42553: رفع شرایط رقابتی (race condition) در
test_asyncio.test_call_later(): عدم اندازهگیری کارایی asyncio در آزمون واحدcall_later(). این آزمون بهطور تصادفی روی CI با خطا مواجه میشد.bpo-31904: رفع مشکل test_netrc روی VxWorks: ایجاد دایرکتوریهای موقت با استفاده از temp_cwd().
bpo-31904: صرفنظر کردن از test_getaddrinfo_ipv6_scopeid_symbolic و test_getnameinfo_ipv6_scopeid_symbolic روی VxWorks
bpo-31904: صرفنظر کردن از test_test مربوط به test_mailcap روی VxWorks
bpo-31904: افزودن نیاز به پوسته برای test_pipes
bpo-31904: صرفنظر کردن از برخی آزمونهای مرتبط با fifo روی VxWorks
bpo-31904: رفع خطاهای test_doctest.py برای VxWorks.
bpo-40754: گنجاندن ماژول
_testinternalcapiدر نصبکنندهی ویندوز برای مجموعهی آزمونbpo-41561: ماژول test_ssl: هنگامی که TLS 1.0 در دسترس نیست، از test_min_max_version_mismatch صرفنظر شود
bpo-31904: رفع خطاهای ماژول os برای VxWorks RTOS.
bpo-31904: رفع موارد آزمون fifo برای VxWorks RTOS.
ساخت¶
bpo-31904: حذف وابستگی libnet از detect_socket() برای VxWorks
bpo-42398: رفع یک شرایط رقابت (race condition) در دستور «make regen-all» هنگامی که از گزینهی make -jN برای اجرای موازی کارها استفاده میشود. اسکریپت clinic.py اکنون صرفاً از نوشتن اتمی برای نوشتن پروندهها استفاده میکند. علاوه بر این، پروندههای تولیدشده در صورت عدم تغییر محتوا، دستنخورده باقی میمانند تا زمان تغییر پرونده تغییر نکند.
bpo-41617: رفع مشکل ساخت سرآیند داخلی
pycore_bitutils.hدر نسخههای قدیمی clang که فاقد__builtin_bswap16()هستند (مانند Xcode 4.6.3 روی Mac OS X 10.7). این وصله توسط Joshua Root و Victor Stinner ارائه شده است.bpo-38823: ساخت ماژول توسعهای
_ctypesبدون نوعwchar_tدیگر امکانپذیر نیست: کلاندستورCTYPES_UNICODEحذف شد. در هر صورت، وجود نوعwchar_tبرای ساخت پایتون الزامی است. وصله از Victor Stinner.bpo-42087: پشتیبانی از AIX 5.3 و نسخههای پایینتر حذف شد. نگاه کنید به bpo-40680.
bpo-40998: سه اخطار کامپایلر که توسط ضدعفونیکنندهی رفتار تعریفنشده (ubsan) پیدا شده بودند، برطرف شدند.
Windows¶
مکاواس¶
bpo-42504: رفع ساخت روی macOS Big Sur هنگامی که MACOSX_DEPLOYMENT_TARGET=11 است
bpo-41116: اطمینان حاصل کنید که distutils.unixxcompiler.find_library_file میتواند کتابخانههای ارائهشده توسط سیستم را روی macOS 11 پیدا کند.
bpo-41100: افزودن پشتیبانی از macOS 11 و سیستمهای Apple Silicon.
اکنون امکان ساخت باینریهای «Universal 2» با استفاده از «--enable-universalsdk --with-universal-archs=universal2» فراهم شده است.
باینریهای ساختهشده روی نسخههای جدیدتر macOS را میتوان هنگام استفاده از هدف استقرار صحیح، روی نسخههای قدیمیتر (تستشده تا macOS 10.9) نیز مستقر کرد. این کار با استفاده از Xcode 11 و نسخههای پس از آن تست شده است.
bpo-42232: گزینههای madvise مختص Darwin به ماژول mmap اضافه شدند.
bpo-38443: گزینههای
--enable-universalsdkو--with-universal-archsبرای اسکریپت configure اکنون بررسی میکنند که آیا معماریهای مشخصشده قابل استفاده هستند یا خیر.
IDLE¶
bpo-42508: اجرای IDLE را روی macOS حفظ کنید. راهحل جایگزین منسوخی که هنگام استفاده از نصبکنندههای جدید universal2 ساختهشده روی macOS 11 مانع از اجرای پروندهها با میانبرها میشد، حذف شد.
bpo-42426: رفع گزارش آفست خطای عبارت باقاعده در موتور جستجو.
bpo-42415: دریافت مکرر رشتههای مستند برای راهنمای فراخوانی IDLE با استفاده از inspect.getdoc.
Tools/Demos¶
bpo-42212: اسکریپت smelly.py اکنون کتابخانهی پویا و ماژولهای توسعهی پایتون را نیز بررسی میکند، نه فقط کتابخانهی ایستای پایتون. همچنین اسکریپت را پرجزئیاتتر کنید: توضیح دهید چه کاری انجام میدهد.
bpo-36310: به
Tools/i18n/pygettext.pyاجازه دهید فراخوانیهایgettextرا در افاسترینگها شناسایی کند.
رابط C API¶
bpo-42423: توابع
PyType_FromSpecWithBases()وPyType_FromModuleAndSpec()اکنون یک کلاس تکی را به عنوان آرگومان bases میپذیرند.bpo-1635741: انتقال ماژول توسعهای
selectبه مقداردهی اولیهی چندمرحلهای (PEP 489).bpo-1635741: انتقال ماژول توسعهای _posixsubprocess به مقداردهی اولیهی چندمرحلهای (PEP 489).
bpo-1635741: انتقال ماژول توسعهای _posixshmem به مقداردهی اولیه چندمرحلهای (PEP 489)
bpo-1635741: انتقال ماژول توسعهای _struct به مقداردهی اولیه چندمرحلهای (PEP 489)
bpo-1635741: انتقال ماژول توسعهای
spwdبه مقداردهی اولیه چندمرحلهای (PEP 489)bpo-1635741: انتقال ماژول توسعهای
gcبه مقداردهی اولیه چندمرحلهای (PEP 489)bpo-1635741: انتقال ماژول توسعهای _queue به مقداردهی اولیه چندمرحلهای (PEP 489)
bpo-39573: بازگرداندن توابع
Py_TYPE()وPy_SIZE()به ماکروها جهت امکان استفاده از آنها به عنوان l-value. بسیاری از ماژولهای توسعهای C شخص ثالث به توانایی استفاده از Py_TYPE() و Py_SIZE() برای تعیین نوع و اندازه شیء وابسته هستند:Py_TYPE(obj) = type;وPy_SIZE(obj) = size;.bpo-1635741: انتقال ماژول توسعهای
symtableبه مقداردهی اولیه چندمرحلهای (PEP 489)bpo-1635741: انتقال ماژولهای توسعهای
grpوpwdبه مقداردهی اولیه چندمرحلهای (PEP 489)bpo-1635741: انتقال ماژول توسعهای _random به مقداردهی اولیه چندمرحلهای (PEP 489)
bpo-1635741: انتقال ماژول توسعهای _hashlib به مقداردهی اولیه چندمرحلهای (PEP 489)
bpo-41713: تابع مستندنشدهی
PyOS_InitInterrupts()حذف شد. مقداردهی اولیهی پایتون به طور ضمنی هندلرهای سیگنال را نصب میکند: نگاه کنید بهPyConfig.install_signal_handlers. اصلاحیه توسط Victor Stinner.bpo-40170: ماکروی
Py_TRASHCAN_BEGINدیگر به ویژگیهای PyTypeObject دسترسی پیدا نمیکند، بلکه اکنون میتواند شرط را با فراخوانی تابع خصوصی جدید_PyTrash_cond()که جزئیات پیادهسازی را پنهان میکند، دریافت کند.bpo-42260: توابع
Py_GetPath()،Py_GetPrefix()،Py_GetExecPrefix()،Py_GetProgramFullPath()،Py_GetPythonHome()وPy_GetProgramName()اکنون اگر پیش ازPy_Initialize()فراخوانی شوند (پیش از اینکه پایتون مقداردهی اولیه شود)، مقدارNULLبرمیگردانند. از Python Initialization Configuration API جدید برای دریافت Python Path Configuration. استفاده کنید. اصلاحیه توسط Victor Stinner.bpo-42260: تابع
PyConfig_Read()اکنون آرگومانهایPyConfig.argvرا فقط یک بار تجزیه میکند: مقدارPyConfig.parse_argvپس از تجزیهی آرگومانها روی2تنظیم میشود. از آنجا که آرگومانهای پایتون ازPyConfig.argvحذف میشوند، تجزیهی مجدد آرگومانها باعث میشود گزینههای برنامه به عنوان گزینههای پایتون تجزیه شوند.bpo-42262: توابع
Py_NewRef()وPy_XNewRef()برای افزایش شمارهی ارجاع یک شیء و بازگرداندن آن اضافه شدند. اصلاحیه توسط Victor Stinner.bpo-42260: هنگامی که
Py_Initialize()دو بار فراخوانی میشود، فراخوانی دوم اکنون به جای بهروزرسانی فقطsys.argv، ویژگیهای بیشتری از ماژولsysرا برای پیکربندی بهروزرسانی میکند. اصلاحیه توسط Victor Stinner.bpo-41832: تابع
PyType_FromModuleAndSpec()اکنون جایگاهtp_docبا مقدار NULL را میپذیرد.bpo-1635741: تابع
PyModule_AddObjectRef()اضافه شد: مشابهPyModule_AddObject()است اما در صورت موفقیت، ارجاعی را از مقدار نمیدزدد. اصلاحیه توسط Victor Stinner.bpo-42171: قرارداد فراخوانی
METH_FASTCALLبه API محدود اضافه شد. توابعPyModule_AddType()،PyType_FromModuleAndSpec()،PyType_GetModule()وPyType_GetModuleState()روی سیستمعامل ویندوز به API محدود اضافه شدند.bpo-42085: افزودن ورودی اختصاصی به PyAsyncMethods برای ارسال مقادیر
bpo-41073: تابع
PyType_GetSlot()اکنون میتواند انواع ایستا را بپذیرد.bpo-30459: ماکروهای
PyList_SET_ITEM()،PyTuple_SET_ITEM()وPyCell_SET()دیگر نمیتوانند به عنوان مقدار چپ (l-value) یا مقدار راست (r-value) استفاده شوند. برای مثال، عباراتx = PyList_SET_ITEM(a, b, c)وPyList_SET_ITEM(a, b, c) = xاکنون با خطای کامپایلر مواجه میشوند. این کار از بروز باگهایی مانند آزمونif (PyList_SET_ITEM (a, b, c) < 0) ...جلوگیری میکند. وصله توسط Zackery Spytz و Victor Stinner.
پایتون ۳.۱۰.۰ آلفا ۲¶
تاریخ انتشار: ۲۰۲۰-۱۱-۰۳
امنیت¶
bpo-42103: جلوگیری از حملهی احتمالی DoS از طریق مصرف بیش از حد CPU و RAM هنگام پردازش پروندههای فهرست ویژگی (Property List) آسیبدیده اپل با فرمت دودویی.
bpo-42051: ماژول
plistlibبرای جلوگیری از آسیبپذیریهای XML دیگر اعلانهای موجودیت (entity declarations) را در پروندههای plist مبتنی بر XML نمیپذیرد. این موضوع نباید کاربران را تحت تأثیر قرار دهد؛ زیرا اعلانهای موجودیت در پروندههای معمولی plist استفاده نمیشوند.
هسته و توکارها (Core and Builtins)¶
bpo-42236: اگر تابع
nl_langinfo(CODESET)یک رشتهی خالی برگرداند، پایتون اکنون از UTF-8 به عنوان کدگذاری سامانه فایلبندی استفاده میکند. وصله توسط Victor Stinner.bpo-42218: رفع باگی در پارسر PEG که باعث فروپاشی (crash) در حالت اشکالزدایی میشد. اکنون خطاها در قواعد بازگشتیِ چپی بررسی میشوند تا از مواردی که این خطاها به موقع مدیریت نمیشوند و به صورت فروپاشیهای دوربرد در بخشهای دیگر ظاهر میشوند، جلوگیری گردد.
bpo-42214: رفع یک فروپاشی احتمالی در پارسر PEG هنگام بررسی توکن '!=' در قاعدهی
barry_as_flufl. وصله توسط Pablo Galindo.bpo-42206: انتشار و بالا آوردن خطاهای ایجادشده توسط تابع
PyAST_Validate()در پارسر.bpo-41796: وضعیت داخلی ماژول
astاکنون برای هر مفسر مجزا است. وصله توسط Victor Stinner.bpo-42143: رفع نحوهی مدیریت خطاها در هنگام ایجاد
PyFunctionObjectکه منجر به انجام عملیات روی حافظهی مقداردهینشده میشد. وصله توسط Yonatan Goldschmidt.bpo-41659: رفع باگی در پارسر که در آن یک براکتِ چپ (curly brace) پس از یک
primaryبلافاصله با خطا مواجه نمیشد. این امر باعث میشد عبارتهای نامعتبری مانندa {b}یکSyntaxErrorبا آفست نادرست ایجاد کنند، یا عبارتهای نامعتوری که با یک براکت چپ به پایان میرسند مانندa {در REPL بلافاصله با خطا مواجه نشوند.bpo-42150: رفع سرریز بافر احتمالی در پارسر جدید هنگام بررسی سطرهای ادامه. وصله توسط Pablo Galindo.
bpo-42123: اجرای پارسر در دو مرحله. در اجرای اول، تمام قاعدههایی که فقط پیامهای خطای بهتری تولید میکنند غیرفعال میشوند تا کارایی افزایش یابد. در صورت بروز خطا در تجزیه، پارسر برای بار دوم با فعال بودن آن قواعد اجرا میشود.
bpo-42093: دستور
LOAD_ATTRاکنون از مکانیزم جدید «نهانگاه به ازای آپکد» (per opcode cache) استفاده میکند و اکنون حدود ۳۶ درصد سریعتر است. وصله توسط Pablo Galindo و Yury Selivanov.bpo-42030: پشتیبانی از بارگذاری کتابخانهی مشترکِ قدیمی و مختص AIX حذف شد. تمام نسخههای AIX از نسخهی ۴.۳ به بعد، بهطور پیشفرض از مکانیزم مشترک یونیکس پشتیبانی کرده و از آن استفاده میکنند.
bpo-41984: جمعآور زباله (garbage collector) اکنون تمام کلاسهای تعریفشده توسط کاربر را پیگیری میکند. وصله توسط Brandt Bucher.
bpo-41993: رفع مشکلات احتمالی مربوط به حذف ماژولهای ناقص مقداردهیشده از
sys.modulesهنگام شکست عملیات ایمپورت.bpo-41979: باز کردنستارهای (star-unpacking) اکنون برای هدفهای آیتم دستور with در پارسر PEG مجاز است.
bpo-41974: متدهای ویژهی
__int__،__float__،__floordiv__،__mod__،__divmod__،__rfloordiv__،__rmod__و__rdivmod__از کلاسcomplexحذف شدند. این متدها همیشه یکTypeErrorایجاد میکردند.bpo-41902: ریزبهینهسازی هنگام محاسبهی
sq_itemوmp_subscriptازrange. وصل توسط Donghee Na.bpo-41894: هنگام بارگذاری یک ماژول بومی و بروز خطای بارگذاری، با کدگشایی پیام خطای بارگذاری با استفاده از کدگذاری locale جاری، از بروز خطای احتمالی UnicodeDecodeError در زمان عدم اجرا در یک locale با فرمت UTF-8 جلوگیری کنید.
bpo-41902: ریزبهینهسازی برای range.index اگر گام (step) برابر با ۱ باشد. وصل توسط Donghee Na.
کتابخانه¶
bpo-41435: تابع
sys._current_exceptions()برای بازیابی دیکشنریای که شناسهی هر نخ را به بالاترین استثنای فعال در آن نخ در زمان فراخوانی تابع نگاشت میکند، اضافه شد.
هسته و توکارها (Core and Builtins)¶
bpo-38605: دستور
from __future__ import annotations(PEP 563) به طور پیشفرض فعال شد. مقادیر موجود در دیکشنریهای__annotations__اکنون رشته هستند؛ برای مثال{"x": "int"}به جای{"x": int}.
کتابخانه¶
bpo-35455: در سیستمعامل Solaris، تابع
thread_time()اکنون با استفاده ازgethrvtime()پیادهسازی شده است؛ زیرا تابعclock_gettime(CLOCK_THREAD_CPUTIME_ID)همیشه در دسترس نیست. وصل توسط Jakub Kulik.bpo-42233: تابع
repr()از انواعtypingکه شامل Generic Alias Types هستند، پیشتر انواع پارامترریزیشده را درGenericAliasنشان نمیداد. اکنون تغییر یافتهاند تا این کار را انجام دهند.bpo-29566: تابع
binhex.binhex()به طور پایدار پایانسطرهای macOS 9 را مینویسد.bpo-26789: کلاس
logging.FileHandlerاکنون ارجاعی به تابع توکارopen()نگه میدارد تا بتواند پرونده را در طول نهاییسازی پایتون باز کند یا دوباره باز کند. خطاهایی مانندNameError: name 'open' is not definedرا برطرف میکند. وصل توسط Victor Stinner.bpo-42157: ویژگی
unicodedata.ucnhash_CAPIکه یک شیء داخلی PyCapsule بود، حذف شد. ساختار خصوصی مربوط به_PyUnicode_Name_CAPIبه C API داخلی منتقل شد. وصلهی ارائهشده توسط Victor Stinner.bpo-42157: ماژول توسعهای
unicodedataبه API مقداردهی اولیه چندمرحلهای (PEP 489) تبدیل شد و نوع ایستایunicodedata.UCDبه نوع heap تبدیل شد. وصلهی ارائهشده توسط Mohamed Koubaa و Victor Stinner.bpo-42146: رفع نشت حافظه در
subprocess.Popen()در صورتی که شناسه کاربر (uid) یا گروه (gid) مشخصشده درuser(group،extra_groups) از محدودهیuid_t(gid_t) سرریز کند.bpo-42103: استثناهای
InvalidFileExceptionوRecursionErrorاکنون تنها خطاهای ناشی از بارگذاری پروندههای Plist دودویی ناسالم هستند (پیشتر در برخی موارد خاص ممکن بود ValueError و TypeError بالا بروند).bpo-41490: در
importlib.resources، متد.pathدر آزاد کردن زودهنگام دستهها به شیءهای zipfile تهاجمیتر عمل میکند و موارد استفادهای مانند certifi را قادر میسازد تا زمینه (context) را باز نگه دارند اما پروندهی زیپ زیرین را حذف کنند.bpo-41052: پیکل کردن (Pickling) انواع heap پیادهسازیشده به زبان C با پروتکلهای ۰ و ۱، بهجای تولید دادهی نادرست، اکنون یک خطا ایجاد میکند.
bpo-42089: در
importlib.metadata.PackageNotFoundError، برای بهبود تجربهی کاربری، به مفقود بودن فرادادهی بسته (package metadata) اشاره کنید.bpo-41491: plistlib: رفع تجزیه (parsing) فایلهای plist از نوع XML با مقادیر اعداد صحیح مبنای شانزده (hexadecimal)
bpo-42065: رفع خطای نامژولق قالببندیشده از
_codecs.charmap_decode()هنگامی که با یک مقداری نگاشتشده خارج از محدودهی نقطهکدهای معتبر یونیکد فراخوانی میشود. درخواست تغییر (PR) توسط Max Bernstein.bpo-41966: رفع پیکل کردن زیرکلاسهای پایتون خالص
datetime.time. وصلهی ارائهشده توسط Dean Inwood.bpo-19270: متد
sched.scheduler.cancel()اکنون اگر دو رویداد با اولویت یکسان برای زمان مشابهی زمانبندی شده باشند، رویداد صحیح را لغو میکند. بستهی اصلاحی از Bar Harel.bpo-28660: تابع
textwrap.wrap()اکنون تلاش میکند کلمات طولانی را بعد از خط تیرهها هنگامی کهbreak_long_words=Trueوbreak_on_hyphens=Trueهستند، بشکند.bpo-35823: از
vfork()به جایfork()برایsubprocess.Popen()در لینوکس استفاده کنید تا عملکرد در مواردی که ایمن تشخیص داده میشود، بهبود یابد.bpo-42043: پشتیبانی از ارثبری
zipfile.Pathرا اضافه میکند. متدzipfile.Path.is_file()اکنون برای نامهای ناموجود مقدار False را برمیگرداند. شیءهایzipfile.Pathاکنون یک ویژگی.filenameرا نمایان میکنند و هنگامی که شیءPathدر ریشهی فایل فشرده است، برای حل کردن.nameو.parentبه آن متکی هستند.bpo-42021: رفع نشت احتمالی ارجاع در مقداردهی اولیهی ماژول
sqlite3.bpo-39101: آزمونهایی که از IsolatedAsyncioTestCase استفاده میکنند، از معلق ماندن روی BaseExceptions اصلاح شدند.
bpo-41976: رفع باگی که باعث میشد تابع
ctypes.util.find_library()هنگام تلاش برای یافتن کتابخانهای در محیطی که gcc>=9 موجود است وldconfigدر دسترس نیست، مقدارNoneرا برگرداند. بستهی اصلاحی از Pablo Galindobpo-41943: رفع باگی که در آن TestCase.assertLogs پیامها را به درستی بر اساس سطح فیلتر نمیکند.
bpo-41923: پیادهسازی PEP 613، که حاشیهنویسی
typing.TypeAliasرا معرفی میکند.bpo-41905: یک تابع جدید در abc به نام update_abstractmethods برای محاسبهی مجدد وضعیت انتزاعی یک کلاس انتزاعی. علاوه بر این، dataclass تغییر کرده است تا این تابع را فراخوانی کند.
bpo-23706: پارامتر newline به تابع
pathlib.Path.write_text()اضافه شد.bpo-41876: مقدار repr کلاس فونت Tkinter از نام فونت استفاده میکند
bpo-41831: متد
str()برای ویژگیtypeشیءtkinter.Eventاکنون همیشه کد عددی بازگردانده شده توسط Tk را به جای نام نوع رویداد برمیگرداند.bpo-39337: تابع
encodings.normalize_encoding()اکنون نویسههای غیر اسکی را نادیده میگیرد.bpo-41747: اطمینان حاصل کنید که تمام متدهایی که از شیءهای
dataclasses.dataclass()تولید میشوند، اکنون ویژگی مناسب__qualname__را دارند که به کلاسی که به آن تعلق دارند اشاره میکند. بستهی اصلاحی از Batuhan Taskaya.bpo-30681: مدیریت استثناهای ناشی از سرآیندهای تاریخ غیرقابل تجزیه هنگام استفاده از سیاست «پیشفرض» ایمیل. بستهی اصلاحی از Tim Bell، Georges Toth
bpo-41586: افزودن F_SETPIPE_SZ و F_GETPIPE_SZ به ماژول fcntl. اجازه دادن به تنظیم اندازهی پایپ روی subprocess.Popen.
bpo-41229: افزودن
contextlib.aclosingبرای پاکسازی قطعی مولدهای ناهمگام که مشابهcontextlib.closingبرای مولدهای غیرناهمگام است. بستهی اصلاحی از Joongi Kim و John Belmonte.bpo-16396: اجازه دادن به وارد کردن
ctypes.wintypesدر سیستمهای غیر ویندوزی.bpo-4356: افزودن یک تابع کلید به ماژول bisect.
bpo-40592: تابع
shutil.which()اکنون در صورت برخورد با درایههای خالی در متغیر محیطیPATHEXT، آنها را نادیده میگیرد و به عنوان تطابق در نظر نمیگیرد.bpo-40492: رفع مشکل گزینهی
--outfileدرcProfile/profileکه وقتی برنامهی در حال تحلیل (پروفایل)، پوشهی کاری خود را تغییر میدهد، پروندهی خروجی را در پوشهی اصلی نمینویسد. توسط Anthony Sottile.bpo-34204: ماژول
shelveاکنون بهطور پیشفرض ازpickle.DEFAULT_PROTOCOLبهجای پروتکلpickleبا نسخهی3استفاده میکند.bpo-27321: رفع خطای استثنای KeyError زمانی که تختسازی یک ایمیل به یک رشته تلاش میکند یک سرآیند Content-Transfer-Encoding ناموجود را جایگزین کند.
bpo-38976: ماژول
http.cookiejarاکنون از تجزیهی کوکیها در پروندههای cookiejar به سبک CURL از طریق MozillaCookieJar در تمام پلتفرمها پشتیبانی میکند. پیش از این، چنین درایههای کوکی هنگام بارگذاری یک cookiejar با این درایهها بهطور بیصدا نادیده گرفته میشدند.علاوه بر این، ویژگی HTTP Only در شیء باقی میماند و اگر شیء MozillaCookieJar متعاقباً تخلیه (dump) شود، بهدرستی در پرونده نوشته خواهد شد.
مستندات¶
bpo-42061: مستندسازی قابلیت __format__ برای آدرسهای IP.
bpo-41910: مستندسازی پیادهسازی پیشفرض
object.__eq__.bpo-42010: شفافسازی این موضوع که عبارات زیرنویسی برای کلاسها و انواع خاصی در کتابخانهی استاندارد و همچنین برای کلاسها و انواع تعریفشده توسط کاربر در صورت فراهم بودن متد کلاس
__class_getitem__()معتبر هستند.bpo-41805: مستندسازی نوع نامستعار عام و
types.GenericAlias. همچنین افزودن یک درایه در واژهنامه برای نوع عام.bpo-39693: رفع مستندات extractfile در tarfile
bpo-39416: مستندسازی برخی محدودیتها بر روی نمایشهای رشتهای پیشفرض کلاسهای عددی.
آزمونها¶
bpo-41739: رفع test_logging.test_race_between_set_target_and_flush(): این آزمون اکنون تا زمان تکمیل تمام نخها صبر میکند تا از نشت نخهای در حال اجرا جلوگیری شود.
bpo-41970: جلوگیری از شکست آزمون در
test_lib2to3اگر ماژول در زمان اجرای آزمون از پیش وارد (import) شده باشد. وصله توسط Pablo Galindo.bpo-41944: آزمونهای مربوط به کُدکهای CJK دیگر روی محتوای دریافتی از طریق HTTP تابع
eval()را فراخوانی نمیکنند.bpo-41306: رفع خرابی در
test_tk.test_widgets.ScaleTestکه هنگام اجرای آزمون با Tk 8.6.10 رخ میداد.
ساخت¶
bpo-38980: افزودن
-fno-semantic-interpositionبه خطوط کامپایل و پیوند هنگام ساخت با--enable-optimizations. وصله توسط Victor Stinner و Pablo Galindo.
Windows¶
bpo-38439: بهروزرسانی آیکونهای IDLE در بستهی فروشگاه ویندوز.
bpo-38252: استفاده از گام ۸ بایتی برای شناسایی دنباله اسکی در نسخهی ۶۴ بیتی ویندوز.
bpo-39107: بهروزرسانی Tcl و Tk به نسخهی ۸.۶.۱۰ در برنامهی نصب ویندوز.
bpo-41557: بهروزرسانی نصبکنندهی ویندوز برای استفاده از SQLite 3.33.0.
bpo-38324: جلوگیری از خطاهای یونیکد هنگام دسترسی به دادههای مشخصی از locale در ویندوز.
مکاواس¶
bpo-41471: نادیده گرفتن طول پیشوندهای نامعتبر در استثناهای پراکسی سیستم.
IDLE¶
bpo-33987: به پایان رساندن استفاده از ابزارکهای ttk، عمدتاً برای ویرایشگر، تنظیمات و جستجوها. برخی از وصلهها توسط Mark Roseman تهیه شدهاند.
bpo-40511: تایپ پرانتزهای باز و بسته در داخل پرانتزهای یک فراخوانی تابع دیگر باعث «چشمک زدن» غیرضروری و روشن و خاموش شدن راهنمای فراخوانی (call-tip) باز موجود، مثلاً هنگام تایپ در یک رشتهی لفظی (string literal)، نخواهد شد.
bpo-38439: افزودن یک نماد ۲۵۶ در ۲۵۶ پیکسلی IDLE به پروندهی .ico در ویندوز. ایجادشده توسط Andrew Clover. حذف تنوعهای gif با رنگ کم از پروندهی .ico.
رابط C API¶
bpo-42157: ساختار خصوصی
_PyUnicode_Name_CAPIمتعلق به API برنامهنویسی PyCapsule یعنیunicodedata.ucnhash_CAPIبه API داخلی C منتقل شد. وصله توسط Victor Stinner.bpo-42015: رفع فروپاشی احتمالی در از بین بردن شیءهای متد زمانی که طول عمر
PyMethodDefکه بهصورت پویا تخصیص یافته است، از طریق آرگومانselfیکPyCFunctionمدیریت میشود.bpo-40423: ماژول
subprocessوos.closerangeاکنون در صورت در دسترس بودن، از سیستمی (syscall) به نامclose_range(low, high, flags)برای بستن کارآمدتر محدودههای توصیفگر استفاده خواهند کرد.bpo-41845: تابع
PyObject_GenericGetDict()هنگام هدفگذاری نسخهی ۳.۱۰ یا بالاتر، دوباره در API محدود در دسترس است.bpo-40422: افزودن تابع
_Py_closerangeبرای فراهم کردن بستن باکارایی بالای محدودهای از توصیفگرهای پرونده.bpo-41986: متغیرهای
Py_FileSystemDefaultEncodeErrorsوPy_UTF8Modeدوباره در API محدود در دسترس هستند.bpo-41756: افزودن تابع
PyIter_Sendبرای امکان ارسال مقدار به داخل تولیدگر، همروال یا پیمایشگر بدون ایجاد استثنای StopIteration جهت اعلام بازگشت.bpo-41784: تابع
PyUnicode_AsUTF8AndSizeبه API محدود C اضافه شد.
پایتون ۳.۱۰.۰ آلفا ۱¶
تاریخ انتشار: ۲۰۲۰-۱۰-۰۵
امنیت¶
bpo-41304: رفع نادیده گرفته شدن
python3x._pthدر ویندوز که به دلیل اصلاح bpo-29778 (CVE 2020-15801) ایجاد شده بود.bpo-41162: قلابهای حسابرسی اکنون برای جلوگیری از از دست رفتن رویدادها، دیرتر در طول مراحل نهاییسازی پاکسازی میشوند.
bpo-29778: اطمینان از بارگیری
python3.dllاز مکانهای درست هنگام تعبیهشدن پایتون (CVE 2020-15523).bpo-41004: متدهای ()__hash__ متعلق به ipaddress.IPv4Interface و ipaddress.IPv6Interface به اشتباه مقادیر هش ثابتی به ترتیب برابر با ۳۲ و ۱۲۸ تولید میکردند. این امر همیشه باعث ایجاد تصادمهای هش میشد. اصلاح انجامشده از ()hash برای تولید مقادیر هش برای تاپل (آدرس، طول ماسک، آدرس شبکه) استفاده میکند.
bpo-39603: با رد کردن نویسههای کنترلی در متد http.client.putrequest(...) از تزریق سرآیند http جلوگیری کنید.
هسته و توکارها (Core and Builtins)¶
bpo-41909: رفع سرریز پشته در
issubclass()وisinstance()هنگامی که دریافت ویژگی__bases__منجر به بازگشت بینهایت میشود.bpo-41922: افزایش سرعت فراخوانیهای
reversed()با استفاده از شیوهی فراخوانیvectorcallدر PEP 590. وصلهای از Donghee Na.bpo-41873: فراخوانیهای
float()اکنون به لطف شیوهی فراخوانیvectorcallسریعتر شدهاند. وصله توسط Dennis Sweeney.bpo-41870: افزایش سرعت فراخوانیهای
bool()با استفاده از قرارداد فراخوانی PEP 590 به نامvectorcall. وصلهای از Donghee Na.
کتابخانه¶
bpo-1635741: انتقال ماژول
_bisectبه API مقداردهی اولیهی چندمرحلهای (PEP 489).
هسته و توکارها (Core and Builtins)¶
bpo-39934: شمارش درست بلوکهای کنترلی در عبارات 'except' در کامپایلر. اطمینان حاصل میکند که برای کنترلکنندههای استثنای نامگذاریشدهی بسیار تو در تو، یک خطای نحوی (و نه یک خطای مهلک) رخ دهد.
bpo-41780: رفع
__dir__()ازtypes.GenericAlias. وصلهای از Batuhan Taskaya.
کتابخانه¶
bpo-1635741: انتقال ماژول توسعهای
_lsprofبه مقداردهی اولیهی چندمرحلهای (PEP 489).bpo-1635741: انتقال ماژول توسعهای
cmathبه مقداردهی اولیهی چندمرحلهای (PEP 489).bpo-1635741: انتقال ماژول توسعهای
_scproxyبه مقداردهی اولیهی چندمرحلهای (PEP 489).bpo-1635741: انتقال ماژول توسعهای
termiosبه مقداردهی اولیهی چندمرحلهای (PEP 489).bpo-1635741: تبدیل انواع ماژول توسعهای
_sha256به انواع هیپ (heap types).
هسته و توکارها (Core and Builtins)¶
bpo-41690: رفع سرریز پشتهی احتمالی در پارسر هنگام تجزیهی توابع و کلاسها با تعداد زیادی آرگومان. وصلهای از Pablo Galindo.
کتابخانه¶
bpo-1635741: انتقال ماژول توسعهای
_overlappedبه مقداردهی اولیهی چندمرحلهای (PEP 489).bpo-1635741: انتقال ماژول توسعهای
_curses_panelبه مقداردهی اولیهی چندمرحلهای (PEP 489).bpo-1635741: انتقال ماژول توسعهای
_opcodeبه مقداردهی اولیهی چندمرحلهای (PEP 489).
هسته و توکارها (Core and Builtins)¶
bpo-41681: اصلاح توصیف خطای اشتباه در خطای ایجادشده با استفاده از ۲
,در رشتهی قالببندی در افاسترینگ وstr.format().
کتابخانه¶
bpo-41675: پیادهسازی
signal.siginterrupt()اکنون بهجای تابع منسوخشدهیsiginterrupt()ازsigaction()(در صورت موجود بودن در سیستم) استفاده میکند. وصلهای از Pablo Galindo.
هسته و توکارها (Core and Builtins)¶
bpo-41670: جلوگیری از رد شدن ردگیری سطر (line trace) در پلتفرمهایی که با
USE_COMPUTED_GOTOSکامپایل نشدهاند. رفع مشکلی که در آن برخی سطرهای توکار در یک بلوک try-except روی ویندوز ردگیری نمیشدند.bpo-41654: رفع یک فروپاشی که هنگام نابودسازی زیرکلاسهای
MemoryErrorرخ میداد. وصله توسط پابلو گالیندو (Pablo Galindo).
کتابخانه¶
bpo-1635741: انتقال ماژول توسعهای
zlibبه مقداردهی اولیه چندمرحلهای (PEP 489).
هسته و توکارها (Core and Builtins)¶
bpo-41631: ماژول
_astدوباره از یک وضعیت سراسری استفاده میکند. استفاده از وضعیت ماژول به ازای هر نمونهی ماژول باعث بروز مشکلات عملی ظریفی میشود. برای مثال، پروژهی Mercurial تابع__import__()را جایگزین میکند تا ایمپورت تنبل را پیادهسازی کند، در حالی که پایتون انتظار داشتimport _astهمیشه یک ماژول کامل مقداردهیشدهی_astرا برگرداند.
کتابخانه¶
bpo-40077: تبدیل
_operatorبرای استفاده ازPyType_FromSpec().
هسته و توکارها (Core and Builtins)¶
bpo-1653741: انتقال
_sha3به مقداردهی اولیه چندمرحلهای. تبدیل انواع ایستا به انواع هیپ.
کتابخانه¶
bpo-1635741: انتقال ماژول توسعهای
_blake2به رابط برنامهنویسی کاربردی مقداردهی اولیه چندمرحلهای (PEP 489).
هسته و توکارها (Core and Builtins)¶
bpo-41533: آزادسازی پشته تخصیصیافته در
va_build_stackاگرdo_mkstackبا خطا مواجه شود و پشته یکsmall_stackنباشد.bpo-41531: رفع باگی که هنگام کامپایل مقادیر لفظی دیکشنری با بیش از 0xFFFF عنصر، کلیدها را حذف میکرد. وصله توسط پابلو گالیندو (Pablo Galindo).
bpo-41525: خروجی دستور
python --helpاکنون فقط شامل نویسههای اسکی است.
کتابخانه¶
bpo-1635741: انتقال ماژولهای توسعهای
_sha1،_sha512و_md5به رابط برنامهنویسی کاربردی مقداردهی اولیه چندمرحلهای (PEP 489).
هسته و توکارها (Core and Builtins)¶
bpo-41431: بهینهسازی
dict_merge()برای کپی کردن دیکشنری (بهعنوان مثالdict(d)و{}.update(d)).bpo-41428: پیادهسازی PEP 604. این ویژگی از (int | str) و غیره به جای Union[str, int] پشتیبانی میکند.
bpo-41340: پیادهسازی جایگزین برای
strdupحذف شد.bpo-38156: مدیریت درست وقفههایی که پس از EOF در
PyOS_StdioReadlineرخ میدهند.bpo-41342: تابع
round()با آرگومان عدد صحیح اکنون سریعتر است (۹ تا ۶۰٪).bpo-41334: سازندههای
str()،bytes()وbytearray()اکنون سریعتر هستند (حدود ۳۰ تا ۴۰٪ برای اشیاء کوچک).bpo-41295: رفع یک رگرسیون در CPython 3.8.4 که در آن تعریف "__setattr__" در یک ساختار چندوراثتی و فراخوانی زنجیرهی مراتب ممکن بود با خطا مواجه شود اگر نوعهای توکار/توسعهای در نوعهای پایه دخیل بودند.
bpo-41323: بهینهسازیهای بایتکد مستقیماً روی گراف جریان کنترل انجام میشوند. این کار در برخی شرایط منجر به اشیاء کد کمی فشردهتر خواهد شد.
bpo-41247: هنگام اجرای
asyncio.set_running_loop، همیشه نگهدارندهی حلقهی در حال اجرا را نهانگاهگذاری (cache) کنید.bpo-41252: رفع شمارش ارجاع نادرست در تابع
_servername_callback()در فایل _ssl.c.bpo-1635741: انتقال ماژول
multiprocessingبه مقداردهی اولیه چندمرحلهای
کتابخانه¶
bpo-1635741: انتقال ماژول
winapiبه مقداردهی اولیه چندمرحلهای
هسته و توکارها (Core and Builtins)¶
bpo-41215: استفاده از مقادیر پیشفرض غیر NULL در فهرست کلیدواژههای پارسر PEG برای غلبه بر باگی که مانع از کامپایل شدن درست پایتون به هنگام استفاده از کامپایلر XLC میشد. وصله توسط Pablo Galindo.
bpo-41218: پایتون ۳.۸.۳ دارای یک رگرسیون بود که در آن کامپایل کردن با ast.PyCF_ALLOW_TOP_LEVEL_AWAIT بهصورت تهاجمی درکهای فهرستی را با CO_COROUTINE علامتگذاری میکرد. اکنون فقط درکهای فهرستی که از async/await استفاده میکنند به این صورت برچسبگذاری میشوند.
کتابخانه¶
bpo-1635741: انتقال ماژول
faulthandlerبه مقداردهی اولیه چندمرحلهای.bpo-1635741: انتقال ماژول
sha256به مقداردهی اولیه چندمرحلهای
هسته و توکارها (Core and Builtins)¶
bpo-41175: محافظت در برابر ارجاع به اشارهگر NULL درون bytearrayobject که توسط عملگر
bytearray() + bytearray()ایجاد میشود.bpo-41100: افزودن arm64 به معماریهای مجاز Mac OS در mpdecimal.h
bpo-41094: رفع خطاهای کدگشایی با حسابرسی هنگام باز کردن پروندههایی با نامهای غیر اسکی در یک locale غیر UTF-8.
bpo-39960: بررسی امنیتی ("hackcheck") که با فراخوانی متد کلاس والد از دور زدن متد __setattr__() یک نوع جلوگیری میکند، بازنویسی شد تا انواع heap پیادهسازیشده با C مجاز باشند.
bpo-41084: هنگام تجزیهی یک عبارت افاسترینگ که یک
SyntaxErrorپرتاب میکند، پیشوند 'f-string: ' را به پیام خطا اضافه کنید.bpo-40521: مجموعههای فریزنشدهی خالی (frozensets) دیگر تکنمونه نیستند.
bpo-41076: مکان عبارت افاسترینگ، و نه خود افاسترینگ، را از پیش به پارسر بدهید، که به ما اجازه میدهد جابهجایی مکانهای گرههای درخت نحوی انتزاعی (AST) را پس از اتمام تجزیه رد کنیم.
bpo-41056: رفع ارجاع به فضای پشتهی آزادشده در هنگام راهاندازی، به هنگام ساختن sys.path شامل یک پیوند نمادین نسبی زمانی که کد از طریق -c ارائه شده بود. (کشفشده از طریق Coverity)
bpo-41061: رفع عبارات و ادعاهای نادرست در کد و آزمونهای جدول هش.
bpo-41052: غیرفعال کردن سریالسازی/سریالزدایی برای _random.Random
bpo-40939: تغییر نام توابع
PyPegen*بهPyParser*، به طوری که بتوانیم مجموعهی قدیمی توابعPyParser*را که از پارسر قدیمی استفاده میکردند حذف کنیم، اما همهی موارد را سازگار با عقب (backwards-compatible) نگه داریم.bpo-35975: اشتفان بهنل (Stefan Behnel) گزارش داد که cf_feature_version حتی زمانی که PyCF_ONLY_AST تنظیم نشده است استفاده میشود. این برخلاف قصد و رفتار مستندشده است، بنابراین رفع شده است.
bpo-40939: حذف پروندههای باقیمانده از پارسر قدیمی و ماژول
symbol.
کتابخانه¶
bpo-40077: تبدیل
_bz2برای استفاده ازPyType_FromSpec().
هسته و توکارها (Core and Builtins)¶
bpo-41006: ماژول
encodings.latin_1دیگر در زمان راهاندازی وارد (import) نمیشود. اکنون این ماژول فقط زمانی وارد میشود که کدگذاری سامانه فایلبندی یا کدگذاری stdio باشد.bpo-40636: تابع
zip()اکنون از پارامترstrictاستاندارد PEP 618 پشتیبانی میکند که اگر آرگومانها در طولهای متفاوتی تمام شوند، یکValueErrorایجاد میکند. وصله توسط Brandt Bucher.bpo-1635741: پورت کردن
_gdbmبه مقداردهی اولیه چندمرحلهای.bpo-40985: رفع باگی که باعث میشد وقتی پروندهای با سطری ختم میشود که به یک نویسهی ادامهی سطر (یعنی بکاسلش) تمام میشود، متن
SyntaxErrorخالی باشد. متن خطا باید شامل متن آخرین سطر باشد.bpo-40958: رفع سرریز بافر احتمالی در پارسر PEG هنگام جمعآوری اطلاعات برای انتشار خطاهای نحو (syntax). وصله توسط Pablo Galindo.
bpo-1635741: پورت کردن
_dbmبه مقداردهی اولیه چندمرحلهای.bpo-40957: رفع نشتی ارجاع (refleak) در _Py_fopen_obj() زمانی که PySys_Audit() با شکست مواجه میشود.
کتابخانه¶
هسته و توکارها (Core and Builtins)¶
bpo-40947: پیکربندی مسیر Path Configuration در پایتون اکنون
PyConfig.platlibdirرا در نظر میگیرد.bpo-40939: حذف پارسر قدیمی، ماژول
parserو تمام کد پشتیبانی مرتبط، گزینههای خط فرمان و متغیرهای محیطی. وصله توسط Pablo Galindo.bpo-40847: رفع خطایی که در آن سطری که فقط دارای یک نویسهی ادامهی سطر است، در سطح توکنساز به عنوان سطر خالی در نظر گرفته نمیشد. در چنین مواردی، بیش از یک توکن
NEWLINEصادر میشد. پارسر قدیمی مشکل را برطرف میکرد، اما پارسر جدید به دلیل این موضوع برای ورودی معتبر یکSyntaxErrorپرتاب میکرد. برای مثال، یک سطر خالی پس از یک نویسهی ادامهی سطر به عنوانSyntaxErrorتفسیر میشد.bpo-40890: هر نمای دیکشنری اکنون دارای یک ویژگی
mappingاست که یکtypes.MappingProxyTypeرا فراهم میکند که دیکشنری اصلی را بستهبندی میکند. وصله توسط Dennis Sweeney ارائه شده است.bpo-40889: بهبود کارایی عملیات تفاضل متقارن روی نماهای آیتم دیکشنری. وصله توسط Dennis Sweeney.
bpo-40904: رفع خطای احتمالی segfault در پارسر جدید PEG هنگام تجزیهی افاسترینگ حاوی دستورهای yield بدون مقدار (
f"{yield}"). وصله توسط Pablo Galindobpo-40903: رفع خطای احتمالی segfault در پارسر جدید PEG هنگام تولید پیامهای خطا برای انتسابهای نامعتبر به فرم
p=p=. وصله توسط Pablo Galindobpo-40880: رفع خوانش نامعتبر حافظه در پارسر جدید هنگام بررسی نویسههای خط جدید در مقادیر لفظی رشتهای. وصله توسط Pablo Galindo.
bpo-40883: رفع نشتی حافظه هنگام تجزیهی افاسترینگها در پارسر جدید. وصله توسط Pablo Galindo
bpo-40870: پرتاب
ValueErrorهنگام اعتبارسنجی درخت نحوی انتزاعی (AST) سفارشی که در آن ثابتهایTrue،FalseوNoneدر یک گرهast.Nameاستفاده شدهاند.bpo-40854: امکان بازنویسی
sys.platlibdirاز طریق یک متغیر محیطی جدیدPYTHONPLATLIBDIR.bpo-40826: رفع نحوهی استفاده از GIL در
PyOS_Readline(): قفل کردن GIL برای تنظیم یک استثنا و ارسال وضعیت نخ پایتون هنگام بررسی وجود یک سیگنال در انتظار.bpo-1635741: انتقال ماژول
fcntlبه مقداردهی اولیه چندمرحلهای.bpo-19468: حذف بررسی نمونهی غیرضروری در importlib.reload(). وصله توسط Furkan Önder.
bpo-40824: خطاهای غیرمنتظره در فراخوانی متد
__iter__دیگر توسطTypeErrorدر عملگرinو توابعcontains()،indexOf()وcountOf()از ماژولoperatorپنهان نمیشوند.bpo-40792: ویژگیهای
start،stopوstepشیءrangeاکنون همیشه نوع دقیقintرا دارند. پیش از این، آنها میتوانستند نمونهای از زیرکلاسی ازintباشند.bpo-40780: رفع یک حالت خاص که در آن قالببندی رشتهای با سبک g برای یک عدد اعشاری موفق به حذف صفرهای پایانی نمیشد.
bpo-38964: هنگامی که خطای
SyntaxErrorدر بخش عبارت یک fstring وجود دارد، ویژگی filename ازSyntaxErrorبه درستی روی نام پروندهای که fstring در آن قرار دارد تنظیم میشود.bpo-40750: پشتیبانی از پرچم اشکالزدایی "-d" در تحلیلگر جدید PEG. وصله توسط Pablo Galindo.
bpo-40217: نمونههای انواع ایجادشده با
PyType_FromSpecWithBases()دیگر به طور خودکار شیء کلاس خود را هنگام پیمایش ارجاعات در جمعآور زباله بازدید نمیکنند. انتظار میرود کاربر به طور دستی شیء کلاس را بازدید کند. وصله توسط Pablo Galindo.bpo-39573: تابع
Py_TYPE()به تابع ایستا درونخطی تغییر یافت. وصله توسط Donghee Na.bpo-40696: رفع یک توقف ناخواسته (hang) که ممکن است پس از
generator.throw()به دلیل وجود یک چرخه در زنجیرهی زمینهی استثنا رخ دهد.bpo-40521: هر مفسر اکنون فهرستهای آزاد (free lists)، تکنمونهها (singletons) و نهانگاههای (caches) اختصاصی خود را دارد:
فهرستهای آزاد: عدد اعشاری (float)، تاپل (tuple)، فهرست (list)، دیکشنری (dict)، قاب (frame)، زمینه (context)، تولیدگر ناهمگام (asynchronous generator)، خطای MemoryError.
تکنمونهها: تاپل خالی، رشتهی بایت خالی، رشتهی یونیکد خالی، نویسهی تکبایتی، نویسهی تک یونیکد (latin1).
نهانگاه اسلایس (Slice cache).
آنها دیگر بین همهی مفسرها به اشتراک گذاشته نمیشوند.
bpo-40679: پیامهای خطای
TypeErrorخاص دربارهی آرگومانهای گمشده یا اضافی اکنون شامل نام کامل تابع میشوند. وصله توسط Dennis Sweeney.bpo-29590: درست کردن ردگیری پشته پس از فراخوانی
generator.throw()روی تولیدگری که از یکyield fromمقدار تولید کرده است.bpo-4022: بهبود کارایی تولیدگرها با بالا نیاوردن StopIteration داخلی.
کتابخانه¶
bpo-1635741: انتقال ماژول
mmapبه مقداردهی اولیه چندمرحلهای.bpo-1635741: انتقال ماژول
_lzmaبه مقداردهی اولیه چندمرحلهای.
هسته و توکارها (Core and Builtins)¶
bpo-37999: توابع توکار (Builtin) و افزونهای که آرگومانهای عدد صحیح میپذیرند، دیگر اشیاء
Decimal،Fractionو سایر اشیایی را که تبدیل آنها به اعداد صحیح همراه با از دست رفتن داده است (مثلاً متد__int__()را دارند اما متد__index__()را ندارند) نمیپذیرند.bpo-29882: اضافه شدن متد
int.bit_count()که تعداد ارقام یک را در نمایش دودویی یک عدد صحیح میشمارد. اصلاحیه از Niklas Fiekas.
کتابخانه¶
bpo-36982: استفاده از توابع رنگ پیشرفتهی ncurses در صورت امکان برای پشتیبانی از پایانههای دارای ۲۵۶ رنگ، و افزودن تابع جدید
curses.has_extended_color_support()برای مشخص کردن اینکه آیا پشتیبانی از رنگهای پیشرفته توسط کتابخانهی زیرین ncurses فراهم شده است یا خیر.
هسته و توکارها (Core and Builtins)¶
کتابخانه¶
bpo-41900: سریالسازی C14N 2.0 در xml.etree.ElementTree برای صفتهای بدون پیشوند هنگامی که یک فضای نام پیشفرض تعریف شده بود، با خطا مواجه شد.
bpo-41887: حذف فضاهای خالی و تبهای پیشآمده در
ast.literal_eval(). همچنین مستندسازی حذف فضاهای خالی و تبها برایeval().bpo-41773: ذکر این نکته در مستندات که
random.choices()از وزنهای نامتناهی پشتیبانی نمیکند، و ایجاد استثنایValueErrorدر صورت داده شدن وزنهای نامتناهی.bpo-41840: رفع باگ در ماژول
symtableکه باعث میشد متغیرهای سراسری سطح ماژول به عنوان متغیرهای هم محلی و هم سراسری گزارش نشوند. اصلاحیه از Pablo Galindo.bpo-41842: افزودن تابع
codecs.unregister()برای لغو ثبت یک تابع جستجوی کُدک.bpo-40564: در
zipfile.Path، به جای ایجاد یک کپی، نوع شیء ZipFile ارائهشده را تغییر دهید. این کار از بروز مشکلاتی جلوگیری میکند که در آن هم کپی محلی و هم کپی فراخواننده تلاش میکنند دستهی پروندهی مشابهای را ببندند.bpo-40670: اعتبارسنجی مطمئنتر دستورها در
timeit.Timer. این کلاس اکنون دستورهای «خالی» (فقط شامل فضاهای خالی و کامنتها) را میپذیرد و دستورهای با تورفتگی نادرست را رد میکند.bpo-41833: سازندهی
threading.Threadاکنون اگر آرگومان target مشخص شده باشد اما آرگومان name حذف شده باشد، از نام هدف استفاده میکند.bpo-41817: اصلاح
tkinter.EventTypeEnum به طوری که تمام اعضا رشته باشند و هیچکدام تاپل (tuple) نباشند.bpo-41810: انواع
types.EllipsisType،types.NotImplementedTypeوtypes.NoneTypeمجدداً معرفی شدند و مجموعهی جدیدی از انواع را فراهم میکنند که بهراحتی توسط بررسیکننده ایستای نوع قابل تفسیر هستند.bpo-41815: رفع خطای segfault در SQLite3 هنگام پشتیبانگیری از پایگاه دادهی بستهشده. اصلاحیهای که توسط Peter David McCormick مشارکت داده شده است.
bpo-41816: افزودن StrEnum: تضمین میکند که تمام اعضا از قبل رشته یا نامزدهای رشتهای هستند.
bpo-41517: رفع باگی که به Enumها اجازه میداد از طریق ارثبری چندگانه گسترش یابند.
bpo-39587: استفاده از نوع دادهی میکساین درست هنگام ساختن Enumها.
bpo-41792: افزودن تابع is_typeddict به typing.py برای بررسی اینکه آیا یک نوع، یک کلاس TypedDict است یا خیر
پیش از این راهی برای بررسی آن بدون استفاده از API خصوصی وجود نداشت. نگاه کنید به relevant issue in python/typing.
bpo-41789: اعمال بازنویسیهای
objectدر زمان ایجاد کلاسEnum(بهطور مشخص،__str__،__repr__،__format__و__reduce_ex__).bpo-32218: اعضای
enum.Flagوenum.IntFlagاکنون پیمایشپذیر هستند.bpo-39651: رفع یک شرایط رقابت در متد
call_soon_threadsafe()ازasyncio.ProactorEventLoop: اگر سوکت پایپ خودکار بسته شده باشد، هیچ کاری انجام ندهید.bpo-1635741: انتقال ماژول توسعهای
mashalبه API مقداردهی اولیهی چندمرحلهای (PEP 489).bpo-1635741: انتقال ماژول توسعهای
_stringبه API مقداردهی اولیهی چندمرحلهای (PEP 489).bpo-41732: یک پیمایشگر به
memoryviewاضافه شد.bpo-41720: رفع مشکل
turtle.Vec2D.__rmul__()برای آرگومانهایی که از نوع int یا عدد اعشاری نیستند.bpo-41696: رفع نحوهی مدیریت حالت رفع اشکال در
asyncio.run(). این کار امکان تنظیمPYTHONASYNCIODEBUGیا-X devرا برای فعالسازی حالت رفع اشکال asyncio هنگام استفاده ازasyncio.run()فراهم میکند.bpo-41687: رفع پیادهسازی sendfile برای سازگاری با Solaris.
bpo-41662: استثناهای بالاآماده در
__len__()از یک دنباله از پارامترها درsqlite3دیگر باProgrammingErrorبازنویسی نمیشوند.bpo-39010: راهاندازی مجدد یک
ProactorEventLoopدر ویندوز دیگر خطاهای کاذبConnectionResetErrorsرا ثبت نمیکند.bpo-41638: پیام
ProgrammingErrorبرای پارامتر مفقود درsqlite3اکنون به جای اندیس پارامتر، نام آن را هنگامی که پارامترها به صورت یک dict ارسال میشوند، شامل میشود.bpo-41662: رفع فروپاشی هنگام تغییر دادن فهرست پارامترها در حین پیمایش در
sqlite3.bpo-41513: بهبود دقت math.hypot(). به صورت داخلی، هر مرحله با دقت اضافی محاسبه میشود به طوری که نتیجه اکنون تقریباً همیشه به درستی گرد میشود.
bpo-41609: دستور whatis در pdb متدهای نمونه را به درستی به عنوان 'Method' و نه 'Function' گزارش میکند.
bpo-39994: رفع نحوهی مدیریت زیرکلاسهای dict که __repr__ را بازنویسی میکنند در pprint.
bpo-32751: هنگام لغو وظیفه به دلیل سررسید مهلت زمانی،
asyncio.wait_for()اکنون تا زمانی که لغو کامل شود صبر خواهد کرد، حتی در مواردی که timeout <= 0 باشد، درست مانند حالتی که مهلتهای زمانی مثبت وجود دارد.bpo-37658: متد
asyncio.wait_for()اکنون به درستی رقابت بین لغو خودِ آن و اتمام شیء انتظارپذیر پیچیده شده را مدیریت میکند.bpo-40782: تغییر متد asyncio.AbstractEventLoop.run_in_executor به طوری که یک همروال نباشد.
bpo-41520: اصلاح رگرسیون در
codeopکه مانع از تبدیل اخطارهای کامپایل به خطا میشد.bpo-41528: ماژول turtle از توابع ماژول math برای تبدیل درجه به رادیان و بالعکس و محاسبهی نرم بردار استفاده میکند.
bpo-41513: بهبود جزئی الگوریتمی در math.hypot() و math.dist() که بهینهسازیهای کوچکی در سرعت و دقت ایجاد میکند.
bpo-41503: رفع حالت رقابت (race) بین setTarget و flush در logging.handlers.MemoryHandler.
bpo-41497: رفع خطای احتمالی UnicodeDecodeError در ماژول dis.
bpo-41467: در ویندوز، مقدار بازگشتی تابع
recv_into()در asyncio را زمانی که سوکت/پایپ بسته است (BrokenPipeError) اصلاح کنید: به جای رشتهی بایت خالی (b'')، مقدار0را برگردانید.bpo-41425: قابل اجرا ساختن مثال مستندات tkinter.
bpo-41421: انجام یک سادهسازی جبری روی random.paretovariate(). اکنون این تابع کمتر در معرض خطای گرد کردن است و کمی سریعتر کار میکند. ورودیهایی که قبلاً باعث بروز ZeroDivisionError میشدند، اکنون باعث بروز OverflowError میشوند.
bpo-41440: افزودن پشتیبانی از
os.cpu_count()برای سیستمعامل بیدرنگ VxWorks.bpo-41316: اصلاح ماژول
tarfileبرای نوشتن فقط نام پایهی پروندهی TAR در سرآیند فشردهسازی GZIP.bpo-41384: پرتاب TclError به جای TypeError هنگام ارسال یک گزینهی ناشناخته به tkinter.OptionMenu.
bpo-41317: استفاده از add_done_callback() در asyncio.loop.sock_accept() برای لغو اشتراک زودهنگام خواننده هنگام لغو عملیات.
bpo-35328: تنظیم متغیر محیطی
VIRTUAL_ENV_PROMPTدر زمان فعالسازیvenv.bpo-41341: ارزیابی بازگشتی
typing.ForwardRefدرget_type_hints.bpo-41344: جلوگیری از ایجاد شیءهای
shared_memory.SharedMemoryباsize=0.bpo-41333: متد
collections.OrderedDict.pop()اکنون ۲ برابر سریعتر است.bpo-41288: رفعپیکربندی (unpickling) آپکد نامعتبر NEWOBJ_EX با پیادهسازی C اکنون به جای از کار افتادن برنامه (crashing)، خطای UnpicklingError پرتاب میکند.
bpo-39017: جلوگیری از حلقهی بینهایت هنگام خواندن پروندههای TAR دستکاریشدهی خاص با استفاده از ماژول tarfile (CVE 2019-20907).
bpo-41273: افزایش سرعت هر انتقال با استفاده از
_ProactorReadPipeTransportاز طریق فراخوانیrecv_intoبه جایrecv، و در نتیجه عدم ایجاد یک بافر جدید برای هر فراخوانیrecvدر حلقهی خواندن انتقال.bpo-41235: اصلاح مدیریت خطا در متد
ssl.SSLContext.load_dh_params().bpo-41207: در distutils.spawn، این انتظار را که هنگام پیدا نشدن دستور، خطای DistutilsExecError بالا آورده شود، بازیابی کنید.
bpo-29727: ثبت کردن
array.arrayبه عنوان یکMutableSequence. وصله توسط Pablo Galindo.bpo-39168: حذف متد
__new__ازtyping.Generic.bpo-41194: اصلاح یک فروپاشی در ماژول
_ast: دیگر نمیتوان آن را بیش از یک بار بارگذاری کرد. این ماژول اکنون به جای وضعیت ماژول، از وضعیت سراسری استفاده میکند.bpo-41195: افزودن ویژگی خواندنی ssl.SSLContext.security_level برای بازیابی سطح امنیتی زمینهی مورد نظر.
bpo-41193: تابع atexit با نام
write_history()در تکمیلکننده readline اکنون هر خطایOSErrorرا در صورتی که سامانه فایلبندی فقطخواندنی باشد نادیده میگیرد، به جای اینکه فقط خطاهایFileNotFoundErrorوPermissionErrorرا نادیده بگیرد.bpo-41182: selector: استفاده از DefaultSelector بر اساس پیادهسازی
bpo-41161: ماژول دهدهی اکنون به libmpdec-2.5.0 نیاز دارد. کاربران --with-system-libmpdec باید کتابخانهی سامانه خود را بهروزرسانی کنند.
bpo-40874: ماژول دهدهی اکنون به libmpdec-2.5.0 نیاز دارد.
bpo-41138: اصلاح رابط خط فرمان ماژول
traceبرای پروندههای سورس پایتون با کدگذاری غیر UTF-8.bpo-31082: استفاده از اصطلاح پیمایشپذیر در رشته مستند تابع
functools.reduce().bpo-40521: حذف freelist از collections.deque().
bpo-31938: اصلاح امضاهای مقادیر پیشفرض چندین تابع در ماژول
select- توسط Anthony Sottile.bpo-41068: اصلاح خواندن پروندههایی با نامهای غیر اسکی از آرشیو ZIP بلافاصله پس از نوشتن آنها.
bpo-41058: تابع
pdb.find_function()اکنون کدگذاری پروندهی سورس را به درستی تعیین میکند.bpo-41056: جلوگیری از ارسال مقادیر نامعتبر توصیفگر پرونده به os.fpathconf. (شناساییشده توسط Coverity)
bpo-41056: اصلاح واگردانی اشارهگر تهی (NULL) در ماژول ssl در طول یک خطای MemoryError در فراخوانی بازگشتی keylog. (شناساییشده توسط Coverity)
bpo-41056: اصلاح نمونهای که در آن خطای MemoryError در ماژول zoneinfo ممکن است گزارش نشود یا در منبع خود گزارش نشود. (یافتهشده توسط Coverity)
bpo-41048: تابع
mimetypes.read_mime_types()پروندهی قانون را با استفاده از کدگذاری UTF-8 میخواند، نه کدگذاری locale. وصله توسط Srinivas Reddy Thatiparthy.bpo-41043: رفع استفاده از
glob()در کتابخانهی استاندارد: بخش لفظی مسیر اکنون همواره بهدرستی فرار داده میشود.bpo-41025: رفع مشکلی که از زیرکلاس شدن پیادهسازی C از
zoneinfo.ZoneInfoجلوگیری میکرد.bpo-35018: افزودن کلاس
xml.sax.handler.LexicalHandlerکه در سایر پیادهسازیهای XML مربوط به SAX موجود است.bpo-41002: بهبود کارایی HTTPResponse.read با مقدار مشخص. وصله توسط Bruce Merry.
bpo-40448: ماژول
ensurepipاکنون هنگام نصب نسخههای همراه بستهبندیشدهیpipوsetuptools، استفاده از نهانگاهpipرا غیرفعال میکند. وصله توسط Krzysztof Konopko.bpo-40967: حذف
asyncio.Task.current_task()وasyncio.Task.all_tasks(). وصلهای که توسط Rémi Lapeyre مشارکت داده شده است.bpo-40924: اطمینان از اینکه
importlib.resources.pathیک مسیر موجود برای خوانندهی منبع SourceFileLoader برمیگرداند. از رگرسیون شناساییشده در شاخهی اصلی (master) تا زمان ارائهی یک راهحل بلندمدت جلوگیری میکند.bpo-40955: رفع یک نشت حافظهی جزئی در ماژول
subprocessهنگامی که extra_groups مشخص شده بود.bpo-40855: توابع انحراف معیار و واریانس در ماژول statistics آرگومانهای mu و xbar خود را نادیده میگرفتند.
bpo-40939: استفاده از پارسر جدید PEG هنگام تولید ماژول
keywordکتابخانهی استاندارد.bpo-23427: اضافهشدن ویژگی
sys.orig_argv: فهرست آرگومانهای اصلی خط فرمان که به برنامهی پایتون فرستاده شدهاند.bpo-33689: نادیدهگرفتن سطرهای خالی یا شامل فقط فضای خالی در پروندههای .pth. این رفتار با مستندات مطابقت دارد. پیشازاین، سطرهای خالی باعث میشدند که دایرکتوری site-packages چندین بار در sys.path ظاهر شود. توسط Ido Michael و مشارکتکنندگان Malcolm Smith و Tal Einat.
bpo-40884: اضافهشدن پارامتر
defaultsبهlogging.Formatter، برای امکان مشخصکردن مقادیر پیشفرض برای فیلدهای سفارشی. وصله توسط Asaf Alon و Bar Harel.bpo-39791: بهروزرسانی importlib.metadata از importlib_metadata 1.6.1.
bpo-40807: جلوگیری از انتشار سهبارهی هر هشدار توسط codeop._maybe_compile که توسط code.InteractiveInterpreter (و IDLE) استفاده میشود.
bpo-32604: رفع نشت ارجاع در ماژول
selectهنگامی که ماژول در یک زیرمفسر وارد (import) میشود.bpo-39791: بارگذارهای توکار (SourceFileLoader و ZipImporter) اکنون پیادهسازیهای
TraversableResourcesرا برایResourceReaderفراهم میکنند و تابع جایگزین حذف شده است.bpo-39314: کلاس
rlcompleter.Completerو پوستهی استاندارد پایتون اکنون پرانتز توابع بدون آرگومان را میبندند. وصلهای با مشارکت Rémi Lapeyre.bpo-17005: قابلیت مرتبسازی توپولوژیک که ابتدا در ماژول
functoolsمعرفی شده بود، برای انطباق بهتر با ابزارهای جدید و حفظ محدودهی اصلی ماژولfunctools، به ماژول جدیدgraphlibمنتقل شد. وصله توسط Pablo Galindobpo-40834: رفع مشکل truncate هنگام ارسال شیء str با _xxsubinterpreters.channel_send.
bpo-40755: افزودن مقایسههای غنی به collections.Counter().
bpo-26407: خطاهای غیرمنتظره در فراخوانی متد
__iter__دیگر توسطTypeErrorدرcsv.reader()،csv.writer.writerow()وcsv.writer.writerows()پنهان نمیشوند.bpo-39384: رفع مشکل email.contentmanager برای اجازه دادن به set_content() جهت تنظیم یک رشتهی تهی (null).
bpo-40744: ماژول
sqlite3از توابع API لایتاسکل (SQLite) استفاده میکند که به نسخهی ۳.۷.۳ یا بالاتر لایتاسکل نیاز دارند. این وصل پشتیبانی از نسخههای قدیمیتر لایتاسکل را حذف میکند و صراحتاً در زمان ساخت، کامپایل و رانتایم به لایتاسکل ۳.۷.۳ نیاز دارد. وصل توسط Sergey Fedoseev و Erlend E. Aasland.bpo-40777: مقداردهی اولیه به PyDateTime_IsoCalendarDateType.tp_base در زمان اجرا برای جلوگیری از بروز خطا در برخی کامپایلرها.
bpo-38488: بهروزرسانی ensurepip برای نصب pip 20.1.1 و setuptools 47.1.0.
bpo-40792: نتیجهی
operator.index()اکنون همیشه دارای نوع دقیقintاست. پیشتر، نتیجه میتوانست نمونهای از یک زیرکلاس ازintباشد.bpo-40767: ماژول
webbrowserاکنون با بررسی متغیر محیطی WAYLAND_DISPLAY، مرورگر پیشفرض را به درستی در سیستمهای خالص Wayland پیدا میکند. وصل مشارکتدادهشده توسط Jérémy Attali.bpo-40791: تابع
hashlib.compare_digest()در صورت دسترسی به OpenSSL، از تابعCRYPTO_memcmp()آن استفاده میکند.bpo-40795: ماژول
ctypes: اگر ctypes در تبدیل نتیجهی یک کالبک دچار خطا شود یا اگر یک تابع کالبک ctypes یک استثنا ایجاد کند، sys.unraisablehook اکنون با یک استثنای تنظیمشده فراخوانی میشود. پیشتر، خطا توسطPyErr_Print()در stderr ثبت (log) میشد.bpo-16995: افزودن
base64.b32hexencode()وbase64.b32hexdecode()برای پشتیبانی از کدگذاری Base32 با الفبای مبنای شانزدهی توسعهیافته.bpo-30008: اصلاح کد
sslبرای سازگاری با بیلدهای OpenSSL 1.1.x که ازno-deprecatedو--api=1.1.0استفاده میکنند.bpo-30064: رفع مشکل شرایط رقابت (race condition) در
loop.sock_*کتابخانهی asynciobpo-40759: منسوخ کردن ماژول
symbol.bpo-40756: آرگومان دوم (extra) در
LoggerAdapter.__init__اکنون به طور پیشفرض None است.bpo-37129: افزودن پرچم جدید
os.RWF_APPENDبرایos.pwritev().bpo-40737: رفع نشت ارجاع احتمالی برای مقداردهی اولیهی
sqlite3.bpo-40726: مدیریت مواردی که
end_linenoدرast.increment_lineno()برابر باNoneاست.bpo-40698: آپلود
distutilsخلاصههای (digest) SHA2-256 و Blake2b-256 ایجاد میکند. اگر پلتفرم MD5 را مسدود کند، خلاصه مانیتورینگ MD5 رد میشود.bpo-40695: ماژول
hashlibهنگامی که OpenSSL یک هش دایجست (hash digest) فراهم میکند و الگوریتم توسط خطمشی امنیتی مسدود شده است، دیگر به پیادهسازیهای هش توکار بازنمیگردد.bpo-9216: تابع
hashlib.new()آرگومانusedforsecurityرا به سازندهی EVP در OpenSSL یعنی_hashlib.new()ارسال کرد. آزمونهای test_hashlib و test_smtplib خطمشیهای امنیتی سختگیرانه را بهتر مدیریت میکنند.bpo-40614: تابع
ast.parse()عبارات مستندکننده را در افاسترینگها تجزیه نخواهد کرد اگر نسخهی ویژهی ارسالشدهیfeature_versionکمتر از(3, 8)باشد.bpo-40626: افزودن پسوند پروندهی h5 به عنوان نوع دادهی MIME با نام application/x-hdf5، مطابق با توصیهی گروه HDF برای پروندههای دادهی قالببندیشدهی HDF5. وصلهای از Mark Schwab.
bpo-25920: در سیستمعامل macOS، هنگام ساخت پایتون برای macOS نسخهی ۱۰.۴ و قدیمیتر (که در نصبکنندهی python.org برای macOS اینگونه نبود)، تابع
socket.getaddrinfo()دیگر از قفل داخلی برای جلوگیری از شرایط مسابقه هنگام فراخوانیgetaddrinfo()استفاده نمیکند؛ این تابع از macOS نسخهی ۱۰.۵ به بعد نخایمن است. پایتون ۳.۹ به macOS نسخهی ۱۰.۶ یا جدیدتر نیاز دارد. قفل داخلی باعث ایجاد توقف تصادفی در انشعاب (fork) میشد هنگامی که نخ دیگری تابعsocket.getaddrinfo()را فراخوانی میکرد. این قفل همچنین در FreeBSD قدیمیتر از ۵.۳، OpenBSD قدیمیتر از ۲۰۱۳۱۱ و NetBSD قدیمیتر از ۴ استفاده میشد.bpo-40671: آمادهسازی
_hashlibبرای PEP 489 و استفاده ازPyModule_AddType().bpo-32309: اضافه شدن یک coroutine جدید به نام
asyncio.to_thread(). این تابع عمدتاً برای اجرای توابع محدود به ورودی/خروجی (IO-bound) در یک نخ (thread) جداگانه استفاده میشود تا از مسدود شدن (blocking) حلقه رویداد (event loop) جلوگیری شود و اساساً به عنوان نسخهای ردهبالا ازrun_in_executor()عمل میکند که میتواند مستقیماً آرگومانهای کلیدواژهای (keyword argument) را دریافت کند.bpo-36543: بازگردانی ماژول منسوخ
xml.etree.cElementTree.bpo-40611: ثابت
MAP_POPULATEاکنون به فهرست پرچمهای صادرشدهی ماژولmmapاضافه شده است.bpo-39881: پیشنهاد بهبود پایتون (PEP 554) برای استفاده در مجموعهی آزمون. (وصله توسط Joannah Nanjekye)
bpo-13097: ماژول
ctypesاکنون زمانی که یک کالبک با بیش از ۱۰۲۴ آرگومان فراخوانی شود، یکArgumentErrorایجاد میکند.bpo-39385: یک مدیر زمینهی تأیید آزمون جدید به نام
unittest.assertNoLogs()تضمین میکند که بلوک مشخصی از کد با استفاده از ماژول logging هیچ پیام گزارشی را منتشر نکند. مشارکتکننده: Kit Yan Choi.bpo-23082: بهروزرسانی پیام خطا و مستندات PurePath.relative_to() برای انعکاس بهتر رفتار تابع.
bpo-40318: در صورت در دسترس بودن، از نسخهی ۲ API ردیابی SQLite3 استفاده کنید.
bpo-40105: کتابخانهی ZipFile پروندهها را کوتاه میکند تا هنگام ارائهی یک کامنت کوتاهتر در حالت الحاق ("a")، از خرابی جلوگیری شود. وصله توسط Jan Mazur.
bpo-40084: رفع
Enum.__dir__: تابع dir(Enum.member) اکنون علاوه بر متدها، ویژگیها را نیز شامل میشود.bpo-31122: تابع ssl.wrap_socket() اکنون بهجای OSError، خطای ssl.SSLEOFError را ایجاد میکند وقتی همتا اتصال را در طول مذاکرهی TLS میبندد
bpo-39728: رفع مقدار پیشفرض
_missing_به طوری که یکValueErrorتکراری به عنوان مقدار__context__برای خطای اصلیValueErrorتنظیم نشود.bpo-39244: رفع تابع
multiprocessing.context.get_all_start_methodsبرای بازگرداندن درست متد پیشفرض در ابتدا در macOS.bpo-39040: رفع تجزیهی پارامترهای سرآیند نامعتبر mime با حذف فاصلههای خالی بین کلمات کدگذاریشده در یک رشتهی با نقلقول ساده.
bpo-38731: افزودن گزینهی
--quietبه رابط خط فرمانpy_compile. اصلاح از Gregory Schevchenko.bpo-35714: اگر کاراکتر تهی در رشتهی قالببندی
structوجود داشته باشد، اکنونstruct.errorبالا آورده میشود.bpo-38144: افزودن پارامترهای root_dir و dir_fd در
glob.glob().bpo-26543: رفع مشکل
IMAP4.noop()هنگامی که حالت اشکالزدایی فعال است (مانند:imaplib.Debug = 3).bpo-12178: ماژول
csv.writer()اکنون هنگامی که ورودی حاوی escapechar است، آن را به درستی خنثی میکند. اصلاح از Catalin Iacob، Berker Peksag و Itay Elbirt.bpo-36290: گرههای درخت نحوی انتزاعی (AST) اکنون هنگام آرگومانهای کلیدواژهای متناقض، خطای
TypeErrorرا بالا میآورند. اصلاح مشارکتشده توسط Rémi Lapeyre.bpo-33944: افزودن ردیابی بستههای site.py در حالت پرجزئیات.
bpo-35078: بازسازی متدهای formatweekday و formatmonthname در کلاسهای LocaleHTMLCalendar و LocaleTextCalendar در ماژول calendar برای فراخوانی متدهای کلاس پایه. این کار کلاسهای CSS سفارشیسازیپذیر را برای LocaleHTMLCalendar فعال میکند. اصلاح از Srinivas Reddy Thatiparthy
bpo-29620: متد
assertWarns()دیگر خطایRuntimeExceptionرا هنگام دسترسی به__warningregistry__یک ماژول که باعث وارد کردن ماژول جدیدی میشود، یا زمانی که ماژول جدیدی در نخ دیگری وارد میشود، بالا نمیآورد. اصلاح از Kernc.bpo-31844: حذف متد
ParserBase.error()از ماژول خصوصی و مستندنشدهی_markupbase. کلاسhtml.parser.HTMLParserتنها زیرکلاسParserBaseاست و پیادهسازی متدerror()آن در پایتون ۳.۴ منسوخ و در پایتون ۳.۵ حذف شد.bpo-34226: رفع مشکل
cgi.parse_multipartبدون وجود content_length. اصلاح از Roger Duranbpo-33660: رفع مشکل pathlib.PosixPath برای حل کردن صحیح یک مسیر نسبی واقع در پوشهی ریشه.
bpo-28557: بهبود پیام خطا برای عملکرد نامناسب
rawio.readintobpo-26680: متد d.is_integer() به نوع Decimal اضافه شد تا با سایر انواع عددی سازگاری داشته باشد.
bpo-26680: متد x.is_integer() در انواع انتزاعی برج اعداد (numeric tower) یعنی Real، Rational و Integral با پیادهسازیهای پیشفرض مناسب ادغام شد.
مستندات¶
bpo-41428: افزودن مستندات برای PEP 604 (امکان نوشتن انواع اشتراکی به صورت
X | Y).bpo-41774: در بخش «دنبالهها (تاپلها/فهرستها)» از پرسشهای متداول برنامهنویسی (Programming FAQ)، بخش «چگونه چندین آیتم را از یک فهرست حذف کنید» اضافه شد.
bpo-35293: رفع RemovedInSphinx40Warning هنگام ساخت مستندات. اصلاح از Donghee Na.
bpo-37149: تغییر پیوند مستندات tkinter اثر Shipman از archive.org به TkDocs. (این مستندات از سرور NMT حذف شدهاند.) پیوند جدید بسیار سریعتر پاسخ میدهد و شامل یک یادداشت توضیحی کوتاه است.
bpo-41726: بهروزرسانی اطلاعات شمارش ارجاع (refcounts) تابع
PyType_FromModuleAndSpec.bpo-41624: اصلاح امضای
typing.Coroutine.bpo-40204: فعالسازی گزینهی
c_allow_pre_v3در Sphinx 3.2 و غیرفعالسازی گزینهیc_warn_on_allowed_pre_v3برای سازگار کردن مستندات با Sphinx 2 و Sphinx 3.bpo-41045: افزودن مستندات برای ویژگی اشکالزدایی افاسترینگها.
bpo-41314: نسخهی انتشار دستوری که در آن
from __future__ import annotationsبه حالت پیشفرض تبدیل میشود، از4.0به3.10تغییر یافت (پیرو تغییری در PEP (پیشنهاد بهبود پایتون) 563).bpo-40979: بازسازی typing.rst، و سازماندهی بیش از ۷۰ کلاس، تابع و دکوراتور در زیربخشهای جدید.
bpo-40552: اصلاح در بخش ۴.۲ خودآموز. قطعهکد اکنون درست است.
bpo-39883: مجوز کدها، نمونهها و دستورالعملها در مستندات پایتون، علاوه بر مجوز موجود Python 2.0، تحت مجوز آزادتر BSD0 قرار گرفت.
bpo-37703: بهروزرسانی مستندات برای تشریح جامع رفتار gather.cancel()
آزمونها¶
bpo-41939: اصلاح test_site.test_license_exists_at_url(): فراخوانی
urllib.request.urlcleanup()برای بازنشانی متغیر سراسریurllib.request._opener. وصله توسط Victor Stinner.bpo-41731: موفقیتآمیز کردن test_cmd_line_script با گزینهی '-vv'.
bpo-41602: افزودن آزمونها برای مدیریت SIGINT در ماژول runpy.
bpo-41521:
test.support: تغییر نام پارامترblacklistتابعcheck__all__()بهnot_exported.bpo-41477: اختیاری کردن ctypes در test_genericalias.
bpo-41085: اصلاح سرریز عدد صحیح در متد
array.array.index()روی ویندوز ۶۴ بیتی برای اندیسهای بزرگتر از2**31.bpo-41069:
test.support.TESTFNو پوشهی جاری برای آزمونها هنگام اجرا از طریقtest.regrtestاکنون در صورت امکان شامل نویسههای غیر اسکی میشوند.bpo-38377: روی لینوکس، اگر کاربر جاری نتواند پروندهای در پوشهی
/dev/shm/ایجاد کند، آزمونهای استفادهکننده از پردازش چندگانه (multiprocessing) رد شوند. افزودن تابعskip_if_broken_multiprocessing_synchronize()به ماژولtest.support.bpo-41009: اصلاح استفاده از دکوراتورهای
support.require_{linux|mac|freebsd}_version()به عنوان دکوراتور کلاس.bpo-41003: اصلاح
test_copyregهنگام نصب بودنnumpy: ماژولtest.pickletesterاکنون هنگام ایمپورت کردنnumpyفیلترهای هشدار را ذخیره/بازیابی میکند تا فیلترهای نصبشده توسطnumpyنادیده گرفته شوند.bpo-40964: غیرفعالسازی آزمونهای راه دور
imaplib، چون میزبان cyrus.andrew.cmu.edu اتصالات ورودی را مسدود میکند.bpo-40927: اصلاح test_binhex هنگام اجرای مجدد: این آزمون اکنون از import_fresh_module() استفاده میکند تا اطمینان حاصل شود که هر بار DeprecationWarning را بالا میآورد.
bpo-17258: پرش از برخی آزمونهای
multiprocessingزمانی که خلاصه هش MD5 مسدود شده است.bpo-31904: افزایش LOOPBACK_TIMEOUT به ۱۰ برای VxWorks RTOS.
bpo-38169: افزایش پوشش کد برای SharedMemory و ShareableList
bpo-34401: اجرای درست test_gdb روی HP-UX. وصلهای از مایکل اسیپوف (Michael Osipov).
ساخت¶
bpo-38249: بهروزرسانی
Py_UNREACHABLEبرای استفاده از __builtin_unreachable() اگر فقط کامپایلر قادر به استفاده از آن باشد. وصلهای از دونگه نا (Donghee Na).bpo-41617: اصلاح پروندهی سرآیند
pycore_bitutils.hبرای پشتیبانی از نسخههای قدیمی clang: تابع__builtin_bswap16()در LLVM clang 3.0 در دسترس نیست.bpo-40204: تثبیت نسخهی Sphinx روی 2.3.1 در
Doc/Makefile.bpo-36020: توابع C99 یعنی
snprintf()وvsnprintf()اکنون برای ساخت پایتون الزامی هستند.bpo-40684: دستور
make installاکنون هنگام استفاده از./configure --with-platlibdirبرای پوشهی مقصدlib-dynload/از متغیرPLATLIBDIRاستفاده میکند.bpo-40683: رفع مشکلی که در آن ماژول
zoneinfoو آزمونهای آن هنگام نصب پایتون باmakeگنجاندهچ نمیشدند.
Windows¶
bpo-41744: اصلاح ایمپورت خودکار پروندهی props هنگام استفاده از بستهی Nuget.
bpo-41627: پوشهی سایت کاربر برای نسخهی ۳۲ بیتی اکنون شامل پسوند
-32است تا از پوشهی مفسر ۶۴ بیتی متمایز شود.bpo-41526: اصلاح طرحبندی صفحهی نهایی برنامهی نصب با حذف تشکر ویژه از مارک هموند (Mark Hammond) (با اجازهی وی).
bpo-41492: اصلاح توضیحاتی که در اعلانهای UAC نمایش داده میشوند.
bpo-40948: بهبود پیام پس از نصب برای هدایت افراد به دستور «py».
bpo-41412: برنامهی نصب اکنون روی ویندوز ۷ و ویندوز ۸ با خطا مواجه خواهد شد. علاوه بر این، وابستگی UCRT اکنون همیشه بر حسب تقاضا بارگیری میشود.
bpo-40741: بهروزرسانی نسخهی ویندوز برای شامل کردن SQLite 3.32.3.
bpo-41142: ماژول
msilibاکنون از ایجاد پروندههای CAB با مسیر پروندهی غیر اسکی (non-ASCII) و افزودن پروندههایی با مسیر پروندهی غیر اسکی به آنها پشتیبانی میکند.bpo-41074: رفع پشتیبانی از نامهای غیر اسکی در توابع
msilib.OpenDatabase()وmsilib.init_database()و دستورات SQL غیر اسکی در متدmsilib.Database.OpenView().bpo-41039: DLL هدایتکنندهی ABI پایدار (python3.dll) اکنون از
#pragma comment(linker)برای صادرات مجدد استفاده میکند.bpo-40164: بهروزرسانی OpenSSL ویندوز به نسخهی 1.1.1g
bpo-39631: تغییر نوع MIME ثبتشده برای پروندههای
.pyروی ویندوز بهtext/x-pythonبه جایtext/plain.bpo-40677: تعریف دستی IO_REPARSE_TAG_APPEXECLINK در صورتی که برخی از SDKهای قدیمی ویندوز آن را نداشته باشند.
bpo-37556: گسترش راهنمای py.exe برای اشاره به بازنشانیها از طریق محیط مجازی (venv)، خط مفسر، متغیرهای محیطی و پروندههای ini.
مکاواس¶
bpo-41557: بهروزرسانی برنامهی نصب macOS برای استفاده از SQLite 3.33.0.
bpo-39580: جلوگیری از باز شدن پنجرهی Finder در صورت اجرای برنامهی نصب از خط فرمان. وصلهی ارائهشده توسط Rick Heil.
bpo-41100: رفع خطای configure هنگام ساخت روی macOS 11. توجه داشته باشید که نسخهی فعلی پایتون اندکی پس از اولین نسخهی پیشنمایش توسعهدهندهی macOS 11 (Big Sur) منتشر شد؛ مسائل شناختهشدهی دیگری نیز در مورد ساخت و اجرا روی نسخهی پیشنمایش توسعهدهنده وجود دارد. انتظار میرود Big Sur در نسخهی رفع اشکال آیندهی پایتون 3.8.x و نسخهی 3.9.0 بهطور کامل پشتیبانی شود.
bpo-40741: بهروزرسانی برنامهی نصب macOS برای استفاده از SQLite 3.32.3.
bpo-41005: رفع یک مشکل تنظیمات XDG که اجازه نمیداد macos مرورگر را در webbrowser.py باز کند
bpo-40741: بهروزرسانی برنامهی نصب macOS برای استفاده از SQLite 3.32.2.
IDLE¶
bpo-41775: استفاده از 'IDLE Shell' به عنوان عنوان پوسته
bpo-35764: بازنویسی بخش مستندات Calltips.
bpo-40181: در نکات مربوط به فراخوانی (calltips)، توقف یادآوری این موضوع که '/' پایان آرگومانهای فقط-جایگاهی را نشان میدهد.
bpo-41468: بهبود پیام خطای فروپاشی اجرای IDLE (که کاربران هرگز نباید آن را ببینند).
bpo-41373: ذخیرهی پروندههای بارگذاریشده بدون انتهای سطر (مانند حالت خالی) یا با انتهای سطرهای مختلف، با تنظیم انتهای سطر آنها به پیشفرض سیستم. رفع رگرسیون در 3.8.4 و 3.9.0b4.
bpo-41300: ذخیرهی پروندهها با کاراکترهای غیر ascii. رفع رگرسیون منتشرشده در 3.9.0b4 و 3.8.4.
bpo-37765: افزودن کلیدواژهها به فهرست تکمیل نام ماژول. بازنویسی بخش Completions در مستندات IDLE.
bpo-41152: کدگذاری
stdin،stdoutوstderrدر IDLE اکنون همیشه UTF-8 است.bpo-41144: امکان باز کردن ماژولهای خاصی مانند os.path توسط Open Module.
bpo-39885: کارکرد مجدد گزینههای Cut و Copy در منوی زمینهای هنگام کلیک راست در داخل یک ناحیهی انتخابشده.
bpo-40723: کاری کنید که test_idle پس از اجرا شدن پس از ایمپورت (import) با موفقیت گذرانده شود.
رابط C API¶
bpo-41936: ماکروهای مستندنشدهی
Py_ALLOW_RECURSIONوPy_END_ALLOW_RECURSIONو فیلدrecursion_criticalاز ساختارPyInterpreterStateحذف شدند.bpo-41692: تابع
PyUnicode_InternImmortal()اکنون منسوخ شده است و در پایتون ۳.۱۲ حذف خواهد شد: به جای آن ازPyUnicode_InternInPlace()استفاده کنید. وصله توسط Victor Stinner.bpo-41842: تابع
PyCodec_Unregister()برای لغو ثبت یک تابع جستجوی کُدک اضافه شد.bpo-41834: متغیر
_Py_CheckRecursionLimitحذف شد: این متغیر باceval.recursion_limitدر ساختارPyInterpreterStateجایگزین شده است. وصله توسط Victor Stinner.bpo-41689: انواع دادهی ایجادشده با
PyType_FromSpec()اکنون باعث میشوند هر امضایی در جایگاهtp_docآنها از طریق__text_signature__قابل دسترس باشد.bpo-41524: رفع باگ در
PyOS_mystrnicmp()وPyOS_mystricmp()که اشارهگرها را فراتر از انتهای رشته افزایش میدادند.bpo-41324: افزودن یک API کپسول دهدهی (decimal) حداقلی. این API از تبدیلهای سریع بین اعداد دهدهی تا ۳۸ رقم و نمایش سهگانهی آنها به عنوان یک struct زبان C پشتیبانی میکند.
bpo-30155: افزودن ماکروهای
PyDateTime_DATE_GET_TZINFO()وPyDateTime_TIME_GET_TZINFO()برای دسترسی به ویژگیهایtzinfoدر اشیایdatetime.datetimeوdatetime.time.bpo-40170: بازگردانی تغییر
PyType_HasFeature(): هنگامی که C API محدود استفاده نمیشود، این تابع به جای فراخوانی همیشگیPyType_GetFlags()که جزئیات پیادهسازی را پنهان میکند، دوباره عضوPyTypeObject.tp_flagsرا به طور مستقیم میخواند.bpo-41123: تابع
PyUnicode_AsUnicodeCopyحذف شد.bpo-41123: تابع
PyLong_FromUnicode()حذف شد.bpo-41123: تابع
PyUnicode_GetMax()حذف شد.bpo-41123: توابع
Py_UNICODE_str*که رشتههایPy_UNICODE*را دستکاری میکردند، حذف شدند.bpo-41103: توابع
PyObject_AsCharBuffer()،PyObject_AsReadBuffer()،PyObject_CheckReadBuffer()وPyObject_AsWriteBuffer()حذف شدند. لطفاً به پروتکل بافر جدید یعنیPyObject_GetBuffer()وPyBuffer_Release()مهاجرت کنید.bpo-36346: هشدار DeprecationWarning را برای
PyUnicode_FromUnicode(NULL, size)وPyUnicode_FromStringAndSize(NULL, size)با شرطsize > 0ایجاد میکند.bpo-36346: توابع
Py_UNICODE_COPY،Py_UNICODE_FILL،PyUnicode_WSTR_LENGTH،PyUnicode_FromUnicode،PyUnicode_AsUnicodeوPyUnicode_AsUnicodeAndSizeرا در C به عنوان منسوخ علامتگذاری کنید.Py_UNICODE_MATCHرا که از پایتون ۳.۳ منسوخ و خراب شده بود، حذف کنید.bpo-40989: ماکروهای
PyObject_INIT()وPyObject_INIT_VAR()به ترتیب به نامهای مستعاری برای توابعPyObject_Init()وPyObject_InitVar()تبدیل میشوند.bpo-36020: در سیستمعامل ویندوز، عبارت
#include "pyerrors.h"دیگر ماکروهایsnprintfوvsnprintfرا تعریف نمیکند.bpo-40943: ماکروی
PY_SSIZE_T_CLEANاکنون باید برای استفاده از قالبهایPyArg_ParseTuple()وPy_BuildValue()تعریف شود که از#استفاده میکنند:es#،et#،s#،u#،y#،z#،U#وZ#. به بخش Parsing arguments and building values و PEP 353 مراجعه کنید.bpo-40910: تابع
Py_GetArgcArgv()را بهطور صریح به API زبان C اکسپورت کنید و آن را مستندسازی کنید. پیش از این، بهطور ضمنی اکسپورت میشد که از زمان ساخته شدن پایتون با-fvisibility=hiddenدیگر کار نمیکند.bpo-40724: امکان تعریف جایگاههای بافر را در مشخصات نوع فراهم کنید.
bpo-40679: در صورتی که آرگومان qualname برابر با NULL باشد، فروپاشی
_PyEval_EvalCode()را رفع کنید.bpo-40839: فراخوانی
PyDict_GetItem()بدون نگه داشتن GIL به دلایل تاریخی مجاز بوده است. این کار دیگر مجاز نیست.bpo-40826: تابع
PyOS_InterruptOccurred()اکنون اگر با رها شدن GIL فراخوانی شود، با یک خطای مهلک شکست میخورد.bpo-40792: نتیجهی
PyNumber_Index()اکنون همواره دارای نوع دقیقintاست. پیش از این، نتیجه میتوانست نمونهای از یک زیرکلاسintباشد.bpo-39573: ماکروهای
Py_REFCNT()وPy_SIZE()را به توابع inline ایستا تبدیل کنید. آنها دیگر نمیتوانند به عنوان مقدار چپ (l-value) استفاده شوند: برای تنظیم تعداد مرجع و اندازهی یک شیء ازPy_SET_REFCNT()وPy_SET_SIZE()استفاده کنید. این تغییر به قصد ناسازگاری با نسخههای قبلی انجام شده است تا API زبان C برای ساختارPyObjectکدر آماده شود.bpo-40703: توابع PyType_FromSpec*() دیگر ویژگی «__module__» مربوط به نوع را اگر از طریق «Py_tp_members» یا «Py_tp_getset» تنظیم شده باشد، بازنویسی نمیکنند.
bpo-39583: اعلانهای اضافی "extern C" را از
Include/cpython/*.hحذف کنید.
Python 3.9.0 بتا ۱¶
تاریخ انتشار: ۲۰۲۰-۰۵-۱۹
امنیت¶
هسته و توکارها (Core and Builtins)¶
bpo-40663: حاشیهنویسیها را بهدرستی تولید کنید؛ مواردی که پرانتزها حذف شدهاند اما الزامی هستند (مانند:
Type[(str, int, *other))]).bpo-40596: متد
str.isidentifier()را برای رشتههای غیرکانونیکشده که حاوی نویسههای غیر BMP در ویندوز هستند، رفع اشکال کنید.bpo-40593: خطاهای نحو برای نویسههای نامعتبر در کد منبع را بهبود ببخشید.
bpo-40585: باگ مربوط به استفاده از
codeop.compile_command()رفع شد که باعث میشد استثناها با پارسر جدید نادیده گرفته شوند. وصلهای از Pablo Galindobpo-40502: مقداردهی اولیهی
n->n_col_offset. (وصلهای از Joannah Nanjekye)bpo-40527: رفع تحلیل آرگومان خط فرمان: خطاها دیگر چندین بار در stderr نوشته نمیشوند.
bpo-1635741: پورت کردن ماژول
errnoبه مقداردهی اولیهی چندمرحلهای (PEP 489).bpo-40523: افزودن گذردهیها برای
hash()وreversed()به اشیایweakref.proxy. وصلهی پابلوب گالیندو (Pablo Galindo).bpo-1635741: انتقال ماژول
syslogبه مقداردهی اولیه چندمرحلهای (PEP 489).bpo-40246: گزارش یک پیام خطای تخصصی برای پیشوندهای رشتهای نامعتبر، که در bpo-40246 معرفی شده بود، به دلیل نگرانیهای مربوط به سازگاری با نسخههای پیشین برای رشتههایی که بلافاصله پس از یک کلیدواژه بدون فاصله آمدهاند، در حال بازگشت است. ساختارهایی مانند
bg="#d00" if clear else"#fca"در تجزیه دچار خطا میشدند، که این میزان از خرابی در چنین فرصت کوتاهی قابل پذیرش نیست.bpo-40417: رفع هشدار منسوخ شدن ماژول imp هنگام فراخوانی PyImport_ReloadModule. وصلهی رابرت روحانی (Robert Rouhani).
bpo-40408: رفع پشتیبانی از متغیرهای نوع تو در تو در GenericAlias (بهعنوان مثال
list[list[T]]).bpo-1635741: انتقال ماژول _stat به مقداردهی اولیه چندمرحلهای (PEP 489).
bpo-29587: فعالسازی زنجیرهسازی ضمنی استثنا هنگام فراخوانی
generator.throw().bpo-40328: افزودن ابزارهایی برای تولید سرآیندهای نگاشت برای CJKCodecs.
bpo-40228: تنظیم frame.f_lineno اکنون در برابر تغییرات کامپایلر منبع به بایتکد مقاوم شده است
bpo-38880: افزودن قابلیت فهرست کردن مفسرهای مرتبط با پایانههای کانال در ماژول داخلی زیرمفسرها.
bpo-37986: بهبود کارایی
PyLong_FromDouble()برای مقادیری که در long جا میشوند.
کتابخانه¶
bpo-40662: رفع
ast.get_source_segment()برای گرههای ast که اطلاعات مکانی ناقصی دارند. وصلهی ایریت کاتریل (Irit Katriel).bpo-40665: تبدیل ماژول
bisectبرای استفاده از Argument Clinic.bpo-40536: افزودن تابع
available_timezones()به ماژولzoneinfo. وصلهی پل گانسل (Paul Ganssle).bpo-40645: کلاس
hmac.HMACجزئیات پیادهسازی داخلی را فاش میکند. ویژگیهایdigest_cons،innerوouterمنسوخ شدهاند و در آینده حذف خواهند شد.bpo-40645: ماژول داخلی
_hashlibرابط برنامهنویسی کاربردی (API) HMAC در OpenSSL را پوشش داده و فاش میکند. کد جدید در پایتون ۳.۱۰ پس از اینکه جزئیات پیادهسازی داخلی ماژول HMAC خالص پایتون دیگر بخشی از API عمومی نباشند، استفاده خواهد شد.bpo-40637: ماژولهای هش توکار اکنون میتوانند با
configure --with-builtin-hashlib-hashes=sha3,blake1یا--without-builtin-hashlib-hashesغیرفعال شوند یا به طور انتخابی فعال گردند.bpo-37630: ماژول
hashlibاکنون میتوانند در صورت دسترسی، از هشهای SHA3 و SHAKE XOF از OpenSSL استفاده کند.bpo-40479: ماژول
hashlibاکنون با OpenSSL 3.0.0-alpha2 کامپایل میشود.bpo-40257: بازگردانی تغییرات اعمالشده روی
inspect.getdoc().bpo-40607: هنگام لغو یک وظیفه (task) به دلیل سرآمدن مهلت زمانی (timeout)، تابع
asyncio.wait_for()اکنون اگر خطایی در حین لغو رخ دهد، استثنا (exception) را منتشر (propagate) میکند. وصله توسط رومن اسکوریخین (Roman Skurikhin).bpo-40612: اصلاح حالتهای خاص در قالببندی SyntaxError. اگر آفست کمتر یا مساوی با ۰ باشد، هیچ نشانکی چاپ نمیشود. اگر آفست بیشتر از طول سطر باشد، نشانک درست پس از آخرین نویسه چاپ میشود.
bpo-40597: اگر سطرهای محتوای متنی طولانیتر از policy.max_line_length باشند، همیشه از یک content-encoding استفاده کنید تا از شکستهشدن آنها اطمینان حاصل شود.
bpo-40571: افزودن functools.cache() به عنوان روشی سادهتر و قابلکشفتر برای دسترسی به نوع نهانگاه بیکران (unbounded cache) در lru_cache(maxsize=None).
bpo-40503: استاندارد PEP 615، ماژول
zoneinfo. پشتیبانی از پایگاه دادهی مناطق زمانی IANA را اضافه میکند.bpo-40397: ویژگیهای
__args__و__parameters__از مستعارهای عام خاص مانندtyping.List(زیرنویسنشده) حذف شدند.bpo-40549: تبدیل posixmodule.c (ماژولهای "posix" یا "nt") به مقداردهی اولیهی چندمرحلهای (PEP 489).
bpo-31033: افزودن یک آرگومان
msgبهFuture.cancel()وTask.cancel().bpo-40541: افزودن یک پارامتر اختیاری counts به تابع random.sample().
bpo-40515: ماژولهای
sslوhashlibاکنون بهطور فعال بررسی میکنند که OpenSSL با پشتیبانی از نخ (thread) ساخته شده باشد. پایتون ۳.۷.۰ پشتیبانی از نخ را اجباری کرد و دیگر با نسخههای ساختهشده بدون پشتیبانی از نخ بهطور ایمن کار نمیکند.bpo-31033: هنگامی که یک
asyncio.Taskلغو میشود، ردگیری استثنا اکنون تا جایی که وظیفه برای نخستین بار متوقف شده است، زنجیروار ادامه مییابد.bpo-40504: اشیاء
functools.lru_cache()اکنون میتوانند هدف ارجاعات ضعیف (weakrefs) باشند.bpo-40559: رفع نشتی حافظهی احتمالی در پیادهسازی C برای
asyncio.Task.bpo-40480: تابع
fnmatch.fnmatch()ممکن است در حضور چندین نویسهی الگوی*زمان نمایی صرف کند. این مشکل با تولید عبارتهای باقاعدهی پیچیدهتر برای جلوگیری از بازگشت به عقب بیهوده برطرف شد.bpo-40495: ماژول
compileallاکنون میتواند از پیوندهای سخت (hardlinks) برای جلوگیری از تکرار در مواردی که پروندههای.pycبرای سطوح بهینهسازی مختلف محتوای یکسانی دارند، استفاده کند.bpo-40457: ماژول ssl اکنون از ساختهای OpenSSL بدون روشهای TLS 1.0 و 1.1 پشتیبانی میکند.
bpo-40355: بهبود گزارشدهی خطا در
ast.literal_eval()در حضور گرههایast.Dictمعیوب بهجای نادیده گرفتن بیصصدای هر عنصر ناسازگار. وصل از Curtis Bucher.bpo-40465: آرگومان اختیاری random در تابع random.shuffle() منسوخ شد.
bpo-40459: تابع
platform.win32_ver()اکنون بهجای رشتههای خالی، رشتههای ptype درستی تولید میکند.bpo-39435: آرگومان اول تابع
pickle.loads()اکنون فقط جایگاهی است.bpo-39305: بهروزرسانی
nntplibبرای ادغامnntplib.NNTPوnntplib._NNTPBase. وصلهای از Donghee Na.bpo-32494: بهروزرسانی
dbm.gnuبرای استفاده از gdbm_count در صورت امکان هنگام فراخوانیlen(). وصلهای از Donghee Na.bpo-40453: افزودن پارامتر فقط-کلیدواژهی
isolated=Trueبه_xxsubinterpreters.create(). یک زیرمفسر ایزوله نمیتواند نخها، یک فرایند فرزند را ایجاد کند یاos.fork()را فراخوانی کند.bpo-40286: حذف
_random.Random.randbytes(): پیادهسازی C مربوط بهrandbytes(). پیادهسازی متد در پایتون برای تسهیل زیرکلاسسازی:randbytes()اکنون مستقیماً ازgetrandbits()استفاده مجدد میکند.bpo-40394: آرگومانهای پیشفرض به
difflib.SequenceMatcher.find_longest_match()اضافه شدند.bpo-39995: رفع یک حالت رقابت در concurrent.futures._ThreadWakeup: دسترسی به _ThreadWakeup اکنون با قفل خاموشسازی محافظت میشود.
bpo-30966: متد
Process.shutdown(wait=True)درconcurrent.futuresاکنون صف نتیجه را بهطور صریح میبندد.bpo-30966: افزودن یک متد جدید
close()به کلاسSimpleQueueبرای بستن صریح صف.bpo-39966: بازگردانی bpo-25597. کلاس
unittest.mock.MagicMockبا تنظیم wraps از مقادیر بازگشتی پیشفرض برای متدهای جادویی استفاده میکند.bpo-39791: افزودن تابع
files()به importlib.resources با پشتیبانی از زیرشاخهها در دادههای بسته، مطابق با بکپورت موجود در importlib_resources 1.5.bpo-40375: متد
imaplib.IMAP4.unselect()اضافه شد. وصلهای از Donghee Na.bpo-40389: تابع
repr()اکنون وقتی برایtyping.Unionاز دو نوع که یکی از آنهاNoneTypeاست فراخوانی میشود، مقدارtyping.Optional[T]را برمیگرداند.bpo-40291: افزودن پشتیبانی از سوکتهای CAN_J1939 (موجود در Linux 5.4+)
bpo-40273: کلاس
types.MappingProxyTypeاکنون قابل معکوسسازی است.bpo-39075: نمایش رسمی (repr) برای
types.SimpleNamespaceاکنون به ترتیب درج مرتب شده است تا به ترتیب الفبایی.bpo-40192: روی AIX، تابع
thread_time()اکنون باthread_cputime()پیادهسازی میشود که دارای دقت نانوثانیه است، بهجایclock_gettime(CLOCK_THREAD_CPUTIME_ID)که دقت ۱۰ میلیثانیهای دارد. وصلهای از Batuhan Taskaya.bpo-40025: هنگامی که _generate_next_value_ پس از اعضا تعریف میشود، خطای TypeError را صادر کنید. وصلهای از Ethan Onstott.
bpo-39058: در ماژول argparse، نمایش رسمی برای Namespace() و سایر نگهدارندههای آرگومان اکنون به ترتیبی که ویژگیها اضافه شدهاند نمایش داده میشود. پیشتر، حتی با وجود حفظ ترتیب آرگومانها در بخشهای قابلمشاهدهی کاربر توسط ماژول، به ترتیب الفبایی نمایش داده میشد.
bpo-24416: متدهای
isocalendar()ازdatetime.dateوdatetime.datetimeاکنون بهجای یکtuple، یک تاپل نامدار برمیگردانند.
مستندات¶
bpo-34790: افزودن نسخهی حذف برای ارسال صریح coroها به مستندات
asyncio.wait()bpo-40561: ارائهی رشتههای مستند (docstring) برای توابع open در ماژول webbrowser.
bpo-40499: ذکر این نکته که تابع
asyncio.wait()به یک مجموعه (set) غیرخالی از عناصر انتظارپذیر (awaitable) نیاز دارد.bpo-39705: توضیح بهتری برای مثال مربوط به تابع ()sorted در بخش روشهای حلقهزنی (Loop Techniques) ارائه شد. همچنین مثال جدیدی برای توضیح رفتار پایهی ()sorted اضافه شد.
bpo-39435: اصلاح امضای نادرست برای
pickle.loads()در مستندات
آزمونها¶
bpo-40055: ماژول distutils.tests اکنون فیلترهای هشدار را ذخیره و بازیابی میکند تا آنها را دستنخورده نگه دارد. ایمپورت کردن آزمونها، ماژول docutils را ایمپورت میکند که آن هم pkg_resources را ایمپورت کرده و یک فیلتر هشدار اضافه میکند.
bpo-40436: آزمونهای test_gdb و test.pythoninfo اکنون کد خروج دستور gdb را بررسی میکنند.
ساخت¶
Windows¶
bpo-40650: گنجاندن winsock2.h در pytime.c برای timeval.
bpo-40458: افزایش فضای پشتهی رزرو شده برای جلوگیری از فروپاشی (crash) ناشی از سرریز در ویندوز.
bpo-39148: افزودن پشتیبانی از IPv6 به پایانههای (endpoints) دیتاگرام
asyncioدر ProactorEventLoop. تغییر استثنای (exception) بالاآمده برای خانوادههای آدرس ناشناخته به ValueError، زیرا از API ویندوز سرچشمه نمیگیرد.
مکاواس¶
bpo-34956: هنگام ساخت پایتون روی macOS از روی سورس، ماژول
_tkinterاکنون در صورت نصب بودن چارچوبهای Tcl و Tk غیرسیستمی در مسیر/Library/Frameworks، مانند نسخههای قدیمیتر macOS به آنها لینک میشود. اگر یک SDK برای macOS به طور صریح با استفاده از--enable-universalsdk=یا-isysrootپیکربندی شود، فقط خود SDK جستجو میشود. رفتار پیشفرض همچنان با--with-tcltk-includesو--with-tcltk-libsقابل بازنشانی است.bpo-35569: آشکارسازی گزینههای سوکت RFC 3542 IPv6.
Tools/Demos¶
bpo-40479: بهروزرسانی ابزار کمکی multissltest برای آزمون با آخرین نسخههای OpenSSL 1.0.2، 1.1.0، 1.1.1 و 3.0.0-alpha.
bpo-40431: رفع یک خطای نگارشی نحوی (syntax) در
turtledemoکه اکنون یک خطایSyntaxErrorایجاد میکند.bpo-40163: رفع مشکل ابزار multissltest. OpenSSL نشانیوب (URL) دانلود را برای نسخههای قدیمی تغییر داده است. ابزار multissltest اکنون تلاش میکند از نشانیهای وب دانلود فعلی و قدیمی بارگیری کند.
رابط C API¶
bpo-39465: حذف تابع
_PyUnicode_ClearStaticStrings()از API زبان C.bpo-38787: افزودن ماکروی PyCFunction_CheckExact() برای بررسی دقیق نوع داده (type) اکنون که زیرانواع PyCFunction را مجاز میدانیم، و همچنین PyCMethod_CheckExact() و PyCMethod_Check() برای زیرنوع جدید PyCMethod.
bpo-40545: اعلان تابع
_PyErr_GetTopmostException()با استفاده ازPyAPI_FUNC()برای اکسپورت صحیح تابع در API زبان C. این تابع با پیشوند خصوصی (_Py) باقی میماند.bpo-40412: صفر کردن inittab_copy در هنگام نهاییسازی، برای جلوگیری از فروپاشی مقداردهی اولیههای بعدی مفسر در شرایط تعبیهشده (embedded). وصله (patch) توسط گریگوری سورک (Gregory Szorc).
bpo-40429: اکنون تابع
PyThreadState_GetFrame()یک ارجاع قوی به قاب برمیگرداند.bpo-40428: توابع زیر را از C API حذف کنید. برای آزاد کردن تمام فهرستهای آزاد،
PyGC_Collect()را به طور صریح فراخوانی کنید.PyAsyncGen_ClearFreeLists()PyContext_ClearFreeList()PyDict_ClearFreeList()PyFloat_ClearFreeList()PyFrame_ClearFreeList()PyList_ClearFreeList()PySet_ClearFreeList()PyTuple_ClearFreeList()
bpo-40421: تابع جدید
PyFrame_GetBack(): دریافت قاب بیرونی بعدی قاب.bpo-40421: تابع جدید
PyFrame_GetCode(): یک ارجاع امانتی به کد قاب برمیگرداند.bpo-40217: اطمینان حاصل کنید که نمونههای انواع ایجادشده با
PyType_FromSpecWithBases()هنگام پیمایش ارجاعات در زبالهجمعکن، شیء کلاس آن را ملاقات خواهند کرد (که به عنوان توسعهای ازtp_traverseفراهمشده پیادهسازی شده است). پچ توسط Pablo Galindo.bpo-38787: اکنون وضعیت ماژول C از متدهای نوع هیپ تعریفشده در C قابل دسترسی است (PEP 573). پچ توسط Marcel Plch و Petr Viktorin.
پایتون ۳.۹.۰ آلفا ۶¶
تاریخ انتشار: ۲۰۲۰-۰۴-۲۷
امنیت¶
bpo-40121: رفع رویدادهای حسابرسی ایجادشده هنگام ساخت یک سوکت جدید.
bpo-39073: عدم اجازه به کاراکترهای CR یا LF در آرگومانهای email.headerregistry.Address برای محافظت در برابر حملات تزریق سرآیند.
bpo-39503: CVE 2020-8492: کلاس
AbstractBasicAuthHandlerاز ماژولurllib.requestاز یک عبارت باقاعده ناکارآمد استفاده میکند که میتواند توسط یک مهاجم برای ایجاد انکار سرویس سوءاستفاده شود. عبارت باقاعده را برای جلوگیری از بازگشت فاجعهبار اصلاح کنید. آسیبپذیری توسط Ben Caller و Matt Schwager گزارش شده است.
هسته و توکارها (Core and Builtins)¶
bpo-40313: بهبود کارایی bytes.hex().
bpo-40334: انتقال به یک پارسر جدید، بر اساس PEG. برای جزئیات بیشتر به PEP 617 مراجعه کنید. برای بازگشت موقت به پارسر قدیمی، از
-X oldparserیاPYTHONOLDPARSER=1استفاده کنید. در پایتون ۳.۱۰ ما پارسر قدیمی را بهطور کامل حذف خواهیم کرد، از جمله ماژولparser(که از قبل منسوخ شده است) و هر چیزی که به آن وابسته است.bpo-40267: اصلاح توکنساز برای نمایش پیام خطای صحیح، هنگامی که یک
SyntaxErrorروی آخرین نویسهی ورودی رخ میدهد و هیچ نویسهی خط جدیدی در پی آن نیست. پیش از اینunexpected EOF while parsingبود، در حالی که بایدinvalid syntaxمیبود.bpo-39522: رفع مشکل عدم تجزیهی درست پیشوند صریح
uبرای رشتهها هنگامی که ارزیابی معوق برای حاشیهنویسیها فعال است. وصله توسط Batuhan Taskaya.bpo-40246: گزارش یک پیام خطای تخصصی، یعنی
invalid string prefix، هنگامی که توکنساز با رشتهای با پیشوند نامعتبر مواجه میشود.bpo-40082: اصلاح هندلر سیگنال: این هندلر اکنون همیشه از مفسر اصلی استفاده میکند، به جای اینکه تلاش کند وضعیت نخ فعلی پایتون را دریافت کند.
bpo-37388: توابع str.encode() و str.decode() دیگر کدگذاری و خطاها را در حالت توسعه یا در حالت اشکالزدایی در طول نهاییسازی پایتون بررسی نمیکنند. مکانیسم کُدک دیگر نمیتواند روی فراخوانیهای بسیار دیرهنگام به str.encode() و str.decode() کار کند.
bpo-40077: اصلاح نشت احتمالی ارجاع در
_json، یادداشت PyScannerObject باید پیمایش شود.bpo-37207: افزایش سرعت فراخوانیهای
dict()با استفاده از قرارداد فراخوانیvectorcallدر PEP 590.bpo-40141: افزودن اطلاعات سطر و ستون به گرههای
ast.keyword. وصله توسط Pablo Galindo.bpo-1635741: انتقال ماژول
resourceبه مقداردهی اولیهی چندمرحلهای (PEP 489).bpo-1635741: انتقال ماژول
mathبه مقداردهی اولیهی چندمرحلهای (PEP 489).bpo-1635741: انتقال ماژول _uuid به مقداردهی اولیهی چندمرحلهای (PEP 489).
bpo-40077: تبدیل ماژول json برای استفاده از
PyType_FromSpec().bpo-40067: بهبود پیام خطا برای عبارتهای ستارهدار چندگانه در یک انتساب. وصله توسط Furkan Onder
bpo-1635741: انتقال ماژول _functools به مقداردهی اولیهی چندمرحلهای (PEP 489). وصله توسط Paulo Henrique Silva.
bpo-1635741: انتقال ماژول operator به مقداردهی اولیهی چندمرحلهای (PEP 489). وصله توسط Paulo Henrique Silva.
bpo-20526: اصلاح
PyThreadState_Clear(). عبارتPyThreadState.frameیک ارجاع امانتی است، نه یک ارجاع قوی:PyThreadState_Clear()نبایدPy_CLEAR(tstate->frame)را فراخوانی کند.bpo-1635741: انتقال ماژول time به مقداردهی اولیهی چندمرحلهای (PEP 489). وصله توسط Paulo Henrique Silva.
bpo-1635741: انتقال ماژول توسعهای _weakref به مقداردهی اولیهی چندمرحلهای (PEP 489).
bpo-40020: رفع یک نشت و فروپاشی متعاقب آن در parsetok.c که به دلیل استفادهی نادرست از realloc در یک مسیر کد نادر ایجاد شده بود.
bpo-39939: متدهای str.removeprefix و str.removesuffix و متدهای متناظر bytes، bytearray و collections.UserString برای حذف پیشوندها یا پسوندها از یک رشته (در صورت وجود) اضافه شدند. برای توضیحات کامل به PEP 616 مراجعه کنید. اصلاحیه از Dennis Sweeney.
bpo-39481: پیادهسازی PEP 585 (پیشنهاد بهبود پایتون). این کار مواردی مانند list[int]، tuple[str, ...] و غیره را پشتیبانی میکند.
bpo-32894: پشتیبانی از تجزیهی معکوس (unparsing) اعداد بینهایت در حاشیهنویسیهای به تعویق افتاده. اصلاحیه از Batuhan Taşkaya.
bpo-37207: سرعتبخشیدن به فراخوانیهای
list()با استفاده از قرارداد فراخوانیvectorcallدر PEP 590. اصلاحیه از Mark Shannon.
کتابخانه¶
bpo-40398: تابع
typing.get_args()اکنون همیشه یک تاپل خالی برای مستعارهای عام خاص برمیگرداند.bpo-40396: توابع
typing.get_origin()،typing.get_args()وtyping.get_type_hints()اکنون از مستعارهای عام مانندlist[int]پشتیبانی میکنند.bpo-38061: بهینهسازی ماژول
subprocessروی FreeBSD با استفاده ازclosefrom(). یک فراخوانی سیستمی منفردclose(fd)کمهزینه است، اما هنگامی که مقدارsysconf(_SC_OPEN_MAX)بالا باشد، حلقهای کهclose(fd)را روی هر توصیفگر پرونده فراخوانی میکند میتواند چندین میلیثانیه زمان ببرد.راهحل موقت روی FreeBSD برای بهبود کارایی، بارگذاری و اتصال ماژول هستهی fdescfs بود، اما این مورد به طور پیشفرض فعال نیست.
اصلاحیهی اولیه از Ed Maste (emaste)، Conrad Meyer (cem)، Kyle Evans (kevans) و Kubilay Kocak (koobs): https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274
bpo-38061: روی سیستمعامل FreeBSD، تابع
os.closerange(fd_low, fd_high)اکنون اگر مقدار fd_high بزرگتر یا مساوی باsysconf(_SC_OPEN_MAX)باشد،closefrom(fd_low)را فراخوانی میکند.اصلاحیهی اولیه از Ed Maste (emaste)، Conrad Meyer (cem)، Kyle Evans (kevans) و Kubilay Kocak (koobs): https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274
bpo-40360: ماژول
lib2to3به دلیل PEP 617 در آستانهی منسوخ شدن قرار دارد.bpo-40138: رفع پیادهسازی ویندوزی تابع
os.waitpid()برای کدهای خروجی بزرگتر ازINT_MAX >> 8. وضعیت خروجی اکنون به عنوان یک عدد بدون علامت تفسیرشده میشود.bpo-39942: تنظیم کردن "__main__" به عنوان نام پیشفرض ماژول هنگامی که "__name__" در
typing.TypeVarوجود ندارد. اصلاحیه از Weipeng Hong.bpo-40275: بستهی
loggingاکنون به صورت تنبل (lazy) درunittestتنها زمانی وارد میشود که از ادعایassertLogs()استفاده شود.bpo-40275: بستهی
asyncioاکنون به صورت تنبل (lazy) درunittestتنها زمانی وارد میشود که از کلاسIsolatedAsyncioTestCaseاستفاده شود.bpo-40330: در متد
ShareableList.__setitem__()، اندازهی یک آیتم رشتهای جدید را پس از کدگذاری آن به utf-8 بررسی کنید، نه پیش از آن.bpo-40148: متد
pathlib.Path.with_stem()اضافه شد تا یک Path جدید با ساقهی جایگزینشده ایجاد شود.bpo-40325: پشتیبانی از اشیاء مجموعه (set) در random.sample() منسوخ شد.
bpo-40257: بهبود راهنما برای ماژول
typing. رشتههای مستند (docstrings) اکنون برای تمام فرمهای خاص و مستعارهای عام خاص (مانندUnionوList) نشان داده میشوند. استفاده ازhelp()با مستعار عام مانندList[int]راهنمای مربوط به نوع دادهی مشخص متناظر (در این موردlist) را نمایش خواهد داد.bpo-40257: تابع
inspect.getdoc()دیگر رشتهی مستند به ارثرسیده از نوع شیء یا از کلاس والد را اگر در خود شیء تعریف نشده باشد، بازنمیگرداند. در ماژولpydocرشتهی مستندات اکنون نه تنها برای کلاس، تابع، متد و غیره، بلکه برای هر شیءی که ویژگی__doc__مخصوص به خود را دارد، نمایش داده میشود.bpo-40287: رفع مشکل
SpooledTemporaryFile.seek()برای برگرداندن موقعیت.bpo-40290: افزودن zscore() به statistics.NormalDist().
bpo-40282: اجازه دادن به
random.getrandbits(0)برای انجام موفقیتآمیز و برگرداندن عدد ۰.bpo-40286: افزودن تابع
random.randbytes()و متدrandom.Random.randbytes()برای تولید بایتهای تصادفی.bpo-40277: تابع
collections.namedtuple()اکنون یک repr خوانا برای انسان برای دسترسیدهندههای فیلد خود فراهم میکند.bpo-40270: نسخهی همراه sqlite3 در ویندوز اکنون با افزونهی json کامپایلشده است. این کار اجازه میدهد از توابعی مانند
json_objectاستفاده شود.bpo-29255: انتظار در
KqueueSelector.selectهنگامی که هیچ fd ای ثبت نشده استbpo-40260: اطمینان از اینکه
modulefinderازio.open_code()استفاده میکند و کامنتهای کدگذاری را رعایت میکند.bpo-40234: امکان ایجاد دوبارهی نخهای دِیمِن در زیرمفسرها (بازگردانی تغییری که آنها را رد میکرد).
bpo-39207: کارگرها در
ProcessPoolExecutorاکنون بر حسب تقاضا ایجاد میشوند، فقط زمانی که هیچ کارگر آزادی برای استفادهی مجدد وجود نداشته باشد. این کار سربار راهاندازی را بهینهسازی کرده و میزان زمان تلفشدهی CPU توسط کارگران آزاد را کاهش میدهد. وصل توسط Kyle Stanley.bpo-40091: رفع یک توقف ناخواسته (hang) در هنگام فورک در ماژول گزارشگیری: متد خصوصی جدید _at_fork_reinit() اکنون برای مقداردهی اولیهی مجدد قفلها در هنگام فورک در فرایند فرزند استفاده میشود.
bpo-40149: پیادهسازی گذر و پاکسازی جایگاهها در نوع _abc._abc_data.
bpo-40208: حذف متد منسوخ
symtable.SymbolTable.has_exec().bpo-40196: رفع یک باگ در ماژول
symtableکه باعث گزارشدهی اشتباه متغیرهای سراسری به عنوان محلی میشد. وصل توسط Pablo Galindo.bpo-40190: افزودن پشتیبانی از
_SC_AIX_REALMEMبهposix.sysconf().bpo-40182: ویژگی
_field_typesاز کلاسtyping.NamedTupleحذف شد.bpo-36517: وراثت چندگانه با
typing.NamedTupleاکنون به جای نادیده گرفتن بیسرصدای سایر انواع، یک خطا ایجاد میکند.bpo-40126: رفع مشکل برگرداندن چندین وصل در unittest.mock. متد
__exit__()از Patcher اکنون اگر__enter__()آن با شکست مواجه شود، هرگز فراخوانی نمیشود. برگرداندن مقدار True از__exit__()اکنون استثنا را بیصدا میکند.bpo-40094: ماژول CGIHTTPRequestHandler از http.server اکنون به جای وضعیت خروج اسکریپت CGI در os.waitpid()، کد خروج اسکریپت CGI را ثبت میکند. به عنوان مثال، اگر اسکریپت توسط سیگنال ۱۱ متوقف شود، اکنون اینگونه ثبت میکند: "CGI script exit code -11."
bpo-40108: بهبود پیام خطا هنگام تلاش برای ایمپورت کردن یک ماژول با استفاده از
runpyو استفادهی نادرست از پسوند ".py" در انتهای نام ماژول. وصل توسط Pablo Galindo.bpo-40094: اضافهکردن تابع
os.waitstatus_to_exitcode(): تبدیل وضعیت انتظار به کد خروج.bpo-40089: رفع مشکل threading._after_fork(): اگر انشعاب توسط نخی که توسط threading.Thread ایجاد شده بود فراخوانی نشده باشد، threading._after_fork() اکنون یک نمونهی _MainThread برای _main_thread ایجاد میکند، بهجای اینکه یک نمونهی _DummyThread ایجاد کند.
bpo-40089: اضافهکردن متد خصوصی
_at_fork_reinit()به کلاسهای_thread.Lock،_thread.RLock،threading.RLockوthreading.Condition: راهاندازی مجدد قفل در هنگام انشعاب در فرایند فرزند، و بازنشانی قفل به حالت قفلنشده. همچنین تغییر نام متد خصوصی_reset_internal_locks()درthreading.Eventبه_at_fork_reinit().bpo-25780: در معرض دید قرار دادن
CAN_RAW_JOIN_FILTERSدر ماژولsocket.bpo-39503: کلاس
AbstractBasicAuthHandlerدر ماژولurllib.requestاکنون تمام سرآیندهای HTTP مربوط به WWW-Authenticate را تجزیه کرده و چندین چالش را به ازای هر سرآیند میپذیرد: از قلمرو نخستین چالش Basic استفاده کنید.bpo-39812: حذف نخهای دِیمِن از
concurrent.futuresبا اضافهکردن یکthreading._register_atexit()داخلی که توابع ثبتشده را پیش از پیوستن تمام نخهای غیردِیمِن فراخوانی میکند. این کار امکان سازگاری با زیرمفسرها را فراهم میکند که از نخهای دِیمِن پشتیبانی نمیکنند.bpo-40050: رفع مشکل
importlib._bootstrap_external: جلوگیری از ایجاد یک ماژول داخلی جدیدwinregاگر از پیش درsys.modulesموجود باشد، و حذف ایمپورتهای اضافی.bpo-40014: رفع مشکل
os.getgrouplist(): اگر تابعgetgrouplist()به این دلیل که فهرست گروهها خیلی کوچک است با خطا مواجه شود، تلاش مجدد با یک فهرست گروههای بزرگتر. در صورت بروز خطا، پیادهسازی glibc برایgetgrouplist()مقدارngroupsرا روی تعداد کل گروهها تنظیم میکند. برای سایر پیادهسازیها، اندازهی فهرست گروهها را دو برابر کنید.bpo-40017: اضافهکردن ثابت
time.CLOCK_TAIدر صورتی که سیستمعامل از آن پشتیبانی کند.bpo-40016: در رشته مستند re، شفافسازی رابطهی بین پرچمهای کامپایل درونخطی و آرگومان.
bpo-39953: بهروزرسانی جدول داخلی کدهای خطای OpenSSL در ماژول
ssl.bpo-36144: اضافهکردن عملگرهای PEP 584 به
weakref.WeakValueDictionary.bpo-36144: اضافهکردن عملگرهای PEP 584 به
weakref.WeakKeyDictionary.bpo-38891: رفع رفتار زمان اجرای خطی متدهای
__getitem__و__setitem__درmultiprocessing.shared_memory.ShareableList. این کار از عملکرد درجهدوم هنگام پیمایش یکShareableListجلوگیری میکند. پچ توسط Thomas Krennwallner.bpo-39682: حذف پشتیبانی مستندسازینشده برای بستن یک شیء
pathlib.Pathاز طریق مدیر زمینهی آن. متدهای جادویی مدیر زمینه سر جای خود باقی میمانند، اما اکنون یک عملیات بیاثر هستند و شیءهایPathرا به اشیایی تغییرناپذیر تبدیل میکنند.bpo-36144: اضافهکردن عملگرهای PEP 584 (
|و|=) بهcollections.ChainMap.bpo-39011: نرمالسازی پایان سطرها در ویژگیهای ElementTree حذف شد، زیرا پایان سطرهایی که با شمارهی موجودیتها جایگزین شده بودند باید به شکل اصلی خود حفظ شوند.
bpo-38410: مدیریت درست خطاهای
sys.audit()درsys.set_asyncgen_hooks().bpo-36541: کتابخانهی lib2to3 اکنون عبارتهای انتساب نامگذاریشده (عملگر گراز دریایی،
:=) را تشخیص میدهد.bpo-35967: در platform، به تعویق انداختن فراخوانی دستور 'uname -p' تا زمانی که ویژگی پردازنده درخواست شود.
bpo-35113: متد
inspect.getsource()اکنون کد منبع صحیح را برای کلاس داخلی با همان نام کلاس همسطح ماژول برمیگرداند. دکوراتورها نیز به عنوان بخشی از منبع کلاس برگردانده میشوند. وصله توسط Karthikeyan Singaravelan.bpo-33262: منسوخ کردن ارسال مقدار None به عنوان آرگومان برای پارامتر
sدر تابعshlex.split(). وصله توسط Zackery Spytz.bpo-31758: جلوگیری از فروپاشیها هنگام استفاده از یک شیء اولیهسازینشدهی
_elementtree.XMLParser. وصله توسط Oren Milman.
مستندات¶
bpo-27635: مستندات پیکل به اشتباه ادعا کرده بودند که
__new__به طور پیشفرض هنگام پیکزدایی (unpickling) فراخوانی نمیشود.bpo-39879: بهروزرسانی مستندات مدل داده جهت گنجاندن حفظ ترتیب درج
dict(). وصله توسط Furkan Onder و Samy Lahfa.bpo-38387: مستندسازی ماکروی
PyDoc_STRVARدر مرجع C-API.bpo-13743: برخی متدها در کلاس xml.dom.minidom.Element اکنون مستندات بهتری دارند.
آزمونها¶
bpo-31904: تنظیم کدگذاری پیشفرض مورد انتظار در test_c_locale_coercion.py برای VxWorks RTOS.
bpo-40162: بهروزرسانی پیکربندی Travis CI به OpenSSL 1.1.1f.
bpo-40146: بهروزرسانی OpenSSL به 1.1.1f در Azure Pipelines.
bpo-40094: افزودن تابع
test.support.wait_process().bpo-40003: بخش
test.bisect_cmdاکنون گزینههای خط فرمان پایتون مانند-Oیا-Wرا کپی میکند. علاوه بر این، اگر ازtest.bisect_cmdبا گزینهی-w/--verbose2استفاده شود، یک هشدار صادر میکند.bpo-39380: افزودن کدگذاری در
ftplib.FTPوftplib.FTP_TLSبه سازنده به صورت فقط-کلیدواژه و تغییر پیشفرض ازlatin-1بهutf-8برای پیروی از RFC 2640.bpo-39793: استفاده از دامنهی یکسان هنگام آزمایش
make_msgid. وصله توسط Batuhan Taskaya.bpo-1812: رفع نحوهی مدیریت نویسهی خط جدید در doctest.testfile هنگام بارگیری از بستهای که بارگذار آن دارای متد get_data است. وصله توسط Peter Donis.
ساخت¶
Windows¶
مکاواس¶
bpo-38329: نصبکنندههای macOS مربوط به پایتون اکنون پیوند نمادین (symlink) نسخهی Current در مسیر /Library/Frameworks/Python.framework/Versions را برای نصبهای ۳.۹ بهروزرسانی میکنند. پیش از این، Current فقط برای نصبهای پایتون ۲.x بهروزرسانی میشد. این کار باید تعبیهی پایتون ۳ را در سایر برنامههای macOS آسانتر کند.
bpo-40164: بهروزرسانی ساختهای نصبکنندهی macOS برای استفاده از OpenSSL 1.1.1g.
IDLE¶
Tools/Demos¶
bpo-40385: ابزار checkpyc.py حذف شد. لطفاً compileall را بدون حالت (mode) force به عنوان یک جایگزین بالقوه بررسی کنید.
bpo-40179: رفع ترجمهی
#elifدر کلینیک آرگومان (Argument Clinic).bpo-40094: رفع کد خروج اسکریپت
which.py: این اسکریپت اکنون ازos.waitstatus_to_exitcode()برای تبدیل وضعیت خروجos.system()به یک کد خروج استفاده میکند.
رابط C API¶
bpo-40241: انتقال ساختار
PyGC_Headبه API داخلی C.bpo-40170: تبدیل ماکروی
PyObject_IS_GC()به یک تابع برای پنهان کردن جزئیات پیادهسازی.bpo-40241: افزودن توابع
PyObject_GC_IsTracked()وPyObject_GC_IsFinalized()به API عمومی برای امکانپذیر ساختن بررسی این موضوع که آیا اشیاء پایتون در حال حاضر توسط جمعآوریکنندهی زباله ردیابی میشوند یا پیشتر نهاییسازی شدهاند. وصله (patch) توسط Pablo Galindo.bpo-40170: ماکروی
PyObject_NEW()به نام مستعاری برای ماکرویPyObject_New()تبدیل میشود و ماکرویPyObject_NEW_VAR()به نام مستعاری برای ماکرویPyObject_NewVar()تبدیل میشود تا جزئیات پیادهسازی پنهان شوند. آنها دیگر مستقیماً به عضوPyTypeObject.tp_basicsizeدسترسی پیدا نمیکنند.bpo-40170: تابع
PyType_HasFeature()اکنون همیشهPyType_GetFlags()را فراخوانی میکند تا جزئیات پیادهسازی پنهان شوند. پیش از این، هنگامی که API محدود (limited) C استفاده نمیشد، مستقیماً به عضوPyTypeObject.tp_flagsدسترسی پیدا میکرد.bpo-40170: تبدیل ماکروی
PyObject_GET_WEAKREFS_LISTPTR()به یک تابع برای پنهان کردن جزئیات پیادهسازی: این ماکرو مستقیماً به عضوPyTypeObject.tp_weaklistoffsetدسترسی پیدا میکرد.bpo-40170: تبدیل ماکروی
PyObject_CheckBuffer()به یک تابع برای پنهان کردن جزئیات پیادهسازی: این ماکرو مستقیماً به عضوPyTypeObject.tp_as_bufferدسترسی پیدا میکرد.bpo-40170: همیشه
PyIndex_Check()را به عنوان یک تابع کدر (opaque) برای پنهان کردن جزئیات پیادهسازی اعلام کنید: ماکرویPyIndex_Check()را حذف کنید. این ماکرو مستقیماً به عضوPyTypeObject.tp_as_numberدسترسی پیدا میکرد.bpo-39947: افزودن تابع
PyThreadState_GetID(): دریافت شناسهی یکتای یک وضعیت نخ (thread state) در پایتون.
Python 3.9.0 alpha 5¶
Release date: 2020-03-23
امنیت¶
bpo-38576: عدم اجازه به کارگیری کاراکترهای کنترلی در نامهای میزبان در http.client، که به CVE 2019-18348 میپردازد. چنین نشانیهای اینترنتی تزریق سرآیند که بهطور بالقوه مخرب هستند، اکنون باعث میشوند خطای InvalidURL بالا برود.
هسته و توکارها (Core and Builtins)¶
bpo-40010: بهینهسازی فراخوانهای معلق در برنامههای چندنخی. اگر نخی متفاوت از نخ اصلی، یک فراخوان معلق را برنامهریزی کند (
Py_AddPendingCall())، حلقهی ارزیابی بایتکد دیگر در هر دستور بایتکد برای بررسی فراخوانهای معلقی که نمیتوانند اجرا شوند متوقف نمیشود. فقط نخ اصلی میتواند فراخوانهای معلق را اجرا کند.پیشتر، حلقهی ارزیابی بایتکد در هر دستور متوقف میشد تا زمانی که نخ اصلی فراخوانیهای معلق را اجرا کند.
bpo-1635741: انتقال ماژول توسعهای _weakref به مقداردهی اولیهی چندمرحلهای (PEP 489).
bpo-1635741: انتقال ماژول _collections به مقداردهی اولیهی چندفازی (PEP 489).
bpo-40010: بهینهسازی مدیریت سیگنال در برنامههای چندنخی. اگر نخی غیر از نخ اصلی سیگنالی دریافت کند، حلقهی ارزیابی بایتکد دیگر در هر دستور بایتکد متوقف نمیشود تا سیگنالهای معلقی را که قابل مدیریت نیستند بررسی کند. فقط نخ اصلی مفسر اصلی میتواند سیگنالها را مدیریت کند.
پیشتر، حلقهی ارزیابی بایتکد در هر دستور متوقف میشد تا نخ اصلی سیگنالها را مدیریت کند.
bpo-39984: اگر
Py_AddPendingCall()در یک زیرمفسر فراخوانی شود، این تابع اکنون برنامهریزی میشود تا از سوی زیرمفسر فراخوانی شود، نه اینکه از سوی مفسر اصلی فراخوانی شود. هر زیرمفسر اکنون فهرست خودش را از فراخوانیهای برنامهریزیشده دارد.bpo-1635741: انتقال ماژول _heapq به مقداردهی اولیهی چندفازی.
bpo-1635741: انتقال ماژول itertools به مقداردهی اولیهی چندفازی (PEP 489).
bpo-37207: افزایش سرعت فراخوانیهای
frozenset()با استفاده از قرارداد فراخوانیvectorcallدر PEP 590. وصلهای از Donghee Na.bpo-39984: زیرمفسرها: انتقال
_PyRuntimeState.ceval.tracing_possibleبهPyInterpreterState.ceval.tracing_possible: هر مفسر اکنون متغیر خودش را دارد.bpo-37207: افزایش سرعت فراخوانیهای
set()با استفاده از قرارداد فراخوانیvectorcallدر PEP 590. وصلهای از Donghee Na.bpo-1635741: انتقال ماژول _statistics به مقداردهی اولیهی چندفازی (PEP 489).
bpo-39968: استفاده از تابع درونخطی برای جایگزینی ماکروهای get_module_state ماژولهای توسعهای.
bpo-39965: اگر await در داخل توابع غیرناهمگام استفاده شود و
PyCF_ALLOW_TOP_LEVEL_AWAITتنظیم شده باشد (مانند REPL در asyncio)، خطایSyntaxErrorبه درستی بالا آورده میشود. اصلاحیه از پابلو گالیندو (Pablo Galindo).bpo-39562: اجازه دادن به اجرای درکهای ناهمگام در سطح بالا هنگامی که پرچم
PyCF_ALLOW_TOP_LEVEL_AWAITداده میشود. وصلهای از Batuhan Taskaya.bpo-37207: افزایش سرعت فراخوانیهای
tuple()با استفاده از قرارداد فراخوانیvectorcallدر PEP 590. وصلهای از Donghee Na.bpo-38373: تغییر استراتژی تخصیص بیش از حد فهرست. اگر اندازهی جدید به اندازهی تخصیصیافتهی بیش از حد نزدیکتر باشد تا به اندازهی قدیمی و بالشتک اضافه کند، دیگر تخصیص بیش از حد انجام نمیدهد.
bpo-39926: بهروزرسانی پایگاه دادهی یونیکد به نسخهی 13.0.0 یونیکد.
bpo-19466: پاکسازی قابهای نخهای دِیمِن در طول خاموشی پایتون برای فراخوانی تخریبگرهای شیء. بنابراین هشدارهای منابع «پروندهی بستهنشده» اکنون به روشی قابلاعتمادتر برای نخهای دِیمِن صادر میشوند.
bpo-38894: رفع باگی که هنگام فراخوانی
pathlib.Path.globدر حضور پیوندهای نمادینی که به پروندههایی اشاره میکنند که کاربر به آنها دسترسی خواندن ندارد، نتایج ناقصی ایجاد میکرد. وصلهای از Pablo Galindo و Matt Wozniski.bpo-39877: رفع خرابی تصادفی
PyEval_RestoreThread()هنگام خروج با نخهای دِیمِن. اکنون به جای استفاده ازtstate->interp->runtime، به طور مستقیم به متغیر_PyRuntimeدسترسی پیدا میکند، زیراtstateمیتواند پس از فراخوانیPy_Finalize()یک اشارهگر معلق باشد. علاوه بر این، نخ دِیمِن اکنون قبل از تلاش برای گرفتن GIL خارج میشود.bpo-39871: رفع یک
SystemErrorاحتمالی درmath.{atan2,copysign,remainder}()هنگامی که آرگومان اول را نمیتوان بهfloatتبدیل کرد. وصله توسط Zackery Spytz.bpo-39776: رفع شرایط رقابت (race condition) که در آن نخهای ایجاد شده توسط PyGILState_Ensure() ممکن است شناسه تکراری دریافت کنند.
این مسئله مصرفکنندگان tstate->id مانند مکانیسم کش متغیرهای زمینهای (contextvar) را تحت تأثیر قرار میدهد، که میتواند در بار کاری سنگین نخ (مشاهدهشده در سناریوهای تعبیهشده) اشیاء کششدهی نامعتبر برگرداند.
bpo-39778: رفع یک فروپاشی به دلیل مدیریت نادرست ارجاعهای ضعیف در کلاسهای
collections.OrderedDict. وصله توسط Pablo Galindo.bpo-1635741: انتقال ماژول توسعهی audioop به مقداردهی اولیهی چندمرحلهای (PEP 489).
bpo-39702: تسهیل محدودیتهای گرامری دکوراتور برای اجازه دادن به هر عبارت معتبر (PEP 614).
bpo-38091: اصلاح کد تشخیص بنبست ایمپورت به طوری که خودش دچار بنبست نشود.
bpo-1635741: انتقال ماژول توسعهی _locale به مقداردهی اولیهی چندمرحلهای (PEP 489).
bpo-39087: بهینهسازی جزئی
PyUnicode_AsUTF8()وPyUnicode_AsUTF8AndSize()هنگامی که نیاز به ایجاد نهانگاه داخلی UTF-8 دارند.bpo-39520: رفع تجزیه نکردن اسلایسهای خارجی بدون آیتم (
foo[:,]). وصله توسط Batuhan Taskaya.bpo-39220: اگر از 'from __future__ import annotations' استفاده شده است، حاشیهنویسیها را بهینهسازی نکنید. وصله توسط Pablo Galindo.
bpo-35712: استفاده از
NotImplementedدر زمینهی بولی منسوخ شده است. وصله توسط Josh Rosenberg.bpo-22490: عدم نشت متغیر محیطی
__PYVENV_LAUNCHER__به نشست مفسر در macOS.
کتابخانه¶
bpo-39830: افزودن
zipfile.Pathبه__all__در ماژولzipfile.bpo-40000: بهبود پیامهای خطا برای اعتبارسنجی گرههای
ast.Constant. وصله توسط Batuhan Taskaya.bpo-39999: ویژگی
__module__کلاسهای گره AST اکنون به جای "_ast" روی "ast" تنظیم میشود. افزودن رشتههای مستند (docstrings) برای کلاسهای گرههای آزمایشی AST و صفتهای منسوخ شده.bpo-39991: تابع
uuid.getnode()اکنون آدرسهای IPv6 با طول رشتهای برابر با آدرس MAC (۱۷ نویسه) را رد میکند: فقط از آدرسهای MAC استفاده کنید.bpo-39988: منسوخ کردن کلاسهای گره
ast.AugLoadوast.AugStoreبه این دلیل که دیگر استفاده نمیشوند.bpo-39656: اطمینان از اینکه
bin/python3.#همیشه در محیطهای مجازی روی پلتفرمهای POSIX موجود است - توسط Anthony Sottile.bpo-39969: منسوخ کردن کلاس گره
ast.Paramبه دلیل اینکه دیگر استفاده نمیشود. وصله توسط Batuhan Taskaya.bpo-39360: مطمئن شوید که تمام کارگرها هنگام نهاییسازی ضمنی یک
multiprocessing.Poolاز طریق هندلرهای نهاییسازی ماژول multiprocessing خارج میشوند. این کار یک وضعیت بنبست را که ممکن است زمانی که استخر بهطور مناسب از طریق مدیر زمینه یا فراخوانیmultiprocessing.Pool.terminateنهایی نشده باشد تجربه شود، اصلاح میکند. وصل توسط Batuhan Taskaya و Pablo Galindo.bpo-35370: توابع sys.settrace()، sys.setprofile() و _lsprof.Profiler.enable() اکنون در صورت رد شدن رویداد حسابرسی "sys.setprofile" یا "sys.settrace" بهدرستی خطای
PySys_Audit()را گزارش میکنند.bpo-39936: سیستم AIX: رفع مشکل ماژول _aix_support هنگامی که زیرفرایند در دسترس نیست، هنگام ساخت پایتون از ابتدا. این ماژول اکنون به جای داشتن دو پیادهسازی بسته به در دسترس بودن یا نبودن زیرفرایند، از ماژول خصوصی جدید _bootsubprocess استفاده میکند. بنابراین نتیجهی _aix_support.aix_platform() اکنون چه زیرفرایند در دسترس باشد و چه نباشد، یکسان است.
bpo-36144: کلاس
collections.OrderedDictاکنون عملگرهای|و|=را پیادهسازی میکند (PEP 584).bpo-39652: نام ستون پیدا شده در
sqlite3.Cursor.descriptionاکنون در اولین '[' فقط در صورتی که گزینهی PARSE_COLNAMES تنظیم شده باشد، کوتاه میشود.bpo-39915: مطمئن شوید که
unittest.mock.AsyncMock.await_args_listشیءهای فراخوانی را به ترتیب آرگومانهای مورد انتظار دارد، به جای استفاده ازunittest.mock.Mock.call_argsکه آخرین مقدار فراخوانی را دارد. وصل توسط Karthikeyan Singaravelan.bpo-36144: بهروزرسانی
os.environوos.environbبرای پشتیبانی از عملگرهای ادغام (|) و بهروزرسانی (|=) مربوط به PEP 584.bpo-38662: ماژول
ensurepipاکنونpipرا از طریق ماژولrunpyفراخوانی میکند. از این رو دیگر به شدت با API داخلی نسخهی بستهبندیشدهیpipگره نخورده است، که امکان بهروزرسانیهای آسانتر به نسخهی جدیدترpipرا هم بهطور داخلی و هم برای توزیعکنندگان فراهم میکند.bpo-38075: رفع متد
random.Random.seed()هنگامی که یکboolبه عنوان بذر ارسال میشود.bpo-39916: استفادهی مطمئنتر از
os.scandir()درPath.glob(). این متد دیگر هنگام متوقف شدن هشدار ResourceWarning صادر نمیکند.bpo-39850: ماژول
multiprocessingاکنون از آدرسهای سوکت انتزاعی پشتیبانی میکند (اگر سوکتهای انتزاعی در پلتفرم در حال اجرا پشتیبانی شوند). هنگام ایجاد آدرسهای دلخواه (مانند هنگام ساخت پیشفرض شیءهایmultiprocessing.connection.Listener) سوکتهای انتزاعی ترجیح داده میشوند تا از حالتی که آدرس تولید شده توسط پروندهی موقت برای یک آدرس سوکت AF_UNIX خیلی بزرگ است جلوگیری شود. وصل توسط Pablo Galindo.bpo-36287: تابع
ast.dump()دیگر فیلدها و ویژگیهای اختیاری را با مقادیر پیشفرض خروجی نمیدهد. مقادیر پیشفرض برای فیلدها و ویژگیهای اختیاری گرههای درخت نحوی انتزاعی (AST) اکنون به عنوان ویژگیهای کلاس تنظیم میشوند (به عنوان مثالConstant.kindرویNoneتنظیم میشود).bpo-39889: رفع
ast.unparse()برای اسلایسهای توسعهیافته حاوی یک عنصر واحد (مانندa[i:j,]). حذف تاپلهای اضافی هنگام ایندکس کردن با یک تاپل (مانندa[i, j]).bpo-39828: رفع
json.toolبرای گرفتنBrokenPipeError. وصل توسط Donghee Na.bpo-13487: جلوگیری از بروز یک خطای احتمالی "RuntimeError: dictionary changed size during iteration" از
inspect.getmodule()زمانی که تلاش میکند حلقه رویsys.modulesرا اجرا کند.bpo-39674: بازنشانی "bpo-37330: open() دیگر 'U' را در حالت پرونده نمیپذیرد". حالت "U" در تابع open() در پایتون ۳.۹ نگه داشته شده است تا انتقال از پایتون ۲.۷ تسهیل شود، اما در پایتون ۳.۱۰ حذف خواهد شد.
bpo-28577: متد hosts روی IPv4Networks با طول پیشوند ۳۲ بیتی و IPv6Networks با پیشوند ۱۲۸ بیتی اکنون به جای یک فهرست خالی، فهرستی حاوی همان تکآدرس را برمیگرداند.
bpo-39826: افزودن متد getConnection به HTTPHandler گزارشگیری (logging) برای فعالسازی اتصالهای سفارشی.
bpo-39763: پیادهسازی مجدد تابع
distutils.spawn.spawnبا استفاده از ماژولsubprocess.bpo-39794: افزودن گزینهی ساخت --without-decimal-contextvar. این گزینه به جای یک زمینهی محلی همروال، یک زمینهی نخمحلی (thread-local) را فعال میکند.
bpo-36144: کلاس
collections.defaultdictاکنون عملگر|را پیادهسازی میکند (PEP 584).bpo-39517: رفع مشکل runpy.run_path() هنگام استفاده از اشیای شبیه به مسیر (pathlike)
bpo-39775: تغییر دادن دوبارهی
inspect.Signature.parametersبهcollections.OrderedDict. این مورد در نسخهی Python 3.9.0a4 بهdictتغییر یافته بود.bpo-39678: بازسازی queue_manager در
concurrent.futures.ProcessPoolExecutorبرای نگهداری آسانتر.bpo-39764: رفع خطای AttributeError هنگام فراخوانی get_stack روی یک وظیفهی PyAsyncGenObject
bpo-39769: پارامتر ddir در تابع
compileall.compile_dir()و پرچم خط فرمان compileall یعنی-dدیگر مسیرنام اشتباهی را در پروندهی pyc ایجادشده برای زیرماژولهای زیرمجموعهی ریشهی درخت پوشهی در حال کامپایل، نمینویسند. این مشکل یک رگرسیون (regression) معرفیشده در پایتون ۳.۵ را برطرف میکند.bpo-36144: اشیای
types.MappingProxyTypeاکنون از عملگر ادغام (|) از PEP 584 پشتیبانی میکنند.bpo-38691: ماژول
importlibاکنون هنگام استفاده از گزینههای خط فرمان-Eیا-I، متغیر محیطیPYTHONCASEOKرا نادیده میگیرد.bpo-39719: حذف
tempfile.SpooledTemporaryFile.softspace()به این دلیل که در پایتون ۳، پروندهها دیگر ویژگیsoftspaceرا ندارند. وصله توسط Shantanu.bpo-39667: بهبود سازگاری pathlib.Path روی zipfile.Path و اصلاح افت کارایی مطابق با آنچه در zipp 3.0 یافت شد.
bpo-39638: حفظ امضاهای ASDL در رشتههای مستند (docstrings) برای گرههای
AST. وصله توسط Batuhan Taskayabpo-39639: منسوخ کردن کلاس گره
ast.Suiteزیرا دیگر استفاده نمیشود. وصله توسط Batuhan Taskaya.bpo-39609: افزودن thread_name_prefix به اجراکنندهی پیشفرض asyncio
bpo-39548: رفع نحوهی پردازش سرآیند (header) در
urllib.request.AbstractDigestAuthHandlerزمانی که پارامتر اختیاریqopحضور ندارد.bpo-39509: کدهای وضعیت HTTP یعنی
103 EARLY_HINTSو425 TOO_EARLYبهhttp.HTTPStatusاضافه شدند. وصله توسط Donghee Na.bpo-39507: افزودن وضعیت HTTP شمارهی ۴۱۸ با عنوان "I'm a Teapot" به HTTPStatus در کتابخانهی http. وصله توسط Ross Rhodes.
bpo-39495: حذف مقدار پیشفرض از پارامتر attrs در
xml.etree.ElementTree.TreeBuilder.start()برای حفظ سازگاری بین پیادهسازیهای پایتون و C.bpo-38971: یک مسئلهی باز در BPO نشان داد که تمایلی وجود دارد تا پیادهسازی codecs.open() با io.open() همسطح شود؛ io.open() از یک بلوک try/except برای اطمینان از بسته شدن جریان پرونده پیش از ایجاد یک استثنا استفاده میکند.
bpo-38641: پشتیبانی از عبارتهای ستارهدار (starred expressions) به دستورهای
returnوyieldبرایlib2to3اضافه شد. وصله توسط Vlad Emelianov.bpo-37534: هنگام استفاده از ماژول minidom برای تولید اسناد XML، امکان افزودن اعلان سند مستقل (Standalone Document Declaration) اضافه شد. تمام تغییرات برای تولید سندی مطابق با توصیهنامهی W3C برای زبان نشانهگذاری قابل توسعه (XML) نسخهی ۱.۰ (ویرایش پنجم) انجام شده است (که در اینجا در دسترس است: https://www.w3.org/TR/xml/#sec-prolog-dtd).
bpo-34788: افزودن پشتیبانی از آدرسهای IPv6 محدودشده به ماژول
ipaddress. وصله توسط Oleksandr Pavliuk.bpo-34822: سادهسازی درخت نحوی انتزاعی (AST) برای زیرنویسی. شاخصهای ساده اکنون با مقدار خود نمایش داده میشوند و اسلایسهای توسعهیافته به صورت تاپل نمایش داده میشوند. کلاسهای
astیعنیIndexوExtSliceمنسوخ در نظر گرفته شدهاند و در نسخههای آتی پایتون حذف خواهند شد. در این میان،Index(value)اکنون خودvalueرا برمیگرداند وExtSlice(slices)مقدارTuple(slices, Load())را برمیگرداند.
مستندات¶
bpo-13790: تغییر «string» به «specification» در مستندات format.
bpo-17422: مرجع زبان دیگر فضاهای نام پیشفرض کلاس را به دیکشنریها محدود نمیکند.
bpo-39530: رفع مستندات گمراهکننده دربارهی مقایسههای عددی با نوع مختلط.
bpo-39718: بهروزرسانی مستندات
tokenجهت بازتاب افزودنیهای پایتون ۳.۸bpo-39677: تغییر نام عملگر MAKE_FUNCTION از argc به flags برای ماژول
dis
آزمونها¶
bpo-40019: آزمون test_gdb اکنون اگر تشخیص دهد که gdb به دلیل بهینهسازی باینری پایتون در خواندن اطلاعات رفع اشکال ناموفق بوده است، آزمونها را رد میکند.
bpo-27807: اگر مسیری از
sys.pathحاوی یک پروندهی.pthباشد،test_site.test_startup_imports()اکنون نادیده گرفته میشود.bpo-26067: در صورتی که uid یا gid کاربر قابل تبدیل به نام نباشد، آزمونهای test_shutil و test_chown شکست نخورند.
bpo-39855: آزمون test_subprocess.test_user() اکنون اگر نام کاربر وجود نداشته باشد، آن آزمون را روی نام کاربر رد میکند. برای مثال، اگر کاربر «nobody» روی لینوکس وجود نداشته باشد، آزمون را رد کنید.
ساخت¶
bpo-39761: رفع ساخت با DTrace اما بدون DFLAGS اضافی.
bpo-39763: پروندهی setup.py اکنون در صورتی که ماژول
subprocessدر دسترس نباشد (پیش از ساخته شدن ماژولهای توسعهی C مورد نیاز)، از یک پیادهسازی پایهای از ماژولsubprocessاستفاده میکند.bpo-1294959: افزودن گزینهی
--with-platlibdirبه اسکریپت configure: نام پوشهی کتابخانهی مخصوص پلتفرم که در صفت جدیدsys.platlibdirذخیره میشود. از آن برای ساخت مسیر ماژولهای افزونهی مخصوص پلتفرم و مسیر کتابخانهی استاندارد استفاده میشود. این مقدار روی بیشتر پلتفرمها برابر با"lib"است. روی فدوا و سوِس، روی پلتفرمهای ۶۴ بیتی برابر با"lib64"است. وصله توسط Jan Matějek، Matěj Cepl، Charalampos Stratakis و Victor Stinner.
Windows¶
bpo-39930: اطمینان حاصل میکند که پروندهی ضروری
vcruntime140.dllدر بستههای نصب گنجانده شده است.bpo-39847: جلوگیری از توقف ناگهانی (hang) هنگام به خواب زمستانی رفتن رایانه در حالی که منتظر یک قفل متقابل (برای اشیاء مرتبط با قفل از ماژول
threading) در حدود زمان آپتایم ۴۹ روزه است.bpo-38597: کتابخانهی
distutilsدیگر به طور ایستا بهvcruntime140.dllپیوند نخواهد خورد زمانی که نسخهی قابل توزیع مجدد در دسترس نباشد. تمام نسخههای آتی سیپایتون شامل کپی از این DLL خواهند بود تا اطمینان حاصل شود که افزونههای توزیعشده میتوانند به بارگذاری خود ادامه دهند.bpo-38380: بهروزرسانی ساختهای ویندوز برای استفاده از SQLite 3.31.1
bpo-39789: بهروزرسانی ماشینهای ساخت انتشار ویندوز به Visual Studio 2019 (MSVC 14.2).
bpo-34803: بسته برای nuget.org اکنون شامل ارجاع مخزن و تصویر نماد بستهبندیشده است.
مکاواس¶
bpo-38380: بهروزرسانی ساختهای macOS برای استفاده از SQLite 3.31.1
IDLE¶
bpo-27115: برای «Go to Line»، از زیرکلاس جعبهی Query با رفتار استاندارد IDLE و بررسی خطای بهبودیافته استفاده کنید.
bpo-39885: از آنجا که کلیک کردن برای دریافت منوی زمینهی IDLE نشانگر را جابهجا میکند، هرگونه انتخاب متنی باید پاک شود و اکنون نیز پاک میشود.
bpo-39852: ویرایش «Go to line» اکنون هرگونه انتخاب را پاک میکند تا از حذف تصادفی جلوگیری شود. همچنین Ln و Col را روی نوار وضعیت بهروزرسانی میکند.
bpo-39781: انتخاب سطرهای زمینهی کد دیگر باعث پرش نمیشود.
Tools/Demos¶
bpo-36184: انتقال python-gdb.py به FreeBSD. اکنون python-gdb.py نام تابع «take_gil» را بررسی میکند تا ببیند آیا یک قاب تلاش میکند GIL را بهدست آورد یا خیر؛ بهجای بررسی «pthread_cond_timedwait» که مخصوص لینوکس است و میتواند شرایطی متفاوت از GIL باشد.
bpo-38080: پشتیبانی برای اصلاح
getproxiesدر ماژولlib2to3.fixes.fix_urllibاضافه شد. وصله توسط José Roberto Meza Cabrera.
رابط C API¶
bpo-40024: تابع کمکی
PyModule_AddType()اضافه شد: افزودن یک نوع به یک ماژول. وصله توسط Donghee Na.bpo-39946: قلاب
_PyRuntime.getframeرا حذف کرده و ماکرو_PyThreadState_GetFrameرا که نام مستعاری برای_PyRuntime.getframeبود، حذف کنید. آنها فقط توسط API داخلی C در معرض نمایش گذاشته شده بودند. همچنین نوعPyThreadFrameGetterرا حذف کنید.bpo-39947: تابع
PyThreadState_GetFrame()را اضافه کنید: دریافت قاب فعلی وضعیت نخ پایتون.bpo-37207: تابع کمکی _PyArg_NoKwnames را اضافه کنید. وصله توسط Donghee Na.
bpo-39947: افزودن
PyThreadState_GetInterpreter(): دریافت مفسر وضعیت نخ پایتون.bpo-39947: تابع
PyInterpreterState_Get()را به API محدود C اضافه کنید.bpo-35370: اگر
PySys_Audit()درPyEval_SetProfile()یاPyEval_SetTrace()با خطا مواجه شود، خطا را به عنوان یک استثنای غیرقابلپرتاب ثبت کنید.bpo-39947: نوع تابع درونخط ایستا (static inline) از Py_EnterRecursiveCall() و Py_LeaveRecursiveCall() را به API داخلی C منتقل کنید: آنها به ویژگیهای PyThreadState دسترسی دارند. API محدود C توابع معمولی را ارائه میدهد که جزئیات پیادهسازی را پنهان میکنند.
bpo-39947: ماکروهای Py_TRASHCAN_BEGIN_CONDITION و Py_TRASHCAN_END دیگر به ویژگیهای PyThreadState دسترسی ندارند، بلکه توابع خصوصی جدید _PyTrash_begin() و _PyTrash_end() را فراخوانی میکنند که جزئیات پیادهسازی را پنهان میکنند.
bpo-39884: توابع
PyDescr_NewMethod()وPyCFunction_NewEx()اکنون نام متد را در پیام خطای SystemError «bad call flags» قرار میدهند تا عیبیابی آسانتر شود.bpo-39877: توابع
PyEval_InitThreads()وPyEval_ThreadsInitialized()منسوخ شدند. فراخوانیPyEval_InitThreads()اکنون هیچ کاری انجام نمیدهد.bpo-38249:
Py_UNREACHABLEاکنون با__builtin_unreachable()و موارد مشابه در حالت انتشار پیادهسازی میشود.bpo-38643: تابع
PyNumber_ToBase()اکنون هنگام فراخوانی با پایهی نامعتبر، بهجای متوقف شدن ناگهانی، یک خطایSystemErrorبالا میآورد.bpo-39882: تابع
Py_FatalError()با کلاندستوری جایگزین شده است که بهطور خودکار نام تابع جاری را ثبت میکند، مگر اینکه کلاندستورPy_LIMITED_APIتعریف شده باشد.bpo-39824: ماژولهای توسعهای: اگر وضعیت ماژول درخواست شده باشد اما هنوز تخصیص نیافته باشد، توابع
m_traverse،m_clearوm_freeازPyModuleDefدیگر فراخوانی نمیشوند. این حالت بلافاصله پس از ایجاد ماژول و قبل از اجرای ماژول (تابعPy_mod_exec) رخ میدهد. به بیان دقیقتر، اگر مقدارm_sizeبزرگتر از ۰ باشد و وضعیت ماژول (که توسطPyModule_GetState()برگردانده میشود) برابر باNULLباشد، این توابع فراخوانی نمیشوند.ماژولهای توسعهای بدون وضعیت ماژول (
m_size <= 0) تحت تأثیر قرار نمیگیرند.bpo-38913: خطای خرابی حافظه (segfault) در
Py_BuildValue()که با قالبی حاوی «#» و PY_SSIZE_T_CLEAN تعریفنشده در هنگام تنظیم یک استثنا فراخوانی میشد، رفع شد.bpo-38500: افزودن یک API خصوصی برای دریافت و تنظیم تابع ارزیابی قاب: افزودن توابع C به نامهای
_PyInterpreterState_GetEvalFrameFunc()و_PyInterpreterState_SetEvalFrameFunc(). نوع تابع_PyFrameEvalFunctionاکنون یک پارامتر tstate را دریافت میکند.
پایتون ۳.۹.۰ آلفا ۴¶
تاریخ انتشار: ۲۰۲۰-۰۲-۲۵
امنیت¶
هسته و توکارها (Core and Builtins)¶
bpo-39382: رفع خطای استفاده پس از آزادسازی (use-after-free) در مسیر وراثت منفرد تابع
issubclass()، هنگامی که ویژگی__bases__یک شیء دارای یک ارجاع منفرد است و اولین آیتم آن نیز همینطور است. وصله توسط یوناتان گلدشمیت (Yonatan Goldschmidt).bpo-39573: بهروزرسانی ابزار clinic برای استفاده از
Py_IS_TYPE(). وصله توسط دونگی نا (Donghee Na).bpo-39619: فعالسازی استفاده از
os.chroot()روی سیستمهای HP-UX.bpo-39573: افزودن تابع درونخطی (inline) ثابت
Py_IS_TYPE()برای بررسی اینکه آیا نوع شیء o برابر با type است یا خیر.bpo-39606: رفع رگرسیون ناشی از اصلاح bpo-39386 که مانع از فراخوانی
acloseروی یک مولد ناهمگام میشد که قبلاً بسته یا تخلیه شده بود.bpo-39579: تغییر آفست ستون پایانی گرههای
Attributeساختهشده درast_for_dotted_nameبهطوریکه به انتهای گره فعلی اشاره کند و نه به انتهای آخرین گرهNAME.bpo-1635741: انتقال ماژول توسعهای _crypt به مقداردهی اولیه چندمرحلهای (PEP 489).
bpo-1635741: انتقال ماژول توسعهای _contextvars به مقداردهی اولیه چندمرحلهای (PEP 489).
bpo-39510: رفع خطای خرابی حافظه در متد
readinto()روی یک BufferedReader بسته شده.bpo-39502: اصلاح
time.localtime()روی سیستم ۶۴ بیتی AIX برای پشتیبانی از سالهای قبل از ۱۹۰۲ و بعد از ۲۰۳۸. اصلاحیه توسط M Felt.bpo-39492: اصلاح یک چرخه ارجاع در ماژول پیکلساز C که مانع از زبالهروبی اشیای حذفشده و پیکلشده میشد.
bpo-39453: اصلاح احتمال بروز فروپاشی در
list.__contains__()هنگامی که یک فهرست در طول مقایسهی آیتمها تغییر میکند. اصلاحیه توسط Donghee Na.bpo-39434: تقسیم کف عدد اعشاری اکنون کارایی بهتری دارد. همچنین پیام استثنای
ZeroDivisionErrorبرای این عملیات بهروزرسانی شد. اصلاحیه توسط Donghee Na.bpo-1635741: انتقال ماژول توسعهای _codecs به مقداردهی اولیه چندمرحلهای (PEP 489).
bpo-1635741: انتقال ماژول توسعهای _bz2 به مقداردهی اولیه چندمرحلهای (PEP 489).
bpo-1635741: انتقال ماژول توسعهای _abc به مقداردهی اولیه چندمرحلهای (PEP 489).
bpo-39320: جایگزینی دو بایتکد پیچیده برای ساخت دیکشنریها با دو بایتکد سادهتر. بایتکدهای جدید
DICT_MERGEوDICT_UPDATEاضافه شدند و بایتکدهای قدیمیBUILD_MAP_UNPACKوBUILD_MAP_UNPACK_WITH_CALLحذف شدند.bpo-39219: خطاهای نحوی ایجادشده در توکنساز اکنون همیشه ویژگیهای صحیح "text" و "offset" را تنظیم میکنند.
bpo-36051: رهاسازی GIL در طول عملیاتهای بزرگ
bytes.join. اصلاحیه توسط Bruce Merry.bpo-38960: اصلاح مسائل ساخت DTrace روی سیستمعامل FreeBSD. اصلاحیه توسط David Carlier.
bpo-37207: افزایش سرعت فراخوانیهای
range()حدود ۳۰٪، با استفاده از قرارداد فراخوانیvectorcallدر PEP 590. اصلاحیه توسط Mark Shannon.bpo-36144: اشیای
dict(وcollections.UserDict) اکنون از عملگرهای ادغام (|) و بهروزرسانی (|=) در PEP 584 پشتیبانی میکنند. اصلاحیه توسط Brandt Bucher.bpo-32856: بهینهسازی الگو برای انتساب یک متغیر موقت در درککنندهها. اکنون
for y in [expr]در درککنندهها به سرعت یک انتساب سادهیy = exprاست.
کتابخانه¶
bpo-30566: اصلاح استثنای
IndexErrorهنگام تلاش برای رمزگشایی یک رشتهی نامعتبر با کُدک punycode.bpo-39649: حذف بررسی منسوخشده برای
__args__درbdb.Bdb.format_stack_entry.bpo-39648: توسعهی
math.gcd()وmath.lcm()برای پشتیبانی از آرگومانهای متعدد.bpo-39681: اصلاح یک رگرسیون که در آن ماژول پیکل C اجازهچندبرابرسازی عملیات بازیابی (unpickling) را از یک شیء شبهپرونده که متد readinto() را نمایش نمیدهد، نمیداد.
bpo-35950: ایجاد استثنای
io.UnsupportedOperationدر متدio.BufferedReader.truncate()هنگامی که روی یک نمونهیio.BufferedReaderفقطخواندنی فراخوانی میشود.bpo-39479: افزودن تابع
math.lcm(): کوچکترین مضرب مشترک.bpo-39674: بازگردانی تغییر «عدم افشای کلاس پایه انتزاعیهای مجموعه در ماژول collections» (bpo-25988). نامهای مستعار کلاس پایه انتزاعی مانند collections.Mapping برای تسهیل گذار از پایتون ۲.۷ در نسخهی ۳.۹ پایتون حفظ شدهاند، اما در نسخهی ۳.۱۰ حذف خواهند شد.
bpo-39104: رفع معلق ماندن ProcessPoolExecutor در متد
shutdown(wait=False)زمانی که یک وظیفه در پیکلسازی (pickling) شکست خورده است.bpo-39627: رفع بررسی کلی بودن TypedDict برای کلیدهای به ارث رسیده.
bpo-39474: رفع موقعیت شروع درخت نحوی انتزاعی (AST) برای عبارتهایی مانند
(a)(b)،(a)[b]و(a).b.bpo-21016: ماژولهای
pydocوtraceاکنون از ماژولsysconfigبرای دسترسی به مسیر کتابخانهی استاندارد پایتون استفاده میکنند تا از مسیرهای نصب غیرمعمول مانند/usr/lib64/python3.9/در فدورا پشتیبانی کنند. ارسال وصله توسط Jan Matějek.bpo-39590: ساختار Collections.deque اکنون در طول متدهای deque.__contains__ و deque.count ارجاعهای قوی نگه میدارد که خرابیها را برطرف میکند.
bpo-39586: دستور
bdist_msiدر ابزار distutils در نسخهی ۳.۹ پایتون منسوخ شده است، بهجای آن ازbdist_wheel(بستههای wheel) استفاده کنید.bpo-39595: بهبود کارایی zipfile.Path برای پروندههایی با تعداد ورودی زیاد. همچنین بهبود کارایی و رفع مشکل جزئی منتشرشده با importlib_metadata 1.5.
bpo-39350: رفع رگرسیون در
fractions.Fractionاگر صورت و/یا مخرج یک زیرکلاس ازintباشد. تابعmath.gcd()اکنون برای بهنجار کردن صورت و مخرج استفاده میشود. تابعmath.gcd()همیشه یک نوع دادهیintبرمیگرداند. پیش از این، نوع GCD به صورت و مخرج بستگی داشت.bpo-39567: اضافهشدن حسابرسی برای
os.walk()،os.fwalk()،pathlib.Path.glob()وpathlib.Path.rglob().bpo-39559: حذف آرگومان
gettersکه استفادهنشده و مستند نشده بود ازuuid.getnode()bpo-38149: تابع
sys.audit()اکنون تنها یکبار در هر فراخوانی ازglob.glob()وglob.iglob()فراخوانی میشود.bpo-39546: رفع رگرسیون در
ArgumentParserکه در آن پارامترallow_abbrev=Falseبرای گزینههای طولانی که از نویسهی پیشوندی غیر از «-» استفاده میکردند، نادیده گرفته میشد.bpo-39450: حذف نویسههای فاصله از رشته مستند پیش از بازگرداندن آن از
unittest.case.shortDescription().bpo-12915: تابع جدید
resolve_nameبه ماژولpkgutilاضافه شده است. این تابع یک رشته به فرم'a.b.c.d'یا'a.b:c.d'را به یک شیء نگاشت میکند. در این مثال،a.bیک بسته/ماژول وc.dیک شیء درون آن بسته/ماژول است که از طریق دسترسی بازگشتی به ویژگیها به دست میآید.bpo-39353: تابع
binascii.crc_hqx()دیگر منسوخ نیست.bpo-39493: نشانهگذاری
typing.IO.closedبه عنوان یک ویژگیbpo-39491: اضافهشدن
typing.Annotatedو پارامترinclude_extrasبهtyping.get_type_hints()به عنوان بخشی از PEP 593. ارسال وصله توسط Till Varoquaux، مستندسازی توسط Till Varoquaux و Konstantin Kashin.bpo-39485: رفع باگ در
unittest.mock.create_autospec()که به تعداد نادرست آرگومانها برای توصیفگرهای سفارشی تعریفشده در یک ماژول توسعهای که توابع برمیگردانند، اعتراض میکرد.bpo-38932: ماک (Mock) اشیاء فرزند را به طور کامل در متد reset_mock() بازنشانی میکند. ارسال وصله توسط Vegard Stikbakke
bpo-39082: امکان وصل کردن درست متدهای ایستا و متد کلاس توسط AsyncMock
bpo-39432: پیادهسازی الگوریتم PEP-489 برای نامهای نماد غیر ascii «PyInit_...» در distutils بهمنظور اطمینان از اکسپورت شدن نماد init صحیح در سیستمعامل ویندوز.
bpo-18819: حذف فیلدهای
devmajorوdevminorبرای پروندههای غیردستگاهی در آرشیوهایtarfile، که سازگاری بیتبهبیت باtar(1)در GNU را فراهم میکند.bpo-39349: افزودن پارامتر جدید cancel_futures به
concurrent.futures.Executor.shutdown()که تمام آیندهنماهای در انتظار که اجرایشان آغاز نشده است را لغو میکند، بهجای اینکه پیش از خاموش کردن اجراکننده منتظر اتمام آنها بماند.bpo-39274: تابع
bool(fraction.Fraction)اکنون یک مقدار بولی برمیگرداند، حتی اگر عبارت (numerator != 0) مقدار بولی برنگرداند (بهعنوانمثال عدد numpy).bpo-34793: حذف پشتیبانی از
with (await asyncio.lock):وwith (yield from asyncio.lock):. این مورد برایasyncio.Conditionوasyncio.Semaphoreنیز صادق است.bpo-25597: اطمینان حاصل کنید که اگر
wrapsبهunittest.mock.MagicMockارسال شود، بهجای استفاده از مقادیر بازگشتی پیشفرض، برای محاسبهی مقادیر بازگشتی متدهای جادویی استفاده شود. وصله توسط Karthikeyan Singaravelan.bpo-36350: مشخصههای
inspect.Signature.parametersوinspect.BoundArguments.argumentsاکنون بهجای OrderedDicts دیکشنری هستند. وصله مشارکتدادهشده توسط Rémi Lapeyre.bpo-35727: اصلاح انتشار کد خروج در sys.exit() و sys.exit(None) هنگامی که در multiprocessing.Process استفاده میشوند.
bpo-32173: * افزودن تابع
lazycacheبه__all__. * استفاده ازdict.clearبرای پاکسازی نهانگاه. * بازطراحی تابعgetlineو تابعcheckcache.
مستندات¶
bpo-17422: مرجع زبان اکنون محدودیتهایی را روی فضاهای نام کلاس مشخص میکند. اقتباسشده از وصلهای توسط Ethan Furman.
bpo-39572: بهروزرسانی مستندات پرچم
totalمربوط بهTypedDict.bpo-39654: در مستندات pyclbr، بهروزرسانی 'class' به 'module' در صورت نیاز و افزودن کامنت readmodule. وصله توسط Hakan Çelik.
bpo-39153: شفافسازی معناشناسی شمارش ارجاع برای توابع زیر: - PyObject_SetItem - PyMapping_SetItemString - PyDict_SetItem - PyDict_SetItemString
bpo-39392: توضیح این نکته که هنگام پر کردن با turtle، ممکن است نواحی همپوشانی پرنشده باقی بمانند.
bpo-39369: بهروزرسانی توضیحات متد readline در mmap. این حقیقت که متد readline موقعیت پرونده را بهروزرسانی میکند نباید نادیده گرفته شود؛ زیرا ممکن است این تصور را برای برنامهنویس ایجاد کند که آن را بهروزرسانی نمیکند.
bpo-9056: گنجاندن زیربخش در فهرست مطالب (TOC) برای نسخهی PDF مستندات.
آزمونها¶
bpo-38325: رد کردن آزمونها روی نویسههای غیر BMP در test_winconsoleio.
bpo-39502: اگر
time.localtime()با خطایOverflowErrorمواجه شود، آزمون test_zipfile.test_add_file_after_2107() را رد کنید. برای مثال این مورد در AIX 6.1 صادق است.
ساخت¶
bpo-39489: حذف ساخت ویژه
COUNT_ALLOCS.
Windows¶
bpo-39553: حذف کدهای استفادهنشدهی مرتبط با مانیفستهای SxS.
bpo-39439: در نظر گرفتن مسیر پایتون هنگامی که یک محیط مجازی (virtualenv) در ویندوز فعال است.
bpo-39393: بهبود پیام خطا هنگام تلاش برای بارگذاری یک فایل DLL با وابستگیهای حلنشده.
bpo-38883: توابع
home()وexpanduser()روی ویندوز اکنونUSERPROFILEرا ترجیح میدهند و دیگر ازHOMEاستفاده نمیکنند که معمولاً برای حسابهای کاربری معمولی تنظیم نمیشود. این باعث میشود که آنها دوباره مانندos.path.expanduser()رفتار کنند که در نسخهی ۳.۸ تغییر کرده بود تاHOMEرا نادیده بگیرد، بنگرید به bpo-36264.bpo-39185: اسکریپت build.bat گزینههای اضافی برای خروجی بسیار کمصدا (-q) و خروجی بسیار پرجزئیات (-vv) دارد.
IDLE¶
bpo-39663: افزودن آزمونها برای find_good_parse_start() در pyparse.
bpo-39600: در پنجرهی پیکربندی قلم، نامهای قلم تکراری را حذف کنید.
bpo-30780: افزودن آزمونهای باقیماندهی configdialog برای برگههای دکمهها، برجستهسازیها و کلیدها.
bpo-39388: دکمهی لغو در تنظیمات IDLE اکنون تغییرات در حال انتظار را لغو میکند.
bpo-38792: در صورت بروز
KeyboardInterruptیا راهاندازی مجدد پوسته، راهنمای فراخوانی (calltip) پوستهی IDLE را ببندید. وصله توسط Zackery Spytz.
رابط C API¶
bpo-35081: پروندهی سرآیند
bytes_methods.hرا به API داخلی C به عنوانpycore_bytes_methods.hمنتقل کنید: این پرونده فقط شامل نمادهای خصوصی (با پیشوند_Py) است، به جز ماکرویPyDoc_STRVAR_shared().bpo-35081: پروندهی سرآیند
dtoa.hرا به API داخلی C به عنوانpycore_dtoa.hمنتقل کنید: این پرونده فقط شامل عملکردهای خصوصی (با پیشوند_Py) است. ماژولهایmathوcmathاکنون باید با ماکروی تعریفشدهیPy_BUILD_COREکامپایل شوند.bpo-39573: افزودن تابع
Py_SET_SIZE()برای تعیین اندازهی یک شیء.bpo-39500: تابع
PyUnicode_IsIdentifier()اگر رشته آماده نباشد، دیگرPy_FatalError()را فراخوانی نمیکند.bpo-39573: افزودن تابع
Py_SET_TYPE()برای تعیین نوع یک شیء.bpo-39573: افزودن تابع
Py_SET_REFCNT()برای تعیین شمارندهی ارجاع یک شیء.bpo-39542: تبدیل ماکروهای
PyType_HasFeature()،PyType_Check()وPyType_CheckExact()به توابع static inline.bpo-39542: در API محدود C، توابع
PyObject_INIT()وPyObject_INIT_VAR()اکنون به عنوان نامهای مستعار برایPyObject_Init()وPyObject_InitVar()تعریف شدهاند تا پیادهسازی آنها کدر شود. این کار از نشت جزئیات پیادهسازی در API محدود C جلوگیری میکند. توابع زیر را از API محدود C مستثنی کنید:_Py_NewReference()،_Py_ForgetReference()،_PyTraceMalloc_NewReference()و_Py_GetRefTotal().bpo-39542: مکانیسم سطل زباله (trashcan) را از API محدود C مستثنی کنید: این مکانیسم نیازمند دسترسی به فیلدهای ساختار PyTypeObject و PyThreadState است، در حالی که این ساختارها در API محدود C کدر هستند.
bpo-39511: تابع
PyThreadState_Clear()اکنون فراخوانی بازگشتی (callback)PyThreadState.on_deleteرا فراخوانی میکند. پیشتر، این اتفاق درPyThreadState_Delete()رخ میداد.bpo-38076: اصلاح شد تا حالت مفسر تنها پس از پاکسازی متغیرهای سراسری ماژول پاکسازی شود تا دسترسی به حالت ماژول از سوی افزونههای C در طول تخریب رانتایم تضمین گردد.
bpo-39245: رابط Vectorcall (PEP 590) عمومی شد و توابع
PyObject_Vectorcall،PyObject_VectorcallMethod،PyVectorcall_Function،PyObject_CallOneArg،PyObject_CallMethodNoArgs،PyObject_CallMethodOneArg،PyObject_FastCallDictو پرچمPy_TPFLAGS_HAVE_VECTORCALLرا اضافه کرد.
پایتون ۳.۹.۰ آلفا ۳¶
تاریخ انتشار: ۲۰۲۰-۰۱-۲۴
هسته و توکارها (Core and Builtins)¶
bpo-39427: مستندسازی تمام گزینههای ممکن برای گزینههای
-Xدر بخش راهنمای خط فرمان. وصله توسط Pablo Galindo.bpo-39421: رفع خرابیهای احتمالی هنگام کار با توابع موجود در ماژول
heapqو عملگرهای مقایسهای سفارشی.bpo-39386: جلوگیری از انتظار دوبرابر برای پیمایشگر ناهمگام (async iterator).
bpo-17005: کلاس
functools.TopologicalSorterرا به ماژولfunctoolsاضافه کنید تا قابلیت انجام مرتبسازی توپولوژیک گرافها را فراهم کند. وصله توسط Pablo Galindo، Tim Peters و Larry Hastings.bpo-39320: جایگزینی چهار بایتکد پیچیده برای ساخت دنبالهها با سه بایتکد سادهتر.
چهار بایتکد زیر حذف شدهاند:
BUILD_LIST_UNPACK
BUILD_TUPLE_UNPACK
BUILD_SET_UNPACK
BUILD_TUPLE_UNPACK_WITH_CALL
سه بایتکد زیر اضافه شدهاند:
LIST_TO_TUPLE
LIST_EXTEND
SET_UPDATE
bpo-39336: بارگذارهای ایمپورت که اشیاء ماژول تغییرناپذیر را منتشر میکنند، اکنون میتوانند علاوه بر ماژولهای منفرد، بستههای تغییرناپذیر را نیز منتشر کنند.
bpo-39322: تابع جدید
gc.is_finalized()برای بررسی اینکه آیا یک شیء توسط جمعآور زباله نهایی شده است یا خیر، اضافه شد. وصله توسط Pablo Galindo.bpo-39048: بهبود پیام خطای نمایشدادهشده هنگام ارسال انواع نادرست به دستورهای
async withاز طریق جستجوی متد ویژه__aenter__()پیش از متد ویژه__aexit__()هنگام ورود به یک مدیر زمینه ناهمگام. ارائهشده توسط Géry Ogam.bpo-39235: رفع مکان پایانی درخت نحوی انتزاعی (AST) برای عبارت تولیدگر تنها در فراخوانی تابع، مثلاً f(i for i in a).
bpo-39209: مدیریت درست توکنهای چندسطری در حالت تعاملی. وصله توسط Pablo Galindo.
bpo-1635741: انتقال ماژول توسعهای _json به مقداردهی اولیه چندمرحلهای (PEP 489).
bpo-39216: رفع بهینهسازی تا کردن ثابت برای آرگومانهای فقط جایگاهی - توسط Anthony Sottile.
bpo-39215: رفع خطای
SystemErrorهنگامی که تابع تو در تو دارای حاشیهنویسی روی آرگومان فقط جایگاهی است - توسط Anthony Sottile.bpo-39200: اصلاح پیام خطا هنگام فراخوانی
min()یاmax()بدون هیچ آرگومانی. وصله توسط Donghee Na.bpo-39200: اصلاح پیام خطا هنگام تلاش برای ساخت شیءهای
rangeبدون آرگومان. وصله توسط Pablo Galindo.bpo-39166: رفع گزارشدهی نادرست اجرای سطر در توابع ردگیری هنگام ردگیری آخرین پیمایش از حلقههای ناهمگام for. وصله توسط Pablo Galindo.
bpo-39114: رفع گزارشدهی نادرست اجرای سطر در توابع ردگیری هنگام ردگیری هندلرهای استثنا با اتصال نام. وصله توسط Pablo Galindo.
bpo-39156: تقسیم دستور بایتکد COMPARE_OP به چهار دستور مجزا.
COMPARE_OP برای مقایسههای غنی
IS_OP برای آزمونهای 'is' و 'is not'
CONTAINS_OP برای آزمونهای 'in' و 'is not'
JUMP_IF_NOT_EXC_MATCH برای بررسی استثناها در دستورهای 'try-except'.
این کار وضوح مفسر را بهبود میبخشد و باید سرعت اجرای متوسطی را فراهم کند.
bpo-38588: رفع فروپاشیهای احتمالی در dict و list هنگام فراخوانی
PyObject_RichCompareBool().bpo-13601: بهطور پیشفرض،
sys.stderrاکنون دارای بافر سطر است، حتی اگرstderrبه یک پرونده هدایت شود. همچنین میتوانید با ارسال گزینهی خط فرمان-uیا تنظیم متغیر محیطیPYTHONUNBUFFERED، کاری کنید کهsys.stderrبدون بافر باشد.(مشارکتکرده توسط Jendrik Seipp در bpo-13601.)
bpo-38610: رفع فروپاشیهای احتمالی در چندین متد فهرست با نگه داشتن ارجاعهای قوی به عناصر فهرست هنگام فراخوانی
PyObject_RichCompareBool().bpo-32021: افزودن کدگذاری brotli .br به encodings_map در mimetypes
کتابخانه¶
bpo-39430: رفع مشکل شرایط رقابت (race condition) در ایمپورتهای تنبل در ماژول
tarfile.bpo-39413: تابع
os.unsetenv()اکنون روی ویندوز نیز در دسترس است.bpo-39390: رفع یک رگرسیون با فراخوانی بازگشتی (callback) به نام
ignoreدر تابعshutil.copytree(). انواع دادهی آرگومانها اکنون مجدداًstrوList[str]هستند.bpo-39395: توابع
os.putenv()وos.unsetenv()اکنون همیشه در دسترس هستند.bpo-39406: اگر تابع C به نام
setenv()موجود باشد، تابعos.putenv()اکنون به جایputenv()با استفاده ازsetenv()پیادهسازی میشود، بنابراین پایتون مجبور نیست حافظهی متغیر محیطی را مدیریت کند.bpo-39396: رفع مشکل
math.nextafter(-0.0, +0.0)روی سیستم AIX 7.1.bpo-29435: امکان استفاده از تابع
tarfile.is_tarfile()با پروندهها و اشیای شبهپرونده، مشابه تابعzipfile.is_zipfile(). اصلاحیه از ویلیام وودراف (William Woodruff).bpo-39377: گزینهی
encodingاز تابعjson.loads()حذف شد. این گزینه از نسخهی ۳ پایتون منسوخ شده بود.bpo-39389: نوشتن متادیتای دقیق سطح فشردهسازی در آرشیوهای
gzip، بهجای اینکه همیشه حداکثر فشردهسازی علامتدهی شود.bpo-39366: متدهای
xpath()وxgtitle()ازnntplib.NNTPکه پیشتر منسوخ شده بودند، حذف شدند.bpo-39357: پارامتر buffering از کلاس
bz2.BZ2Fileحذف شد. از نسخهی ۳.۰ پایتون، این پارامتر نادیده گرفته میشد و استفاده از آن باعث انتشارDeprecationWarningمیشد. برای کنترل نحوهی باز شدن پرونده، یک شیء پروندهی باز ارسال کنید. پارامتر compresslevel فقط به صورت کلیدواژهای (keyword-only) پذیرفته میشود.bpo-39353: منسوخ کردن استانداردهای binhex4 و hexbin4. منسوخ کردن ماژول
binhexو توابع زیر از ماژولbinascii:b2a_hqx()،a2b_hqx()،rlecode_hqx()،rledecode_hqx()،crc_hqx().bpo-39351: حذف توابع
base64.encodestring()وbase64.decodestring()که نامهای مستعار منسوخشده از نسخهی ۳.۱ پایتون بودند: به جای آنها ازbase64.encodebytes()وbase64.decodebytes()استفاده کنید.bpo-39350: حذف تابع
fractions.gcd()که از نسخهی ۳.۵ پایتون منسوخ شده بود (bpo-22486): به جای آن ازmath.gcd()استفاده کنید.bpo-39329: سازندهی
LMTPاکنون دارای یک پارامتر اختیاری timeout است. اصلاحیه از دونگهی نا (Donghee Na).bpo-39313: افزودن یک گزینهی جدید
exec_function(به صورت -exec-function در خط فرمان) بهRefactoringToolبرای تبدیلexecبه یک تابع. اصلاحیه از باتوهان تاسکایا (Batuhan Taskaya).bpo-39259 : کلاسهای
FTP_TLSوFTP_TLSاکنون اگر مهلت زمانی دادهشده برای سازندهی آنها صفر باشد، یکValueErrorایجاد میکنند تا از ایجاد یک سوکت غیرمسدودکننده جلوگیری شود. وصلهی ارائه شده توسط Donghee Na.bpo-39259: کلاسهای
SMTPوSMTP_SSLاکنون اگر مهلت زمانی (timeout) دادهشده برای سازندهشان صفر باشد، یک خطایValueErrorپرتاب میکنند تا از ایجاد یک سوکت غیرمسدودکننده جلوگیری شود. اصلاحیه از دونگهی نا (Donghee Na).bpo-39310: افزودن
math.ulp(): مقدار کمترین بیت معنادار یک عدد اعشاری را برمیگرداند.bpo-39297: بهبود کارایی کشف توزیع در importlib.metadata و تابآوری در برابر درایههای غیرقابلدسترس sys.path (نسخهی 1.4.0 importlib_metadata).
bpo-39259: کلاسهای
NNTPوNNTP_SSLاکنون اگر مهلت زمانی دادهشده برای سازندهی آنها صفر باشد، یکValueErrorپرتاب میکنند تا از ایجاد یک سوکت غیرمسدودکننده جلوگیری شود. اصلاحیه توسط Donghee Na.bpo-38901: هنگامی که prompt='.' یا به همان صورت python -m venv --prompt . ... را مشخص میکنید، نام پایهی پوشهی جاری برای تنظیم اعلان venv ایجادشده هنگام فعالسازی آن استفاده میشود.
bpo-39288: تابع
math.nextafter()اضافه شد: مقدار ممزوجشناور بعدی پس از x به سمت y را برمیگرداند.bpo-39259: کلاسهای
POP3وPOP3_SSLاکنون اگر مهلت زمانی دادهشده برای سازندهی آنها صفر باشد، یکValueErrorپرتاب میکنند تا از ایجاد یک سوکت غیرمسدودکننده جلوگیری شود. اصلاحیه توسط Donghee Na.bpo-39242: بهروزرسانی دامنهی Gmane از news.gmane.org به news.gmane.io که برای نمونههای سرور خبرخوان
NNTPو آزمونهای nntplib استفاده میشود.bpo-35292: پراکسی کردن
SimpleHTTPRequestHandler.guess_typeبهmimetypes.guess_typeبه طوری کهmimetypes.initبه صورت تنبل فراخوانی شود تا از هزینههای غیرضروری هنگام ایمپورت شدن ماژولhttp.serverجلوگیری شود.bpo-39239: متد
select.epoll.unregister()دیگر خطایEBADFرا نادیده نمیگیرد.bpo-38907: در اسکریپت http.server، اتصالات به IPv4 روی ویندوز بازیابی شد.
bpo-39152: رفع مشکل ttk.Scale.configure([name]) برای بازگرداندن تاپل پیکربندی برای نام یا تمام گزینهها. Giovanni Lombardo بخشی از این اصلاحیه را مشارکت کرد.
bpo-39198: اگر استثنایی در
Logger.isEnabledForرخ دهد (مثلاً توسط مهلتهای زمانی asyncio یا stopit)، قفل سراسریloggingممکن است به طور مناسب آزاد نشود و منجر به بنبست شود. این تغییر آن بلوک از کد را با یکtry...finallyپوشش میدهد تا از آزادسازی قفل اطمینان حاصل شود.bpo-39191: بررسی حلقهی در حال اجرا پیش از شروع یک وظیفهی جدید در
loop.run_until_complete()برای شکست سریع انجام میشود؛ این کار از اثر جانبی ایجاد وظیفهی جدید پیش از پرتاب استثنا جلوگیری میکند.bpo-38871: پرانتزگذاری صحیح دستورات مبتنی بر فیلتر که حاوی عبارتهای لامبدا در
lib2to3هستند. اصلاحیه توسط Donghee Na.bpo-39142: تغییری در logging.config.dictConfig ایجاد شد تا از تبدیل نمونههای تاپلهای نامدار به ConvertingTuple جلوگیری شود. فرض بر این است که تاپلهای نامدار بیش از حد تخصصی هستند که مانند تاپلهای معمولی با آنها رفتار شود؛ اگر کاربری از تاپلهای نامدار به قابلیت ConvertingTuple نیاز داشته باشد، باید آن را خودش در کلاس تاپل نامدار خود پیادهسازی کند.
bpo-39158: تابع ast.literal_eval() اکنون از مجموعههای خالی پشتیبانی میکند.
bpo-39129: اصلاح مسیر ایمپورت برای
asyncio.TimeoutErrorbpo-39057: تابع
urllib.request.proxy_bypass_environment()اکنون نقاط پیشتاز را نادیده میگیرد و دیگر نویسهی خط جدید پایانی را نادیده نمیگیرد.bpo-39056: رفع مشکل مدیریت دستهی هشدار نامعتبر در گزینهی -W. اگر ماژول re نیازی نباشد، دیگر ایمپورت نمیشود.
bpo-39055: تابع
base64.b64decode()باvalidate=Trueاکنون اگر ورودی با یک\nمنفرد تمام شود، خطای binascii.Error را پرتاب میکند.bpo-21600: اصلاح
mock.patch.stopall()برای متوقف کردن وصلههای فعالی که باmock.patch.dict()ایجاد شده بودند.bpo-39019: پیادهسازی
__class_getitem__ساختگی برایtempfile.SpooledTemporaryFile.bpo-39019: پیادهسازی
__class_getitem__ساختگی برایsubprocess.Popen،subprocess.CompletedProcessbpo-38914: تنظیم نحوهی نگارش هشدار صادر شده توسط دستور
checkدر distutils هنگامی که فیلدهایauthorوmaintainerارائه شدهاند اما هیچ فیلد رایانامه (e-mail) متناظری (author_emailیاmaintainer_email) پیدا نمیشود. نحوهی نگارش اکنون این واقعیت را منعکس میکند که این فیلدها پیشنهاد میشوند، اما اجباری نیستند. وصله توسط Juergen Gmach.bpo-38878: رفع مشکل متد __subclasshook__ در
os.PathLikeبرای بازگرداندن نتیجهی صحیح پس از ارثبری. وصله توسط Bar Harel.bpo-38615: توابع
IMAP4وIMAP4_SSLاکنون یک پارامتر اختیاری timeout برای سازندههای خود دارند. همچنین متدopen()اکنون با اعمال این تغییر دارای یک پارامتر اختیاری timeout است. متدهای بازنویسیشدهیIMAP4_SSLوIMAP4_streamبرای این تغییر اعمال شدند. وصله توسط Donghee Na.bpo-35182: رفع خرابی فراخوانی بعدی
Popen.communicate()هنگامی که فرایند فرزند از قبل هر جریان استاندارد لولهکشیشدهای را بسته است، اما همچنان به اجرا ادامه میدهد. وصله توسط Andriy Maletsky.bpo-38630: در سیستمعامل یونیکس، متد
subprocess.Popen.send_signal()اکنون وضعیت فرایند را پایش میکند. پایش، خطر ارسال سیگنال به فرایند اشتباه را کاهش میدهد اگر فرایند کامل شده باشد، ویژگیsubprocess.Popen.returncodeهمچنانNoneباشد، و شناسهی فرایند (pid) به یک فرایند جدید و متفاوت تخصیص مجدد (بازیافت) شده باشد.bpo-38536: حذف فضای خالی پایانی در واحد پول قالببندیشده با
international=Trueو یک locale با نماد پس از مقدار. برای مثالlocale.currency(12.34, international=True)به جای'12,34 EUR'مقدار'12,34 EUR 'را برمیگرداند.bpo-38473: استفاده از امضا از ماک درونی برای متدهای autospec شده که با
unittest.mock.attach_mock()متصل شدهاند. وصله توسط Karthikeyan Singaravelan.bpo-38361: رفع مشکلی که در آن
identمیتواند هنگام فراخوانیsyslog.openlog()بدون آرگومانها، شامل یک جداکنندهی مسیر پیشرو باشد.bpo-38293: افزودن پشتیبانی
copy.copy()وcopy.deepcopy()به اشیایproperty().bpo-37958: افزودن متد pstats.Stats.get_profile_dict() برای بازگرداندن دادههای پروفایل به عنوان یک نمونهی StatsProfile.
bpo-28367: ثابتهای جادویی Termios برای نرخهای باود زیر: - B500000 - B576000 - B921600 - B1000000 - B1152000 - B1500000 - B2000000 - B2500000 - B3000000 - B3500000 - B4000000 وصله توسط Andrey Smirnov
مستندات¶
bpo-39381: اشاره در مستندات به اینکه
asyncio.get_event_loop()به طور ضمنی حلقهی رویداد جدیدی ایجاد میکند فقط در صورتی که از نخ اصلی فراخوانی شود.bpo-38918: افزودن یک مدخل برای
__module__در بخشهای «تابع» و «متد» جدول انواع و اعضا در مستنداتinspect.bpo-3530: در مستندات ماژول
ast، تصحیح یک مثال گمراهکنندهیNodeTransformerو افزودن راهنمایی در مورد زمان استفاده از تابعfix_missing_locations.
ساخت¶
bpo-39395: در پلتفرمهای غیر ویندوزی، توابع
setenv()وunsetenv()اکنون برای ساخت پایتون مورد نیاز هستند.bpo-39160: بهروزرسانی مستندات در
./configure --helpبرای نمایش مقادیر پیشفرض، ارجاع به مستندات در صورت نیاز و افزودن توضیح اضافی در صورت نیاز.bpo-39144: اهداف ساخت ctags و etags هر دو شامل Modules/_ctypes و پروندههای سورس کتابخانهی استاندارد پایتون میشوند.
IDLE¶
bpo-39050: کار کردن مجدد دکمهی راهنمای محاورهی تنظیمات IDLE.
bpo-34118: برچسبگذاری memoryview، range و tuple به عنوان کلاس، درست مانند list و غیره، در فهرست توابع توکار کتابخانهی راهنما.
bpo-32989: افزودن آزمونهایی برای متد newline_and_indent_event در ویرایشگر. حذف کد مرده از متد find_good_parse_start در pyparse.
رابط C API¶
bpo-39372: پاکسازی پروندههای سرآیند از رابطهایی که تعریف شدهاند اما پیادهسازی ندارند. نمادهای عمومی API که در حال حذف شدن هستند عبارتند از:
_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: افزودن یک تابع خصوصی
_PyErr_GetExcInfo()برای بازیابی اطلاعات استثنای مربوط به وضعیت نخ مشخصشدهی پایتون.
Python 3.9.0 alpha 2¶
تاریخ انتشار: ۲۰۱۹-۱۲-۱۸
امنیت¶
bpo-38945: هنگام انجام کدگذاری uu، نویسههای خط جدید (Newline) فرار داده میشوند تا از سرریز شدن آنها به بخش محتوای پروندهی کدگذاریشده جلوگیری شود. این کار از تغییر مخرب یا تصادفی دادهها در طول فرایند کدگشایی جلوگیری میکند.
bpo-37228: به دلیل دغدغههای امنیتی مهم، پارامتر reuse_address در
asyncio.loop.create_datagram_endpoint()دیگر پشتیبانی نمیشود. این امر به دلیل رفتارSO_REUSEADDRدر پروتکل UDP است. برای جزئیات بیشتر، مستنداتloop.create_datagram_endpoint()را ببینید. (مشارکتکنندگان: Kyle Stanley، Antoine Pitrou و Yury Selivanov در bpo-37228.)bpo-38804: رفع آسیبپذیری ReDoS در
http.cookiejar. وصله توسط Ben Caller.
هسته و توکارها (Core and Builtins)¶
bpo-39028: بهبود جزئی سرعت تحلیل آرگومانهای کلیدواژهای با تعداد زیادی kwargs از طریق تقویت این فرض که kwargs رشتههای درونیسازیشده هستند.
bpo-39080: اصلاح مقدار end_col_offset برای گرههای درخت نحوی انتزاعی (AST) مربوط به عبارات ستارهدار (Starred Expression)، زمانی که در میان عناصر ویژگی args از گرههای AST نوع Call قرار دارند.
bpo-39031: هنگام تحلیل یک گره «elif»، مقادیر lineno و col_offset آن گره اکنون به کلیدواخرهی «elif» اشاره میکنند و نه به شرط آن، که این امر باعث سازگاری آن با گره «if» میشود. وصله توسط Lysandros Nikolaou.
bpo-20443: در نسخهی Python 3.9.0a1، اگر نام پروندهای در خط فرمان مشخص میشد، sys.argv[0] به یک مسیر مطلق تبدیل میشد. این تغییر به حالت قبل برمیگردد، زیرا بیشتر کاربران انتظار دارند sys.argv بدون تغییر بماند.
bpo-39008: تابع
PySys_Audit()اکنون ایجاب میکند که برای آرگومانهای اندازه در رشتهی قالب، ازPy_ssize_tاستفاده شود، صرف نظر از اینکهPY_SSIZE_T_CLEANدر زمان درج (include) تعریف شده باشد یا خیر.bpo-38673: در حالت REPL، اگر سطر با کامنت یا فاصله شروع شود، به PS2 تغییر وضعیت ندهید. بر اساس کارهای انجامشده توسط Batuhan Taşkaya.
bpo-38922: فراخوانی متد
replaceروی یک شیء کد (code object)، اکنون رویداد حسابرسیcode.__new__را فعال میکند.bpo-38920: افزودن قلابهای حسابرسی برای زمانهایی که
sys.excepthook()وsys.unraisablehook()فراخوانی میشوند.bpo-38892: بهبود مستندات مربوط به جدول رویدادهای حسابرسی و توابع.
bpo-38852: تنظیم اندازهی پشتهی نخ روی ۸ مگابایت برای نسخههای دیباگ در پلتفرمهای اندروید.
bpo-38858: هر زیرمفسر (subinterpreter) پایتون اکنون «تکنمونههای اعداد صحیح کوچک» مختص به خود را دارد: اعدادی در بازهی [-5; 257]. تغییر دادن تعداد اعداد صحیح کوچک در زمان ساخت با بازنویسی ماکروهای
NSMALLNEGINTSوNSMALLPOSINTSدیگر امکانپذیر نیست: ماکروها اکنون باید به صورت دستی در پروندهی سرآیندpycore_pystate.hتغییر یابند.bpo-36854: وضعیت جمعآوری زباله بهجای سراسری بودن (
_PyRuntimeState.gc)، بهصورت اختصاصی برای هر مفسر (PyInterpreterState.gc) میشود.bpo-38835: ماکروهای
PyFPE_START_PROTECT()وPyFPE_END_PROTECT()خالی هستند: آنها در طول سال گذشته هیچ کاری انجام ندادهاند، بنابراین استفاده از آنها متوقف شود.bpo-38328: زمان ایجاد نمایشهای ثابت
listوsetتسریع شد. وصله توسط Brandt Bucher.bpo-38707: مقدار
MainThread.native_idاکنون به جای حفظ مقدار والد، بهدرستی در فرآیندهای فرزندی که با استفاده ازmultiprocessing.Processایجاد شدهاند، بازنشانی میشود.bpo-38629: متدهای
__floor__و__ceil__به شیء عدد اعشاری اضافه شدند. وصله توسط Batuhan Taşkaya.bpo-27145: عملگرهای int + int و int - int اکنون میتوانند تکنمونههای اعداد صحیح کوچک را برگردانند. وصله توسط hongweipeng.
bpo-38021: یک برچسب پلتفرم برای AIX فراهم کنید که برای شناسایی توزیع دودویی PEP425 کافی باشد. وصله توسط Michael Felt.
bpo-35409: نادیدهگرفتن استثناهای GeneratorExit هنگام پرتاب یک استثنا به درون همروال aclose یک تولیدگر ناهمگام.
bpo-33387: بایتکدهای WITH_CLEANUP_START، WITH_CLEANUP_FINISH، BEGIN_FINALLY، END_FINALLY، CALL_FINALLY و POP_FINALLY حذف شدند. با بایتکدهای RERAISE و WITH_EXCEPT_START جایگزین شدند. کامپایلر اکنون کدهای متفاوتی برای شاخههای استثنایی و غیر استثنایی برای دستورات 'with' و 'try-except' تولید میکند. برای دستورات 'try-finally' بلوک 'finally' برای هر خروج از بدنه 'try' تکرار میشود.
کتابخانه¶
bpo-39033: رفع
NameErrorدرzipimport. وصله توسط Karthikeyan Singaravelan.bpo-39022: بهروزرسانی importlib.metadata جهت شامل شدن بهبودهای importlib_metadata 1.3 از جمله سریالسازی بهتر EntryPoints و مستندات بهبودیافته برای یابندههای سفارشی.
bpo-39006: رفع مشکل asyncio هنگامی که ماژول ssl وجود ندارد: بررسی نمونه ssl.SSLSocket تنها در صورتی انجام شود که ماژول ssl در دسترس باشد.
bpo-38708: رفع یک IndexError احتمالی در پارسر ایمیل هنگام تجزیهی یک msg-id خالی.
bpo-38698: افزودن یک توکن جدید
InvalidMessageIDبه پارسر ایمیل برای نمایش سرآیندهای نامعتبر Message-ID. همچنین، در صورت وجود مقدار باقیمانده پس از تجزیهی سرآیند، نقصها افزوده شوند.bpo-38994: پیادهسازی
__class_getitem__برایos.PathLike،pathlib.Path.bpo-38979: بازگرداندن کلاس از
ContextVar.__class_getitem__برای سادهسازی زیرکلاسسازی.bpo-38978: پیادهسازی
__class_getitem__روی اشیای asyncio (Future، Task، Queue). وصله توسط Batuhan Taskaya.bpo-38916:
array.array: حذف متدهایtostring()وfromstring(). آنها نام مستعاری برایtobytes()وfrombytes()بودند که از پایتون نسخه ۳.۲ منسوخ شدهاند.bpo-38986: بازنمایی (repr) شیء C شتابدادهشدهی TaskWakeupMethWrapper را مشابه نسخهی خالص پایتون بسازید.
bpo-38982: رفع مشکل
PidfdChildWatcherدر asyncio: مدیریت خطایwaitpid(). اگرwaitpid()در جای دیگری فراخوانی شود، فراخوانیwaitpid()با خطایChildProcessErrorمواجه میشود: در این صورت از کد بازگشتی ۲۵۵ استفاده کرده و یک هشدار ثبت کنید. این کار تضمین میکند که اگر این خطا رخ دهد، توصیفگر پروندهی pidfd بسته میشود.bpo-38529: اخطار بسیار پرسرعت asyncio دربارهی حذف یک جریان بدون فراخوانی صریح
.close()را حذف کنید.bpo-27413: قابلیت ارسال گزینههای
ensure_asciiبه json.dumps در رابط خط فرمانjson.toolاضافه شد.bpo-38634: ماژول
readlineاکنون در تمام سکوها بررسی میکند که آیا پایتون در زمان رانتایم به libedit پیوند خورده است یا خیر. پیش از این، این بررسی فقط روی macOS انجام میشد.bpo-33684: رفع مشکل ناتوانی
json.toolدر خواندن یک پروندهی JSON دارای نویسههای غیر اسکی (non-ASCII) زمانی که کدگذاری locale برابر با UTF-8 نیست.bpo-38698: جلوگیری از ظاهر شدن خطای UnboundLocalError در parse_message_id.
تابع parse_message_id() به طور نامناسبی از یک توکن تعریفشده در داخل یک هندلر استثنا استفاده میکرد که هنگام تجزیهی یک مقدار نامعتبر، خطای
UnboundLocalErrorرا ایجاد میکرد. وصله توسط Claudiu Popa.bpo-38927: از
python -m pipبه جایpipبرای ارتقای وابستگیها در venv استفاده کنید.bpo-26730: رفع این که
SpooledTemporaryFile.rollover()ممکن است هنگام قرار داشتن در حالت متنی، پرونده را خراب کند. وصله توسط Serhiy Storchaka.bpo-38881: تابع random.choices() اکنون وقتی همه وزنها صفر باشند، یک ValueError ایجاد میکند.
bpo-38876: ایجاد خطای pickle.UnpicklingError هنگام بارگذاری یک آیتم از حافظهی موقت (memo) برای ورودی نامعتبر.
کد قبلی برای هر دو پیادهسازی پایتون و C یک
KeyErrorایجاد میکرد. این مشکل به دلیل اندیس مشخصشدهی یک ورودی نامعتبر ایجاد میشد که در ساختار حافظهی موقت (memo) وجود نداشت؛ جایی که پیکل شیءهایی را که دیده است ذخیره میکند. ورودی ناقص باعث بارگذاریBINGETیاLONG_BINGETاز حافظهی موقت میشد که به دلیل نامعتبر بودن اندیس تعیینشده، به یکKeyErrorمنجر میشد. وصله توسط Claudiu Popa.bpo-38688: فراخوانی تابع
shutil.copytreeبرای کپی کردن یک درخت پوشه از یک پوشه به یک زیرپوشه، به یک حلقهی بیپایان و خطای RecursionError منجر میشد. اصلاحیهای اضافه شد تا با مصرف یک پیمایشگر (iterator) و ساخت فهرست (list) عناصر برای کپیشدن، از بازگشتی شدن برای پوشههای تازه ایجاد شده جلوگیری شود. وصله توسط برونو پی. کینوشیتا (Bruno P. Kinoshita).bpo-38863: بهبود تابع
is_cgi()در ماژولhttp.server، که پردازش حالتی را ممکن میسازد که در آن پوشهی cgi زیرفرزند پوشهای غیر از ریشه باشد.bpo-37838: تابع
typing.get_type_hints()توابع تزئینشده باfunctools.wraps()را به درستی پردازش میکند.bpo-38870: ارائهی تابع
ast.unparse()به عنوان تابعی از ماژولastکه میتواند برای پردازش معکوس (unparse) یک شیءast.ASTو تولید رشتهای با کدی استفاده شود که در صورت تجزیه، شیءast.ASTمعادل را تولید میکند. وصله توسط Pablo Galindo و Batuhan Taskaya.bpo-38859: AsyncMock اکنون با اتمام یک پیمایشپذیر (iterable) از side_effects، مقدار StopAsyncIteration را برمیگرداند. از زمان PEP-479 ایجاد استثنای StopIteration از یک همروال (coroutine) غیرممکن است.
bpo-38857: رفع مشکل AsyncMock برای مقادیر بازگشتی که از نوع انتظارپذیر (awaitable) هستند. این مورد همچنین مقادیر پیمایشپذیر (iterable) side_effect را که به طور تصادفی انتظارپذیر بودند پوشش میدهد و فراخوانیپذیرهایی (callables) را که نوع انتظارپذیر برمیگردانند، پوشش (wrap) میدهد. پیش از این، این موارد انتظارپذیر به جای اینکه به همان شکل بازگردانده شوند، await میشدند.
bpo-38834: زیرکلاسهای
typing.TypedDictاکنون با استفاده از ویژگیهای__required_keys__و__optional_keys__پیگیری میکنند که کدام کلیدها اختیاری هستند، تا اعتبارسنجی در زمان رانتایم (runtime) توسط پروژههای پاییندستی ممکن شود. وصله توسط Zac Hatfield-Dodds.bpo-38821: رفع استثناهای مدیریتنشده در
argparseهنگام بینالمللیسازی پیامهای خطا برای آرگومانهایی کهnargsروی مقادیر خاص (غیر صحیح) تنظیم شده است. وصله توسط Federico Bond.bpo-38820: سازگار کردن پایتون با OpenSSL 3.0.0. تابع
ssl.SSLSocket.getpeercert()دیگر آدرسهای IPv6 را همراه با کاراکتر خط جدید در انتها برنمیگرداند.bpo-38811: رفع یک استثنای مدیریتنشده در
pathlibهنگامی کهos.link()وجود ندارد. اصلاحیه از Toke Høiland-Jørgensen.bpo-38686: افزودن پشتیبانی از مقادیر متعدد
qopدرurllib.request.AbstractDigestAuthHandler.bpo-38712: افزودن تابع
signal.pidfd_send_signal()مختص لینوکس، که امکان ارسال یک سیگنال به فرایندی را فراهم میکند که بهجای pid با یک توصیفگر پرونده مشخص شده است.bpo-38348: افزودن گزینههای خط فرمان
-iو--indent(سطح تورفتگی)، و--no-type-comments(کامنتهای نوع) به ابزار تجزیهی ast.bpo-37523: تغییر
zipfile.ZipExtFileبهطوریکه هنگام تلاش برای دسترسی به شیء پروندهی زیرین پس از بسته شدن آن، خطایValueErrorرا ایجاد کند. این رفتار جدید با نحوهی مدیریت دسترسی به پروندههای بسته در سایر بخشهای پایتون سازگار است.bpo-38045: بهبود کارایی
enum._decompose()درenum. اصلاحیه از hongweipeng.bpo-36820: شکستن چرخهی ایجادشده هنگام ذخیرهسازی یک استثنا در socket.py، codeop.py و dyld.py، زیرا آنها نه تنها استثنا بلکه اشیاء کاربر را از طریق ویژگی
__traceback__زنده نگه میدارند. اصلاحیه از Mario Corchero.bpo-36406: مدیریت بستههای فضای نام در
doctest. اصلاحیه از Karthikeyan Singaravelan.bpo-34776: اصلاح دیتاکلاسها برای پشتیبانی از ارجاعات پیشرو در حاشیهنویسیهای نوع
bpo-20928: پشتیبانی ElementTree از پردازش بازگشتی XInclude. اصلاحیه از Stefan Behnel.
bpo-29636: افزودن گزینههای فضای خالی برای قالببندی JSON با رابط خط فرمان
json.tool. گزینههای متقابل انحصاری زیر اکنون پشتیبانی میشوند:--indentبرای تنظیم سطح تورفتگی با فاصلهها؛--tabبرای تورفتگی با تبها؛--no-indentبرای حذف سرخطها؛ و--compactبرای حذف تمام فضاهای خالی. رفتار پیشفرض مانند--indent=4باقی میماند.
مستندات¶
bpo-38928: اصلاح زمانبندی افزودهشدن
upgrade_dependencies()و--upgrade-depsدر venv.bpo-38899: بهروزرسانی مستندات برای بیان این موضوع که برای فعالسازی محیطهای مجازی تحت fish باید از
sourceاستفاده کنید، نه از.همانطور که در https://fishshell.com/docs/current/cmds/source.html مستند شده است.bpo-22377: بهبود مستندات مقادیری که
datetime.datetime.strptime()برای%Zمیپذیرد. اصلاحیه از Karl Dubost.
آزمونها¶
bpo-38546: رفع test_ressources_gced_in_workers() از test_concurrent_futures: توقف صریح مدیر برای جلوگیری از نشت یک فرایند فرزند در حال اجرا در پسزمینه پس از اتمام آزمون.
bpo-38546: آزمونهای Multiprocessing و concurrent.futures اکنون پس از اتمام آزمونها، فرایند ردیاب منابع را متوقف میکنند.
bpo-38614: جایگزینی ثابتهای مهلت زمانی کدگذاریشدهی سخت در آزمونها با ثابتهای جدید
test.support:LOOPBACK_TIMEOUT،INTERNET_TIMEOUT،SHORT_TIMEOUTوLONG_TIMEOUT. تنظیم این چهار ثابت مهلت زمانی برای تمام آزمونها بهطور همزمان، به جای نیاز به تنظیم تکتک پروندههای آزمون، سادهتر میشود.bpo-38547: رفع test_pty: اگر فرایند پیشروی نشست باشد، بستن توصیفگر پروندهی اصلی سیگنال SIGHUP را ایجاد میکند: هنگام اجرای آزمونها بهسادگی SIGHUP را نادیده بگیرید.
bpo-38992: رفع یک آزمون برای
math.fsum()که به دلیل تا کردن ثابت با خطا مواجه میشد.bpo-38991:
test.support: توابعrun_python_until_end()،assert_python_ok()وassert_python_failure()دیگر فضاهای خالی را از stderr حذف نمیکنند. حذف تابعtest.support.strip_python_stderr().bpo-38965: اصلاح test_faulthandler روی GCC 10. از کلیدواژهی "volatile" در
faulthandler._stack_overflow()برای جلوگیری از بهینهسازی فراخوانی پایانی (tail call) روی هر کامپایلری استفاده کنید، بهجای اینکه به pragmaهای مختص کامپایلر تکیه کنید.bpo-38875: آزمون test_capi: آزمونهای trashcan اکنون نیازمند منبع آزمون "cpu" هستند.
bpo-38841: پرش از آزمون asyncio test_create_datagram_endpoint_existing_sock_unix در پلتفرمهایی که فاقد یک تابع bind() کارآمد برای سوکتهای دامنه یونیکس نامگذاریشده هستند.
bpo-38692: اگر تابع
os.pidfd_open()با خطایPermissionErrorمواجه شد، از آزمون test_posix.test_pidfd_open() صرفنظر کنید. این وضعیت ممکن است در یک سندباکس لینوکس رخ دهد که از فهرست مجاز سیستمی (syscall whitelist) استفاده میکند و هنوز اجازه استفاده از سیستمکالpidfd_open()را نمیدهد.bpo-38839: اصلاح برخی توابع استفادهنشده در آزمونها. وصلهای از Adam Johnson.
bpo-38669: هنگامی که target به شکل یک رشته با
unittest.mock.patch.object()ارسال میشود، خطایTypeErrorرا بالا بیاورید.bpo-37957: ماژول test.regrtest اکنون میتواند فهرستی از الگوهای آزمون برای نادیدهگرفتن (با استفاده از آرگومان -i/--ignore) یا یک پرونده حاوی فهرستی از الگوها برای نادیدهگرفتن (با استفاده از آرگومان --ignore-file) را دریافت کند. وصلهای از Pablo Galindo.
ساخت¶
bpo-37404: ماژول
asyncioاکنون هنگام فراخوانی متدهای ناسازگار با یک سوکتssl.SSLSocket، خطایTypeErrorرا بالا میآورد. وصلهای از Ido Michael.bpo-36500: یک پروژهی اختیاری "regen" به راهحل Visual Studio اضافه شد که تمام گرامرها، توکنها و آپکدها را مجدداً تولید میکند.
Windows¶
مکاواس¶
bpo-37931: اصلاح یک فروپاشی در ساختهای پویای OSX که هنگام مقداردهی اولیهی مجدد ماژول posix پس از Py_Finalize رخ میداد، در صورتی که محیط از زمان
import posixقبلی تغییر کرده بود. وصلهای از Benoît Hudson.
IDLE¶
bpo-38944: کلید Escape اکنون پنجرههای تکمیل خودکار IDLE را میبندد. وصلهای از Johnny Najera.
bpo-38943: رفع مشکلی که در آن پنجرههای تکمیل خودکار IDLE همیشه روی برخی سیستمها نمایش داده نمیشدند. وصلهای از Johnny Najera.
bpo-38862: گزینهی 'Strip Trailing Whitespace' در منوی Format، خطوط خالی اضافی را در انتهای پروندههای غیرپوسته حذف میکند.
bpo-38636: اصلاح تغییر وضعیت تب (tab toggle) و عرض تورفتگی پرونده در منوی Format در IDLE. این توابع (میانبرهای پیشفرض Alt-T و Alt-U) بهاشتباه در نسخههای ۳.۷.۵ و ۳.۸.۰ غیرفعال شده بودند.
رابط C API¶
bpo-38896: حذف تابع
PyUnicode_ClearFreeList(): فهرست آزاد یونیکد در پایتون ۳.۳ حذف شده است.bpo-37340: حذف توابع
PyMethod_ClearFreeList()وPyCFunction_ClearFreeList(): فهرستهای آزاد اشیای متد کراندار حذف شدهاند.bpo-38835: استثنا کردن ماکروهای
PyFPE_START_PROTECT()وPyFPE_END_PROTECT()از پروندهیpyfpe.hدرPy_LIMITED_API(API پایدار).
Python 3.9.0 alpha 1¶
تاریخ انتشار: ۲۰۱۹-۱۱-۱۹
امنیت¶
bpo-38722: ماژول
runpyاکنون برای گشودن پروندههای کد ازio.open_code()استفاده میکند. وصله توسط Jason Killen.bpo-38622: افزودن رویدادهای حسابرسی اضافی برای ماژول
ctypes.bpo-38418: اصلاح رویداد حسابرسی برای
os.system()بهطوریکهos.systemنامیده شود.bpo-38243: خنثیسازی عنوان سرور
xmlrpc.server.DocXMLRPCServerهنگام رندر کردن صفحهی سند به شکل HTML. (مشارکتکننده: Donghee Na در bpo-38243.)bpo-38174: بهروزرسانی نسخهی کتابخانهی vendorized شدهی expat به نسخهی ۲.۲.۸ که CVE 2019-15903 را حل میکند.
bpo-37764: رفع افتادن email._header_value_parser.get_unstructured در حلقهی بینهایت برای یک حالت خاص که در آن سرآیند ایمیل فاقد فضای خالی پایانی است و حالتی که حاوی یک کلمهی رمزگذاریشدهی نامعتبر است. وصله توسط Ashwin Ramaswami.
bpo-37461: رفع حلقهی بینهایت هنگام تجزیهی سرآیندهای ایمیلِ بهدقت دستکاریشده. وصله توسط Abhilash Raj.
bpo-37363: افزودن رویدادهای حسابرسی برای طیف دستورات اجرای پشتیبانیشده (به خط فرمان و محیط مراجعه کنید).
bpo-37463: تابع ssl.match_hostname() دیگر آدرسهای IPv4 دارای متن اضافی پس از آدرس را نمیپذیرد و فقط نمادگذاری چهارنقطهای بدون فضاهای خالی پایانی را قبول میکند. برخی پیادهسازیهای inet_aton() فضای خالی و تمام دادههای پس از فضای خالی را نادیده میگیرند، مثلاً '127.0.0.1 whatever'.
bpo-37363: افزودن رویدادهای حسابرسی برای
ensurepip،ftplib،glob،imaplib،nntplib،pdb،poplib،shutil،smtplib،sqlite3،subprocess،telnetlib،tempfileوwebbrowserو همچنینos.listdir()،os.scandir()وbreakpoint().bpo-37364: تابع
io.open_code()اکنون هنگام خواندن پروندههای.pthاستفاده میشود.bpo-34631: بهروزرسانی OpenSSL به نسخهی ۱.۱.۱c در برنامهی نصب ویندوز
bpo-34155: رفع تجزیهی آدرسهای ایمیل نامعتبر دارای بیش از یک
@(مثلاً a@b@c.com.) به طوری که بخش قبل از دومین@را به عنوان آدرس ایمیل معتبر برنگرداند. وصله توسط maxking و jpic.
هسته و توکارها (Core and Builtins)¶
bpo-38631: جایگزینی فراخوانی
Py_FatalError()با یک استثنای معمولیRuntimeErrorدر متدfloat.__getformat__().bpo-38639: بهینهسازی
math.floor()،math.ceil()وmath.trunc()برای اعداد اعشاری.bpo-38640: رفع باگی در کامپایلر که باعث میشد در حضور دستورات break و continue درون حلقههای while همیشه نادرست، خطا ایجاد شود. وصله توسط Pablo Galindo.
bpo-38613: بهینهسازی برخی عملیات مجموعه (مانند
|،^و-) درdict_keys. عبارتd.keys() | otherپیشتر کندتر ازset(d) | otherبود اما اکنون کارایی تقریباً یکسانی دارند.bpo-28029: عبارت
"".replace("", s, n)اکنون برای تمام مقادیر غیرصفرnبه جای یک رشتهی خالی،sرا برمیگرداند. تغییرات مشابهی برای اشیاءbytesوbytearrayایجاد شده است.bpo-38535: رفع شمارهی سطرها و آفستهای ستونی برای گرههای AST مربوط به فراخوانیهای بدون آرگومان در دکوراتورها.
bpo-38525: رفع خطای قطعهبندی (segmentation fault) هنگام استفاده از پیمایشگرهای معکوس اشیاء خالی
dict. اصلاحشده توسط Donghee Na و Inada Naoki.bpo-38465: اشیاء
bytearray،arrayوmmapاکنون اجازه میدهند بیش از2**31بافر در هر بار اکسپورت شوند.bpo-38469: رفع باگی که در آن محدودهی عبارات نامگذاریشده در حضور کلیدواژهی global بهدرستی حلوفصل نمیشد. اصلاحشده توسط Pablo Galindo.
bpo-38437: فعالسازی ماکروی
GC_DEBUGبرای ساختهای دیباگ مفسر (هنگامی کهPy_DEBUGتنظیم شده است). اصلاحشده توسط Pablo Galindo.bpo-38379: هنگامی که جمعآور زباله مجموعهای را انجام میدهد که در آن برخی از اشیاء احیا میشوند (پس از اجرای نهاییسازها، از خارج از چرخههای ایزوله قابل دسترسی هستند)، جمعآوری تمام اشیایی را که هنوز غیرقابل دسترس هستند، مسدود نکنید. اصلاحشده توسط Pablo Galindo و Tim Peters.
bpo-38379: هنگامی که زبالهروبی چرخهای (gc) نهاییسازهایی را اجرا میکند که اشیاء غیرقابل دسترس را احیا میکنند، اجرای فعلی gc بدون جمعآوری هیچ زبالهی چرخهای به پایان میرسد. با این حال، آمارهای گزارششده توسط
collect()وget_stats()ادعا میکردند که تمام زبالههای چرخهای یافتشده جمعآوری شدهاند و اشیاء احیاشده نیز جمعآوری شدهاند. آمارها تغییر یافت تا گزارش دهند که هیچکدام جمعآوری نشدهاند.bpo-38392: در حالت دیباگ، تابع
PyObject_GC_Track()اکنون متدtp_traverse()از نوع شیء را فراخوانی میکند تا اطمینان حاصل شود که شیء معتبر است: آزمون اینکه اشیاء بازدیدشده توسطtp_traverse()معتبر هستند.bpo-38210: حذف اشتراک غیرضروری و بهروزرسانی عملیات مجموعه در dictview با مجموعهی خالی. (مشارکت توسط Donghee Na در bpo-38210.)
bpo-38402: بررسی خطای ناشی از
cryptیاcrypt_rزیرین سیستم.bpo-37474: در FreeBSD، پایتون دیگر
fedisableexcept()را در زمان راهاندازی برای کنترل حالت کنترل ممیز شناور فراخوانی نمیکند. این فراخوانی از FreeBSD 6 بیفایده شده بود: به حالت پیشفرض تبدیل شد.bpo-38006: رفع باگ ناشی از تعامل ارجاعات ضعیف (weakrefs) و جمعآور زبالهی چرخهای. ما باید هرگونه ارجاع ضعیف در زباله را پاک کنیم تا از اجرای کالبکهای آنها و ایجاد فروپاشی جلوگیری شود.
bpo-38317: رفع اولویت گزینههای هشدار:
PyConfig.warnoptionsبالاترین اولویت را دارد، همانطور که در PEP 587 بیان شده است.bpo-38310: پیشبینی جفتهای آپکد
BUILD_MAP_UNPACK_WITH_CALL->CALL_FUNCTION_EXدر حلقهی اصلی مفسر. اصلاحشده توسط Brandt Bucher.bpo-36871: بهبود مدیریت خطا برای متدهای assert_has_calls و assert_has_awaits در ماکها. رفع باگی که در آن هرگونه خطای مواجهشده هنگام اتصال فراخوانیهای مورد انتظار به مشخصات ماک بهصورت صامت نادیده گرفته میشد و منجر به خروجی خطای گمراهکننده میشد.
bpo-11410: کنترل بهتر روی قابلیت مشاهدهی نمادها از طریق استفاده از ویژگیهای قابلیت مشاهده موجود در gcc >= 4.0، که به شکلی یکنواخت در POSIX و Windows فراهم شده است، ارائه میشود. پروندههای ساخت POSIX بهروزرسانی شدهاند تا با -fvisibility=hidden کامپایل شوند و نمادهای اکسپورتشده به حداقل برسند.
bpo-38219: بهینهسازی سازندهی
dictو متدupdate()برای حالتی که آرگومان یک دیکشنری است.bpo-38236: پایتون اکنون در صورت عدم موفقیت در ایمپورت کُدکهای پایتون مربوط به سامانهی فایلبندی و کدگذاریهای stdio، پیکربندی مسیر را برونریزی میکند.
bpo-38013: امکان فراخوانی
async_generator_athrow().throw(...)حتی برای کمکیِ تولیدگر ناهمگام آغازنشده. این کار اخطار آزاردهندهی انتهای فراخوانیasyncio.run()را برطرف میکند.bpo-38124: رفع یک خطای اختلافِ واحد (off-by-one) در PyState_AddModule که میتواند باعث دسترسی به حافظه خارج از کران شود.
bpo-38116: ماژول select اکنون با PEP-384 سازگار است و دیگر وضعیت ایستا ندارد.
bpo-38113: ماژول ast به PEP (پیشنهاد بهبود پایتون)-384 بهروزرسانی شد و تمامی مقادیر ایستا حذف شدند
bpo-38076: ماژول struct اکنون با PEP (پیشنهاد بهبود پایتون)-384 سازگار است
bpo-38075: ماژول random اکنون با PEP (پیشنهاد بهبود پایتون)-384 سازگار است
bpo-38074: ماژول zlib با PEP (پیشنهاد بهبود پایتون)-384 سازگار شد
bpo-38073: سازگار کردن ماژول توسعهای pwd با PEP (پیشنهاد بهبود پایتون)-384
bpo-38072: ماژول grp با PEP (پیشنهاد بهبود پایتون)-384 سازگار شد
bpo-38069: سازگار کردن _posixsubprocess با PEP (پیشنهاد بهبود پایتون)-384
bpo-38071: سازگار کردن ماژول توسعهای termios با PEP (پیشنهاد بهبود پایتون)-384
bpo-38005: مقایسه و ایجاد InterpreterID و ChannelID برطرف شد.
bpo-36946: رفع سرریز عدد صحیح علامتدار احتمالی هنگام کار با اسلایسها. وصله توسط hongweipeng.
bpo-37994: رفع سکوت در برابر خطاهای دلخواه در صورتی که جستجوی ویژگی در چندین مکان با شکست مواجه شود. فقط AttributeError باید مسکوت بماند.
bpo-8425: بهینهسازی متد difference_update مجموعه برای حالتی که مجموعه دیگر بسیار بزرگتر از مجموعه پایه است. (پیشنهاد شده توسط Evgeny Kapun با کدی مشارکتدادهشده توسط Michele Orrù).
bpo-37966: پیادهسازی
is_normalized()با پیادهسازی الگوریتم کامل بررسی سریع نرمالسازی از استاندارد یونیکد، روی رشتههایی که نرمالسازی نشدهاند به شدت سرعت یافته است.bpo-37947: تنظیم درست سطح بازگشتی در تولید جدول نمادها برای عبارتهای نامگذاریشده. وصله توسط Pablo Galindo.
bpo-37812: ماکروی
CHECK_SMALL_INTکه درونObject/longobject.cاستفاده میشد، با یکreturnصریح در هر محل فراخوانی جایگزین شده است.bpo-37751: اصلاح
codecs.lookup()برای نرمالسازی نام کدگذاری دقیقاً مشابهencodings.normalize_encoding()، با این تفاوت کهcodecs.lookup()نام را به حروف کوچک نیز تبدیل میکند.bpo-37830: اصلاح کامپایل
breakوcontinueدر بلوکfinallyهنگامی که بلوکtryمتناظر شاملreturnبا یک مقدار غیرثابت باشد.bpo-20490: بهبود پیام خطای ایمپورت برای ماژول تا حدی مقداردهینشده در ایمپورتهای دایرهای
from- توسط Anthony Sottile.bpo-37840: اصلاح مدیریت اندیسهای منفی در
sq_itemازbytearray. وصله توسط Sergey Fedoseev.bpo-37802: بهبود جزئی کارایی
PyLong_FromUnsignedLong()،PyLong_FromUnsignedLongLong()وPyLong_FromSize_t(). وصله توسط Sergey Fedoseev.bpo-37409: اطمینان حاصل کنید که ایمپورتهای نسبی صریح از نشستهای تعاملی و اسکریپتها (که بستهی والدی ندارند) همیشه به جای در نظر گرفتن ماژول فعلی به عنوان بسته، خطای ImportError را بالا میآورند. اصلاح توسط Ben Lewis.
bpo-32912: بازنشانی bpo-32912: انتشار
SyntaxWarningبه جایDeprecationWarningبرای دنبالههای گریز نامعتبر در مقادیر لفظی رشتهای و بایت.bpo-37757: PEP 572: همانطور که در این PEP شرح داده شده است، عبارتهای انتساب اکنون هنگامی که تعامل آنها با محدودهی درک مطلب (comprehension scoping) منجر به محدودهی هدف مبهمی شود، خطای
SyntaxErrorایجاد میکنند.زیرکلاس
TargetScopeErrorکه در اصل توسط این PEP پیشنهاد شده بود، به نفع ایجاد خطاهای نحوی معمولی برای موارد غیرمجاز حذف شده است.bpo-36279: رفع استفادهی احتمالی از حافظهی مقداردهینشده در
os.wait3().bpo-36311: کدگشایی اشیاء بایت بزرگتر از 2GiB سریعتر انجام میشود و زمانی که نویسههای چندبایتی مرز تکه (chunk) را در بر میگیرند، دیگر با شکست مواجهچ نمیشود.
bpo-34880: دستور
assertاکنون اگر استثنایAssertionErrorسایهدار (shadowed) شده باشد، به درستی کار میکند. اصلاح توسط Zackery Spytz.bpo-37340: نهانگاه شیء (
free_list) برای اشیاء متد کراندار حذف شد. اشیاء متد کراندار موقت به لطف آپکدLOAD_METHODو رابط برنامهنویسی کاربردی C یعنی_PyObject_VectorcallMethodکمتر از قبل استفاده میشوند.bpo-37648: ناسازگاری جزئی در
list.__contains__()،tuple.__contains__()و چند جای دیگر برطرف شد. آیتم مجموعه اکنون همیشه در سمت چپ و مقدار جستجوشده در سمت راست==قرار دارد.bpo-37444: بهروزرسانی استثنای متضاد بین
builtins.__import__()وimportlib.__import__().bpo-37619: هنگام افزودن یک توصیفگر پوششی از یک کلاس به کلاسی دیگر (برای مثال، تنظیم
__add__ = str.__add__روی یک زیرکلاسint)، هنگامی که عملگر فراخوانی میشود، یک استثنا به درستی ایجاد میشود.bpo-37593: جابهجایی موقعیتهای پارامترهای posonlyargs و args در سازندهی گرههای
ast.parameters.bpo-37543: بهینهسازی pymalloc برای ساخت غیر PGO.
bpo-37537: محاسبهی بلوکهای pymalloc تخصیصیافته در داخل ()_Py_GetAllocatedBlocks. این کار باعث کند شدن ()_Py_GetAllocatedBlocks میشود اما سرعت کمی به ()_PyObject_Malloc و ()_PyObject_Free میبخشد.
bpo-37467: رفع
sys.excepthook()وPyErr_Display()اگر نام پرونده یک رشتهی بایتی باشد. برای مثال، برای یک استثنای SyntaxError که در آن ویژگی نام پرونده یک رشتهی بایتی است.bpo-37433: رفع مشکل چاپ فضای خالی بیش از حد توسط نشانگر
SyntaxErrorبرای رشتههای چندخطی - توسط Anthony Sottile.bpo-37417: متد
bytearray.extend()اکنون خطاهایی را که در طول پیمایش رخ میدهند به درستی مدیریت میکند. اصلاح توسط Brandt Bucher.bpo-37414: تابع مستندنشدهی
sys.callstats()حذف شد. از پایتون نسخه ۳.۷، این تابع منسوخ شده بود و هموارهNoneرا برمیگرداند. این تابع نیازمند گزینهی ساخت ویژهیCALL_PROFILEبود که پیشتر در پایتون ۳.۷ حذف شده بود.bpo-37392: توابع
sys.getcheckinterval()وsys.setcheckinterval()حذف شدند. آنها از پایتون نسخه ۳.۲ منسوخ شده بودند. به جای آنها ازsys.getswitchinterval()وsys.setswitchinterval()استفاده کنید. همچنین فیلدcheck_intervalاز ساختارPyInterpreterStateحذف شد.bpo-37388: در حالت توسعه (development mode) و در ساخت اشکالزدایی (debug build)، آرگومانهای encoding و errors اکنون در عملیات کدگذاری و کدگشایی رشته بررسی میشوند. نمونهها:
open()،str.encode()وbytes.decode().به طور پیشفرض، برای بهترین عملکرد، آرگومان errors تنها در نخستین خطای کدگذاری/کدگشایی بررسی میشود و آرگومان encoding گاهی برای رشتههای خالی نادیده گرفته میشود.
bpo-37348: کدگشایی بهینهسازیشدهی رشتههای کوتاه اسکی با کدکهای UTF-8 و ascii. عبارت
b"foo".decode()حدود ۱۵ درصد سریعتر است. توسط Inada Naoki.bpo-24214: بهبود پشتیبانی از هندلر خطای surrogatepass در کدگشاهای افزایشی UTF-8 و UTF-16.
bpo-37330: توابع
open()،io.open()،codecs.open()و کلاسfileinput.FileInputدیگر مقدار'U'(«سطر جدید همگانی») را در حالت پرونده نمیپذیرند. این پرچم از پایتون ۳.۳ منسوخ شده بود.bpo-35224: معکوس کردن ترتیب ارزیابی key: value در درک مجموعهها (dict comprehensions) همانطور که در PEP 572 پیشنهاد شده است. یعنی در
{k: v for ...}، مقدارkپیش ازvارزیابی خواهد شد.bpo-37316: رفع فراخوانی
PySys_Audit()درmmap.mmap.bpo-37300: حذف یک Py_XINCREF غیرضروری در classobject.c.
bpo-37269: رفع یک باگ در بهینهساز سوراخسوزنی (peephole optimizer) که شرایط ثابت را با عملگرهای دودویی به درستی مدیریت نمیکرد. وصله توسط Pablo Galindo.
bpo-20443: پایتون اکنون مسیر مطلق نام پروندهی اسکریپت مشخصشده در خط فرمان را دریافت میکند (برای نمونه: "python3 script.py"): ویژگی __file__ ماژول __main__ و sys.path[0] به جای مسیر نسبی، به مسیر مطلق تبدیل میشوند.
bpo-37257: تخصیصدهندهی اشیای کوچک پایتون (
obmalloc.c) اکنون اجازه میدهد (حداکثر) یک آرنای خالی برای استفادهی مجدد فوری در دسترس باقی بماند، بدون اینکه به سیستمعامل بازگردانده شود. این کار از لرزش (thrashing) در حلقههای سادهای که در آنها یک آرنا میتواند در هر پیمایش ایجاد و نابود شود، جلوگیری میکند.bpo-37231: توزیع جایگاههای نوع (type slots) به متدهای ویژه (برای مثال فراخوانی
__mul__هنگام انجامx * y) سریعتر شده است.bpo-36974: پیادهسازی توابع vectorcall مجزا برای هر قرارداد فراخوانی توابع و متدهای توکار. این کار عملکرد فراخوانیها را بهبود میبخشد.
bpo-37213: مدیریت درست آفستهای منفی سطر در بهینهساز سوراخسوزنی. وصله توسط Pablo Galindo.
bpo-37219: حذف بهینهسازی نادرست برای تفاضلهای مجموعهی خالی.
bpo-15913: پیادهسازی تابع
PyBuffer_SizeFromFormat()(که پیشتر مستند شده بود اما پیادهسازی نشده بود): فراخوانیstruct.calcsize(). وصله توسط Joannah Nanjekye.bpo-36922: توابع جایگاهی (Slot functions) هر شیء فراخوانیپذیری را که دارای
Py_TPFLAGS_METHOD_DESCRIPTORباشد، به جای تنها نمونههای تابع (function)، بهینهسازی میکنند.bpo-36974: جایگاه
tp_vectorcall_offsetبه طور غیرشرطی به ارث برده میشود تا ازsuper().__call__()هنگامی که کلاس پایه از vectorcall استفاده میکند، پشتیبانی شود.bpo-37160: تابع
threading.get_native_id()اکنون از NetBSD نیز پشتیبانی میکند.bpo-37077: افزودن پشتیبانی از
threading.get_native_id()برای AIX. وصله توسط M. Feltbpo-34556: افزودن
--upgrade-depsبه ماژول venv. اصلاحیه از Cooper Ry Leesbpo-20523: کتابخانهی
pdb.Pdbاز ~/.pdbrc در ویندوز ۷ پشتیبانی میکند. اصلاحیه از Tim Hopper و Dan Lidral-Porter.bpo-35551: بهروزرسانی کدگذاریها: - حذف کدگذاری "tis260" که نام مستعاری برای کُدک ناموجود "tactis" بود. - افزودن "mac_centeuro" به عنوان نام مستعاری برای کدگذاری mac_latin2.
bpo-19072: آرایندهی
classmethodاکنون میتواند توصیفگرهای دیگر مانند شیءهای property را دربربگیرد. اقتباسشده از یک وصلهی نوشتهشده توسط Graham Dumpleton.bpo-27575: بهبود سرعت اشتراک نمای دیکشنری (dictview) با استفادهی مستقیم از منطق اشتراک مجموعه. اصلاحیه از David Su.
bpo-30773: ممنوع کردن اجرای موازی ()aclose / ()asend / ()athrow. رفع اشکال ag_running برای بازتاب دادن وضعیت اجرای واقعی AG.
کتابخانه¶
bpo-36589: تابع
curses.update_lines_cols()اکنون در صورت موفقیت به جای1مقدارNoneبرمیگرداند.bpo-38807: بهروزرسانی پیامهای
TypeErrorبرایos.path.join()جهت شامل شدن شیءهایos.PathLikeبه عنوان انواع ورودیهای پذیرفتهشده.bpo-38724: افزودن یک repr برای شیءهای
subprocess.Popen. اصلاحیه از Andrey Doroschenko.bpo-38786: ماژول pydoc اکنون URLهای HTTPS را تشخیص میدهد و تجزیه میکند. اصلاحیه از python273.
bpo-38785: جلوگیری از ازکارافتادگی (crash) در asyncio اگر متد
__init__والد از سازندهی شیء مشتقشده ازasyncio.Futureفراخوانی نشود.bpo-38723: ماژول
pdbاکنون ازio.open_code()برای فعالسازی رویداد حسابرسی استفاده میکند.bpo-27805: امکان باز کردن پایپها و دیگر پروندههای غیرقابل جستجو (non-seekable) در حالت append با
open().bpo-38438: سادهسازی پیام استفادهی
argparseبرایnargs="*".bpo-38761: کلاس WeakSet اکنون به عنوان collections.abc.MutableSet ثبت میشود.
bpo-38716: گزارشگیری: تغییر نامدهنده (namer) و چرخاننده (rotator) در RotatingHandler به ویژگیهای سطح کلاس. این کار مانع از آن میشود که متد __init__ آنها را در مواردی که زیرکلاس آنها را با متدهای همنام (eponymous) تعریف کرده است، برابر با None قرار دهد.
bpo-38713: افزودن ثابت
os.P_PIDFDکه ممکن است بهos.waitid()ارسال شود تا روی توصیفگر پروندهی فرایند لینوکس انتظار بکشد.bpo-38692: افزودن
asyncio.PidfdChildWatcher، یک پیادهسازی پایشگر فرزند مختص لینوکس که توصیفگرهای پروندهی فرایند را پایش میکند.bpo-38692: قرار دادن سیستمیکال
pidfd_openلینوکس در اختیار کاربران به عنوانos.pidfd_open().bpo-38602: افزودن ثابتهای
F_OFD_GETLK،F_OFD_SETLKوF_OFD_SETLKWبه ماژولfcntl. اصلاحیه از Donghee Na.bpo-38334: اصلاح مکانیابی رو به عقب روی یک
zipfile.ZipExtFileرمزگذاریشده.bpo-38312: افزودن توابع
curses.get_escdelay()،curses.set_escdelay()،curses.get_tabsize()وcurses.set_tabsize()- توسط Anthony Sottile.bpo-38586: اکنون
fileConfig()صفت .name را برای هندلرهای بارگذاریشده بهدرستی تنظیم میکند.bpo-38565: افزودن متد جدید cache_parameters() برای functools.lru_cache() به منظور پشتیبانی بهتر از پیکلسازی (pickling).
bpo-34679: متد asynci.ProactorEventLoop.close() اکنون فقط signal.set_wakeup_fd() را در نخ اصلی فراخوانی میکند.
bpo-31202: حالت نتیجهی
pathlib.WindowsPath.glob()اکنون با حالت الگو برای بخشهای لفظی مطابقت دارد.bpo-36321: حذف ویژگی دارای املای نادرست. در وقایعنگاری نسخهی ۳.۸ ذکر شده بود که این مورد در نسخهی ۳.۹ حذف خواهد شد.
bpo-38521: اصلاح مقایسهی برابری خطاآمیز در statistics.NormalDist().
bpo-38493: افزودن
CLD_KILLEDوCLD_STOPPEDبرایsi_code. وصلهای توسط Donghee Na.bpo-38478: اصلاح باگی در
inspect.signature.bind()که باعث میشد هنگام مدیریت آرگومان کلیدواژهای با نامی مشابه پارامتر صرفاً جایگاهی (positional-only)، با خطا مواجه شود. وصلهای توسط Pablo Galindo.bpo-33604: اصلاح
hmac.newوhmac.HMACبه طوری که اگر پارامتر digestmod که اکنون در نسخهی ۳.۸ الزامی است، حذف شود، به جای ValueError استثنای TypeError را ایجاد کنند. همچنین مستندات ماژول hmac و رشتههای مستند (docstrings) شفافسازی شدند.bpo-38378: پارامترهای out و in در تابع
os.sendfile()به out_fd و in_fd تغییر نام دادند.bpo-38417: افزودن پشتیبانی برای تنظیم umask در فرایند فرزند به ماژول subprocess در سیستمهای POSIX.
bpo-38449: بازگرداندن (Revert) درخواست پول (PR) شمارهی ۱۵۵۲۲، که به دلیل مدیریت نامناسب نامهای پرونده به عنوان URL، یک رگرسیون در
mimetypes.guess_type()ایجاد کرده بود.bpo-38431: اصلاح متد
__repr__برایdataclasses.InitVarبه منظور پشتیبانی از اشیاء typing، وصلهای توسط Samuel Colvin.bpo-38109: افزودن مقادیر گمشدهی
stat.S_IFDOOR،stat.S_IFPORT،stat.S_IFWHT،stat.S_ISDOOR()،stat.S_ISPORT()وstat.S_ISWHT()به پیادهسازی پایتون ازstat.bpo-38422: شفافسازی رشتههای مستند (docstrings) مربوط به پسوندهای pathlib
bpo-38405: زیرکلاسهای تو در توی
typing.NamedTupleاکنون قابلیت پیکلسازی (pickleable) دارند.bpo-38332: جلوگیری از پرتاب استثنای
KeyErrorتوسط_encoded_words.decode()هنگامی که یک کلمهی کدگذاریشده با کدگذاری نوع محتوای نامعتبر به آن داده میشود، تا از انتشار آن تاemail.message.get()جلوگیری شود.bpo-38371: منسوخ کردن متد
split()در_tkinter.TkappTypeبه نفع متدsplitlist()که رفتار سازگارتر و قابلپیشبینیتری دارد.bpo-38341: اضافهکردن
smtplib.SMTPNotSupportedErrorبه نامهای صادرشدهیsmtplib.bpo-38319: تابع sendfile() استفادهشده در ماژولهای socket و shutil خطای OverflowError را برای پروندههای >= 2GiB روی معماریهای ۳۲ بیتی ایجاد میکرد. (وصله توسط Giampaolo Rodola)
bpo-38242: بازگردانی نسخهی پیشین API جریانهای asyncio
bpo-13153: اکنون از کدگذاری بومی سیستمعامل برای تبدیل بین رشتههای پایتون و شیءهای Tcl استفاده میشود. این امر امکان نمایش، کپی و جایگذاری ایموجیها و سایر نویسههای غیر BMP را به کلیپبورد فراهم میکند. تبدیل رشتهها از Tcl به پایتون و بالعکس اکنون هرگز با خطا مواجه نمیشود (بهجز MemoryError).
bpo-38019: مدیریت صحیح مکث/ادامه خواندن در پایپ بستهشدهی unix در asyncio.
bpo-38163: ماکهای فرزند اکنون نوع خود را به عنوان همگام یا ناهمگام تشخیص میدهند؛ ماکهای فرزند ناهمگام از نوع AsyncMock و ماکهای فرزند همگام از نوع MagicMock یا Mock خواهند بود (بسته به نوع والد آنها).
bpo-38161: حذف _AwaitEvent از AsyncMock.
bpo-38216: به کدهای نادری که میخواهند درخواستهای نامعتبر http را از کتابخانهی
http.clientارسال کنند، اجازه انجام این کار را میدهد. اصلاحات مربوط به bpo-30458 منجر به بروز مشکل در برخی پروژهها شده بود که برای آزمون رفتار خود در برابر درخواستهای نامعتبر به این قابلیت اتکا میکردند.bpo-28286: منسوخ کردن باز کردن ضمنی
GzipFileبرای نوشتن. همیشه آرگومان mode را برای نوشتن مشخص کنید.bpo-38108: هر متد جادویی همگامی روی یک AsyncMock اکنون یک MagicMock برمیگرداند. هر متد جادویی ناهمگامی روی یک MagicMock اکنون یک AsyncMock برمیگرداند.
bpo-38265: بهروزرسانی پارامتر length در
os.pread()برای پذیرشPy_ssize_tبه جای int.bpo-38112: ماژول
compileallدارای محدودیت بازگشتی پیشفرض بالاتر و آرگومانهای خط فرمان جدیدی برای دستکاری مسیر، مدیریت پیوندهای نمادین و سطوح بهینهسازی متعدد است.bpo-38248: کتابخانهی asyncio: رفع لغو ناخواستهی فوری و ناهمگون Task
bpo-38237: آرگومانهای تابع توکار pow توصیفیتر شدهاند. اکنون میتوان آنها را به عنوان کلیدواژه نیز ارسال کرد.
bpo-34002: بهبود کارایی در بخشهایی از بستهی email با تغییر حلقهی while-pop به حلقهی for و استفاده از isdisjoint به جای اشتراک مجموعهها.
bpo-38191: سازندههای انواع
NamedTupleوTypedDictاکنون نامهای آرگومان کلیدواژهای دلخواه، از جمله "cls"، "self"، "typename"، "_typename"، "fields" و "_fields" را میپذیرند.bpo-38155: اضافهکردن
__all__بهdatetime. وصله توسط Tahia Khan.bpo-38185: رفع مقایسهی رشتهی بدون حساسیت به بزرگی و کوچکی حروف (case-insensitive) در نمایهگذاری
sqlite3.Row.bpo-38136: تغییر شمارندهی فراخوانی و شمارندهی await در AsyncMock به دو شمارندهی مجزا. اکنون شمارندهی await تنها زمانی شمارش میکند که یک همروال (coroutine) await شده باشد، نه زمانی که فراخوانی شده است و بالعکس. مستندات مربوط به این موضوع بهروزرسانی شد.
bpo-37828: رفع نام پیشفرض ماک در استثناهای
unittest.mock.Mock.assert_called(). وصله توسط Abraham Toriz Cruz.bpo-38175: رفع یک نشت حافظه در مقایسهی اشیای
sqlite3.Row.bpo-33936: ماژول _hashlib دیگر تابع منسوخشدهی مقداردهی اولیهی OpenSSL را با نسخهی 1.1.0+ فراخوانی نمیکند.
bpo-34706: حفظ زیرکلاسی (subclassing) در inspect.Signature.from_callable.
bpo-38153: نامهای الگوریتمهای هش از OpenSSL اکنون نرمالسازی شدهاند تا از قراردادهای نامگذاری پایتون پیروی کنند. برای مثال، OpenSSL به جای sha3_512 از sha3-512 یا به جای blake2b از blake2b512 استفاده میکند.
bpo-38115: رفع باگی در dis.findlinestarts() که در آن آفستهای بایتکد نامعتبر برمیگرداند. مستندسازی این موضوع که co_lnotab یک شیء کد میتواند حاوی آفستهای بایتکد نامعتبر باشد.
bpo-38148: افزودن جایگاهها (slots) به کلاسهای انتقال
asyncioکه میتواند میزان مصرف حافظه را کاهش دهد.bpo-38142: ماژول توسعهای پوششی OpenSSL یعنی _hashlib اکنون با PEP-384 سازگار است.
bpo-9216: سازندههای hashlib اکنون از پرچم usedforsecurity پشتیبانی میکنند تا نشان دهند که یک الگوریتم هش در یک زمینهی امنیتی استفاده نمیشود.
bpo-36991: رفع یک استثنای بالقوه و نادرست AttributeError که در برخی موقعیتهای خطای ورودی پشتیبانینشده از ZipFile.extract() فرار میکرد.
bpo-38134: حذف نسخهی منسوخشدهی PBKDF2_HMAC_fast. تمام نسخههای پشتیبانیشدهی OpenSSL حاوی یک پیادهسازی سریع هستند.
bpo-38132: پوشش hashlib در OpenSSL از یک پیادهسازی سادهتر استفاده میکند. چندین ماکرو و نهانگاه (cache) بیهدف حذف شدهاند. نام هش اکنون از EVP متعلق به OpenSSL میآید. نام الگوریتم ثابت میماند، با این تفاوت که اکنون همیشه با حروف کوچک است.
bpo-38008: رفع بررسی کلاس والد در پروتکلها برای شناسایی صحیح ماژولی که یک پروتکل توکار را فراهم میکند، به جای فرض بر اینکه همه آنها از ماژول
collections.abcمیآیندbpo-34037: برای
asyncio، یک همروال (coroutine) جدید به نامloop.shutdown_default_executor()اضافه کنید. همروال جدید یک API برای زمانبندی خاموش کردن اجراکننده فراهم میکند که منتظر میماند تا بسته شدن استخر نخ (threadpool) به پایان برسد. همچنین،asyncio.run()بهروزرسانی شده است تا از همروال جدید استفاده کند. وصله (Patch) توسط کایل استنلی (Kyle Stanley).bpo-37405: رفع باگ رگرسیون برای socket.getsockname() در سوکتهای خانوادهی آدرس غیر CAN_ISOTP AF_CAN با بازگرداندن یک تاپل ۱ تایی به جای رشته.
bpo-38121: بهروزرسانی نام پارامترهای توابع در importlib.metadata مطابق با تغییرات نسخهی 0.22 کتابخانهی importlib_metadata.
bpo-38110: پیادهسازی os.closewalk() اکنون از API libc fdwalk() در پلتفرمهایی که این API روی آنها موجود است استفاده میکند.
bpo-38093: رفع مشکل AsyncMock بهطوریکه هنگام استفاده با AsyncContextManagers یا AsyncIterators دچار فروپاشی (crash) نمیشود.
bpo-37488: افزودن هشدار به
datetime.utctimetuple()،datetime.utcnow()وdatetime.utcfromtimestamp().bpo-35640: امکان ارسال یک شیء شبهمسیر به عنوان آرگومان
directoryبه کلاسhttp.server.SimpleHTTPRequestHandler. وصله (Patch) توسط Géry Ogam.bpo-38086: بهروزرسانی importlib.metadata با تغییرات importlib_metadata 0.21.
bpo-37251: بررسی
__code__را در AsyncMock حذف میکند؛ این بررسی پیشتر مشخصات تابع را به اشتباه به عنوان اشیاء ناهمگام ارزیابی میکرد، اما در ارزیابی کلاسهایی که دارای ویژگی__await__بودند و ویژگی__code__در آنها تعریف نشده بود به عنوان اشیاء ناهمگام ناکام میماند.bpo-38037: شمارندههای ارجاع را در ماژول
signalاصلاح میکند.bpo-38066: متدهای داخلی asyncio.Stream یعنی feed_eof()، feed_data()، set_exception() و set_transport() را پنهان میکند.
bpo-38059: ماژول inspect.py اکنون به جای exit() از sys.exit() استفاده میکند.
bpo-37953: در
typing، متدهای__hash__و__eq__برایForwardReferencesبهبود یافتند.bpo-38026: رفع شد:
inspect.getattr_static()ازisinstanceاستفاده میکرد در حالی که باید از جستجوی پویا جلوگیری میکرد.bpo-35923: کلاس
importlib.machinery.BuiltinImporterبهروزرسانی شد تا به جای مقدار سختکدشده، ازloader._ORIGINاستفاده کند. اصلاحیه از Donghee Na.bpo-38010: در
importlib.metadataهمگامسازی باimportlib_metadata0.20 انجام شد، رفتارfiles()شفافتر گردید و مشکلی که در آن برایrequires()روی بستههایdist-infoفقط یک نیاز بازگردانده میشد، رفع شد.bpo-38006: شیء weakref.WeakValueDictionary یک تابع محلی remove() را تعریف میکند که به عنوان تابع فراخوانی بازگشتی برای ارجاعات ضعیف استفاده میشود. این تابع با یک بستار ایجاد شده بود. پیادهسازی را برای پرهیز از بستار تغییر دهید.
bpo-37995: گزینهی indent به
ast.dump()اضافه شد که به آن اجازه میدهد خروجی چندخطی دارای تورفتگی تولید کند.bpo-34410: خرابی در پیمایشگر
tee()هنگام ورود مجدد به آن رفع شد. اکنون در این حالت RuntimeError بالا آورده میشود.bpo-37140: رفع یک رگرسیون در ctypes مربوط به پایتون ۳.۸. وقتی یک ctypes.Structure با کپی به یک تابع ارسال میشود، بخشهای داخلی ctypes یک شیء موقت ایجاد میکردند که اثر جانبی آن فراخوانی دوبارهی نهاییساز ساختار (__del__) بود. معناشناسی پایتون ایجاب میکند که یک نهاییساز دقیقا یک بار فراخوانی شود. بخشهای داخلی ctypes اصلاح شدند تا دیگر نهاییساز را دوبار فراخوانی نکنند.
bpo-37587: وقتی کاراکترهای فرار زیادی با بکاسلش در رشتهی JSON وجود داشته باشد، عملکرد
_json.scanstringاکنون تا ۳ برابر سریعتر شده است.bpo-37834: از بروز استثنا در shutil.rmtree هنگام ساخت روی سیستمهای غیر ویندوزی بدون پشتیبانی از فراخوانی سیستمی fd، مانند نسخههای قدیمیتر macOS، جلوگیری کنید.
bpo-10978: سمافورها (Semaphores) و سمافورهای کراندار (BoundedSemaphores) اکنون میتوانند بیش از یک نخ در انتظار را در هر زمان آزاد کنند.
bpo-37972: زیرنویسها در اشیاء
unittest.mock.callاکنون همان مکانیزم زنجیرهسازی را مانند هر ویژگی سفارشی دیگری دریافت میکنند، بهطوریکه استفادهی زیر دیگر خطایTypeErrorرا تولید نمیکند:call().foo().__getitem__('bar')اصلاحیه از blhsing
bpo-37965: هشدار کامپایلر C ناشی از distutils.ccompiler.CCompiler.has_function رفع شد.
bpo-37960: تابع
repr()در جریانهای با بافر و متنی اکنون هنگام دریافت مقدار ویژگیهای "name" و "mode" فقط استثناهای مورد انتظار را نادیده میگیرد.bpo-37961: افزودن فیلد
total_nframeبه ردهای جمعآوریشده توسط ماژول tracemalloc. این فیلد نشاندهندهی تعداد اولیهی قابها پیش از برش خوردن است.bpo-37951: بیشتر ویژگیهای ماژول subprocess اکنون دوباره در زیرمترجمها (subinterpreters) کار میکنند. فقط preexec_fn در زیرمترجمها محدود شده است.
bpo-36205: اصلاح پیادهسازی rusage در time.process_time() برای گزارش درست مجموع زمان CPU سیستم و کاربر.
bpo-37950: اصلاح تابع
ast.dump()هنگام فراخوانی با یک گرهِ بهطور ناقص مقداردهی اولیه شده.bpo-34679: بازیابی ایجاد نمونه از حلقههای رویداد IOCP ویندوز از نخِ غیر اصلی.
bpo-36917: افزودن پیادهسازی پیشفرض برای متد
ast.NodeVisitor.visit_Constant()که یک اخطار منسوخشدگی صادر کرده و متدهای متناظرvisit_Num()،visit_Str()و غیره را فراخوانی میکند.bpo-37798: بهروزرسانی test_statistics.py برای بررسی اینکه ماژول statistics برای هر دو پیادهسازی C و پایتون بهخوبی کار میکند. وصله توسط Donghee Na
bpo-26589: افزودن یک کد وضعیت جدید به ماژول http: مقدار 451 UNAVAILABLE_FOR_LEGAL_REASONS
bpo-37915: رفع خطای قطعهبندی (segmentation fault) که هنگام مقایسهی نمونههای شیءهای
datetime.timezoneوdatetime.tzinfoظاهر میشد. وصله توسط Pablo Galindo.bpo-32554: منسوخ کردن فراخوانی تابع hash روی انواع دادهی دلخواه توسط random.seed().
bpo-9938: افزودن آرگومان کلیدواژهای اختیاری
exit_on_errorبرای کلاسArgumentParser.bpo-37851: ماژول
faulthandlerدیگر پشتهی جایگزین خود را در زمان راهاندازی پایتون تخصیص نمیدهد. اکنون پشته فقط در اولین استفاده از faulthandler تخصیص داده میشود.bpo-32793: رفع پیام اشکالزدایی تکراری هنگام فراخوانی متد
smtplib.SMTP.connect().bpo-37885: ابزار venv: تولید نکردن اخطار متغیر تعییننشده هنگام غیرفعالسازی (deactivate).
bpo-37868: اصلاح dataclasses.is_dataclass هنگامی که نمونهای داده میشود که هرگز خطای AttributeError را در __getattr__ ایجاد نمیکند. یعنی شیءای که چیزی برای __dataclass_fields__ برمیگرداند حتی اگر یک دیتاکلاس نباشد.
bpo-37811: رفع ناتوانی تابع
socket.connect(address)از ماژولsocketدر برقراری اتصال در صورت بروز فراخوانی سیستمی متوقفشده. این مشکل در تمام سیستمعاملهایی مشاهده شد که فراخوانی سیستمیpoll(2)در آنها میتواند فقط اعداد صحیح نامنفی و مقدار ۱- را به عنوان مهلت زمانی بپذیرد.bpo-37863: بهینهسازیها برای Fraction.__hash__ که توسط Tim Peters پیشنهاد شده است.
bpo-21131: اصلاح پشتهی
faulthandler.register(chain=True). ماژول faulthandler اکنون به جای فقطSIGSTKSZبایت، یک پشتهی اختصاصی به اندازهیSIGSTKSZ*2بایت تخصیص میدهد. فراخوانی هندلر سیگنال قبلی در هندلر سیگنال faulthandler در برخی پلتفرمها بیش ازSIGSTKSZبایت از حافظهی پشته را مصرف میکند.bpo-37798: افزودن مسیر سریع C برای statistics.NormalDist.inv_cdf(). وصلهای از Donghee Na
bpo-37804: حذف متد منسوخ شدهی
threading.Thread.isAlive(). وصله توسط Donghee Na.bpo-37819: افزودن متد Fraction.as_integer_ratio() برای مطابقت با متدهای متناظر در bool، int، float و decimal.
bpo-14465: افزودن تابع xml.etree.ElementTree.indent() برای چاپ زیبا (pretty-printing) درختهای XML. مشارکت توسط استفان بهنل (Stefan Behnel).
bpo-37810: رفع راهنمای
?درdifflibدر خروجی تفاوت (diff) هنگام کار با تبها. وصله توسط Anthony Sottile.bpo-37772: در
zipfile.Path، هنگام افزودن پوشههای ضمنی، مطمئن شوید که پوشههای بالاسری اضافه شده و موارد تکراری حذف شوند.bpo-18578: ماژول
test.bytecode_helperبهtest.support.bytecode_helperتغییر نام داد و مستندسازی شد. وصلهای از Joannah Nanjekye.bpo-34488: متد
writelines()ازio.BytesIOاکنون هنگام ارسال خطوط کوچک فراوان، کمی سریعتر عمل میکند. وصله توسط Sergey Fedoseev.bpo-37449: ماژول
ensurepipاکنون برای خواندن دادهها به جایpkgutil.get_data()ازimportlib.resources.read_binary()استفاده میکند. وصله توسط Joannah Nanjekye.bpo-28292: توابع کمکی calendar.py را به عنوان خصوصی علامتگذاری کنید. این کار از توصیههای PEP 8 برای حفظ قراردادهای سبک در ماژول پیروی میکند و به یک مورد شناختهشده از سردرگمی کاربر رسیدگی میکند.
bpo-18049: افزودن تعریف THREAD_STACK_SIZE برای AIX در Python/thread_pthread.h. اندازهی پیشفرض پشتهی نخ باعث بروز خرابی با حد بازگشتی پیشفرض شد. وصله توسط M Felt
bpo-37742: رابط برنامهنویسی logging.getLogger() اکنون وقتی نام 'root' به آن ارسال شود، گزارشگیر ریشه را بازمیگرداند، در حالی که پیشتر یک گزارشگیر غیرریشهای به نام 'root' را برمیگرداند. این موضوع میتواند مواردی را تحت تأثیر قرار دهد که در آنها کد کاربر به طور صریح یک گزارشگیر غیرریشهای به نام 'root' میخواهد، یا یک گزارشگیر را با استفاده از logging.getLogger(__name__) در برخی از ماژولهای سطح بالا به نام 'root.py' نمونهسازی میکند.
bpo-37738: رفع پیادهسازی متد curses
addch(str, color_pair): ارسال جفت رنگ بهsetcchar()، به جای ارسال همیشگی 0 به عنوان جفت رنگ.bpo-37723: رفع پسرفت کارایی در تجزیهی عبارت باقاعده با مجموعههای نویسهی بسیار بزرگ. وصله توسط Yann Vaginay.
bpo-35943: تابع
PyImport_GetModule()اکنون تضمین میکند هر ماژولی که برمیگرداند به طور کامل مقداردهی اولیه شده است. وصله توسط Joannah Nanjekye.bpo-32178: رفع خطای IndexError در بستهی
emailهنگام تلاش برای تجزیهی فیلدهای آدرس نامعتبر که با:شروع میشوند.bpo-37268: ماژول
parserمنسوخ شده است و در نسخههای آیندهی پایتون حذف خواهد شد.bpo-37685: رفع مقایسههای
datetime.timedeltaوdatetime.timezone.bpo-37697: هماهنگسازی
importlib.metadataبا importlib_metadata 0.19، بهبود مدیریت پروندههای EGG-INFO و رفع یک فروپاشی هنگامی که نامهای نقاط ورودی حاوی علامت دونقطه بودند.bpo-37695: اصلاح پیغام خطای
curses.unget_wch(). وصله توسط Anthony Sottile.bpo-37689: اضافه کردن
is_relative_to()درPurePathبرای تعیین اینکه آیا یک مسیر نسبی به مسیری دیگر است یا خیر.bpo-29553: رفع مشکل
argparse.ArgumentParser.format_usage()برای گروههای متقابلاً انحصاری. وصله توسط Andrew Nester.bpo-37691: به متد math.dist() اجازه دهید مختصات را به شکل دنبالهها (یا موارد قابلپیمایش) بهجای فقط تاپلها بپذیرد.
bpo-37685: پیادهسازیهای
__eq__،__lt__و غیره در برخی کلاسها اصلاح شدند. آنها اکنون مقدارNotImplementedرا برای نوع پشتیبانینشده از عملوند دیگر برمیگردانند. این کار به عملوند دیگر اجازه میدهد نقش خود را ایفا کند (برای مثال مقایسهی برابری باANYمقدارTrueرا بر خواهد گرداند).bpo-37354: اسکریپت پوسته Powershell مربوط به Activate.ps1 را ایستا (static) کنید تا امکان امضای آن فراهم شود.
bpo-37664: بهروزرسانی ویلهای (wheels) بستهبندیشده همراه با ensurepip (پیپ ۱۹.۲.۳ و ستاپتولز ۴۱.۲.۰)
bpo-37663: ایجاد سازگاری در اسکریپتهای فعالسازی پوستهی venv با استفادهی همیشگی از __VENV_PROMPT__.
bpo-37642: به پیادهسازی خالص پایتون از
datetime.timezoneاجازه داده شد تا آفستهای زیر دقیقهای نزدیک به مرزهای حداقل و حداکثر، بهویژه در بازههای (۲۳:۵۹، ۲۴:۰۰) و (-۲۳:۵۹، ۲۴:۰۰) را نمایش دهد. وصله توسط Ngalim Siregarbpo-36161: در
posix، برای امنیت نخ ازttyname_rبه جایttynameاستفاده کنید.bpo-36324: خصوصی کردن ویژگیهای داخلی برای statistics.NormalDist().
bpo-37555: رفع مشکل بازگرداندن تاپل به جای شیء
_CallتوسطNonCallableMock._call_matcherهنگامی کهself._spec_signatureوجود دارد. وصله توسط Elizabeth Useltonbpo-29446: کاری کنید که دستور
from tkinter import *تنها شیءهای مورد انتظار را ایمپورت کند.bpo-16970: افزودن یک خطای مقدار هنگام ارسال مقدار نامعتبر به nargs وصله توسط Robert Leenders
bpo-34443: استثناهای ماژول
enumاکنون بهجای استفاده از__name__، از ویژگی__qualnameکلاس enum در پیام استثنا استفاده میکنند.bpo-37491: رفع خطای
IndexErrorهنگام تجزیهی سرآیندهای ایمیل با مقدار رشتهای کوتشدهی عریان که بهطور غیرمنتظرهای پایان یافته است. وصله توسط Abhilash Raj.bpo-37587: سریعتر کردن متد json.loads برای رشتههای طولانی. (وصله توسط Marco Paolini)
bpo-18378: شناسایی عبارت «UTF-8» به عنوان مقداری معتبر برای LC_CTYPE در locale._parse_localename.
bpo-37579: بازگرداندن
NotImplementedدر پیادهسازی پایتون برای__eq__جهت کلاسهایtimedeltaوtimeهنگامی که شیء دیگری که در حال مقایسه است از نوع مشابهی نیست، تا با پیادهسازی C مطابقت داشته باشد. وصله توسط Karthikeyan Singaravelan.bpo-21478: ثبت فراخوانیهای انجامشده به والد هنگامی که یک شیء autospecced با استفاده از
unittest.mock.attach_mock()به یک ماک متصل میشود. وصله توسط Karthikeyan Singaravelan.bpo-37531: دستور «python3 -m test -jN --timeout=TIMEOUT» اکنون اگر یک فرایند کارگر بیشتر از زمان TIMEOUT ثانیه اجرا شود، آن را متوقف میکند.
bpo-37482: رفع مشکل سریالسازی نام نمایشی در فیلدهای آدرس فرستنده یا گیرنده که دارای کلمات کدگذاریشده و کاراکترهای خاص هستند.
bpo-36993: بهبود گزارشدهی خطا برای پروندههای zip خراب با دادههای اضافی zip64 نامعتبر. وصله توسط Daniel Hillier.
bpo-37502: متد pickle.loads() دیگر وقتی آرگومان buffers روی None تنظیم میشود، خطای TypeError را بالا نمیآورد
bpo-37520: اصلاح رفتار zipfile.Path.parent هنگامی که شیء مسیر یک زیرپوشه را مشخص میکند.
bpo-18374: رفع ویژگی
.col_offsetاز نمونههای تو در تویast.BinOpکه در برخی شرایط مقدار بسیار بزرگی داشت.bpo-37424: رفع احتمال توقف کامل (hang) هنگام استفاده از مهلت زمانی روی
subprocess.run()در زمان استخراج خروجی. اگر فرایند فرزند فرزندان خودش را ایجاد کند یا دستههای stdout یا stderr خود را به فرایند دیگری متصل کند، ممکن است پس از رسیدن به مهلت زمانی و کشته شدن فرزندمان، هنگام تلاش برای خواندن خروجی نهایی از پایپها، متوقف شویم.bpo-37421: اصلاح نهاییساز
multiprocessing.util.get_temp_dir(): پاکسازی پیکربندی 'tempdir' مربوط به فرایند فعلی نیز، بهطوری که فراخوانی بعدی بهget_temp_dir()یک پوشهی موقت جدید ایجاد کند، نه اینکه پوشهی موقت حذفشده را مجدداً استفاده کند.bpo-37481: دستور
bdist_wininstدر پایتون ۳.۸ منسوخ شده است، به جای آن ازbdist_wheel(بستههای wheel) استفاده کنید.bpo-37479: هنگامی که
Enum.__str__در یک کلاس مشتقشده بازنویسی میشود، صرف نظر از اینکه کلاسهای ترکیبی (mixin) وجود داشته باشند یا خیر، این بازنویسی توسطEnum.__format__استفاده خواهد شد.bpo-37440: ماژول http.client اکنون احراز هویت پس از دستدهی TLS 1.3 را برای زمینهی پیشفرض فعال میکند یا اگر یک cert_file به HTTPSConnection ارسال شود.
bpo-37437: بهروزرسانی نسخهی expat درونساخته (vendorized) به 2.2.7.
bpo-37428: مقدار SSLContext.post_handshake_auth = True دیگر پرچم تأیید SSL_VERIFY_POST_HANDSHAKE را برای اتصالات کلاینت تنظیم نمیکند. با وجود اینکه این گزینه برای کلاینتها نادیده گرفته میشود، OpenSSL بهطور ضمنی اعتبارسنجی زنجیرهی گواهی را هنگام تنظیم این پرچم فعال میکند.
bpo-37420: تابع
os.sched_setaffinity()اکنون خطاهایی را که در طول پیمایش روی آرگومانmaskآن رخ میدهد بهدرستی مدیریت میکند. وصله توسط Brandt Bucher.bpo-37412: تابع
os.getcwdb()اکنون به جای صفحهکد ANSI، از کدگذاری UTF-8 در ویندوز استفاده میکند: دلیل آن را در PEP 529 ببینید. این تابع دیگر در ویندوز منسوخ نیست.bpo-37406: ماژول sqlite3 اکنون اگر نوع آرگومان عملیات str نباشد، به جای ValueError خطای TypeError را بالا میآورد: شامل execute()، executemany() و فراخوانی یک اتصال.
bpo-29412: رفع خطای IndexError در تجزیهی مقدار سرآیندی که به طور غیرمنتظرهای پایان مییابد. وصله توسط Abhilash Raj.
bpo-36546: آرگومان dist برای statistics.quantiles() اکنون فقط جایگاهی است. نام فعلی انعکاسدهندهی این موضوع نیست که آرگومان میتواند یک مجموعه داده یا یک توزیع باشد. علامتگذاری این پارامتر به عنوان جایگاهی از سردرگمی جلوگیری میکند و تغییر نام آن را در آینده امکانپذیر میسازد.
bpo-37394: رفع باگی که باعث میشد ماژول
queueدر صورت در دسترس نبودن ماژول شتابدهنده با خطا مواجه شود. وصله توسط Pablo Galindo.bpo-37376: ماژول
pprintاکنون ازtypes.SimpleNamespaceپشتیبانی میکند. وصله توسط Carl Bordum Hansen.bpo-26967: یک
ArgumentParserبا تنظیمallow_abbrev=Falseدیگر گروهبندی پرچمهای کوتاه مانند-vvرا غیرفعال نمیکند، بلکه همانطور که مستند شده است، فقط مخففسازی پرچمهای بلند را غیرفعال میکند. وصله توسط Zac Hatfield-Dodds.bpo-37212: تابع
unittest.mock.call()اکنون ترتیب آرگومانهای کلیدواژهای را در خروجی repr حفظ میکند. وصله توسط Karthikeyan Singaravelan.bpo-37372: رفع خطای unpickling در اشیاء datetime.time مربوط به پایتون ۲ با ثانیههای >= 24. وصله توسط Justin Blanchard.
bpo-37345: افزودن پشتیبانی رسمی برای سوکتهای UDPLITE. پشتیبانی از قبل وجود داشت، اما اکنون تشخیص پشتیبانی با
hasattr(socket, 'IPPROTO_UDPLITE')آسانتر شده است و ثابتهایی برای هر یک از مقادیر مورد نیاز تعریف شده است:socket.IPPROTO_UDPLITE،UDPLITE_SEND_CSCOVوUDPLITE_RECV_CSCOV. وصله توسط Gabe Appleton.bpo-37358: بهینهسازی
functools.partialبا استفاده از vectorcall.bpo-37347: متدهای
sqlite3.Connection.create_aggregate()،sqlite3.Connection.create_function()،sqlite3.Connection.set_authorizer()،sqlite3.Connection.set_progress_handler()وsqlite3.Connection.set_trace_callback()در صورتی که برخی از این متدها دو بار با یک شیء برابر اما غیریکسان فراخوانی شوند، منجر به خطای segfault میشوند. اکنون کالبکها با دقت بیشتری ذخیره میشوند. وصله توسط Aleksandr Balezin.bpo-37163: آرگومان obj از تابع
dataclasses.replace()اکنون فقط-جایگاهی است.bpo-37085: افزودن ثابتهای اختیاری مدیر پخش (Broadcast Manager) در لینوکس SocketCAN، که به عنوان پرچم برای پیکربندی رفتار BCM استفاده میشوند، به ماژول socket. وصله توسط Karl Ding.
bpo-37328: متد
HTMLParser.unescapeحذف شد. این متد مستندنشده بود و از پایتون ۳.۴ منسوخ شده بود.bpo-37305: افزودن .webmanifest -> application/manifest+json به فهرست نوع پروندههای شناختهشده و سرآیندهای نوع داده
bpo-37320: نام مستعار
aifc.openfp()برایaifc.open()، نام مستعارsunau.openfp()برایsunau.open()و نام مستعارwave.openfp()برایwave.open()حذف شدند. آنها از پایتون ۳.۷ منسوخ شده بودند.bpo-37315: منسوخ شدن پذیرش اعداد اعشاری با مقدار صحیح (مانند
5.0) درmath.factorial().bpo-37312: ماژولهای
_dummy_threadوdummy_threadingحذف شدند. این ماژولها از پایتون ۳.۷ که نیازمند پشتیبانی از نخها است، منسوخ شده بودند.bpo-33972: ایمیل با تکبخش اما دارای content-type تنظیمشده روی
multipart/*دیگر استثنای AttributeError ایجاد نمیکند.bpo-37280: استفاده از استخر نخ برای خواندن از پرونده برای حالت جایگزین sendfile.
bpo-37279: رفع پشتیبانی sendfile در asyncio هنگامی که sendfile دادههای اضافی را در حالت جایگزین ارسال میکند.
bpo-19865: تابع
ctypes.create_unicode_buffer()اکنون از نویسههای غیر BMP نیز روی پلتفرمهایی باwchar_tشانزدهبیتی (برای مثال، ویندوز و AIX) پشتیبانی میکند.bpo-37266: در یک زیرمفسر، ایجاد یک نخ دِیمِن اکنون یک استثنا ایجاد میکند. نخهای دِیمِن هرگز در زیرمفسرها پشتیبانی نمیشدند. پیش از این، اگر یک نخ دِیمِن همچنان در حال اجرا بود، نهاییسازی زیرمفسر با یک خطای مهلک پایتون متوقف میشد.
bpo-37210: اجازه دادن به پیادهسازی خالص پایتون از
pickleبرای کار کردن حتی زمانی که ماژول C مربوط به_pickleدر دسترس نیست.bpo-21872: رفع مشکل ماژول
lzma: این ماژول دادهها را به طور ناقص از حالت فشرده خارج میکند. هنگام خارج کردن یک پرونده با قالب FORMAT_ALONE و نداشتن نشانگر پایان، گاهی اوقات آخرین بایتها تا دهها بایت قابل خروجی دادن نیستند. وصله توسط Ma Lin.bpo-35922: اصلاح
RobotFileParser.crawl_delay()وRobotFileParser.request_rate()بهطوریکه وقتی هیچ قانون مربوطهای در پروندهی robots.txt تعریف نشده است، بهجای ایجادAttributeError، مقدارNoneرا برگردانند. وصله توسط Rémi Lapeyre.bpo-35766: تغییر قالب feature_version به یک تاپل (major, minor).
bpo-36607: رفع خطای
RuntimeErrorکه توسطasyncio.all_tasks()ایجاد میشود، در صورتی که مجموعه ضعیف (weak set) وظایف داخلی توسط یک نخ دیگر در طول پیمایش تغییر یابد.bpo-18748: تخریبگر
_pyio.IOBaseاکنون اگر دریافت ویژگیclosedبا خطا مواجه شود، کاری انجام نمیدهد تا رفتار نهاییساز_io.IOBaseبهتر شبیهسازی شود.bpo-36402: رفع یک مشکل شرایط رقابتی (race condition) در زمان خاموش شدن پایتون هنگام انتظار برای نخها. تا زمانی که وضعیت نخ پایتون تمام نخهای غیردیمن حذف شود صبر کنید (الحاق تمام نخهای غیردیمن)، بهجای اینکه فقط تا زمان تکمیل شدن نخهای غیردیمن پایتون صبر کنید.
bpo-37206: مقادیر پیشفرضی که نمیتوانند به عنوان اشیاء پایتون نمایش داده شوند، دیگر به طور نامناسبی به عنوان
Noneدر امضاهای تابع نمایش داده نمیشوند.bpo-37111: پارامترهای کلیدواژهای
encodingوerrorsبهlogging.basicConfigاضافه شدند.bpo-12144: اطمینان از اینکه کوکیهای دارای ویژگی
expiresدرCookieJar.make_cookies()پردازش میشوند.bpo-34886: رفع یک خطای ناخواسته ValueError از
subprocess.run()هنگام بررسی آرگومانهای تداخلدار input و stdin یا capture_output و stdout یا stderr هنگامی که آنها به صراحت ارائه شدهاند اما با مقادیرNoneدر یک دیکشنری**kwargsپاس داده شدهاند، بهجای اینکه مستقیماً با نام ارسال شده باشند. وصله توسط Rémi Lapeyre.bpo-37173: پیغام استثنا برای
inspect.getfile()اکنون به جای ماژول builtins، کلاس ارسالشده را به درستی گزارش میکند.bpo-37178: افزودن یک فرم تکآرگومانی به math.perm() که مفهومی مشابه math.factorial() دارد.
bpo-37178: برای math.perm(n, k)، اجازه دهید مقدار پیشفرض k برابر با n باشد که نتیجهای مشابه factorial() میدهد.
bpo-37165: تبدیل _collections._count_elements برای استفاده از Argument Clinic.
bpo-34767: عدم ایجاد دائمی یک
collections.dequeدرasyncio.Lock.bpo-37158: افزایش سرعت statistics.fmean() با تغییر از یک تابع به یک تولیدگر.
bpo-34282: حذف متد
Enum._convertکه در نسخهی 3.8 منسوخ شده بود.bpo-37150: متد
argparse._ActionsContainer.add_argumentاکنون اگر کسی به اشتباه بهجای نمونهای از FileType، شیء کلاس FileType را به عنوان آرگومانtypeارسال کند، خطا پرتاب میکند.bpo-28724: ماژول socket اکنون دارای متدهای
socket.send_fds()وsocket.recv.fds()است. مشارکتکنندگان: Joannah Nanjekye، Shinya Okano و Victor Stinner.bpo-35621: پشتیبانی از اجرای زیرفرآیندهای asyncio هنگام اجرای حلقهی رویداد در یک نخ روی سیستمعامل UNIX.
bpo-36520: سرآیندهای طولانی ایمیل با نویسههای UTF-8 اکنون هنگام تاشدن به درستی رمزگذاری میشوند. وصله از Jeffrey Kintscher.
bpo-30835: رفع باگی در تجزیهی ایمیل که در آن پیامی با بایتهای نامعتبر در content-transfer-encoding یک پیام چندبخشی میتواند باعث ایجاد AttributeError شود. وصله از Andrew Donnellan.
bpo-31163: متدهای rename و replace در نمونههای pathlib.Path اکنون نمونهی جدید Path را برمیگردانند.
bpo-25068: کلاس
urllib.request.ProxyHandlerاکنون کلیدهای دیکشنری ارسالشده را به حروف کوچک تبدیل میکند.bpo-26185: رفع تابع
repr()روی شیء خالیZipInfo. وصله از Mickaël Schoentgen.bpo-21315: سرآیندهای ایمیل حاوی کلمات رمزگذاریشدهی RFC2047 با وجود فضای خالی گمشده تجزیه میشوند و یک نقص ثبت میگردد. همچنین فضای خالی پایانی گمشده پس از کلمات رمزگذاریشده اکنون به عنوان نقص ثبت میشود.
bpo-31904: انتقال آزمون test_datetime به VxWorks: پرش از آزمونهای zoneinfo روی VxWorks
bpo-35805: افزودن پارسر برای سرآیند Message-ID و افزودن آن به HeaderRegistry پیشفرض. این کار باید از تا کردن Message-ID با استفاده از کلمات رمزگذاریشدهی RFC 2048 جلوگیری کند.
bpo-36871: اطمینان از اینکه امضای متد بهجای امضای سازندهی یک کلاس هنگام بررسی تطابق شیء ماک با فراخوانیهای متد استفاده میشود. وصله از Karthikeyan Singaravelan.
bpo-35070: تابع posix.getgrouplist() اکنون وقتی کاربر متعلق به NGROUPS_MAX گروه تکمیلی است، به درستی کار میکند. وصله از Jeffrey Kintscher.
bpo-31783: رفع شرایط رقابت در ThreadPoolExecutor هنگامی که نخهای کارگر در طول خاموش شدن مفسر ایجاد میشوند.
bpo-36582: رفع متد
UserString.encode()برای بازگرداندن صحیحbytesبه جای نمونهیUserString.bpo-32424: منسوخ کردن xml.etree.ElementTree.Element.copy() به نفع copy.copy().
وصله از Gordon P. Hemsley
bpo-36564: رفع حلقهی بینهایت در منطق تا کردن سرآیند ایمیل که وقتی max_line_length یک خطمشی ایمیل به اندازهی کافی بزرگ نباشد تا نشانهگذاریهای لازم و هرگونه مقداری را در پیام بگنجاند، فعال میشود. وصله از Paul Ganssle
bpo-36543: حذف متدهای Element.getchildren()، Element.getiterator() و ElementTree.getiterator() و ماژول xml.etree.cElementTree.
bpo-36409: حذف API قدیمی plistlib که در پایتون ۳.۴ منسوخ شده بود.
bpo-36302: ابزار distutils فهرست پروندههای منبع را مرتب میکند تا پروندههای .so مربوط به Extension به طور پیشفرض به شکل قابلتولیدتری ساخته شوند.
bpo-36250: نادیدهگرفتن
ValueErrorازsignalهمراه باinteractionدر نخ غیر اصلی.bpo-36046: افزودن پارامترهای
user،groupوextra_groupsبه سازندهی subprocess.Popen. وصله از Patrick McLean.bpo-32627: رفع خطای کامپایل هنگام گنجانده شدن تداخل سرآیندهای
_uuid.bpo-35800: منسوخ کردن
smtpd.MailmanProxyدر آمادهسازی برای حذف در آینده.bpo-35168: اکنون ویژگی
shlex.shlex.punctuation_charsیک ویژگی فقطخواندنی است.bpo-8538: افزودن پشتیبانی از اکشنهای بولی مانند
--fooو--no-fooبه argparse. وصله توسط Rémi Lapeyre.bpo-20504: رفع یک باگ در ماژول
cgiهنگامی که یک درخواست multipart/form-data فاقد سرآیندContent-Lengthاست.bpo-25988: کلاسهای پایه انتزاعی در
collections.abcدیگر در ماژول معمولیcollectionsدر معرض دید قرار نمیگیرند.bpo-11122: ابزار Distutils فقط در مسیرهای مشخصشده به دنبال rpmbuild نمیگردد.
bpo-34775: مدیریت تقسیم در PurePath اکنون بهجای بالا آوردن یک TypeError هنگام دریافت چیزی غیر از نمونهای از str یا PurePath، مقدار NotImplemented را برمیگرداند. وصله توسط Roger Aiudi.
bpo-34749: تابع
binascii.a2b_base64()اکنون تا ۲ برابر سریعتر شده است. وصله توسط Sergey Fedoseev.bpo-34519: افزودن نامهای مستعار اضافی برای HP Roman 8. وصله توسط Michael Osipov.
bpo-28009: رفع uuid.getnode() روی پلتفرمهایی با '.' به عنوان جداکنندهی آدرس مک و همچنین رفع باگ فرمت آدرس مک که یک 0 پیشتاز را در مقادیر آدرس مک حذف میکند. در حال حاضر، AIX تنها پلتفرم شناختهشده با این تنظیمات است. وصله توسط Michael Felt.
bpo-30618: افزودن متد
readlink(). وصله توسط Girts Folkmanis.bpo-32498: تابع
urllib.parse.unquote()اکنون علاوه بر رشتهها، بایتها را نیز میپذیرد. وصله توسط Stein Karlsen.bpo-33348: کتابخانهی lib2to3 اکنون عبارات پس از
*و**را مانندf(*[] or [])تشخیص میدهد.bpo-32689: بهروزرسانی تابع
shutil.move()برای اجازه دادن به استفاده از اشیای Path به عنوان آرگومان مبدا. وصله توسط Emily Morehouse و Maxwell "5.13b" McKinnon.bpo-32820: افزودن
__format__به کلاسهای IPv4 و IPv6. همیشه یک رشتهی کاملاً پرشده با صفر خروجی میدهد. از اصلاحکنندههای b/x/n (فرمت دودویی/مبنای شانزده/بومی) پشتیبانی میکند. فرمت بومی برای IPv4 دودویی و برای IPv6 مبنای شانزده است. همچنین از اصلاحکنندههای '#' و '_' پشتیبانی میکند.bpo-27657: رفع urllib.parse.urlparse() با مسیرهای عددی. یک رشته مانند "path:80" دیگر به عنوان یک مسیر تجزیه نمیشود، بلکه به عنوان یک طرحواره ("path") و یک مسیر ("80") تجزیه میشود.
bpo-4963: رفع رفتار غیرقطعی مرتبط با نگاشت پسوند mimetypes و مقداردهی مجدد ماژول.
مستندات¶
bpo-21767: اشارهی صریح به پشتیبانی از abc در functools.singledispatch
bpo-38816: جزئیات بیشتری دربارهی تعامل بین
fork()و رانتایم سیپایتون ارائه میدهد و صرفاً روی C-API تمرکز میکند. این موارد شامل هشدارهایی دربارهی محلهایی است کهfork()باید یا نباید فراخوانی شود.bpo-38351: مدرنسازی مثالهای ماژول
emailاز فرمتبندی % به افاسترینگها.bpo-38778: مستندسازی این حقیقت که اگر
os.fork()در یک زیرمفسر فراخوانی شود، استثنایRuntimeErrorبالا برده میشود.bpo-38592: افزوده شدن زبان پرتغالی برزیلی به انتخابگر زبان در وبسایت مستندات پایتون.
bpo-38294: افزودن فهرستی از کاراکترهایی که دیگر خنثی نمیشوند به مستندات re.escape
bpo-38053: مستندات plistlib مدرنسازی شدند.
bpo-26868: اصلاح نحوهی استفاده از مثال
PyModule_AddObject()برای مدیریت مناسب خطاها.bpo-36797: اصلاح یک پیوند خراب در مرجع API مربوط به distutils.
bpo-37977: هشدار قویتر و واضحتر دربارهی ناامن بودن پیکل (pickle)
bpo-37979: افزودن پیوندی به dateutil.parser.isoparse در مستندات datetime.fromisoformat. وصله توسط Paul Ganssle
bpo-12707: منسوخ کردن متدهای info()، geturl() و getcode() به ترتیب به نفع ویژگیهای headers، url و status برای HTTPResponse و addinfourl. همچنین منسوخ کردن صفت code متعلق به addinfourl به نفع ویژگی status. وصله توسط Ashwin Ramaswami
bpo-37937: اشاره به
frame.f_traceدر مستنداتsys.settrace().bpo-37878: داخلی کردن تابع
PyThreadState_DeleteCurrent().bpo-37759: آغاز ویرایشهای بخش Whatsnew نسخهی 3.8
bpo-37726: توقف پیشنهاد getopt در آموزش برای تجزیهی آرگومانهای خط فرمان و ترویج argparse.
bpo-32910: حذف رفتار وابسته به پیادهسازی مربوط به نحوهی کارکرد غیرفعالسازی venv.
bpo-37256: اصلاح متن نگارش آرگومانها برای
Requestدرurllib.requestbpo-37284: افزودن یادداشتی کوتاه برای نشان دادن این که هرگونه ویژگی جدید مورد نیاز
sys.implementationباید فرایند PEP را طی کند.bpo-30088: مستندسازی این موضوع که سازندهی
mailbox.Maildirتلاشی برای بررسی درستی ساختار پوشهی maildir انجام نمیدهد. وصله توسط Sviatoslav Sydorenko.bpo-37521: اصلاح مثالهای
importlibبه گونهای که هر ماژول تازه ایجادشده از طریق importlib.util.module_from_spec() فوراً در sys.modules درج شود، نه پس از فراخوانی loader.exec_module().با تشکر از Benjamin Mintz برای یافتن این باگ.
bpo-37456: اسلش ('/') اکنون بخشی از نحو است.
bpo-37487: اصلاح توصیف اندیس در PyList_GetItem بهطوریکه شامل 0 نیز بشود.
bpo-37149: جایگزینی پیوند منقضیشدهی مربوط به ارجاع Tkinter 8.5 نوشتهی John Shipman از New Mexico Tech، با پیوندی به نسخهی موجود در archive.org.
bpo-37478: اضافهشدن استثناهای احتمالی به توصیف تابع os.chdir().
bpo-34903: مستندسازی این موضوع که در
datetime.datetime.strptime()، صفرِ پیشرو در برخی قالبهای دورقمی اختیاری است. وصل از Mike Gleen.bpo-36260: اضافهکردن خطاهای رایج واگشایی (pitfalls) به مستندات ماژول zipfile.
bpo-37004: در مستندات difflib، یادداشتی اضافه شد که صراحتاً هشدار میدهد نتایج متد ratio در SequenceMatcher ممکن است به ترتیب رشتههای ورودی بستگی داشته باشد.
bpo-36960: بازسازی مستندات
datetimeبا هدف کاربرپسندتر کردن آنها و بهبود خوانایی. وصل از Brad Solomon.bpo-36487: شفافسازی مستندات C-API دربارهی اینکه مفسر «اصلی» (main) چیست.
bpo-23460: مستندات مربوط به قالببندی رشتههای دهدهی با استفاده از مشخصکنندهی
:gبهروزرسانی شد تا نقطهی قطع نمادگذاری نمایی صحیح را منعکس کند. وصل اولیه توسط Tuomas Suutari.bpo-35803: مستندسازی و آزمون این موضوع که توابع
tempfileمیتوانند یک شیء شبهمسیر را برای آرگومانdirبپذیرند. وصل از Anthony Sottile.bpo-33944: اضافهشدن یادداشتی دربارهی نحوهی استفادهی موردنظر از کد در پروندههای .pth.
bpo-34293: اصلاح Doc/Makefile در خصوص متغیر محیطی PAPER و ساختهای PDF
bpo-25237: افزودن مستندات برای ماژولهای tkinter
آزمونها¶
bpo-38614: رفع مشکل test_communicate() از test_asyncio.test_subprocess: استفاده از
support.LONG_TIMEOUT(۵ دقیقه)، به جای تنها ۱ دقیقه.bpo-38614: افزودن ثابتهای مهلت زمانی به
test.support:LOOPBACK_TIMEOUT،INTERNET_TIMEOUT،SHORT_TIMEOUTوLONG_TIMEOUT.bpo-38502: ابزار test.regrtest اکنون اگر گروههای فرایند در دسترس باشند، در حالت چندپردازشی (گزینهی خط فرمان -jN) از آنها استفاده میکند: در صورتی که توابع
os.setsid()وos.killpg()در دسترس باشند.bpo-35998: رفع یک شرط رقابت (race condition) در test_asyncio.test_start_tls_server_1(). پیشتر، یک شرط رقابت بین تابع main() در آزمون که پروتکل را جایگزین میکند و پروتکل test ServerProto که به محض دریافت HELLO، پاسخ ANSWER را ارسال میکند، وجود داشت. اکنون، تنها تابع main() در آزمون مسئول ارسال داده است و ServerProto دیگر دادهای ارسال نمیکند.
bpo-38470: رفع مشکل
test_compileall.test_compile_dir_maxlevels()روی ویندوز بدون پشتیبانی از مسیرهای طولانی: فقط ۳ زیرفهرست به جای بین ۲۰ تا ۱۰۰ زیرفهرست ایجاد کنید.bpo-37531: در زمان سرریز مهلت زمانی (timeout)، ابزار regrtest دیگر تلاش نمیکند تا
popen.communicate()را دوباره فراخوانی کند: این کار ممکن است تا زمانی که تمام فرایندهای فرزندِ استفادهکننده از پایپهای stdout و stderr کامل شوند، معلق بماند. فرایند کارگر (worker) را متوقف کرده و خروجی آن را نادیده بگیرید. همچنین برای کندترین بیلدباتهای پایتون، مهلت زمانی faulhtarnder برای فرایند اصلی را از ۱ دقیقه به ۵ دقیقه تغییر دهید.bpo-38239: اصلاح test_gdb برای ساختهای بهینهسازی زمان پیوند (LTO).
bpo-38275: آزمون test_ssl اکنون نسخههای غیرفعال TLS/SSL را بهتر مدیریت میکند. سیاست رمزنگاری OpenSSL و تنظیمات زمان اجرا شناسایی میشوند و آزمونهای مربوط به نسخههای غیرفعال رد میشوند. همچنین آزمونها مقادیر minimum_versions بیشتری از TLS را برای پلتفرمهایی که پیشفرض OpenSSL را با تنظیمات سختگیرانه بازنویسی میکنند، میپذیرند.
bpo-38271: کلیدهای خصوصی برای test_ssl با الگوریتم 3DES در قالب سنتی PKCS#5 رمزنگاری شده بودند. الگوریتم 3DES و الگوریتم درهمساز PKCS#5 توسط برخی سیاستهای سختگیرانهی رمزنگاری مسدود شدهاند. بهجای آن از قالب PKCS#8 با رمزنگاری AES256 استفاده کنید.
bpo-38270: ماژول test.support اکنون یک تابع کمکی برای بررسی دسترسپذیری یک تابع درهمساز هش دارد. چندین آزمون بازنویسی شدهاند تا از MD5 اجتناب کرده و بهجای آن از SHA256 استفاده کنند. سایر آزمونها برای استفاده از MD5 علامتگذاری شده و در صورت غیرفعال بودن MD5 رد میشوند.
bpo-37123: آزمون چندپردازشی test_mymanager() اکنون علاوه بر کد خروج صفر، انتظار دریافت -SIGTERM را نیز دارد. اگر متد BaseManager._finalize_manager() متوجه شود که متوقف کردن فرایند مدیر بیش از ۱ ثانیه طول میکشد (که در باتهای ساخت کند رخ میدهد)، سیگنال SIGTERM را به آن ارسال میکند.
bpo-38212: آزمونهای چندپردازشی: افزایش مهلت زمانی آزمون test_queue_feeder_donot_stop_onexc() از ۱ به ۶۰ ثانیه.
bpo-38117: آزمون با OpenSSL 1.1.1d
bpo-38018: افزایش پوشش کد برای multiprocessing.shared_memory.
bpo-37805: افزودن آزمونها برای json.dump(..., skipkeys=True). وصله توسط Donghee Na.
bpo-37531: بهبود مهلت زمانی چندپردازشی regrtest: نوشتن یک پیام هنگام خاتمه دادن به یک فرایند کارگر، گرفتن استثناهای popen.kill() و popen.wait()، و اعمال مهلت زمانی روی فراخوانی دوم popen.communicate().
bpo-37876: افزودن آزمونها برای کُدک ROT-13.
bpo-36833: آزمونهایی برای ماکروهای
PyDateTime_xxx_GET_xxx()مربوط به API زبان C ماژولdatetimeاضافه شد. وصله توسط Joannah Nanjekye.bpo-37558: اصلاح مدیریت نام test_shared_memory_cleaned_after_process_termination
bpo-37526: افزودن
test.support.catch_threading_exception(): یک مدیر زمینه که استثناهایthreading.Threadرا با استفاده ازthreading.excepthook()میگیرد.bpo-37421: آزمون test_concurrent_futures اکنون در صورت در حال اجرا بودن نمونهی ForkServer، آن را به طور صریح متوقف میکند.
bpo-37421: آزمونهای چندپردازشی اکنون در صورت در حال اجرا بودن نمونهی ForkServer، آن را متوقف میکنند: توصیفگر پروندهی «زنده» را برای درخواست توقف از سرور میبندند و سپس نشانی UNIX آن را حذف میکنند.
bpo-37421: آزمون test_distutils.test_build_ext() اکنون قادر است پوشهی موقت را در ویندوز حذف کند: افزونهی C تازه ساختهشده («xx») را در فرایند فعلی ایمپورت نکنید، بلکه آن را در یک فرایند جداگانه آزمون کنید.
bpo-37421: آزمون test_concurrent_futures اکنون بخش چندپردازشی را پاکسازی میکند تا پوشههای موقتی ایجاد شده توسط multiprocessing.util.get_temp_dir() بلافاصله حذف شوند.
bpo-37421: آزمون test_winconsoleio دیگر پروندهی موقتی را نشت نمیدهد: از tempfile.TemporaryFile() استفاده کنید تا با اتمام آزمون، پرونده حذف شود.
bpo-37421: آزمونهای چندپردازشی اکنون به طور صریح
_run_finalizers()را فراخوانی میکنند تا پوشههای موقت ایجاد شده توسط آزمونها بلافاصله حذف شوند.bpo-37421: آزمونهای urllib.request اکنون برای حذف پروندههای موقت ایجادشده توسط آزمونهای
urlretrieve()و پاکسازی متغیر سراسری_openerکه توسطurlopen()و توابع فراخوانندهی غیرمستقیمurlopen()تنظیم شده است،urlcleanup()را فراخوانی میکنند.bpo-37472: حذف
Lib/test/outstanding_bugs.py.bpo-37199: رفع خطاهای آزمون زمانی که IPv6 در دسترس نباشد یا غیرفعال شده باشد.
bpo-19696: جایگزینی متد منسوخ «random.choose» با «random.choice» در «test_pkg_import.py».
bpo-37335: حذف کدهای غیرضروری دیگر از آزمونهای تبدیل ضمنی نوع locale در زبان c
bpo-37421: رفع مشکل test_shutil برای جلوگیری از نشت پروندههای موقت.
bpo-37411: رفع مشکل test_wsgiref.testEnviron() برای عدم وابستگی به متغیرهای محیطی (اگر متغیر «X» تنظیم شده باشد، با خطا مواجه نشود).
bpo-37400: رفع مشکل test_os.test_chown(): استفاده از os.getgroups() به جای grp.getgrall() برای دریافت گروهها. همچنین تغییر نام آزمون به test_chown_gid().
bpo-37359: افزودن گزینهی --cleanup به python3 -m test برای حذف دایرکتوریهای
test_python_*مربوط به کارهای ناموفق قبلی. افزودن «make cleantest» برای اجرایpython3 -m test --cleanup.bpo-37362: test_gdb دیگر در صورت دریافت پیام «غیرمنتظره» روی stderr با خطا مواجه نمیشود: اکنون stderr را نادیده میگیرد. هدف test_gdb این است که آزمایش کند دستورات python-gdb.py همانطور که انتظار میرود کار میکنند، نه اینکه gdb را آزمایش کند.
bpo-35998: جلوگیری از TimeoutError در test_asyncio: test_start_tls_server_1()
bpo-37278: رفع مشکل test_asyncio ProactorLoopCtrlC: الحاق نخ برای جلوگیری از نشت نخ در حال اجرا و نشت ارجاع.
bpo-37261: رفع مشکل
test.support.catch_unraisable_exception(): متد __exit__() آن اکنون استثنای غیرقابلپرتابی را که هنگام پاکسازی ویژگیunraisableآن ایجاد میشود، نادیده میگیرد.bpo-37069: ابزار regrtest اکنون از
sys.unraisablehook()استفاده میکند تا در صورت انتشار «استثنای غیرقابلپرتاب»، یک آزمون را به عنوان «محیط تغییریافته» (ENV_CHANGED) علامتگذاری کند. علاوه بر این، regrtest در این حالت یک هشدار ثبت میکند.از
python3 -m test --fail-env-changedبرای گرفتن استثناهای غیرقابلپرتاب در آزمونها استفاده کنید.bpo-37252: رفع ادعاها در آزمونهای devpoll مربوط به
test_closeوtest_events_mask_overflow.bpo-37169: بازنویسی آزمونهای واحد
_PyObject_IsFreed().bpo-37153: آزمون
test_venv.test_multiprocessing()اکنون به طور صریحpool.terminate()را فراخوانی میکند تا منتظر بماند تا استخر کامل شود.bpo-34001: سازگار کردن test_ssl برای اجرا با LibreSSL. کتابخانهی LibreSSL نسخههای حداقل و حداکثر TLS را به شکلی متفاوت از OpenSSL مدیریت میکند.
bpo-36919: مستقل کردن پیادهسازی
test_source_encoding.test_issue2301. این آزمون اکنون هم برای CPython و هم برای IronPython کار خواهد کرد.bpo-30202: بروزرسانی
test.test_importlib.test_abcبرای آزمونfind_spec().bpo-28009: اصلاح منطق test_uuid برای آزمون زمانی که برنامهای موجود است و میتوان از آن برای به دست آوردن یک MACADDR به عنوان مبنای یک UUID استفاده کرد. وصله توسط M. Felt
bpo-34596: بازگشت به یک دلیل پیشفرض هنگامی که
unittest.skip()فراخوانی نشده است. وصله توسط Naitree Zhu.
ساخت¶
bpo-38809: در ویندوز، اسکریپتهای ساخت اکنون python.exe را از یک محیط مجازی فعال تشخیص داده و استفاده خواهند کرد.
bpo-38684: رفع مشکل ساخت _hashlib زمانی که Blake2 غیرفعال است، اما OpenSSL از آن پشتیبانی میکند.
bpo-38468: ماژول Misc/python-config.in اکنون از
getvar()برای تمام فراخوانیهای همچنان موجودsysconfig.get_config_var()استفاده میکند. وصله توسط Joannah Nanjekye.bpo-37415: رفع بررسی سرآیند stdatomic.h برای کامپایلر ICC: پیادهسازی ICC فاقد نوع داده atomic_uintptr_t است که توسط پایتون مورد نیاز است.
bpo-38301: در خانوادهی Solaris، باید مطمئن شویم که از
-D_REENTRANTاستفاده میشود. وصله توسط Jesús Cea Avión.bpo-36002: یافتن فایلهای اجرایی
llvm-profdataوllvm-arبا استفاده ازAC_PATH_TOOLبه جایAC_PATH_TARGET_TOOL.bpo-37936: پروندهی
.gitignoreبهطور سیستماتیک همهی قاعدههایی را که قرار است برای پروندهها در مکان خاصی از مخزن اعمال شوند، به صورت «ریشهای» و با یک اسلش غیرپایانی حفظ میکند. پیش از این، زمانی که پروندهی مدنظر برای نادیدهگرفتهشدن در ریشهی مخزن قرار داشت، بیشتر اوقات به طور تصادفی پروندهها و پوشههایی با همان نام را در هر جای دیگری از درخـت نیز نادیده میگرفتیم.bpo-37760: اسکریپت
Tools/unicode/makeunicodedata.pyکه برای تبدیل اطلاعات از پایگاه داده نویسههای یونیکد (UCD) به کد تولید شده و دادههای مورد استفاده توسط متدهایstrو ماژولunicodedataاستفاده میشود، اکنون دادههای هر نویسه را به عنوان یکdataclassبا ویژگیهای نامگذاریشده مدیریت میکند، نه یک فهرست ۱۸ عضوی از فیلدهای مختلف.bpo-37936: پروندهی
.gitignoreدیگر روی پروندههایی که در واقع در مخزن گیت (Git) ردیابی میشوند، اعمال نمیشود. وصله توسط Greg Price.bpo-37725: تغییر هدف «clean» در makefile به طوری که دادههای بهینهسازی هدایتشده با برنامه (PGO) را نیز پاکسازی کند. پیش از این مجبور بودید از «make clean» و «make profile-removal» یا «make clobber» استفاده کنید.
bpo-37707: علامتگذاری برخی آزمونهای فردی برای رد شدن زمانی که از --pgo استفاده میشود. آزمونهای علامتگذاریشده زمان وظیفهی PGO را بهطور قابلتوجهی افزایش میدهند و احتمالاً به بهبود بهینهسازی فایل اجرایی نهایی کمکی نمیکنند.
bpo-36044: کاهش تعداد آزمونهای واحد اجرا شده برای وظیفهی تولید PGO. این کار سرعت وظیفه را حدود ۱۵ برابر افزایش میدهد. اجرای کامل مجموعهی آزمونهای واحد کند است. این تغییر ممکن است به دلیل اجرا نشدن شاخههای کدیِ فراوان، منجر به ساختی با بهینهسازی کمی کمتر شود. اگر مایل هستید برای ساخت بسیار کندتر صبر کنید، رفتار قدیمی را میتوان با استفاده از './configure [..] PROFILE_TASK="-m test --pgo-extended"' بازگردانی کرد. ما هیچ تضمینی درباره اینکه کدام مجموعهی وظیفهی PGO ساخت سریعتری تولید میکند، ارائه نمیدهیم. کاربرانی که اهمیت میدهند باید معیارهای عملکرد (benchmark) مرتبط خود را اجرا کنند زیرا نتایج میتواند به محیط، بار کاری و زنجیرهی ابزار کامپایلر بستگی داشته باشد.
bpo-37468: دستور
make installدیگر پروندههایwininst-*.exeمورد استفاده توسط bdist_wininst در distutils را نصب نمیکند: bdist_wininst فقط روی ویندوز کار میکند.bpo-37189: بسیاری از توابع
PyRun_XXX()مانندPyRun_String()به اشتباه دیگر درlibpython38.dllاکسپورت نمیشدند. برای رفع سازگاری ABI، آنها را دوباره اکسپورت کنید.bpo-25361: استفاده از دستورالعملهای SSE2 را در ساخت ۳۲ بیتی ویندوز فعال میکند.
bpo-36210: بروزرسانی تشخیص ماژول توسعهی اختیاری برای AIX. ماژولهای ossaudiodev و spwd برای AIX قابل استفاده نیستند و دیگر به عنوان مفقود گزارش نمیشوند. بستهبندی شخص ثالث ncurses (با پشتیبانی ASIS) با کتابخانهی curses در AIX که به طور رسمی پشتیبانی میشود تداخل دارد، بنابراین AIX را طوری پیکربندی کنید که از libcurses.a استفاده کند. با این حال، تلاش برای ساخت _curses_panel را نادیده بگیرید.
وصله توسط M Felt
Windows¶
bpo-38589: اصلاح میانبر HTML Help زمانی که ویندوز در درایو C نصب نشده است
bpo-38453: اطمینان حاصل کردن از اینکه تابع ntpath.realpath() مسیرهای نسبی را به درستی حل میکند.
bpo-38519: بازیابی سرآیندهای C داخلی که در بستههای nuget.org و مایکروسافت استور وجود نداشتند.
bpo-38492: حذف وابستگی
pythonw.exeبه رانتایم مایکروسافت C++.bpo-38344: اصلاح پیام خطا در activate.bat
bpo-38359: اطمینان از اینکه برنامهی اجرای
pyw.exeکلید رجیستری صحیح را میخواند.bpo-38355: رفع مشکل شکست خوردن
ntpath.realpathرویsys.executable.bpo-38117: بهروزرسانی OpenSSL بستهبندیشده به نسخهی 1.1.1d
bpo-38092: کاهش سربار هنگام استفاده از چندپردازشی (multiprocessing) در یک محیط مجازی ویندوز.
bpo-38133: به برنامهی اجرای py.exe اجازه میدهد تا نصبها را از فروشگاه مایکروسافت پیدا کند و نمایش محیطهای مجازی فعال را بهبود بخشد.
bpo-38114: پروندهی
pip.iniدیگر در بستهی Nuget گنجاندهچ نمیشود.bpo-32592: ویندوز ۸ به عنوان حداقل نسخهی مورد نیاز برای پشتیبانی از API تنظیم شد
bpo-36634: تابع
os.cpu_count()اکنون بهجای حداکثر پردازندهها، پردازندههای فعال را برمیگرداند.bpo-36634: اسکریپت activate.bat مربوط به venv اکنون زمانی که متغیرهای موجود حاوی نویسههای نقلقول دوتایی باشند، کار میکند.
bpo-38081: جلوگیری از بروز خطا هنگام فراخوانی
os.path.realpath()روی'NUL'.bpo-38087: اصلاح حساسیت به بزرگی و کوچکی حروف (case sensitivity) در test_pathlib و test_ntpath.
bpo-38088: رفع مشکل پیدا نشدن vcruntime140.dll توسط distutils زمانی که فقط مجموعهابزار v142 نصب شده است.
bpo-37283: اطمینان از اینکه تنظیمات خط فرمان و unattend.xml وضعیتهای شناساییشدهی قبلی را در نصبکنندهی ویندوز بازنویسی (override) میکنند.
bpo-38030: رفع خطای
os.stat()برای دستگاههای بلوکی در ویندوزbpo-38020: رفع فروپاشی احتمالی هنگام فراخوانی
os.readlink()(یا به طور غیرمستقیم از طریقrealpath()) روی پروندهای که پیوند پشتیبانیشدهای نیست.bpo-37705: بهبود پیادهسازی تابع
winerror_to_errno().bpo-37549: تابع
os.dup()دیگر برای جریانهای استاندارد در ویندوز ۷ با خطا مواجه نمیشود.bpo-1311: پروندهی
nulروی ویندوز اکنون مقدار True را ازexists()و نتیجهی معتبری را ازos.stat()با مقداردهیS_IFCHRبرمیگرداند.bpo-9949: فعالسازی پشتیبانی از دنبال کردن پیوندهای نمادین در
os.realpath().bpo-37834: برخورد با تمام نقطههای بازپخش جانشین نام در ویندوز درون
os.lstat()و سایر نقطههای بازپخش به عنوان پروندههای معمولی درos.stat().bpo-36266: افزودن نام ماژول در پیام خطای قالببندیشده هنگامی که خطای بارگذاری DLL طی ایمپورت ماژول در
_PyImport_FindSharedFuncptrWindows()رخ میدهد. وصله توسط Srinivas Nyayapati.bpo-25172: تلاش برای ایمپورت ماژول
cryptروی ویندوز منجر به یک خطایImportErrorبا پیامی میشود که توضیح میدهد این ماژول روی ویندوز پشتیبانی نمیشود. در سایر سکوها، اگر ماژول زیرساختی_cryptدر دسترس نباشد، خطای ImportError شامل پیامی خواهد بود که مشکل را توضیح میدهد.bpo-37778: اصلاح آیکونهای استفادهشده برای انتسابهای پرونده به بستهی مایکروسافت استور.
bpo-37734: اصلاح استفاده از مقادیر رجیستری برای اجرای پایتون از برنامهی مایکروسافت استور.
bpo-37702: رفع نشتی حافظه در ویندوز هنگام ایجاد یک شیء SSLContext یا اجرای
urllib.request.urlopen('https://...').bpo-37672: تغییر دادن pip بستهی مایکروسافت استور برای استفاده از پروندهی
pip.iniبستهبندیشده به جای متغیرPIP_USER.bpo-10945: حذف رسمی پشتیبانی از ایجاد نصبکنندههای bdist_wininst روی سیستمهای غیرویندوزی.
bpo-37445: گنجاندن پرچم
FORMAT_MESSAGE_IGNORE_INSERTSدر فراخوانیهایFormatMessageW().bpo-37369: اصلاح مسیر برای
sys.executableهنگام اجرا از مایکروسافت استور.bpo-37380: عدم جمعآوری فرایندهای نیمهکاره با
subprocess._activeروی ویندوز برای پاکسازی بعدی. وصله توسط Ruslan Kuprieiev.bpo-37351: حذف libpython38.a از توزیع استاندارد ویندوز.
bpo-35360: بهروزرسانی ساختهای ویندوز برای استفاده از SQLite 3.28.0.
bpo-37267: روی ویندوز، تابع
os.dup()دیگر هنگام پردازش یک پروندهی نویسهای، یک توصیفگر فایل (fd) قابل ارثبری ایجاد نمیکند.bpo-36779: اطمینان از درست بودن
time.tznameروی ویندوز وقتی صفحهی کد فعال روی CP_UTF7 یا CP_UTF8 تنظیم شده است.bpo-32587: پشتیبانی از رشتههای با طول صفر توسط
winreg.REG_MULTI_SZ.bpo-28269: جایگزینی استفاده از
strcasecmp()با تابع سیستمی_stricmp(). وصلهی ارائهشده توسط Minmin Gong.bpo-36590: افزودن پشتیبانی بومی از بلوتوث RFCOMM به ماژول socket.
مکاواس¶
bpo-38117: بهروزرسانی OpenSSL به نسخهی 1.1.1d در نصبکنندهی macOS.
bpo-38089: انتقال Azure Pipelines به جدیدترین نسخههای ماشین مجازی و اختیاری کردن آزمونهای macOS
bpo-18049: افزایش اندازهی پشتهی پیشفرض نخها از ۵ مگابایت به ۱۶ مگابایت در macOS، برای مطابقت با اندازهی پشتهی نخ اصلی. این کار از بروز فروپاشی هنگام بازگشتیهای عمیق در نخها جلوگیری میکند.
bpo-34602: جلوگیری از شکستهای بدنه آزمون در macOS با خودداری از فراخوانی resource.setrlimit برای افزایش محدودیت اندازهی پشتهی فرایند در زمان اجرا. تغییر زمان اجرا دیگر مورد نیاز نیست زیرا مفسر با اندازهی پشتهی پیشفرض بزرگتری ساخته میشود.
bpo-35360: بهروزرسانی نصبکنندهی macOS برای استفاده از SQLite 3.28.0.
bpo-34631: بهروزرسانی OpenSSL به نسخهی 1.1.1c در نصبکنندهی macOS.
IDLE¶
bpo-26353: متوقف کردن افزودن خط جدید هنگام ذخیرهسازی پنجرهی پوستهی IDLE.
bpo-4630: افزودن گزینهای برای تغییر وضعیت چشمکزدن نشانگر IDLE برای پنجرههای پوسته، ویرایشگر و خروجی. بنگرید به تنظیمات، عمومی، ترجیحات پنجره، چشمکزدن نشانگر. وصلهی ارائهشده توسط Zackery Spytz.
bpo-38598: عدم تلاش برای کامپایل پوستهی IDLE یا پنجرههای خروجی
bpo-36698: IDLE دیگر هنگام نوشتن نویسههای غیرقابل رمزگذاری در stderr با خطا مواجه نمیشود. اکنون آنها را با یک بکاسلش، مانند مفسر معمولی پایتون، خنثی میکند. فیلد
errorsبه جریانهای استاندارد اضافه شد.bpo-35379: هنگام خروج از IDLE، هرگونه خطای AttributeError را بگیرید. یکی از آنها زمانی رخ میدهد که EditorWindow.close دو بار فراخوانی شود. چاپ کردن یک ردگیری، هنگامی که IDLE از یک ترمینال اجرا میشود، بیفایده و آزاردهنده است.
bpo-38183: برای جلوگیری از مشکلات، test_idle پوشهی تنظیمات کاربر را نادیده میگیرد. این ماژول دیگر تلاشی برای ایجاد یا دسترسی به .idlerc یا هر پروندهای در آن نمیکند. کاربران باید IDLE را اجرا کنند تا مشکلات مربوط به ذخیرهسازی تنظیمات را پیدا کنند.
bpo-38077: IDLE دیگر هنگام مقداردهی اولیه، 'argv' را به فضای نام کاربر اضافه نمیکند. این باگ تنها نسخههای ۳.۷.۴ و ۳.۸.۰b2 تا ۳.۸.۰b4 را تحت تأثیر قرار داده بود.
bpo-38041: سطرهای راهاندازی مجدد پوسته اکنون عرض پنجره را پر میکنند، همیشه با '=' شروع میشوند و از شکستن غیرضروری جلوگیری میکنند. اگر نام پروندهی گنجاندهشده نسبت به عرض طولانی باشد، سطر همچنان میشکند.
bpo-35771: برای جلوگیری از شکستهای گاهبهگاه و کاذب test_idle روی ماشینهای کندتر،
hover_delayرا در test_tooltip افزایش دهید.bpo-37824: به درستی مدیریت کردن هشدارهای ورودی کاربر در پوستهی IDLE. متوقف کردن تبدیل SyntaxWarnings به SyntaxErrors.
bpo-37929: محاورهی تنظیمات IDLE اکنون زمانی که هیچ پنجرهی پوستهای وجود ندارد، به درستی بسته میشود.
bpo-37902: افزودن اسکرول با چرخ ماوس برای مرورگرهای ماژول، مسیر و پشتهی IDLE. وصلهی ارائهشده توسط George Zhang.
bpo-37849: رفع مشکل بالا یا پایین ظاهر شدن فهرست تکمیل خودکار هنگامی که بالای سطر جاری نمایش داده میشود.
bpo-36419: بازسازی تکمیل خودکار IDLE و بهبود آزمایش.
bpo-37748: مرتبسازی مجدد منوی Run. رایجترین گزینه یعنی Run Module را در بالا قرار دهید.
bpo-37692: بهبود نمونهی پیکربندی برجستهسازی با تعامل پوستهی نمونه و برچسبهای بهتر برای المانهای پوسته.
bpo-37628: محاورهی تنظیمات دیگر با اندازهی قلم بزرگ نمیشود.
bpo-37627: مقداردهی اولیهی محاورهی Customize Run با آرگومانهای خط فرمانی که اخیراً وارد شدهاند. کاربر میتواند پیش از ارسال، آنها را به دلخواه ویرایش کند.
bpo-33610: رفع مشکلی که در آن زمینهی کد هنگام فعالسازی اولیه، زمینهی درست را نشان نمیداد.
bpo-37530: بهینهسازی زمینهی کد برای کاهش فعالیتهای پسزمینهی غیرضروری. تغییرات قلم و برجستهسازی اکنون همزمان با تغییرات متن رخ میدهند و نه پس از یک تأخیر تصادفی.
bpo-27452: پاکسازی
config.pyبا درونخطی کردنRemoveFileو سادهسازی مدیریتfileدرCreateConfigHandlers.bpo-37325: رفع ترتیب پیمایش تمرکز زبانهی (tab) برای منوی راهنما و محاورههای اجرای سفارشی.
bpo-37321: هر دو پیام خطای اتصال زیرفرایند اکنون به بخش 'Startup failure' در مستندات IDLE اشاره میکنند.
bpo-17535: افزودن شمارهسرهای اختیاری برای پنجرههای ویرایشگر IDLE. پنجرهها بدون شمارهسر باز میشوند مگر اینکه در زبانهی General از محاورهی پیکربندی طور دیگری تنظیم شود.
bpo-26806: برای جبران فریمهای پشته که توسط IDLE اضافه شدهاند و جلوگیری از مشکلات احتمالی با حد بازگشتی پایین، ۳۰ واحد به حدود در فرایند اجرای کد کاربر اضافه کنید. هنگام گزارش حدود بازگشتی، ۳۰ واحد کم کنید تا این اضافهشدن بیشتر نامحسوس باشد.
bpo-37177: «پوستبندی» (attach) صحیح محاورههای جستجو به پنجرهی اصلی خودشان به طوری که مانند سایر محاورهها رفتار کنند و پشت پنجرهی اصلی پنهان نشوند.
bpo-37039: تنظیم «Zoom Height» با صفحهنمایشهای مختلف از طریق بزرگنمایی موقتی پنجره در اولین استفاده با یک صفحهنمایش خاص. تغییر تنظیمات صفحهنمایش ممکن است ارتفاع ذخیرهشده را نامعتبر کند. در حالی که یک پنجره بزرگنمایی شده است، «Zoom Height» تأثیری ندارد.
bpo-35763: با افزودن این یادآور تنها در صورتی که در سطر اول فضا وجود داشته باشد، یادآور راهنمای فراخوانی (calltip) دربارهی اینکه '/' به معنای «فقطجایگاهی» است را کمتر مزاحم کنید.
bpo-5680: افزودن گزینهی 'Run... Customized' به منوی Run برای اجرای یک ماژول با تنظیمات سفارشی. هرگونه «آرگومان خط فرمان» واردشده به sys.argv اضافه میشود. میتوان راهاندازی مجدد ماژول اصلی پوستهی عادی را متوقف کرد.
bpo-36390: جمعآوری توابع منوی Format در format.py. ترکیب paragraph.py، rstrip.py، و متدهای format از editor.py.
Tools/Demos¶
bpo-38118: بهروزرسانی پروندهی حذف خطای Valgrind برای نادیدهگرفتن یک هشدار خطا در
PyUnicode_Decode()هنگام استفاده از strcmp() داخلی GCC.bpo-38347: pathfix.py: هنگام کار به صورت بازگشتی، فرض کنید تمام پروندههایی که با '.py' ختم میشوند اسکریپتهای پایتون هستند.
bpo-37803: گزینههای بلند
--helpو--versionدر pdb اکنون کار میکنند.bpo-37942: بهبود مبدل ArgumentClinic برای اعداد اعشاری.
bpo-37704: حذف
Tools/scripts/h2py.py: از cffi برای دسترسی به یک API از C در پایتون استفاده کنید.bpo-37675: ابزار 2to3 اکنون هنگام اجرا از روی یک کتابخانهی استاندارد فشردهشده کار میکند.
bpo-37034: ابزار Argument Clinic اکنون در خطا مربوط به آرگومانهای فقط-کلیدواژه، بهجای جایگاه آرگومان از نام آن استفاده میکند. وصله توسط Rémi Lapeyre تهیه شده است.
bpo-37064: افزودن گزینهی -k به اسکریپت pathscript.py: حفظ پرچمهای خط مفسر. افزودن گزینهی -a به اسکریپت pathscript.py: افزودن پرچمها.
رابط C API¶
bpo-37633: اکسپورت مجدد برخی پوششیهای سازگاری تابع برای ماکروها در
pythonrun.h.bpo-38644: توابع
Py_EnterRecursiveCall()وPy_LeaveRecursiveCall()را بهعنوان توابع معمولی برای API محدود فراهم کنید. پیشتر، آنها بهعنوان ماکرو تعریف شده بودند، اما این ماکروها با API محدود که نمیتواند به فیلدPyThreadState.recursion_depthدسترسی داشته باشد، کار نمیکردند. حذف_Py_CheckRecursionLimitاز ABI پایدار.bpo-38650: متغیر سراسری
PyStructSequence_UnnamedFieldاکنون یک ثابت است و به یک رشتهی ثابت اشاره میکند.bpo-38540: رفع نشت احتمالی در
PyArg_Parse()و توابع مشابه برای واحدهای قالب"es#"و"et#"هنگامی که ماکروPY_SSIZE_T_CLEANتعریف نشده است.bpo-38395: رفع یک فروپاشی در شیءهای
weakref.proxyبه دلیل مدیریت نادرست طول عمر هنگام فراخوانی برخی متدهای مرتبط که ممکن است آخرین ارجاع به شیء در حال ارجاع توسط پراکسی را حذف کنند. وصله توسط Pablo Galindo.bpo-36389: تابع
_PyObject_CheckConsistency()اکنون در حالت انتشار (release) نیز در دسترس است. برای مثال، میتوان از آن برای رفع اشکال یک فروپاشی در تابعvisit_decref()مربوط به GC استفاده کرد.bpo-38266: بازگرداندن حذف PyThreadState_DeleteCurrent() همراه با مستندات.
bpo-38303: بهروزرسانی ماژول توسعهای audioop برای استفاده از ABI پایدار (PEP-384). وصله توسط Tyler Kieft.
bpo-38234: تابع
Py_SetPath()اکنونsys.executableرا روی مسیر کامل برنامه (Py_GetProgramFullPath()) تنظیم میکند تا نام برنامه (Py_GetProgramName()).bpo-38234: پایتون آرگومانهای ارسالشده به
Py_SetPath()،Py_SetPythonHome()وPy_SetProgramName()را نادیده میگرفت: اصلاح راهاندازی پایتون برای استفاده از آرگومانهای مشخصشده.bpo-38205: ماکرو
Py_UNREACHABLE()اکنونPy_FatalError()را فراخوانی میکند.bpo-38140: مبهمسازی آفستهای dict و weakref برای انواع هیپ C با عبور دادن آفستها از طریق PyMemberDef
bpo-15088: تابع C به نام
PyGen_NeedsFinalizingحذف شده است. این تابع مستند نشده بود، تست نشده بود و پس از پیادهسازی PEP 442 در هیچکجا درون CPython استفاده نمیشد. وصله توسط Joannah Nanjekye. (وصله توسط Joannah Nanjekye)bpo-36763: گزینههای اضافه شده توسط
PySys_AddXOption()اکنون به همان روشی مدیریت میشوند کهPyConfig.xoptionsو گزینههای خط فرمان-Xمدیریت میشوند.bpo-37926: رفع یک فروپاشی در تابع
PySys_SetArgvEx(0, NULL, 0).bpo-37879: اصلاح subtype_dealloc برای جلوگیری از کاهش شمارشگر ارجاع (decref) نوع هنگامی که نوع پایه یک نوع هیپ (heap type) در زبان C است.
bpo-37645: افزودن
_PyObject_FunctionStr()برای دریافت نمایش متنی کاربرپسند از یک شیء تابعمانند. وصله توسط Jeroen Demeyer.bpo-29548: توابع
PyEval_CallObject،PyEval_CallFunction،PyEval_CallMethodوPyEval_CallObjectWithKeywordsمنسوخ شدهاند. بهجای آنها ازPyObject_Call()و انواع مشتقشدهی آن استفاده کنید.bpo-37151: تابع
PyCFunction_Callاکنون یک نام مستعار منسوخ شده برایPyObject_Call()است.bpo-37540: پروتکل vectorcall اکنون ایجاب میکند که فراخواننده فقط رشتهها را به عنوان نام کلیدواژهها ارسال کند.
bpo-37207: پروتکل vectorcall اکنون برای اشیای نوع (
typeobjects) فعال شده است: تنظیمtp_vectorcallروی یک تابع vectorcall برای استفاده بهجایtp_newوtp_initهنگام فراخوانی خود کلاس.bpo-21120: مستثنی کردن Python-ast.h، ast.h و asdl.h از رابط برنامهنویسی محدود (limited API).
bpo-37483: افزودن تابع جدید
_PyObject_CallOneArgبرای فراخوانی یک شیء با یک آرگومان جایگاهی.bpo-36763: افزودن تابع
PyConfig_SetWideStringList().bpo-37337: افزودن توابع سریع برای فراخوانی متدها:
_PyObject_VectorcallMethod()،_PyObject_CallMethodNoArgs()و_PyObject_CallMethodOneArg().bpo-28805: قرارداد فراخوانی
METH_FASTCALLمستندسازی شده است.bpo-37221: تابع جدید
PyCode_NewWithPosOnlyArgs()امکان ایجاد اشیای کد را مشابهPyCode_New()فراهم میکند، با این تفاوت که دارای پارامتر اضافی posonlyargcount برای تعیین تعداد آرگومانهای فقط-جایگاهی است.bpo-37194: افزودن یک تابع عمومی جدید
PyObject_CallNoArgs()به API زبان C: فراخوانی یک شیء پایتون فراخوانیپذیر بدون هیچ آرگومان. این کارآمدترین راه برای فراخوانی یک کالبک بدون هیچ آرگومان است. به عنوان مثال، روی معماری x86-64، تابعPyObject_CallFunctionObjArgs(func, NULL)مقدار ۹۶۰ بایت حافظه در پشته (stack) به ازای هر فراخوانی تخصیص میدهد، در حالی کهPyObject_CallNoArgs(func)تنها ۶۲۴ بایت به ازای هر فراخوانی تخصیص میدهد.bpo-37170: رفع تبدیل نوع (cast) در هنگام بروز خطا در
PyLong_AsUnsignedLongLongMask().bpo-35381: تبدیل انواع تخصیصیافته به صورت ایستا یعنی
DirEntryTypeوScandirIteratorTypeدر posixmodule.c به انواع تخصیصیافته روی هیپ.bpo-34331: استفاده از اسم مفرد/جمع در پیام خطا هنگام نمونهسازی از یک کلاس انتزاعی با متد(های) انتزاعی بازنویسینشده.
پایتون ۳.۸.۰ بتا ۱¶
Release date: 2019-06-04
امنیت¶
bpo-35907: CVE 2019-9948: با غیرفعال کردن طرحوارههای URL به شکل
local-file://وlocal_file://در متدهایURLopener().open()وURLopener().retrieve()از ماژولurllib.request، از خواندن پرونده جلوگیری کنید.bpo-33529: جلوگیری از ورود تابع «تا» (fold) که در کدگذاری سرآیند ایمیل استفاده میشود، به حلقهی بینهایت هنگامی که تعداد نویسههای غیر ASCII در یک سرآیند بیش از حد زیاد است.
bpo-33164: بهروزرسانی پیادهسازی blake2 که از پیادهسازی امن memset فراهمشده توسط سکو استفاده میکند.
هسته و توکارها (Core and Builtins)¶
bpo-35814: اجازه دادن به بازکردن بسته در سمت راست انتسابهای نوعدهیشده. بهویژه، عبارت
t: Tuple[int, ...] = x, y, *zاکنون مجاز است.bpo-37126: تمام اشیای structseq اکنون توسط جمعآور زباله ردیابی میشوند. وصله توسط Pablo Galindo.
bpo-37122: ویژگی co_argcount از اشیای کد را به گونهای بسازید که نشاندهندهی تعداد کل آرگومانهای جایگاهی (شامل آرگومانهای فقط-جایگاهی) باشد. مقدار co_posonlyargcount میتواند برای تمایز اینکه کدام آرگومانها فقط جایگاهی هستند استفاده شود و تفاضل (co_argcount - co_posonlyargcount) تعداد آرگومانهای جایگاهی-یا-کلیدواژهای است. وصله توسط Pablo Galindo.
bpo-20092: سازندهای
int،floatوcomplexاکنون در صورت موجود بودن و موجود نبودن متد متناظر__int__()،__float__()یا__complex__()، از متد ویژه__index__()استفاده خواهند کرد.bpo-37087: افزودن پشتیبانی از شناسه نخ (TID) بومی به OpenBSD.
bpo-26219: مکانیزم نهانگاه به ازای آپکد پیادهسازی شد و دستور
LOAD_GLOBALاز آن استفاده میکند. دستورLOAD_GLOBALاکنون حدود ۴۰ درصد سریعتر است. مشارکت توسط Yury Selivanov و Inada Naoki.bpo-37072: رفع فروپاشی در PyAST_FromNodeObject() هنگامی که flags مقدار NULL دارد.
bpo-37029: آزادسازی تعداد زیادی از اشیای کوچک میتواند به دلیل استفاده از جستجوی خطی برای نگه داشتن فهرست آرناهای قابل استفادهی
obmalloc.cکه بر اساس تعداد استخرهای حافظهی آزاد مرتب شدهاند، زمان از درجهی دوم نسبت به تعداد آرناها بگیرد. این کار اکنون بدون جستجو انجام میشود و زمان بدترین حالت را نسبت به تعداد آرناها خطی میکند. برای برنامههایی که این موضوع به طور محسوسی اهمیت دارد (معمولاً با بیش از ۱۰۰ هزار شیء کوچک فعال به طور همزمان)، این امر میتواند زمان مورد نیاز برای آزادسازی حافظهی آنها را به شدت کاهش دهد.bpo-26423: رفع سرریز احتمالی در
wrap_lenfunc()هنگامی کهsizeof(long) < sizeof(Py_ssize_t)است (مثلاً ویندوز ۶۴ بیتی).bpo-37050: بهبود درخت نحوی انتزاعی (AST) برای افاسترینگهای «اشکالزدایی» که از '=' برای چاپ منبع عبارت در حال ارزیابی استفاده میکنند. حذف expr_text از گره FormattedValue و استفاده از یک گره رشتهی ثابت به جای آن (که احتمالاً با عبارتهای ثابت مجاور داخل افاسترینگ ادغام شده است).
bpo-22385: متدهای
bytes.hex،bytearray.hexوmemoryview.hexو همچنین توابعbinascii.hexlifyوb2a_hexاکنون این قابلیت را دارند که یک جداکننده اختیاری بین بایتهای مبنای شانزده قرار دهند. این قابلیت از پیادهسازی hexlify در MicroPython الهام گرفته شده است.bpo-26836: افزودن
os.memfd_create().bpo-37032: افزودن متد جدید
replace()به نوع کد (types.CodeType).bpo-37007: پیادهسازی
socket.if_nameindex()،socket.if_nametoindex()وsocket.if_indextoname()روی ویندوز.bpo-36829: تابع
PyErr_WriteUnraisable()اکنون در صورت عدم وجود ردگیری فعلی، یک شیء ردگیری ایجاد میکند. علاوه بر این، برای عادیسازی مقدار استثنا،PyErr_NormalizeException()وPyException_SetTraceback()را فراخوانی کنید. هرگونه خطا را نادیده بگیرید.bpo-36878: متن پس از
# type: ignoreرا تنها در صورتی بپذیرید که اولین نویسه آن ASCII باشد. این کار برای جلوگیری از مواردی مانند# type: ignoreéاست.bpo-36878: ذخیرهسازی متن ظاهرشده پس از کامنت
# type: ignoreدر درخت نحوی انتزاعی (AST). برای مثال، یک نادیدهگیری نوع مانند# type: ignore[E1000]رشتهی"[E1000]"را در گره درخت نحوی انتزاعی (AST) خود ذخیره خواهد کرد.bpo-2180: ادامهی سطر در EOF توسط Anthony Sottile به عنوان یک
SyntaxErrorدر نظر گرفته شد.bpo-36907: برطرف کردن یک فروپاشی هنگام فراخوانی یک تابع C با یک دیکشنری کلیدواژه (
f(**kwargs)) و تغییر دادن دیکشنریkwargsدر حالی که آن تابع در حال اجرا است.bpo-36946: برطرف کردن سرریز عدد صحیح علامتدار احتمالی هنگام کار با اسلایسها.
bpo-36826: افزودن پشتیبانی از نوع NamedExpression به ast_unparse.c
bpo-1875: اگر یک بلوک کد که قرار است بهینهسازی و حذف شود (مثلاً شرایط if که همیشه نادرست هستند) حاوی خطاهای نحوی باشد، اکنون یک
SyntaxErrorبالا آورده میشود. وصله توسط Pablo Galindo.bpo-36027: امکان محاسبه معکوسهای پیمانهای از طریق
powسه آرگومانی فراهم شد: اکنون آرگومان دوم در مواردی که آرگومان اول و سوم نسبت به هم اول باشند، میتواند منفی باشد.bpo-36861: بهروزرسانی پایگاه دادهی یونیکد به نسخهی 12.1.0.
bpo-28866: جلوگیری از ذخیرهسازی ویژگیهای کلاسهایی که نوع آنها تابع mro() را تعریف میکند تا از بروز یک مشکل سخت در نامعتبرسازی نهانگاه جلوگیری شود.
bpo-36851: اگر اجرای برنامه با return پایان یابد و پشته خالی نباشد، پشتهی
FrameTypeاکنون به درستی پاکسازی میشود.bpo-34616: توابع توکار
compile()اکنون از پرچمast.PyCF_ALLOW_TOP_LEVEL_AWAITپشتیبانی میکنند که به کامپایل کردن کدهایی که حاویawait،async withیاasync forدر سطح بالا هستند، اجازه میدهد. این ویژگی برای ارزیابی کدهای ناهمگام از درون توابع ازپیشناهمگام مفید است؛ برای مثال در یک REPL سفارشی.bpo-36842: پیادهسازی PEP 578، افزودن sys.audit، io.open_code و APIهای مرتبط.
bpo-27639: اصلاح نوع بازگشتی برای عملیات اسلایس UserList. وصله توسط Michael Blahay، Erick Cervantes و vaultah
bpo-36737: انتقال PyRuntimeState.warnings به وضعیت درونمفسری (از طریق «وضعیت ماژول»).
bpo-36793: پیادهسازیهای
__str__از انوع توکارbool،int،float،complexو تعداد کمی از کلاسها از کتابخانه استاندارد حذف شدند. آنها اکنون__str__()را ازobjectبه ارث میبرند.bpo-36817: افزودن ویژگی
=به افاسترینگها برای اشکالزدایی. این ویژگی میتواند پیش از!s،!rیا!aقرار گیرد. این ویژگی متن عبارت را تولید میکند و به دنبال آن یک علامت مساوی و سپس reprِ مقدار عبارت میآید. بنابراینf'{3*9+15=}'برابر با رشتهی'3*9+15=42'خواهد بود. اگر=مشخص شود، تبدیل پیشفرض روی!rتنظیم میشود، مگر اینکه مشخصات قالببندی داده شده باشد که در این صورت رفتار قالببندی تغییر نمیکند و از __format__ استفاده خواهد شد.bpo-24048: ذخیرهسازی استثنای زنده در حین اجرای
remove_module()در import.c.bpo-27987: مفسر pymalloc برای انطباق با ABI در x86-64، بلوکهای حافظه را به جای ۸ بایت، با تراز ۱۶ بایتی در پلتفرمهای ۶۴ بیتی برمیگرداند. کامپایلرهای جدیدتر بیشتر اوقات این تراز را فرض میکنند. وصله توسط Inada Naoki.
bpo-36601: بررسی بیمعنیِ طولانیمدت برای
getpid() == main_pidاز هندلر سیگنال داخلی C پایتون حذف شد.bpo-36594: برطرف کردن استفاده نادرست از
%pدر رشتههای قالببندی. وصله توسط Zackery Spytz.bpo-36045: تابع
builtins.help()اکنون پیشوندasyncرا برای توابع ناهمگام اضافه میکند.bpo-36084: افزودن شناسهی نخ (TID) بومی به اشیای threading.Thread (پلتفرمهای پشتیبانیشده: ویندوز، FreeBSD، لینوکس، macOS)
bpo-36035: افزودن اصلاحیه برای پیوندهای نمادین معیوب در ترکیب با pathlib
bpo-35983: افزودن ماکروهای زبالهدان جدید برای رسیدگی به آزادسازی مضاعفی که ممکن است زمانی رخ دهد که تابع
tp_deallocیک زیرکلاس، تابعtp_deallocیک کلاس پایه را فراخوانی میکند و آن کلاس پایه از مکانیزم زبالهدان استفاده میکند. وصل توسط Jeroen Demeyer.bpo-20602: پاکسازی نکردن
sys.flagsوsys.float_infoدر هنگام خاموش شدن. وصل توسط Zackery Spytz.bpo-26826: ارائهی
copy_file_range()به عنوان یک API سطح پایین در ماژولos.bpo-32388: حذف نیاز سازگاری دودویی بین نسخهها در tp_flags.
bpo-31862: انتقال binascii به مقداردهی اولیه چندمرحلهای PEP 489. وصل توسط Marcel Plch.
کتابخانه¶
bpo-37128: افزودن
math.perm().bpo-37120: افزودن SSLContext.num_tickets برای کنترل تعداد بلیتهای نشست TLSv1.3.
bpo-12202: اصلاح مدیریت خطا در
msilib.SummaryInformation.GetProperty(). وصل توسط Zackery Spytz.bpo-26835: ماژول fcntl اکنون شامل ثابتهای مسدودسازی پرونده برای مسدود کردن memfdها است.
bpo-29262: افزودن کمکیهای دروننگری
get_origin()وget_args()به ماژولtyping.bpo-12639: متد
msilib.Directory.start_component()اگر keyfile برابر باNoneنباشد دیگر با خطا مواجه نمیشود.bpo-36999: افزودن متد
asyncio.Task.get_coro()برای دسترسی عمومی به شیء همروال وظایف.bpo-35246: وادار کردن
asyncio.create_subprocess_exec()به پذیرش آرگومانهای شبیه به مسیر.bpo-35279: تغییر پیشفرض max_workers در
ThreadPoolExecutorازcpu_count() * 5بهmin(32, cpu_count() + 4). مقدار قبلی در بسیاری از ماشینهای چندهستهای به طور غیرمنطقی بزرگ بود.bpo-37076: تابع
_thread.start_new_thread()اکنون به جایsys.excepthook()، استثنای صیدنشدهی ایجادشده توسط تابع را با استفاده ازsys.unraisablehook()ثبت میکند، بنابراین قلاب به تابعی که استثنا را ایجاد کرده است دسترسی دارد.bpo-33725: روی سیستمعامل macOS، ماژول
multiprocessingاکنون به طور پیشفرض از متد شروع spawn استفاده میکند.bpo-37054: رفع مخرب
_pyio.BytesIOو_pyio.TextIOWrapper: مقداردهی اولیهی ویژگی_bufferآنها در سریعترین زمان ممکن (در بدنهی کلاس)، زیرا توسط__del__()کهclose()را فراخوانی میکند، استفاده میشود.bpo-37058: سند PEP 544: افزودن
Protocolو@runtime_checkableبه ماژولtyping.bpo-36933: توابع
sys.set_coroutine_wrapperوsys.get_coroutine_wrapperکه در نسخهی ۳.۸ منسوخ شده و برای حذف علامتگذاری شده بودند، حذف شدند.bpo-37047: مدیریت اتصالات دیرهنگام (late binding) و دسترسی به ویژگیها در راهاندازی
unittest.mock.AsyncMockبرای مشخصهگذاری خودکار. مستندسازی متدهای ناهمگام تازه پیادهسازیشده درunittest.mock.MagicMock.bpo-37049: PEP 589: افزودن
TypedDictبه ماژولtyping.bpo-37046: PEP 586: افزودن
Literalبه ماژولtyping.bpo-37045: PEP 591: افزودن مشخصکنندهی
Finalو دکوراتور@finalبه ماژولtyping.bpo-37035: اگر خطای مهلکی در انتقالدهندهی (transport) asyncio رخ داده باشد، استثناهای مبتنی بر OSError را ثبت (log) نکنید. طرف مقابل (peer) میتواند تقریباً هر خطایی از نوع OSError را تولید کند و کاربر نمیتواند با اصلاح کد خود از این استثناها جلوگیری کند. خطاها همچنان به کد کاربر پروپاگیت میشوند، فقط ثبت آنها بیمعنی است و گزارشهای asyncio را آلوده میکند.
bpo-37001: تابع
symtable.symtable()اکنون همان انواعی از ورودی را برای کد منبع میپذیرد که تابع توکارcompile()میپذیرد. وصلهای از Dino Viehland.bpo-37028: پیادهسازی REPL برای asyncio
bpo-37027: برگرداندن شیء سوکت پراکسی با قابلیت استفادهی امن از متد transport.get_extra_info('socket')
bpo-32528: تبدیل asyncio.CancelledError به یک BaseException.
این تغییر به اشتباه رایجی که بسیاری از کاربران asyncio مرتکب میشوند رسیدگی میکند: یک بلوک "except Exception" که لغو وظایف (Tasks) را مختل میکند.
علاوه بر این تغییر، ما ارثبری asyncio.TimeoutError و asyncio.InvalidStateError را از همتاهای آنها در concurrent.futures.* متوقف میکنیم. دلیلی ندارد که این استثناها زنجیرهی ارثبری مشترکی داشته باشند.
bpo-1230540: افزودن یک تابع جدید
threading.excepthook()که استثنای مدیریتنشدهیthreading.Thread.run()را مدیریت میکند. این تابع را میتوان بازنویسی (override) کرد تا نحوهی مدیریت استثناهای مدیریتنشدهیthreading.Thread.run()کنترل شود.bpo-36996: مدیریت
unittest.mock.patch()هنگامی که به عنوان دکوراتور روی توابع ناهمگام استفاده میشود.bpo-37008: افزودن پشتیبانی برای فراخوانی
next()با شیء ماک حاصل ازunittest.mock.mock_open()bpo-27737: امکان کدگذاری سرآیند شامل فقط فضای خالی در
email.header- توسط Batuhan Taskayabpo-36969: دستور
argsدر PDB اکنون آرگومانهای صرفاً جایگاهی را نمایش میدهد. وصلهای مشارکتی از Rémi Lapeyre.bpo-36969: دستور
argsدر PDB اکنون آرگومانهای صرفاً کلیدواژهای را نمایش میدهد. وصلهای مشارکتی از Rémi Lapeyre.bpo-36983: افزودن نامهای گمشده به
typing.__all__:ChainMap،ForwardRef،OrderedDict- توسط Anthony Sottile.bpo-36972: افزودن پروتکل SupportsIndex به ماژول typing برای اجازه دادن به بررسی نوع جهت تشخیص کلاسهایی که میتوانند به
hex()،oct()وbin()ارسال شوند.bpo-32972: پیادهسازی
unittest.IsolatedAsyncioTestCaseبرای کمک به آزمایش کدهای مبتنی بر asyncio.bpo-36952: آرگومانهای bufsize در
fileinput.input()وfileinput.FileInputحذف شدند (این آرگومان از نسخهی ۳.۶ پایتون منسوخ شده و نادیده گرفته میشد)، و در نتیجه آرگومانهای mode و openhook به صورت فقط-کلیدواژه (keyword-only) درآمدند.bpo-36952: از نسخهی ۳.۳ پایتون به بعد، ایمپورت کردن ABCها از
collectionsمنسوخ شده است و این کار باید ازcollections.abcانجام شود. امکان ایمپورت کردن ازcollectionsکه برای حذف در نسخهی ۳.۸ نشانهگذاری شده بود، به نسخهی ۳.۹ به تعویق افتاد؛ مستندات وDeprecationWarningاصلاح و شفافسازی شدند.bpo-36949: پیادهسازی __repr__ برای اشیای WeakSet.
bpo-36948: رفع خطای
NameErrorدرurllib.request.URLopener.retrieve(). وصله توسط Karthikeyan Singaravelan.bpo-33524: رفع مشکل تا کردن سرآیند ایمیل زمانی که max_line_length برابر با 0 یا None است و سرآیند شامل نویسههای غیر ascii میشود. مشارکتکننده: Licht Takeuchi (@Licht-T).
bpo-24564: تابع
shutil.copystat()اکنون خطایerrno.EINVALرا درos.setxattr()نادیده میگیرد؛ این خطا ممکن است هنگام کپی کردن پروندهها در سامانههای فایلبندی بدون پشتیبانی از ویژگیهای توسعهیافته رخ دهد.وصلهی اصلی توسط Giampaolo Rodola، بهروزرسانی توسط Ying Wang.
bpo-36888: فرایندهای فرزند پایتون اکنون میتوانند با استفاده از multiprocessing.process.parent_process به وضعیت فرایند والد خود دسترسی داشته باشند.
bpo-36921: منسوخ کردن
@coroutineبه خاطرasync def.bpo-25652: رفع باگ در
__rmod__مربوط بهUserString- توسط Batuhan Taskaya.bpo-36916: حذف پیامی دربارهی یک استثنای مدیریتنشده در یک وظیفه، هنگامی که writer.write() بدون await استفاده میشود و writer.drain() با یک استثنا با شکست مواجه میشود.
bpo-36889: معرفی کلاس
asyncio.Streamکه قابلیتهایasyncio.StreamReaderوasyncio.StreamWriterرا ادغام میکند. کلاسasyncio.Streamمیتواند در حالتهای فقطخواندنی، فقطنوشتنی و خواندنی-نوشتنی کار کند. ارائهی توابع کارخانهایasyncio.connect()،asyncio.connect_unix()،asyncio.connect_read_pipe()وasyncio.connect_write_pipe()برای باز کردن اتصالهایasyncio.Stream. ارائهیasyncio.StreamServerوUnixStreamServerبرای ارائه سرویسها با API مربوط به asyncio.Stream. اصلاحasyncio.create_subprocess_shell()وasyncio.create_subprocess_exec()برای استفاده ازasyncio.Streamبه جای کلاسهای منسوخشدهیStreamReaderوStreamWriter. منسوخ کردن کلاسهایasyncio.StreamReaderوasyncio.StreamWriter. منسوخ کردن استفاده از کلاسهای خصوصی، مانندasyncio.FlowControlMixingوasyncio.StreamReaderProtocolدر خارج از بستهی asyncio.bpo-36845: افزودن اعتبارسنجی پیشوندهای اعداد صحیح به ساخت شبکهها و رابطهای IP در ماژول ipaddress.
bpo-23378: افزودن یک کنش extend به argparser.
bpo-36867: رفع باگی که باعث میشد یک نمونهی SharedMemoryManager و فرایند والد آن از دو فرایند resource_tracker مجزا استفاده کنند.
bpo-23896: افزودن یک دستور زبان به lib2to3.pygram که شامل exec به عنوان یک تابع است نه یک دستور.
bpo-36895: تابع
time.clock()در نسخهی ۳.۳ به نفعtime.perf_counter()منسوخ شده بود و برای حذف در نسخهی ۳.۸ نشانهگذاری شده بود، که اکنون حذف شده است.bpo-35545: رفع مشکل دور ریختن محدودههای IPv6 توسط asyncio هنگام اطمینان از وضوح نام میزبان به صورت داخلی.
bpo-36887: افزودن تابع جدید
math.isqrt()برای محاسبهی جذرهای صحیح.bpo-34632: معرفی ماژول
importlib.metadataبا پشتیبانی (مشروط) برای خواندن فراداده از بستههای شخص ثالث.bpo-36878: هنگام استفاده از
type_comments=Trueدرast.parse، عبارت# type: ignoreکه پس از آن یک نویسهی غیرحروفی-عددی و سپس متن دلخواهی میآید را به عنوان یک نادیدهگیری نوع در نظر بگیرید، به جای اینکه نیازی به چیزی جز فضای خالی یا یک کامنت دیگر نباشد. این کار برای مجاز دانستن الگوهایی مانند# type: ignore[E1000]است.bpo-36778: کدگذاری
cp65001(صفحهکد ۶۵۰۰۱ ویندوز) به نام مستعاری برای کدگذاریutf_8تبدیل میشود.bpo-36867: ماژول multiprocessing.resource_tracker جایگزین ماژول multiprocessing.semaphore_tracker میشود. علاوه بر سمافورها، resource_tracker بخشهای حافظهی اشتراکی را نیز ردگیری میکند.
bpo-30262: اشیاء
CacheوStatementاز ماژولsqlite3در معرض کاربر قرار نمیگیرند. وصلهای توسط Aviv Palivoda.bpo-24538: در تابع
shutil.copystat()، ابتدا ویژگیهای توسعهیافتهی پرونده و سپس دسترسیهای پرونده را کپی کنید، زیرا ویژگیهای توسعهیافته تنها زمانی روی مقصد قابل تنظیم هستند که همچنان قابل نوشتن باشد.bpo-36829: افزودن تابع جدید
sys.unraisablehook()که میتواند بازنویسی شود تا نحوهی مدیریت «استثناهای غیرقابلپرتاب» را کنترل کند. این تابع زمانی فراخوانی میشود که استثنایی رخ داده است اما هیچ راهی برای پایتون جهت مدیریت آن وجود ندارد. برای مثال، زمانی که یک تخریبگر استثنایی را پرتاب میکند یا در طول زبالهروبی (gc.collect()).bpo-36832: معرفی
zipfile.Path، یک پوشش سازگار با pathlib برای پیمایش پروندههای zip.bpo-36814: رفع مشکلی که در آن os.posix_spawnp() به اشتباه یک TypeError پرتاب میکرد هنگامی که file_actions برابر با None بود.
bpo-33110: مدیریت درست استثناهای پرتابشده توسط توابع اضافه شده توسط add_done_callback در concurrent.futures هنگامی که Future از قبل کامل شده است.
bpo-26903: محدود کردن
max_workersدرProcessPoolExecutorبه 61 برای دور زدن محدودیت WaitForMultipleObjects.bpo-36813: رفع
QueueListenerبرای فراخوانیqueue.task_done()هنگام متوقف شدن. وصلهای توسط Bar Harel.bpo-36806: ممنوعیت ایجاد اشیاء جریان asyncio مانند StreamReader، StreamWriter، Process و پروتکلهای آنها در خارج از بستهی asyncio.
bpo-36802: ارائهی فراخوانیهای همگام و ناهمگام برای StreamWriter.write() و StreamWriter.close()
bpo-36801: مدیریت درست بستهشدن اتصال SSL در فراخوانی StreamWriter.drain() در asyncio.
bpo-36785: پیادهسازی PEP 574 (پروتکل پیکل ۵ با بافرهای خارج از باند).
bpo-36772: تابع functools.lru_cache() اکنون علاوه بر کاربرد موجود خود به عنوان تابعی که یک دکوراتور برمیگرداند، میتواند به عنوان یک دکوراتور مستقیم نیز استفاده شود.
bpo-6584: افزودن یک استثنای
BadGzipFileبه ماژولgzip.bpo-36748: بهینهسازی بافر کردن نوشتن در پیادهسازی C از
TextIOWrapper. نوشتن رشتهی اسکی رویTextIOWrapperبا کدگذاری ascii، latin1 یا utf-8 حدود ۲۰ درصد سریعتر است. وصلهای توسط Inada Naoki.bpo-8138: علامتگذاری نکردن
wsgiref.simple_server.SimpleServerبه عنوان چندنخی از آنجا کهwsgiref.simple_server.WSGIServerتکنخی است.bpo-22640: تابع
py_compile.compile()اکنون از حالت صامت پشتیبانی میکند. وصله توسط Joannah Nanjekyebpo-29183: رفع مشکل استثناهای دوگانه در
wsgiref.handlers.BaseHandlerبا فراخوانی متدclose()آن تنها زمانی که هیچ استثنایی رخ نداده است.bpo-36548: بهبود repr پرچمهای عبارت باقاعده.
bpo-36542: امضای توابع پایتون اکنون میتواند با مشخص کردن صفت
__text_signature__بازنویسی شود.bpo-36533: قفلهای logging.Handler در فرایندهای فرزند انشعابیافته مجدداً مقداردهی اولیه میشوند، به جای اینکه تلاش شود همه آنها قبل از انشعاب در والد به دست بیایند تا فقط در فرایند فرزند آزاد شوند. الگوی بهدستآوردن/آزاد کردن منجر به بنبست در کدهایی میشد که هر نوع هندلر گزارشگیری زنجیرهای وابسته به یکدیگر را پیادهسازی کردهاند، زیرا ترتیب بهدستآوردن قفل قابل تضمین نیست.
bpo-35252: هنگام استفاده از حاشیهنویسی نوع نامعتبر با singledispatch به جای AssertionError یک TypeError پرتاب کنید.
bpo-35900: به متدهای کاهش اجازه دهید یک تاپل ۶ آیتمی برگردانند که در آن آیتم ششم یک متد تنظیم وضعیت سفارشی را مشخص میکند که به جای متد معمول
__setstate__فراخوانی میشود.bpo-35900: فعالسازی ثبت کالبک کاهش سفارشی برای توابع و کلاسها در _pickle.c، با استفاده از ویژگی جدید پیکلساز یعنی
reducer_overridebpo-36368: رفع باگی که باعث کرش کردن نمونههای SharedMemoryManager در نشستهای تعاملی پس از ارسال ctrl-c (KeyboardInterrupt) میشد
bpo-31904: رفع خطای mmap برای VxWorks
bpo-27497: متد
csv.DictWriter.writeheader()اکنون مقدار بازگشتی متد زیرینcsv.Writer.writerow()را برمیگرداند. وصله مشارکت داده شده توسط Ashish Nitin Patil.bpo-36239: تجزیه پروندههای .mo اکنون کامنتهایی را که با #-#-#-#-# شروع و تمام میشوند، نادیده میگیرد.
bpo-26707: امکان خواندن و نوشتن پروندههای plist دودویی که به عنوان یک پرونده KeyedArchive ایجاد شدهاند را برای plistlib فراهم کنید. به طور خاص، این امر به plistlib اجازه میدهد تا توکنهای 0x80 را به عنوان شیءهای UID پردازش کند.
bpo-31904: افزودن پشتیبانی ماژول posix برای VxWorks.
bpo-35125: Asyncio: حذف کالبک داخلی در لغو بیرونی در shield
bpo-35721: رفع نشت توصیفگر پرونده در
asyncio.SelectorEventLoop.subprocess_exec()اگرPopenشکست بخورد و باstdin=subprocess.PIPEفراخوانی شود. وصله توسط Niklas Fiekas.bpo-31855: نتایج
unittest.mock.mock_open()اکنون به آرگومان read([size]) احترام میگذارد. وصله مشارکت داده شده توسط Rémi Lapeyre.bpo-35431: پیادهسازی
math.comb()که ضریب دوجملهای را برمیگرداند و تعداد راههای انتخاب k آیتم از n آیتم را بدون تکرار و بدون ترتیب محاسبه میکند. وصله توسط Yash Aggarwal و Keller Fuchs.bpo-26660: رفع خطاهای دسترسی در پاکسازی
TemporaryDirectory. پیش از این،TemporaryDirectory.cleanup()زمانی که پروندهها یا پوشههای غیرقابل نوشتن یا غیرقابل جستجو در داخل یک پوشهی موقت ایجاد میشدند، با شکست مواجه میشد.bpo-34271: افزودن کمکیهای اشکالزدایی به ماژول ssl. اکنون امکان برونریزی دادههای کلید و ردیابی پروتکل TLS وجود دارد. زمینههای پیشفرض و stdlib همچنین از متغیر محیطی SSLKEYLOGFILE پشتیبانی میکنند.
bpo-26467: افزودهشدن AsyncMock برای پشتیبانی از استفادهی unittest به منظور ماک کردن همروالهای asyncio. وصلهای از Lisa Roach.
bpo-33569: dataclasses.InitVar: نوع دادهی استفادهشده برای ایجاد متغیر مقداردهی اولیه را نمایان میکند.
bpo-34424: رفع مشکل سریالسازی پیامهای حاوی رشتههای کدگذاریشده هنگامی که policy.linesep روی یک رشتهی چندنویسهای تنظیم شده است. تکهکد از Jens Troeger.
bpo-34303: کارایی
functools.reduce()بهطور جزئی بهبود یافته است. تکهکد از Sergey Fedoseev.bpo-33361: رفع یک باگ در
codecs.StreamRecoderکه در آن مکانیابی ممکن است دادههای قدیمی را در یک باافر باقی بگذارد و فراخوانیهای خواندن بعدی را مختل کند. وصله توسط Ammar Askar.bpo-22454: ماژول
shlexاکنون تابعshlex.join()را که معکوسshlex.split()است، نمایان میکند. تکهکد از Bo Bayles.bpo-31922:
asyncio.AbstractEventLoop.create_datagram_endpoint(): وقتی پخش مجاز است، سوکت UDP را متصل نکنید. این کار اجازه میدهد پاسخها پس از یک پخش UDP دریافت شوند.bpo-24882: تغییر ThreadPoolExecutor برای استفاده از نخهای آمادهی موجود قبل از راهاندازی نخهای جدید.
bpo-31961: افزودن پشتیبانی از بایتها و اشیاء شبهمسیر در
subprocess.Popen()در ویندوز. پارامتر args اکنون اگر shell برابر باFalseباشد، یک شیء شبهمسیر و دنبالهای شامل بایتها و اشیاء شبهمسیر را میپذیرد. پارامتر executable اکنون بایتها و شیء شبهمسیر را میپذیرد. پارامتر cwd اکنون یک شیء بایت را میپذیرد. بر اساس تکهکد از Anders Lorentsen.bpo-33123: تابع
pathlib.Path.unlinkاکنون پارامتر missing_ok را میپذیرد تا از پرتاب شدن یک خطایFileNotFoundErrorجلوگیری کند. تکهکد از Robert Buchholz.bpo-32941: امکان دسترسی اشیاء
mmap.mmapبه فراخوانی سیستمی madvise() (از طریقmmap.mmap.madvise()).bpo-22102: افزودن پشتیبانی برای پروندههای ZIP با دیسکهای تنظیمشده روی 0. اینگونه پروندهها معمولاً توسط ابزارهای توکار در ویندوز هنگام استفاده از افزونهی ZIP64 ایجاد میشوند. تکهکد از Francisco Facioni.
bpo-32515: پروندهی trace.py اکنون میتواند ماژولها را از طریق python3 -m trace -t --module module_name اجرا کند.
bpo-32299: تغییر
unittest.mock.patch.dict()برای بازگرداندن دیکشنری وصلهشده هنگامی که به عنوان مدیر زمینه استفاده میشود. تکهکد از Vadim Tsander.bpo-27141: افزودن یک
__copy__()بهcollections.UserListوcollections.UserDictبه منظور پیادهسازی درست کپیبرداری سطحی از اشیاء. تکهکد از Bar Harel.bpo-31829: کاراکترهای
\r،\0و\x1a(پایان پرونده در ویندوز) اکنون در پروتکل 0 پیکلهای رشتههای یونیکد رمزگذاری (Escape) میشوند. این امر اجازه میدهد تا آنها بدون از دست رفتن داده از پروندههای بازشده در حالت متنی در پایتون 2 بارگذاری شوند.bpo-23395: تابع
_thread.interrupt_main()اکنون از تنظیم وضعیت خطای پایتون در صورتی که سیگنالSIGINTنادیده گرفته شده باشد یا توسط پایتون پردازش نشود، جلوگیری میکند.
مستندات¶
bpo-36896: شفافسازی این موضوع که برخی از نوع دادهها در نسخههای مختلف پایتون امضای سازندهی ناپایداری دارند.
bpo-36686: بهبود مستندات آرگومانهای stdin، stdout و stderr مربوط به تابع
asyncio.subprocess_execبرای مشخص کردن اینکه چه مقادیری پشتیبانی میشوند. همچنین ذکر این نکته که رمزگشایی به عنوان متن پشتیبانی نمیشود.چند آزمون برای تأیید اینکه مقادیر مختلف ارسالشده به آرگومانهای std* در واقع کار میکنند، اضافه کنید.
bpo-36984: بهبود ارجاعهای نسخهی افزوده شده در ماژول
typing- توسط Anthony Sottile.bpo-36868: بخش «چه چیز جدیدی است» اکنون به جای SSLContext.host_flags به SSLContext.hostname_checks_common_name اشاره میکند.
bpo-35924: افزودن یادداشتی به مستندات
curses.addstr()برای هشدار دادن دربارهی اینکه رشتههای چندخطی ممکن است به دلیل باگ ncurses باعث خطای حافظه (segfault) شوند.bpo-36783: مستندات C API برای Time_FromTimeAndFold و PyDateTime_FromDateAndTimeAndFold مطابق با PEP 495 (پیشنهاد بهبود پایتون) اضافه شد. وصله توسط Edison Abahurire.
bpo-36797: بخش بیشتری از مستندات قدیمی distutils یا حذف شدهاند، یا به شکل روشنتری علامتگذاری شدهاند مبنی بر اینکه صرفاً تا زمانی حفظ میشوند که مستندات setuptools به طور مستقل آنها را پوشش دهد.
bpo-22865: افزودن جزئیات به مستندات تابع
pty.spawn.bpo-35397: حذف انقضا (deprecation) و مستندسازی urllib.parse.unwrap(). وصلهی ارائهشده توسط Rémi Lapeyre.
bpo-32995: افزودن متغیر زمینه در واژهنامه.
bpo-33519: شفافسازی اینکه
copy()بخشی از کلاس پایه انتزاعیMutableSequenceنیست.bpo-33482: واداشتن
codecs.StreamRecoder.writelinesبه دریافت فهرستی از بایتها.bpo-25735: اضافه کردن مستندات برای تابع factorial برای نشان دادن اینکه مقادیر عدد صحیح برمیگرداند
bpo-20285: گسترش object.__doc__ (رشته مستند) برای واضحتر شدن آن. تغییر pydoc.py به گونهای که help(object) متدهای شیء را فهرست کند (برای سایر کلاسها، help متدهای کلاس پایهی شیء را حذف میکند).
آزمونها¶
bpo-37069: تغییر test_coroutines، test_cprofile، test_generators، test_raise، test_ssl و test_yield_from برای استفاده از
test.support.catch_unraisable_exception()به جایtest.support.captured_stderr().bpo-37098: رفع مشکل test_memfd_create در هستههای قدیمیتر لینوکس.
bpo-37081: آزمون با OpenSSL 1.1.1c
bpo-36829: افزودن
test.support.catch_unraisable_exception(): مدیر زمینهای که استثناهای غیرقابلپرتاب را با استفاده ازsys.unraisablehook()میگیرد.bpo-36915: فرایند اصلی regrtest اکنون همیشه تمام پوشههای موقت فرایندهای کارگر را پاک میکند، حتی اگر آنها دچار فروپاشی شوند یا با KeyboardInterrupt (CTRL+c) متوقف شوند.
bpo-36719: دستور «python3 -m test -jN ...» اکنون وقتی یک فرایند کارگر دچار فروپاشی میشود (وضعیت CHILD_ERROR)، اجرای آزمونهای بعدی را ادامه میدهد. پیش از این، مجموعه آزمون بلافاصله متوقف میشد. برای متوقف شدن در اولین خطا، از --failfast استفاده کنید.
bpo-36816: بهروزرسانی Lib/test/selfsigned_pythontestdotnet.pem برای تطابق با گواهی جدید TLS وبسایت self-signed.pythontest.net.
bpo-35925: رد کردن آزمونهای شبکهای httplib و nntplib در مواردی که ممکن است به دلیل استفاده از یک سیستمعامل مدرن یا توزیعی با سیاست پیشفرض OpenSSL (که اتصالات به سرورهای دارای گواهی ضعیف را رد میکند) با شکست مواجه شوند.
bpo-36782: افزودن آزمونهایی برای چندین تابع C API در ماژول
datetime. بستهی اصلاحی توسط Edison Abahurire.bpo-36342: رفع test_multiprocessing در test_venv اگر سکو فاقد sem_open عملکردی باشد.
ساخت¶
bpo-36721: برای تعبیه کردن پایتون در یک برنامه، گزینهی جدید
--embedباید بهpython3-config --libs --embedارسال شود تا-lpython3.8دریافت شود (پیوند دادن برنامه به libpython). برای پشتیبانی از نسخههای ۳.۸ و قدیمیتر، ابتداpython3-config --libs --embedرا امتحان کنید و در صورت شکست دستور قبلی، بهpython3-config --libs(بدون--embed) به عنوان جایگزین متوسل شوید.افزودن یک ماژول pkg-config به نام
python-3.8-embedبرای تعبیه کردن پایتون در یک برنامه:pkg-config python-3.8-embed --libsشامل-lpython3.8است. برای پشتیبانی از نسخههای ۳.۸ و قدیمیتر، ابتداpkg-config python-X.Y-embed --libsرا امتحان کنید و در صورت شکست دستور قبلی، بهpkg-config python-X.Y --libs(بدون--embed) به عنوان جایگزین متوسل شوید (به جایX.Yنسخهی پایتون را قرار دهید).از سوی دیگر،
pkg-config python3.8 --libsدیگر شامل-lpython3.8نیست. پسوندهای C نباید به libpython پیوند داده شوند (بهجز در اندروید، که این مورد توسط اسکریپت مدیریت میشود)؛ این تغییر به قصد ناسازگاری با نسخههای پیشین انجام شده است.bpo-36786: دستور "make install" اکنون compileall را به صورت موازی اجرا میکند.
Windows¶
bpo-36965: گنجاندن STATUS_CONTROL_C_EXIT بدون وابستگی به کامپایلر MSC
bpo-35926: بهروزرسانی به OpenSSL 1.1.1b برای ویندوز.
bpo-29883: افزودن پشتیبانی ویندوز برای انتقالهای UDP مربوط به حلقه رویداد Proactor. بستهی اصلاحی توسط Adam Meily.
bpo-33407: ماکروی
Py_DEPRECATED()برای MSVC پیادهسازی شده است.
مکاواس¶
bpo-36231: پشتیبانی از ساخت پایتون روی macOS بدون نصب بودن /usr/include. از نسخهی ۱۰.۱۴ macOS به بعد، پروندههای سرآیند سیستم فقط در قالب یک SDK ارائهشده توسط ابزارهای خط فرمان (Command Line Tools) یا برنامهی Xcode در دسترس هستند.
IDLE¶
bpo-35610: جایگزینی .context_use_ps1 که دیگر نیازی به آن نیست با .prompt_last_line. این کار، تغییر آغازشده در bpo-31858 را به پایان میبرد.
bpo-37038: قابلاجرا ساختن idlelib.run؛ افزودن بند آزمون.
bpo-36958: چاپ هر آرگومانی به غیر از None یا int که به SystemExit یا sys.exit() ارسال میشود.
bpo-36807: هنگام ذخیرهسازی یک پرونده، تابع os.fsync() را فراخوانی کنید تا بیتها مثلاً روی درایو USB تخلیه (flush) شوند.
bpo-32411: در پروندهی browser.py، مرتبسازی اضافی بر اساس شماره سطر را حذف کنید؛ زیرا دیکشنری بر اساس ترتیب شماره سطر ایجاد شده است.
Tools/Demos¶
bpo-37053: مدیریت صحیح رشتههایی مانند u"bar" در Tools/parser/unparse.py. بستهی اصلاحی توسط Chih-Hsuan Yen.
رابط C API¶
bpo-36763: پیادهسازی PEP 587 با عنوان "پیکربندی راهاندازی پایتون" (Python Initialization Configuration).
bpo-36379: رفع فروپاشیها هنگام تلاش برای استفاده از پارامتر modulo در زمانی که
__ipow__در زبان C پیادهسازی شده است.bpo-37107: بهروزرسانی
PyObject_CallMethodObjArgs()و_PyObject_CallMethodIdObjArgsجهت استفاده از_PyObject_GetMethodبرای جلوگیری از ایجاد یک شیء متد کراندار در بسیاری از موارد. بستهی اصلاحی توسط Michael J. Sullivan.bpo-36974: پیادهسازی PEP 590: Vectorcall: یک پروتکل فراخوانی سریع برای سیپایتون. این یک پروتکل جدید برای بهینهسازی فراخوانیهای اشیاء فراخوانیپذیر سفارشی است.
bpo-36763: اکنون اگر نوع استثنای فعلی
SystemExitباشد، تابعPy_Main()به جای فراخوانیPy_Exit(exitcode)هنگام فراخوانیPyErr_Print()، کد خروج را برمیگرداند.bpo-36922: اضافه کردن پرچم نوع جدید
Py_TPFLAGS_METHOD_DESCRIPTORبرای اشیایی که مانند متدهای آزاد رفتار میکنند. اینها اشیایی هستند که از بهینهسازی ارائه شده توسط آپکدهایLOAD_METHOD/CALL_METHODپشتیبانی میکنند. PEP 590 را ببینید.bpo-36728: تابع
PyEval_ReInitThreads()از C API حذف شده است. نباید به صورت صریح فراخوانی شود: به جای آن ازPyOS_AfterFork_Child()استفاده کنید.
Python 3.8.0 alpha 4¶
Release date: 2019-05-06
امنیت¶
bpo-36742: رفع مدیریت نادرست نویسههای پیشازنرمالسازی در urlsplit().
bpo-30458: رسیدگی به CVE 2019-9740 با غیرمجاز کردن مسیرهای URL دارای نویسههای فاصله یا کنترل تعبیهشده از طریق درخواست کلاینت http زیربنایی. چنین URLهای تزریق سرآیند به طور بالقوه مخرب اکنون باعث ایجاد استثنای http.client.InvalidURL میشوند.
bpo-35755: تابع
shutil.which()اکنون اگر متغیر محیطیPATHتنظیم نشده باشد و در دسترس باشد، ازos.confstr("CS_PATH")استفاده میکند. همچنین پوشهی فعلی را ازposixpath.defpathحذف کنید. در سیستمعامل یونیکس، اگر متغیر محیطیPATHتنظیم نشده باشد،shutil.which()و ماژولsubprocessدیگر به دنبال فایل اجرایی در پوشهی فعلی نمیگردند.
هسته و توکارها (Core and Builtins)¶
bpo-36722: در بیلد دیباگ، ایمپورت اکنون به دنبال افزونههای C کامپایلشده در حالت release و افزونههای C کامپایلشده در ABI پایدار نیز میگردد.
bpo-32849: رفع کد راهاندازی پایتون در FreeBSD برای تشخیص صحیح زمان نامعتبر بودن توصیفگر پرونده ورودی استاندارد (fd 0).
bpo-36623: حذف سرآیندهای پارسر و اعلامیههای توابع مرتبط که پس از حذف pgen فاقد پیادهسازی هستند.
bpo-20180: به لطف Argument Clinic، متد
dict.pop()اکنون تا ۳۳ درصد سریعتر شده است. پچ توسط Inada Naoki.bpo-36611: تخصیصدهندههای حافظهی دیباگ: برای کاهش ۵ درصدی حجم حافظه، فیلد serialno را به طور پیشفرض از قلابهای دیباگ روی تخصیصدهندههای حافظهی پایتون غیرفعال کنید.
tracemallocرا فعال کنید تا هنگام ثبت خطای مهلک حافظه، ردگیری محل تخصیص یک بلوک حافظه را به دست آورید و تصمیم بگیرید نقطهی توقف را کجا قرار دهید. پایتون را با تعریفPYMEM_DEBUG_SERIALNOکامپایل کنید تا فیلد برگردانده شود.bpo-36588: در AIX، ویژگی
sys.platformدیگر شامل نسخهی اصلی نمیشود. به جای'aix3'..'aix7'، همیشه'aix'را برمیگرداند. از آنجا که نسخههای قدیمیتر پایتون شامل شمارهی نسخه هستند، توصیه میشود همیشه ازsys.platform.startswith('aix')استفاده کنید. مشارکتکننده: M. Felt.bpo-36549: تغییر str.capitalize به استفاده از نگارش عنواننویسی برای اولین نویسه به جای حروف بزرگ.
bpo-36540: پیادهسازی PEP 570 (پارامترهای فقط-جایگاهی در پایتون). پچ توسط Pablo Galindo.
bpo-36475: توابع
PyEval_AcquireLock()وPyEval_AcquireThread()اکنون اگر در حین نهاییسازی مفسر فراخوانی شوند، نخ فعلی را خاتمه میدهند و آنها را با توابعPyEval_RestoreThread()،Py_END_ALLOW_THREADS()وPyGILState_Ensure()سازگار میکنند.bpo-36504: رفع سرریز عدد صحیح علامتدار در تابع
PyCArrayType_new()در پرونده _ctypes.c.bpo-20844: رفع مشکلی که ممکن است اجرای اسکریپت با کوکی کدگذاری و پایان سطر LF در ویندوز با خطا مواجه شود.
bpo-24214: پشتیبانی از هندلر خطای surrogatepass در رمزگشای افزایشی UTF-8 اصلاح شد.
bpo-36452: تغییر کلیدهای
dictدر حین پیمایش خود دیکشنری، یا متدهایkeys()،values()یاitems()اکنون در مواردی خاص که کلیدها حذف یا اضافه میشوند بهطوریکه تعداد کلیدها تغییر نمیکند، شناسایی خواهد شد. پس ازlen(dict)بار پیمایش، یکRuntimeErrorبالا آورده خواهد شد. مشارکت از Thomas Perl.bpo-36459: یک خطای احتمالی دوبار آزادسازی با
PyMem_FREE()ناشی از تابعtok_nextc()در توکنساز tokenizer.c اصلاح شد.bpo-36433: پیام خطای TypeError در classmethoddescr_call اصلاح شد.
bpo-36430: یک نشت ارجاع احتمالی در
itertools.count()اصلاح شد.bpo-36440: نامهای گره در پیامهای
ParserErrorبهجای شناسههای عددی درج شوند. وصله توسط A. Skrobov.bpo-36143: ماژول
keywordاز روی پروندهی Grammar and Tokens با استفاده از pgen بازتولید شد. وصله توسط Pablo Galindo.bpo-18372: فراخوانیهای جاافتادهی
PyObject_GC_Track()در ماژولpickleاضافه شدند. وصله توسط Zackery Spytz.
کتابخانه¶
bpo-35952: مشکل pythoninfo در صورت نبود کامپایلر رفع شد.
bpo-28238: متدهای
.find*()در xml.etree.ElementTree اکنون میتوانند به دنبال وایلدکاردهایی مانند{*}tagو{ns}*که با یک تگ در هر فضای نام یا همه تگها در یک فضای نام مطابقت دارند، جستجو کنند. وصله توسط Stefan Behnel.bpo-26978: متد
pathlib.path.link_to()اکنون پیادهسازی شده است. این متد یک پیوند سخت (hard link) به سمت یک مسیر ایجاد میکند.bpo-1613500:
fileinput.FileInputاکنون از حالت پروندهی ورودی برای تنظیم درست حالت پروندهی خروجی استفاده میکند (پیشتر وقتیinplace=Trueبه سازندهی آن ارسال میشد، بهطور سختکد شده روی'w'قرار داشت).bpo-36734: کامپایل شدن
faulthandler.cروی HP-UX اصلاح شد. متغیرstack_t current_stackبا استفاده ازmemset()به صفر مقداردهی اولیه شد.bpo-13611: بستههای xml.etree.ElementTree پشتیبانی از سریالسازی C14N 2.0 را دریافت کردند. وصله توسط Stefan Behnel.
bpo-36669: پشتیبانی از عملگر ضرب ماتریسی به weakref.proxy اضافه شد.
bpo-36676: کلاس XMLParser() در xml.etree.ElementTree زمینهی پیشوند فضای نام را به پارسرِ هدف ارائه میدهد، چنانچه متدهای فراخوانی بازگشتی "start_ns()" و/یا "end_ns()" را تعریف کند. وصله توسط Stefan Behnel.
bpo-36673: کلاسهای TreeBuilder و XMLPullParser در xml.etree.ElementTree پشتیبانی برای تجزیهی کامنتها و دستورالعملهای پردازشی را دریافت کردند. وصله توسط Stefan Behnel.
bpo-36650: نسخهی C از functools.lru_cache() فراخوانیها با دیکشنری
**kwargsخالی را مجزا از فراخوانیهایی بدون هیچ کلیدواژهای در نظر میگرفت. این موضوع به پاسخ نادرستی منجر نمیشد، اما باعث ایجاد یک برخورد نکردن غیرمنتظره با نهانگاه (cache miss) میشد.bpo-28552: اگر
sys.executableبرابر باNoneیا یک رشتهی خالی باشد، ماژولdistutils.sysconfigاصلاح شد: ازos.getcwd()برای مقداردهی اولیهیproject_baseاستفاده کنید. همچنین دستور ساخت distutils اصلاح شد: اگرsys.executableبرابر باNoneیا یک رشتهی خالی است، از آن استفاده نکنید.bpo-35755: توابع
shutil.which()وdistutils.spawn.find_executableاکنون در صورت موجود بودن، ازos.confstr("CS_PATH")بهجایos.defpathاستفاده میکنند (در صورتی که متغیر محیطیPATHتنظیم نشده باشد). علاوه بر این، اگر متغیر محیطیPATHبه یک رشتهی خالی تنظیم شده باشد، نه ازos.confstr("CS_PATH")و نه ازos.defpathاستفاده نکنید.bpo-25430: بهبود کارایی
IPNetwork.__contains__()bpo-30485: عبارتهای مسیری (Path expressions) در xml.etree.ElementTree اکنون میتوانند با ارسال یک فضای نام (namespace) پیشفرض با یک پیشوند رشتهی خالی، از پیشوندهای فضای نام صریح برای تگها (یا نمادگذاری "{namespace}tag") جلوگیری کنند.
bpo-36613: رفع مشکل حذف نشدن کالبک (callback) در تابع ()wait ماژول
asyncioدر صورت بروز استثنا (exception)bpo-36598: رفع بررسی
isinstanceبرای اشیای ماک (Mock) دارای مشخصات (spec) هنگامی که کد تحت ردیابی (tracing) اجرا میشود. وصله (patch) از Karthikeyan Singaravelan.bpo-18748: در حالت توسعه (
-Xdev) و در ساختهای دیباگ، مخرب کلاسio.IOBaseاکنون استثناهایclose()را ثبت (log) میکند. این استثناها به صورت پیشفرض در حالت انتشار (release) بیصدا هستند.bpo-36575: ماژول
_lsprofاکنون به طور پیشفرض از تایمر داخلی مشابهtime.perf_counter()استفاده میکند. پیشتر در سیستمهای یونیکس ازgettimeofday(2)استفاده میشد. تایمر جدید دقت بهتری در اکثر پلتفرمهای یونیکس دارد و از آنجا کهperf_counter()یکنواخت است، بهروزرسانیهای ساعت سیستم دیگر روی زمانبندیها تأثیری نمیگذارند. وصله (patch) از Inada Naoki.bpo-33461: تابع
json.loadsاکنون هنگام مشخص شدن گزینهیencodingهشدارDeprecationWarningرا صادر میکند. وصله (patch) از Matthias Bussonnier.bpo-36559: ماژول random اکنون برای بهینهسازی زمان ایمپورت، ماژول داخلی سبکتر _sha512 را به جای hashlib برای seed(version=2) ترجیح میدهد.
bpo-17561: مقدار backlog=None را به عنوان مقدار پیشفرض برای socket.create_server قرار دهید.
bpo-34373: رفع خطای مدیریت خطای
time.mktime()روی AIX برای سالهای قبل از ۱۹۷۰.bpo-36232: بهبود پیام خطا هنگام تلاش برای باز کردن پایگاهدادهی DBM موجود که در واقع وجود ندارد. وصله (patch) از Marco Rougeth.
bpo-36546: اضافه شدن statistics.quantiles()
bpo-36050: بهینهسازی
http.client.HTTPResponse.read()برای پاسخهای بزرگ. وصله (patch) از Inada Naoki.bpo-36522: اگر debuglevel در
http.clientروی مقدار >0 تنظیم شود، تمام مقادیر سرآیندها را که دارای مقادیر متعددی برای یک نام سرآیند هستند، چاپ کنید. وصله (patch) از Matt Houglum.bpo-36492: ارسال آرگومانهای ضروری مانند func به عنوان آرگومانهای کلیدواژهای در توابعی که باید آرگومانهای کلیدواژهای دلخواه را بپذیرند و آنها را به تابع دیگری منتقل کنند، منسوخ شد. آرگومانهای کلیدواژهای دلخواه (حتی با نامهای "self" و "func") اکنون میتوانند به این توابع ارسال شوند، مشروط بر اینکه آرگومانهای ضروری به عنوان آرگومانهای جایگاهی ارسال شوند.
bpo-27181: اضافه شدن statistics.geometric_mean().
bpo-30427: تابع
os.path.normcase()برای بررسی نوع آرگومان خود بهos.fspath()متکی است. بررسیهای اضافی از پیادهسازیهایposixpath.normcase()وntpath.normcase()آن حذف شدهاند. وصله (patch) از Wolfgang Maier.bpo-36385: توقف رد کردن اکتتهای IPv4 به دلیل ابهام در مبنای هشت (octal). صفرهای پیشفرض نادیده گرفته میشوند و دیگر فرض بر این نیست که اکتتهای هشتبیتی را مشخص میکنند. اکتتها همیشه اعداد دهدهی هستند. اکتتها همچنان نباید بیش از سه رقم باشند، که شامل صفرهای پیشفرض نیز میشود.
bpo-36434: خطاهای حین نوشتن در یک پروندهی ZIP دیگر مانع از بستن صحیح آن نمیشوند.
bpo-36407: رفع مشکل اشتباه بودن تورفتگی نوشتن برای بخش CDATA در xml.dom.minidom. وصله (patch) از Vladimir Surjaninov.
bpo-36326: تابع inspect.getdoc() اکنون میتواند رشتههای مستند را برای اشیای عضوی زمانی که __slots__ یک دیکشنری است، پیدا کند.
bpo-36366: فراخوانی متد
stop()روی یک شیءunittest.mock.patch()شروعنشده یا متوقفشده، اکنون بهجای پرتاب خطایRuntimeErrorمقدارNoneرا برمیگرداند که باعث میشود این متد همتوان (idempotent) شود. اصلاح توسط Karthikeyan Singaravelan.bpo-36348: متد
imap.IMAP4.logout()دیگر استثناهای دلخواه را بهصورت سکوتآمیز نادیده نمیگیرد.bpo-31904: افزودن پشتیبانی از ماژول time و رفع خطاهای test_time برای VxWorks.
bpo-36227: افزودن پشتیبانی از آرگومانهای کلیدواژهای
default_namespaceوxml_declarationدر توابعElementTree.tostring()وElementTree.tostringlist().bpo-36004: سازندههای جایگزین جدید
datetime.date.fromisocalendar()وdatetime.datetime.fromisocalendar()اضافه شدند که شیءهای تاریخ را از سال ایزو، شمارهی هفته و روز هفته میسازند؛ اینها معکوس متدisocalendarهر کلاس هستند. وصله توسط Paul Ganssle.bpo-35936: ماژول
modulefinderدیگر به ماژول منسوخشدهیimpوابسته نیست و مقداردهندهی اولیه برایmodulefinder.ModuleFinderاکنون دارای آرگومانهای پیشفرض تغییرناپذیر است. وصله توسط Brandt Bucher.bpo-35376: ماژول
modulefinderماژولهایی را که همنام با یک بستهی نامعتبر هستند بهدرستی مدیریت میکند. این وصله توسط Brandt Bucher ارائه شده است.bpo-17396: ماژول
modulefinderهنگام برخورد با خطاهای نحوی در ایمپورتهای دنبالشده دیگر متوقف نمیشود. وصله توسط Brandt Bucher.bpo-35934: توابع کمکی
create_server()وhas_dualstack_ipv6()برای خودکارسازی کارهای لازم که معمولاً هنگام ایجاد یک سوکت سرور انجام میشود، از جمله پذیرش همزمان اتصالهای IPv4 و IPv6 روی یک سوکت، اضافه شدند. (مشارکتکننده: Giampaolo Rodola در bpo-17561.)bpo-23078: افزودن پشتیبانی از
classmethod()وstaticmethod()بهunittest.mock.create_autospec(). وصلهی اولیه توسط Felipe Ochoa.bpo-35416: رفع هشدارهای احتمالی منابع در distutils. وصله توسط Mickaël Schoentgen.
bpo-25451: افزودن متدهای شفافیت به
tkinter.PhotoImage. وصلهی ارائه شده توسط Zackery Spytz.bpo-35082: هنگام صدا زدن dir روی یک
unittest.mock.Mock، ویژگیهای حذفشده را برنگردانید.bpo-34547: کلاس
wsgiref.handlers.BaseHandlerاکنون قطع ارتباط ناگهانی کلاینت را به شکلی مناسب مدیریت میکند. وصله توسط Petter Strandmark.bpo-31658:
xml.sax.parse()اکنون از شیء شبهمسیر پشتیبانی میکند. وصله توسط Mickaël Schoentgen.bpo-34139: حذف سوکت دیاتگرام یونیکس کهنه پیش از اتصال (binding)
bpo-33530: الگوریتم Happy Eyeballs در تابع
asyncio.create_connection()پیادهسازی شد. دو آرگومان جدید به نامهای happy_eyeballs_delay و interleave برای مشخص کردن رفتار Happy Eyeballs اضافه شدند.bpo-33291: هنگام فراخوانی توابع inspect یعنی isgeneratorfunction، iscoroutinefunction و isasyncgenfunction روی متدی که از یک شیء فراخوانیپذیر دلخواه ایجاد شده است، خطای AttributeError را ایجاد نکنید. در عوض، False را برگردانید.
bpo-31310: تصحیح multiprocessing.semaphore_tracker بهطوریکه توسط فرایندهای فرزند مجدداً استفاده شود
bpo-31292: اصلاح
setup.py check --restructuredtextبرای پروندههای حاوی دایرکتیوهایinclude.
مستندات¶
bpo-36625: حذف کامنتهای منسوخ از رشته مستندها در fractions.Fraction
bpo-30840: مستندسازی ایمپورتهای نسبی
bpo-36523: افزودن رشته مستند برای io.IOBase.writelines().
bpo-36425: ترجمهی جدید مستندات: چینی سادهشده.
bpo-36345: جلوگیری از تکرار کد موجود در
Tools/scripts/serve.pyبا استفاده از دایرکتیوliteralincludeبرای وبسرور پایهای مبتنی بر wsgiref در مستنداتwsgiref. ارسالشده توسط Stéphane Wirtel.bpo-36345: استفاده از کد اسکریپت
Tools/scripts/serve.pyبه عنوان نمونه در مستنداتwsgiref. ارسالشده توسط Stéphane Wirtel.bpo-36157: مستندات PyInterpreterState_Main() اضافه شد.
bpo-33043: صفحهی docs.python.org را با افزودن پیوند «مشارکت در مستندات» در انتهای صفحه (بین «گزارش باگها» و «دربارهی مستندات») بهروزرسانی میکند. صفحهی «باگی پیدا کردید؟» را با پیوندها و اطلاعات اضافی در بخش باگهای مستندات بهروزرسانی میکند.
bpo-35581: اکنون @typing.type_check_only به استابهای نوع اجازه میدهد تا توابع و کلاسهایی را که در طول رانتایم در دسترس نیستند، علامتگذاری کنند.
bpo-33832: افزودن ورودی واژهنامه برای 'متد جادویی'.
bpo-32913: مثال re.Match.groupdict به راهنمای عملی regex اضافه شد.
آزمونها¶
bpo-36719: ابزار regrtest اکنون همیشه اشیای غیرقابل جمعآوری را شناسایی میکند. پیش از این، این بررسی فقط توسط
--findleaksفعال میشد. این بررسی اکنون با-jN/--multiprocess Nنیز کار میکند.--findleaksبه یک نام مستعار منسوخ برای--fail-env-changedتبدیل میشود.bpo-36725: هنگام استفاده از حالت چندپردازشی (-jN)، ابزار regrtest اکنون در صورت بروز خطا در یک فرایند کارگر، گزارش بهتری ارائه میدهد و در صورت بروز خطا در نخ کارگر یا هنگام وقفه، بلافاصله خارج میشود.
bpo-36454: تابع test_time.test_monotonic() را تغییر دهید تا به جای کران بالا، تنها کران پایین زمان سپریشده پس از یک فرمان توقف را آزمون کند. این کار از خرابیهای غیرضروری آزمون روی بازوهای ساخت (buildbots) کند جلوگیری میکند. وصله توسط Victor Stinner.
bpo-32424: بهبود پوشش آزمون برای xml.etree.ElementTree. وصله توسط Gordon P. Hemsley.
bpo-32424: اصلاح خطای تایپی در آزمون test_cyclic_gc() برای xml.etree.ElementTree. وصله توسط Gordon P. Hemsley.
bpo-36635: افزودن یک ماژول جدید
_testinternalcapiبرای آزمون API داخلی C.bpo-36629: اصلاح
test_imap4_host_default_value()درtest_imaplib: گرفتن خطایerrno.ENETUNREACHنیز.bpo-36611: اصلاح
test_sys.test_getallocatedblocks()وقتیtracemallocفعال است.bpo-36560: رفع خطای جستجوی نشت شمارهی ارجاع در regrtest: همچنین محاسبهی دلتاها (شامل شمارهی ارجاع، بلوکهای حافظهی تخصیصیافته، تعداد توصیفگر پرونده) در طول گرمسازی، برای اطمینان از این که همهچیز پیش از شروع جستجوی نشتهای ارجاع مقداردهی اولیه میشود.
bpo-36565: رفع خطای جستجوی ارجاع (
python3 -m test -R 3:3) هنگامی که پایتون فاقد ماژول توکار abc است.bpo-31904: انتقال test_resource به VxWorks: پرش از موارد آزمون تنظیمکنندهی RLIMIT_FSIZE و RLIMIT_CPU.
bpo-31904: رفع خطای test_tabnanny روی VxWorks: تنظیم پیام خطای ENOENT.
bpo-36436: رفع خطای
_testcapi.pymem_buffer_overflow(): مدیریت خرابی تخصیص حافظه.bpo-31904: رفع خطای test_utf8_mode روی VxWorks: پایتون همیشه روی VxWorks از UTF-8 استفاده میکند.
bpo-36341: رفع خطاهای آزمونی که ممکن است هنگام فراخوانی bind() روی سوکتهای AF_UNIX با خطای PermissionError مواجه شوند.
ساخت¶
bpo-36747: حذف هدف منسوخشدهی Makefile به نام scriptsinstall.
bpo-21536: روی سیستمعامل یونیکس، افزونههای C دیگر به libpython پیوند داده نمیشوند، به جز در اندروید و Cygwin.
اکنون این امکان فراهم شده است که یک پایتونِ به صورت ایستا پیوندخورده، یک افزونهی C ساختهشده با استفاده از کتابخانهی مشترک پایتون را بارگذاری کند.
هنگامی که پایتون تعبیهشده است،
libpythonنباید باRTLD_LOCALبارگذاری شود، بلکه باید باRTLD_GLOBALبارگذاری شود. پیشتر، با استفاده ازRTLD_LOCAL، امکان بارگذاری افزونههای C که بهlibpythonپیوند داده نشده بودند (مانند افزونههای C کتابخانهی استاندارد که توسط بخش*shared*درModules/Setupساخته شدهاند) وجود نداشت.پروندههای distutils، python-config و python-config.py تغییریافتهاند.
bpo-36707: دستور
./configure --with-pymallocدیگر پرچمmرا به SOABI (sys.implementation.cache_tag) اضافه نمیکند. فعال یا غیرفعال کردن pymalloc هیچ تأثیری روی ABI ندارد.bpo-36635: تغییر ماکروهای
PyAPI_FUNC(type)،PyAPI_DATA(type)وPyMODINIT_FUNCدر پروندهیpyport.hهنگامی کهPy_BUILD_CORE_MODULEتعریف شده است. تعریفPy_BUILD_CORE_MODULEاکنون باید برای ساخت یک افزونهی C به عنوان یک کتابخانهی پویا که به بخشهای داخلی پایتون دسترسی دارد استفاده شود: تابعیPyInit_xxx()را در صادرات DLL روی ویندوز صادر کنید.bpo-31904: افزونهی
_cryptروی VxWorks ساخته نمیشود.bpo-36618: هنگامی که کامپایلر clang شناسایی میشود، پرچم
-fmax-type-align=8را به CFLAGS اضافه کنید. تخصیصدهندهی حافظهی pymalloc حافظه را روی مرز ۸ بایت تراز میکند. روی معماری x86-64، کامپایلر clang به طور پیشفرض انتظار تراز روی ۱۶ بایت را دارد و به همین دلیل از دستور MOVAPS استفاده میکند که میتواند منجر به خطای قطعهبندی (segmentation fault) شود. به clang دستور دهید که پایتون به تراز روی ۸ بایت محدود است تا به جای آن از دستور MOVUPS استفاده کند: کندتر است اما اگر حافظه روی ۱۶ بایت تراز نشده باشد، باعث بروز SIGSEGV نمیشود. متأسفانه، این پرچم باید بهCFLAGSاضافه شود و نه فقط بهCFLAGS_NODIST، زیرا افزونههای C شخص ثالث میتوانند همین مشکل را داشته باشند.bpo-36605: دستورات
make tagsوmake TAGSاکنونModules/_io/*.cوModules/_io/*.hرا نیز تحلیل میکنند.bpo-36465: نسخههای ساخت نهایی (Release) و اشکالزدایی (Debug) اکنون از نظر ABI سازگار هستند: تعریف ماکروی
Py_DEBUGدیگر به معنای وجود ماکرویPy_TRACE_REFSنیست، که تنها ناسازگاری ABI را معرفی میکند. ماکرویPy_TRACE_REFS، که تابعsys.getobjects()و متغیر محیطیPYTHONDUMPREFSرا اضافه میکند، میتواند با استفاده از گزینهی ساخت جدید./configure --with-trace-refsتنظیم شود.bpo-36577: پروندهی setup.py اکنون دوباره سرآیندها و کتابخانههای گمشدهی OpenSSL را به درستی گزارش میکند.
bpo-36544: رفع رگرسیون ایجادشده در بازطراحی setup.py در bpo-36146
bpo-36508: دستور
python-config --ldflagsدیگر پرچمهای متغیرLINKFORSHAREDرا شامل نمیشود. متغیرLINKFORSHAREDفقط باید برای ساخت فایلهای اجرایی استفاده شود.bpo-36503: ارجاع به «aix3» و «aix4» حذف شد. وصله توسط M. Felt.
Windows¶
bpo-35920: توابع platform.win32_edition() و platform.win32_is_iot() اضافه شدند. پشتیبانی برای کامپایل تقاطعی بستهها برای Windows ARM32 اضافه شد. آزمونهایی که انتظار نمیرود روی Windows IoT Core ARM32 کار کنند، نادیده گرفته میشوند.
bpo-36649: فضاهای خالی پایانی برای کلیدهای رجیستری هنگام نصب از طریق فروشگاه حذف شدند.
bpo-34144: فایل activate.bat اصلاح شد تا وقتی chcp.com نقطهها را در خروجی برمیگرداند، صفحهکد (codepage) را بهدرستی بهروزرسانی کند. وصله توسط Lorenz Mende.
bpo-36509: چیدمان preset-iot برای ظروف Windows IoT ARM اضافه شد. این چیدمان شامل اجزای رابط کاربری مانند tkinter یا IDLE نیست. همچنین حاوی فایلهایی برای پشتیبانی از ساختهای روی هدف نیست؛ زیرا ساختهای Windows ARM32 هنگام استفاده از MSVC باید به صورت تقاطعی کامپایل شوند.
bpo-35941: تابع enum_certificates از ماژول ssl اکنون گواهیها را از تمام انبار گواهیهای موجود در ویندوز در یک پرسوجو برمیگرداند، به جای اینکه فقط گواهیها را از انبار گواهی سرتاسر سیستم برگرداند. این شامل گواهیها از این انبار گواهیها میشود: رایانه محلی، سازمانی رایانه محلی، خط مشی گروه رایانه محلی، کاربر جاری، خط مشی گروه کاربر جاری، خدمات، کاربران. تابع ssl.enum_crls() به همان روش تغییر یافته است تا تمام فهرستهای ابطال گواهی را در انبار فهرستهای ابطال گواهی ویندوز برگرداند.
bpo-36441: ایجاد یک venv هنگامی که باینریهای دیباگ نصب شدهاند، رفع شد.
bpo-36085: با استفاده از مسیرهای جستجوی امن DLL و افزودن
os.add_dll_directory()، وضوح/حل بهتری برای DLL روی ویندوز فعال شد.bpo-36010: ماژول کتابخانهی استاندارد venv به توزیع nuget برای ویندوز اضافه شد.
bpo-29515: ثابتهای زیر از ماژول socket روی ویندوز اضافه شدند: 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: نسخه جاری libffi به cpython-source-deps اضافه شد. تغییر _ctypes برای استفاده از نسخه جاری libffi روی ویندوز.
bpo-34060: گزارش بار سیستم هنگام اجرای مجموعه آزمون روی ویندوز. وصله توسط Ammar Askar. بر اساس کار قبلی Jeremy Kloth.
bpo-31512: با بهروزرسانی سازندگان ویندوز ۱۰ (Windows 10 Creators Update)، کاربران غیرارشد (non-elevated) اکنون میتوانند تا زمانی که حالت توسعهدهنده (Developer Mode) روی رایانه فعال باشد، پیوندهای نمادین ایجاد کنند.
مکاواس¶
IDLE¶
bpo-36429: شروع IDLE با pyshell اصلاح شد. نام مستعار idlelib.pyshell در بالا اضافه شد؛ نام مستعار pyshell در پایین حذف شد. دستور منسوخ شدهی __name__=='__main__' حذف شد.
Tools/Demos¶
bpo-14546: مدیریت آرگومان در Tools/scripts/lll.py اصلاح شد.
رابط C API¶
bpo-36763: نشتی حافظه در
Py_SetStandardStreamEncoding()اصلاح شد: اگر تابع دو بار فراخوانی شود، حافظه آزاد میشود.bpo-36641: توابع PyDoc_VAR(name) و PyDoc_STRVAR(name, str) اکنون به جای
static char name[]مقدارstatic const char name[]ایجاد میکنند. وصله توسط Inada Naoki.bpo-36389: مقدار ثابتهای داخلی
CLEANBYTE،DEADDYTEوFORBIDDENBYTEکه توسط قلابهای دیباگ روی تخصیصدهندههای حافظهی پایتون استفاده میشوند (تابعPyMem_SetupDebugHooks()) تغییر کرد. الگوهای بایتی0xCB،0xDBو0xFBبا0xCD،0xDDو0xFDجایگزین شدهاند تا از مقادیر یکسانی باmalloc()وfree()دیباگ CRT ویندوز استفاده شود.bpo-36443: از پایتون نسخهی ۳.۷.۰، فراخوانی
Py_DecodeLocale()پیش ازPy_Initialize()باعث ایجاد نویسههای نامفهوم (mojibake) میشود، اگر locale مربوط بهLC_CTYPEبه صورت ضمنی تبدیل شود و/یا اگر حالت (mode) مربوط به UTF-8 توسط پیکربندی کاربر فعال شده باشد. تبدیل ضمنی نوع LC_CTYPE و حالت UTF-8 اکنون به طور پیشفرض غیرفعال هستند تا مشکل نویسههای نامفهوم برطرف شود. این موارد اکنون باید به صورت صریح (opt-in) با استفاده از API جدید_Py_PreInitialize()و_PyPreConfigفعال شوند.bpo-36025: رفع تغییر تصادفی در API زبان C مربوط به تاریخ و زمان (datetime) که در آن آرگومانهای تابع
PyDate_FromTimestamp()به اشتباه به عنوان یک برهه زمانی (timestamp) واحد تفسیر میشدند نه یک چندتایی (tuple) از آرگومانها، که این امر باعث میشد کدهای موجود شروع به بالاآوردن خطایTypeErrorکنند. این تغییر ناسازگار با نسخههای قبلی، فقط در نسخههای آلفای پایتون ۳.۸ وجود داشت. وصل (patch) توسط Paul Ganssle.bpo-35810: تغییر دادن
PyObject_Initبه منظور افزایش صحیح شمارش ارجاع (refcount) شیءهای نوع تخصیصیافته در هیپ (heap). همچنین رفع شمارش ارجاعهای نوعهای تخصیصیافته در هیپ که یا این کار را به صورت دستی انجام میدادند یا شمارش ارجاع نوع را در tp_dealloc کاهش نمیدادند.
Python 3.8.0 alpha 3¶
Release date: 2019-03-25
امنیت¶
bpo-36216: تغییر تابع urlsplit() به گونهای که وقتی URL شامل نویسههایی است که تحت کدگذاری (encoding) نوع IDNA (نرمالسازی NFKC) به نویسههایی تجزیه میشوند که بر نحوه تجزیه (parsing) URL تأثیر میگذارند، خطای ValueError صادر کند.
bpo-35121: هنگام استفاده از یک cookiejar با سیاست
http.cookiejar.DefaultCookiePolicy، کوکیهای دامنه A را که ویژگی Domain ندارند، به دامنه B نفرستید، در صورتی که دامنه A پسوند تطابقیافتهی دامنه B باشد. وصل (patch) توسط Karthikeyan Singaravelan.
هسته و توکارها (Core and Builtins)¶
bpo-36421: رفع یک کاهش ارجاع (decref) مضاعف احتمالی در
PyCArrayType_new()متعلق به _ctypes.c.bpo-36412: رفع یک خرابی (crash) احتمالی هنگام ایجاد یک دیکشنری جدید.
bpo-36398: رفع یک خرابی (crash) احتمالی در
structseq_repr().bpo-36256: رفع باگ موجود در parsermodule هنگام تجزیهی یک وضعیت (state) در یک DFA که دارای دو یا چند کمان با برچسبهایی از یک نوع (type) است. وصل (patch) توسط Pablo Galindo.
bpo-36365: تابع repr(structseq) دیگر به ۵۱۲ بایت محدود (limited) نیست.
bpo-36374: رفع یک ارجاع به اشارهگر (pointer) تهی احتمالی در
merge_consts_recursive(). وصل (patch) توسط Zackery Spytz.bpo-36236: در زمان راهاندازی پایتون، اگر پوشهی جاری حذف شده باشد، دیگر به ابتدای
sys.pathاضافه نمیشود.bpo-36352: راهاندازی پایتون اکنون اگر یک مسیر بیش از حد طولانی باشد، به جای قطع کردن بیسروصدای مسیرها، با یک خطا متوقف میشود.
bpo-36301: راهاندازی پایتون اکنون اگر کدگشایی (decoding) پروندهی پیکربندی
pybuilddir.txtدر هنگام شروع با شکست مواجه شود، متوقف میشود.bpo-36333: رفع نشتی حافظه در _PyRuntimeState_Fini. مشارکتکننده: Stéphane Wirtel.
bpo-36332: تابع توکار
compile()اکنون میتواند شیءهای درخت نحوی انتزاعی (AST) را که حاوی عبارتهای انتساب (assignment expressions) هستند، مدیریت کند. وصل (patch) توسط Pablo Galindo.bpo-36282: بهبود پیام خطا برای آرگومانهای جایگاهی بیش از حد در برخی توابع توکار.
bpo-30040: دیکشنری خالی جدید فعلاً حافظه کمتری مصرف میکند. این دیکشنری حافظه بیشتری نسبت به دیکشنری خالی ایجاد شده توسط
dict.clear()مصرف میکرد. همچنین ایجاد و حذف دیکشنری خالی حدود ۲ برابر سریعتر است. وصل (patch) توسط Inada Naoki.bpo-36262: رفع یک نشئی حافظهی بعید در تبدیل از رشته (string) به عدد اعشاری (float) در تابع
_Py_dg_strtod()که توسطfloat(str)،complex(str)،pickle.load()،marshal.load()و غیره استفاده میشود.bpo-36252: بهروزرسانی پایگاهدادههای یونیکد به نسخهی 12.0.0.
bpo-36218: رفع خطای برخورد با حافظه (segfault) که هنگام مرتبسازی فهرستی از مقادیر ناهمگن رخ میدهد. پچ ارائه شده توسط Rémi Lapeyre و Elliot Gorokhovsky.
bpo-36188: پاکسازی باقیماندههای مدیریت متد آزاد پایتون ۲ در اشیای متد و مستندات. پچ توسط Martijn Pieters
bpo-36124: افزودن یک دیکشنری جدید مخصوص مفسر و نمایش آن در C-API از طریق PyInterpreterState_GetDict(). این کار مشابه PyThreadState_GetDict() است. با این حال، ماژولهای توسعهای باید برای وضعیت مختص مفسر داخلی خود به استفاده از PyModule_GetState() ادامه دهند.
bpo-35975: افزودن پرچم
feature_versionبهast.parse()(مستندشده) وcompile()(پنهان) که امکان تنظیم پارسر را برای پشتیبانی از نسخههای قدیمیتر گرامر فراهم میکند. بهویژه، اگر مقدارfeature_versionبرابر با ۵ یا ۶ باشد، هکهای مربوط به کلیدواژههایasyncوawaitاز PEP 492 مجدداً فعال میشوند. (برای نسخهی ۷ یا بالاتر، این موارد بهطور بیقیدوشرط به عنوان کلیدواژه در نظر گرفته میشوند، اما همچنان توکنهای خاصی هستند نه توکنهایNAMEکه درایور پارسر آنها را تشخیص دهد.)bpo-31904: استفاده از UTF-8 به عنوان کدگذاری سیستم در VxWorks.
bpo-36048: متد ویژهی
__index__()به جای__int__()برای تبدیل ضمنی اعداد پایتون به اعداد صحیح C استفاده خواهد شد. استفاده از متد__int__()در تبدیلهای ضمنی منسوخ شده است.bpo-35808: بازنشستگی pgen و استفاده از نسخهی تغییریافتهای از pgen2 برای تولید پارسر. پچ توسط Pablo Galindo.
کتابخانه¶
bpo-36401: مستندات کلاس ایجاد شده توسط pydoc اکنون دارای بخش جداگانهای برای ویژگیهای فقطخواندنی است.
bpo-36320: کلاس typing.NamedTuple() ویژگی _field_types را به نفع ویژگی __annotations__ که همان اطلاعات را حمل میکند، منسوخ کرده است. همچنین، هر دو ویژگی از OrderedDict به یک دیکشنری معمولی تبدیل شدند.
bpo-34745: رفع مسائل حافظهی ssl در
asyncioکه توسط ارجاعات دایرهای ایجاد شده بودندbpo-36324: افزودن متد به statistics.NormalDist برای محاسبهی توزیع نرمال تجمعی معکوس.
bpo-36321: نام یک ویژگی در collections.namedtuple() به اشتباه املای نادرستی داشت. برای سازگاری با typing.NamedTuple، نام ویژگی باید به جای "_fields_defaults" برابر با "_field_defaults" میبود. برای سازگاری با گذشته، هر دو املا اکنون ایجاد میشوند. ممکن است نسخهی دارای املای نادرست در آینده حذف شود.
bpo-36297: کُدک "unicode_internal" حذف شد. این مورد از پایتون ۳.۳ منسوخ شده بود. پچ توسط Inada Naoki.
bpo-36298: ایجاد خطای ModuleNotFoundError در pyclbr هنگامی که یک ماژول پیدا نمیشود. با تشکر از 'mental' برای گزارش باگ.
bpo-36268: تغییر فرمت پیشفرض استفادهشده برای نوشتن فایلهای tar با
tarfileاز استاندارد مدرن POSIX.1-2001 pax به استاندارد اختصاصی عرضهکننده یعنی GNU. مشارکت توسط C.A.M. Gerlach.bpo-36285: رفع سرریز اعداد صحیح در ماژول array. پچ توسط Stephan Hohe.
bpo-31904: افزودن پشتیبانی ماژول _signal برای VxWorks.
bpo-36272: ماژول
loggingدیگر خطای RecursionError را بهطور بیصدا نادیده نمیگیرد. پچ ارائه شده توسط Rémi Lapeyre.bpo-36280: افزودن فیلد kind به ast.Constant. اگر لفظی پیشوند 'u' داشته باشد (یعنی یک لفظی یونیکد به سبک پایتون ۲)، مقدار آن 'u' خواهد بود، در غیر این صورت None است.
bpo-35931: دستور
debugدرpdbاکنون به زیبایی تمام استثناها را مدیریت میکند.bpo-36251: اصلاح رشتههای قالببندی استفادهشده برای stderrprinter و reprهای re.Match. وصله توسط Stephan Hohe.
bpo-36235: اصلاح
CFLAGSدر تابعcustomize_compiler()ازdistutils.sysconfig: هنگامی که متغیر محیطیCFLAGSتعریف شده باشد، دیگر متغیرCFLAGSبا متغیرOPTبازنویسی نمیشود. وصلهی اولیه توسط David Malcolm نوشته شده است.bpo-35807: بهروزرسانی ensurepip برای نصب pip نسخهی 19.0.3 و setuptools نسخهی 40.8.0.
bpo-36179: اصلاح دو نشت ارجاع بعید در _hashopenssl. این نشتها فقط در حالتهای کمبود حافظه رخ میدهند.
bpo-36169: افزودن متد overlap() به statistics.NormalDist. ضریب همپوشانی را برای دو توزیع نرمال محاسبه میکند.
bpo-36103: اندازهی پیشفرض بافر مورد استفاده توسط
shutil.copyfileobj()برای کاهش سربار فراخوانی سیستم در پلتفرمهای غیر ویندوزی از 16 KiB به 64 KiB تغییر یافت. مشارکت از Inada Naoki.bpo-36130: اصلاح
pdbباskip=...هنگام ورود به یک فریم بدون متغیر سراسری__name__. وصله توسط Anthony Sottile.bpo-35652: تابع shutil.copytree(copy_function=...) به اشتباه به جای رشتهی مسیر، DirEntry را ارسال میکند.
bpo-35178: اطمینان از اینکه تابع سفارشی
warnings.formatwarning()میتواندlineرا به عنوان آرگومان جایگاهی دریافت کند. بر اساس وصلهای از Tashrif Billah.bpo-36106: رفع تداخل نام احتمالی با sinpi() در libm. وصله توسط Dmitrii Pasechnik.
bpo-36091: پاکسازی ارجاع به تولیدگر ناهمگام در Lib/types. وصله توسط Henry Chen.
bpo-36043: کلاس
FileCookieJarاز شیء شبهمسیر پشتیبانی میکند. مشارکت از Stéphane Wirtelbpo-35899: کلاس Enum طوری اصلاح شده است که رشتههای خالی و رشتههای دارای نویسههای غیرلاتین (مانند 'α'، 'א') را بدون از کار افتادن (crash)، به درستی مدیریت کند. وصلهی اصلی توسط Maxwell مشارکت داده شده است. با کمک Stéphane Wirtel.
bpo-21269: افزودن ویژگیهای
argsوkwargsبه اشیای فراخوانی ماک. مشارکت از Kumar Akshay.bpo-30670: تابع
pprint.ppبرای چاپ زیبا (pretty-print) اشیاء با کلیدهای دیکشنری که به طور پیشفرض بر اساس ترتیب درج آنها مرتب شدهاند، اضافه شده است. پارامتر sort_dicts بهpprint.pprint،pprint.pformatوpprint.PrettyPrinterاضافه شد. مشارکت از Rémi Lapeyre.bpo-35843: پیادهسازی
__getitem__برای_NamespacePath. وصله توسط Anthony Sottile.bpo-35802: پاکسازی کدی که وجود
os.stat/os.lstat/os.chmodرا بررسی میکرد (در حالی که همیشه موجود هستند). وصله توسط Anthony Sottile.bpo-35715: مقدار بازگشتی تابع _process_worker در ProcessPoolExecutor را پس از اینکه دیگر نیازی به آن نیست آزاد میکند تا حافظه آزاد شود
bpo-35493: به جای پایش مکرر هر 0.2 ثانیه برای بهروزرسانیهای کارگر در
multiprocessing.Pool، ازmultiprocessing.connection.wait()استفاده کنید. وصله توسط پابلو گالیندو (Pablo Galindo).bpo-35661: اعلان (prompt) مربوط به venv را در pyvenv.cfg ذخیره کنید.
bpo-35121: هنگامی که مسیر درخواست، تطبیق پیشوندی با صفت path کوکی دارد اما به "/" ختم نمیشود، برای درخواست کوکی تنظیم نکنید. وصله توسط کارتیکیان سینگاراولان (Karthikeyan Singaravelan).
bpo-21478: فراخوانیهای تابع فرزندی که با
unittest.mock.create_autospec()ایجاد شده است باید به والد منتقل شوند (propagate). وصله توسط کارتیکیان سینگاراولان (Karthikeyan Singaravelan).bpo-35198: رفع مشکل کامپایل افزونههای C++ روی AIX
مستندات¶
bpo-36329: مسیر فایل دودویی پایتون را برای استفادهی
Tools/scripts/serve.pyهنگام اجرایmake -C Doc/ serveمشخص کنید. مشارکتکننده: استفان ویرتل (Stéphane Wirtel)bpo-36138: بهبود مستندات مربوط به تبدیل datetime.timedelta به مقادیر اسکالر.
bpo-21314: یک درگاه (entry) جدید به بخش زبان اصلی (Core Language Section) در پرسشهای متداول برنامهنویسی اضافه شد که نحوهی استفاده از اسلش (/) را در امضای (signature) یک تابع توضیح میدهد. وصله توسط لیساندروس نیکولائو (Lysandros Nikolaou)
آزمونها¶
bpo-36234: test_posix.PosixUidGidTests: افزودن آزمونها برای نوع (str) نامعتبر uid/gid. وصلهی اولیه نوشتهشده توسط دیوید مالکوم (David Malcolm).
bpo-29571: رفع
test_re.test_locale_flag(): برای دریافت کدگذاری locale، به جایlocale.getlocale()ازlocale.getpreferredencoding()استفاده کنید. در برخی از localeها،locale.getlocale()کدگذاری اشتباهی برمیگرداند.bpo-36123: رفع شرایط رقابت (race condition) در test_socket.
ساخت¶
bpo-36356: رفع نشتهایی (leaks) که هنگام پیکربندی با ابزار ضدعفونیکنندهی آدرس (address sanitizer)، منجر به شکست ساخت (build failure) میشدند.
bpo-36146: افزودن ثابت
TEST_EXTENSIONSبهsetup.pyبرای امکان عدم ساخت افزونههای آزمونی مانند_testcapi.bpo-36146: رفع مشکل setup.py روی macOS: فقط
/usr/include/ffiرا به دایرکتوریهای شامل (include directories) مربوط به _ctypes اضافه کنید، نه برای تمام افزونهها.bpo-31904: فعالسازی سیستم ساخت برای ساخت متقابل (cross-build) جهت VxWorks RTOS.
Windows¶
bpo-36312: رفع مشکل رمزگشای (decoder) برای صفحات کد (code pages) زیر: 50220، 50221، 50222، 50225، 50227، 50229، بازهی 57002 تا 57011، 65000 و 42.
bpo-36264: در ویندوز، متغیر
HOMEدر POSIX را درos.path.expanduserاعمال نکنید (honor). وصله توسط آنتونی صوتیل (Anthony Sottile).bpo-24643: رفع تداخل نامها به دلیل
#define timezone _timezoneدر PC/pyconfig.h.
IDLE¶
bpo-36405: استفاده از بازکردن بستهی دیکشنری (dict unpacking) در idlelib.
bpo-36396: پارامتر fgBg از idlelib.config.GetHighlight() حذف شد. این پارامتر تنها دو بار استفاده شده بود و نوع (type) بازگشتی را تغییر میداد.
bpo-36176: رفع مشکل رنگهای تکمیل خودکار و پنجرهی بازشوی calltip در IDLE. جلوگیری از تداخل با تمهای تاریک لینوکس (و تیرهتر کردن جزئی پسزمینهی calltip).
bpo-23205: برای ماژول grep، آزمونهایی برای findfiles اضافه شد، تابع findfiles بازطراحی شد تا به یک تابع در سطح ماژول تبدیل شود و از os.walk استفاده کند.
bpo-23216: رشتههای مستند (docstrings) به ماژولهای جستجوی IDLE اضافه شدند.
bpo-36152: متد colorizer.ColorDelegator.close_when_done و آرگومان متناظر با آن در .close() حذف شدند. در IDLE، هر دو از سال ۲۰۰۷ تاکنون همواره None یا False بودهاند.
bpo-32129: جلوگیری از تار شدن آیکون برنامهی IDLE در سیستمعامل macOS با Tk 8.6. وصلهای از Kevin Walzer.
bpo-36096: در ماژول colorizer، متغیرهای کلاس (class variables) به متغیرهای نمونه (instance variables) بازطراحی شدند.
bpo-30348: پوشش آزمون (test coverage) ماژول idlelib.autocomplete به میزان ۳۰ درصد افزایش یافت. وصلهای از Louie Lu.
Tools/Demos¶
رابط C API¶
پایتون ۳.۸.۰ آلفا ۲¶
تاریخ انتشار: ۲۰۱۹-۰۲-۲۵
هسته و توکارها (Core and Builtins)¶
bpo-36052: هنگام تخصیص یک مقدار به
__debug__با استفاده از عملگر تخصیص، یک خطایSyntaxErrorبالا آورده میشود. مشارکتکنندگان: Stéphane Wirtel و Pablo Galindo.bpo-36012: سرعت نوشتن متغیرهای کلاس (class variables) دو برابر شد. هنگامی که یک ویژگی (attribute) غیردابلآندر بهروزرسانی میشد، فراخوانی غیرضروری برای بهروزرسانی جایگاهها (slots) انجام میگرفت.
bpo-35942: پیام خطایی که هنگام بازگرداندن انواع نامعتبر از
__fspath__در رابطهایی (interfaces) که اجازهی ارسال اشیاءPathLikeرا میدهند بهبود یافته است و اکنون ریشهی خطا را توضیح میدهد.bpo-36016: متد
gc.get_objectsاکنون میتواند یک پارامتر اختیاری را دریافت کند که نسل (generation) مورد نظر برای دریافت اشیاء (objects) را مشخص میکند. وصلهای از Pablo Galindo.bpo-1054041: هنگامی که مفسر اصلی به دلیل یک KeyboardInterrupt مهارنشده خارج میشود، فرایند اکنون به گونهای مناسب خارج میشود تا فرایند والد بتواند تشخیص دهد که SIGINT یا ^C باعث پایان یافتن فرایند شده است. این امر به پوستهها (shells) و اسکریپتهای دستهای (batch scripts) اجازه میدهد متوجه شوند که کاربر از آنها خواسته است متوقف شوند.
bpo-35992: رفع مشکلی که در آن متد
__class_getitem__()روی کلاسی با یک فراکلاس (metaclass) سفارشیِ غیرقابلپیشوند (non-subscriptable) فراخوانی نمیشد.bpo-35993: رفع یک فروپاشی در هنگام انشعاب (fork) وقتی از زیرمفسرها استفاده میشود. مشارکت از Stéphane Wirtel.
bpo-35991: رفع یک آزاد کردن دوگانهی بالقوه (double free) در Modules/_randommodule.c.
bpo-35961: رفع فروپاشی در slice_richcompare(): به جای ارجاعات دزدیدهشده، از ارجاعات قوی برای دو تاپل موقت داخلی استفاده کنید.
bpo-35911: امکان ایجاد شیءهای cell با افزودن یک متد
cell.__new__، و نمایش نوعcellدرLib/types.pyبا نام CellType. وصلهای از Pierre Glaser.bpo-12822: استفاده از ساعت یکنواخت (monotonic clock) برای
pthread_cond_timedwaitوقتی کهpthread_condattr_setclockوCLOCK_MONOTONICدر دسترس هستند.bpo-15248: کامپایلر اکنون در مواردی که احتمالاً یک کاما قبل از تاپل یا فهرست (list) جا افتاده باشد، هشدارهای نحوی (syntax) صادر میکند.
bpo-35886: پیادهسازی PyInterpreterState به پروندههای سرآیند (header) داخلی منتقل شد (که با Py_BUILD_CORE محافظت میشود).
bpo-31506: شفافسازی خطاهای گزارششده وقتی
object.__new__وobject.__init__بیش از یک آرگومان دریافت میکنند. مشارکت از Sanyam Khurana.bpo-35724: اکنون تضمین میشود که مدیریت سیگنال (signal-handling) نسبت به مفسر اصلی انجام شود.
bpo-33608: ما تابع داخلی جدید _Py_AddPendingCall() را اضافه کردیم که نسبت به مفسر ارائهشده عمل میکند. این کار به ما اجازه میدهد از پیادهسازی موجود استفاده کنیم تا از مفسر دیگری بخواهیم کاری را انجام دهد که در مفسر فعلی قابل انجام نیست، مانند کاهش شمارش ارجاع (decref) یک شیء که مفسر دیگر مالک آن است. تابع موجود Py_AddPendingCall() فقط نسبت به مفسر اصلی عمل میکند.
bpo-33989: رفع فروپاشی احتمالی در
list.sort()هنگام مرتبسازی شیءها باob_type->tp_richcompare == NULL. وصلهای از Zackery Spytz.
کتابخانه¶
bpo-35512: تابع
unittest.mock.patch.dict()که به عنوان یک دکوراتور با هدف رشتهای استفاده میشود، هدف را در طول فراخوانی تابع به جای ساخت دکوراتور حل میکند (resolve). وصلهای از Karthikeyan Singaravelan.bpo-36018: افزودن statistics.NormalDist، ابزاری برای ایجاد و دستکاری توزیعهای نرمال متغیر تصادفی. دارای یک کلاس ترکیبی که میانگین و انحراف معیار دادههای اندازهگیری را به عنوان یک موجودیت واحد در نظر میگیرد.
bpo-35904: افزودن statistics.fmean() به عنوان یک نوع ممیز شناور سریعتر از تابع موجود mean().
bpo-35918: حذف متد خراب
has_keyاز multiprocessing.managers.SyncManager.dict. مشارکت از Rémi Lapeyre.bpo-18283: افزودن پشتیبانی از bytes به
shutil.which().bpo-35960: رفع دور انداختن شیءهای نگاشت (mapping) خالی ارسالشده به عنوان متادیتا در
dataclasses.field().bpo-35500: نوشتن پارامترهای فراخوانی مورد انتظار و واقعی در سطرهای جداگانه در خطاهای ادعای
unittest.mock.Mock.assert_called_with(). مشارکت از Susan Su.bpo-35931: دستور
debugدرpdbاکنون خطاهای نحوی را به زیبایی مدیریت میکند.bpo-24209: در اسکریپت http.server، برای اتصال (bind) به آدرس ترجیحی بر اساس پارامتر bind به getaddrinfo تکیه کنید. اکنون اتصال پیشفرض یا اتصال به یک نام ممکن است بسته به محیط به IPv6 یا پشته دوگانه (dual-stack) متصل شود.
bpo-35321: ویژگی
__spec__.originمربوط به_frozen_importlibرا به صورت فریزشده (frozen) تنظیم کنید تا با رفتار_frozen_importlib_externalمطابقت داشته باشد. وصلهای از Nina Zakharenko.bpo-35378: رفع یک مشکل ارجاعی در داخل
multiprocessing.Poolکه باعث میشد استخر در صورت حذف شدن بدون بسته شدن یا خاتمهی صریح، زنده بماند. یک ارجاع قوی جدید به پیمایشگرهای استخر اضافه میشود تا طول عمر استخر به طول عمر پیمایشگرهای آن پیوند بخورد و اگر پیمایشگر استخری همچنان زنده باشد، استخر نابود نشود.bpo-34294: ماژول re، رفع گروههای ثبتکنندهی نادرست در مواردی نادر. توابع
re.search()،re.findall()،re.sub()و سایر توابعی که در رشته به دنبال تطابق میگردند، باید گروههای ثبتکننده را بین دو تلاش برای تطابق بازنشانی کنند. وصلهای از Ma Lin.bpo-35615:
weakref: رفع یک خطای RuntimeError هنگام کپی کردن WeakKeyDictionary یا WeakValueDictionary، به دلیل ناپدید شدن برخی کلیدها یا مقادیر در حین پیمایش.bpo-35606: پیادهسازی
math.prod()به عنوان تابعی مشابهsum()که حاصلضرب یک مقدار 'start' (پیشفرض: ۱) در یک مجموعهی پیمایشپذیر از اعداد را برمیگرداند. وصلهای از Pablo Galindo.bpo-32417: انجام عملَدهای حسابی بین زیرکلاسهای
datetime.datetimeوdatetime.timedeltaاکنون شیءای از همان نوعِ زیرکلاسdatetime.datetimeرا برمیگرداند. در نتیجه، متدهایdatetime.datetime.astimezone()و سازندههای جایگزین مانندdatetime.datetime.now()وdatetime.fromtimestamp()که با یک آرگومانtzفراخوانی میشوند، اکنون همچنین زیرکلاس خود را حفظ میکنند.bpo-35153: اضافه کردن پارامتر اختیاری فقط-کلیدواژهی headers به
xmlrpc.client.ServerProxy،xmlrpc.client.Transportوxmlrpc.client.SafeTransport. وصلهای از Cédric Krier.bpo-34572: رفع پیادهسازی C مربوط به pickle.loads جهت استفاده از مکانیزمهای قفلگذاری importlib و در نتیجه جلوگیری از استفاده از ماژولهای تا حدی بارگذاریشده. وصلهای از Tim Burgess.
مستندات¶
آزمونها¶
bpo-27313: جلوگیری از شکست آزمون test_ttk_guionly ComboboxTest با macOS Cocoa Tk.
bpo-36019: اضافه کردن test.support.TEST_HTTP_URL و جایگزینی ارجاعات http://www.example.com با این ثابت جدید. مشارکت از Stéphane Wirtel.
bpo-36037: رفع test_ssl برای پیکربندیهای سختگیرانهی OpenSSL مانند خطمشی رمزنگاری سختگیرانهی RHEL8. در صورت نیاز، از نسخهی قدیمیتری از TLS برای حداقل نسخهی TLS مربوط به زمینهی (context) SSL سرور استفاده کنید تا نسخههای TLS قدیمیتر از حداقل نسخهی پیشفرض TLS آزموده شوند.
bpo-35798: تابع
test.support.check_syntax_warning()اضافه شد.bpo-35505: مستقل کردن test_imap4_host_default_value از اینکه آیا سرور محلی IMAP در حال اجرا است یا خیر.
bpo-35917: multiprocessing: ارائهی آزمونهای واحد برای کلاسهای SyncManager و SharedMemoryManager به همراه تمام انواعی که قابلیت اشتراکگذاری دارند و قرار است توسط آنها پشتیبانی شوند. (وصلهای از Giampaolo Rodola)
bpo-35704: صرفنظر کردن از
test_shutil.test_unpack_archive_xztarبرای جلوگیری از خطای MemoryError در سیستم 32 بیتی AIX هنگامی که تنظیمات MAXDATA کمتر از 0x20000000 است.وصلهای از Michael Felt (aixtools)
bpo-34720: درج عبارت Assert m_state != NULL برای تقلید از توابع پیمایش GC که ایجاد ماژول را در زمان ایجاد نشدن وضعیت ماژول به طور صحیح مدیریت نمیکنند.
Windows¶
bpo-35976: افزودن پشتیبانی از ساخت ARM به پروندههای ساخت ویندوز در PCBuild.
bpo-35692: کتابخانهی
pathlibدیگر هنگام بررسی وجود پرونده و پوشه روی درایوهایی که آماده نیستند، خطا پرتاب نمیکند.bpo-35872: هنگام فراخوانی venv در یک محیط مجازی، از برنامهی اجرایی پایهی پایتون استفاده میکند.
bpo-35873: از ارثبری مسیرهای venv توسط فرایندهای فرزند جلوگیری میکند.
bpo-35299: رفع تشخیص پوشهی منبع توسط sysconfig و نحوهی مدیریت pyconfig.h توسط distutils هنگام پروفایلگیری PGO.
IDLE¶
نسخهی ۳.۸.۰ آلفا ۱¶
تاریخ انتشار: ۲۰۱۹-۰۲-۰۳
امنیت¶
bpo-35746: CVE 2019-5010: رفع یک خطای عدم ارجاع اشارهگر NULL در ماژول ssl. تجزیهکنندهی گواهی، نقاط توزیع فهرست لغو گواهی با DP یا URI خالی را به درست مدیریت نمیکرد. یک گواهی مخرب یا دارای اشکال میتواند منجر به خطای تقسیم حافظه (segfault) شود. آسیبپذیری (TALOS-2018-0758) توسط Colin Read و Nicolas Edet از شرکت Cisco گزارش شده است.
bpo-34812: گزینهی خط فرمان
-I(اجرای پایتون در حالت ایزوله) اکنون هنگام ایجاد فرایندهای فرزند توسط ماژولهایmultiprocessingوdistutilsنیز کپی میشود. پیش از این، تنها گزینههای-Eو-s(که توسط-Iفعال میشوند) کپی میشدند.bpo-34791: ماژولهای xml.sax و xml.dom.domreg هنگامی که sys.flags.ignore_environment توسط آرگومانهای -E یا -I تنظیم شده باشد، دیگر از متغیرهای محیطی برای بازنشانی پیادهسازیهای پارسر استفاده نمیکنند.
bpo-17239: پارسرهای xml.sax و xml.dom.minidom دیگر به طور پیشفرض موجودیتهای خارجی را پردازش نمیکنند. اعلانهای DTD و ENTITY خارجی دیگر پروندهها را بارگذاری نمیکنند یا اتصالات شبکهای ایجاد نمیکنند.
bpo-34623: CVE 2018-14647: ماژول شتابدادهشده با C یعنی _elementtree اکنون نمک تصادفیسازی درهمسازی (hash randomization salt) را از _Py_HashSecret به جای CSPRNG پیشفرض libexpat مقداردهی اولیه میکند.
bpo-34405: بهروزرسانی به OpenSSL 1.1.0i برای ساختهای ویندوز.
bpo-33871: رفع ارسال بخشی از پرونده در
os.sendfile()روی مکاواس. استفاده از آرگومان trailers میتواند باعث ارسال بایتهای بیشتری از پروندهی ورودی نسبت به مقدار مشخصشده شود.bpo-32533: رفع ایمنی نخی (thread-safety) مدیریت خطا در _ssl.
bpo-33136: ایمنسازی ماژول ssl در برابر آسیبپذیری LibreSSL CVE 2018-8970. تابع X509_VERIFY_PARAM_set1_host() با یک طول نام صریح فراخوانی میشود. یک آزمون جدید تضمین میکند که بایتهای NULL مجاز نیستند.
bpo-33001: رفع حداقلی برای جلوگیری از سرریز بافر در os.symlink روی ویندوز
bpo-32981: عبارتهای باقاعده در difflib و poplib در برابر بازگشت فاجعهبار آسیبپذیر بودند. این عبارتهای باقاعده بردارهای بالقوهی DOS (REDOS) را تشکیل میدادند. آنها بازسازی شدند. این مورد CVE 2018-1060 و CVE 2018-1061 را حل میکند. وصله توسط جیمی دیویس (Jamie Davis).
bpo-28414: ماژول ssl اکنون به کاربران اجازه میدهد هنگام استفاده از SNI، کدگذاری/کدگشایی IDN خود را انجام دهند.
هسته و توکارها (Core and Builtins)¶
bpo-35877: پرانتزها را برای عبارتهای نامگذاریشده در دستور while اختیاری کنید. وصله توسط کارتیکیان سینگاراولان (Karthikeyan Singaravelan).
bpo-35814: اجازه دادن به همان عبارتهای سمت راست در انتسابهای مشخصشده (annotated) درست مانند انتسابهای معمولی. بهطور خاص،
x: Tuple[int, int] = 1, 2(بدون پرانتز در سمت راست) اکنون مجاز است.bpo-35766: افزودن گزینهی تجزیهی کامنتهای نوع PEP 484 در ماژول ast. (بهطور پیشفرض خاموش است.) این کار قابلیت کلیدی انشعاب شخص ثالث آن یعنی [typed_ast](https://github.com/python/typed_ast) را ادغام میکند.
bpo-35713: بازسازی مقداردهی اولیه پایتون برای دریافت استثناهای کاری و sys.stderr در زمانی زودتر.
bpo-33416: افزودن اطلاعات موقعیت سطر پایان و ستون پایان به گرههای درخت نحوی انتزاعی (AST) پایتون. این یک تغییر ناسازگار با نسخههای قبلی در سطح C است.
bpo-35720: رفع یک نشت حافظهی جزئی در تابع pymain_parse_cmdline_impl در Modules/main.c
bpo-35634: اکنون عبور
func(**kwargs)هنگامی کهkwargsنگاشتی شامل چندین درایه با کلید یکسان باشد، خطایی را بالا میآورد. از پایتون ۳.۶ به بعد، هنگامی که سایر آرگومانهای کلیدواژهای قبل از**kwargsارسال میشوند، خطایی قبلاً بالا میرفت.bpo-35623: رفع یک فروپاشی هنگام مرتبسازی فهرستهای بسیار طولانی. وصله توسط استفان هوهه (Stephan Hohe).
bpo-35214: ابزاربندی ساخت پاککننده حافظه clang (Memory Sanitizer) برای دور زدن نتایج مثبت کاذب از posix، socket، time، test_io و test_faulthandler اضافه شد.
bpo-35560: رفع یک خطای ادعا در
format()در ساخت دیباگ برای قالببندی ممیز شناور با قالب "n"، پُرکنندهی صفر و عرض کوچک. ساخت انتشار تحت تأثیر قرار نمیگیرد. وصله توسط کارتیکیان سینگاراولان (Karthikeyan Singaravelan).bpo-35552: نویسههای قالب
%sو%VدرPyUnicode_FromFormat()و%sدرPyBytes_FromFormat()در صورت مشخص شدن precision، دیگر حافظه را فراتر از حد مجاز نمیخوانند.bpo-35504: رفع خطاهای بخشبندی حافظه (segfaults) و
SystemErrorهنگام حذف ویژگیهای خاص. وصله توسط زکری اسپیتز (Zackery Spytz).bpo-35504: رفع یک SystemError هنگام حذف ویژگی characters_written از یک OSError.
bpo-35494: بهبود پیامهای خطای سینتکس برای پرانتزهای متوازننشده در افاسترینگ.
bpo-35444: رفع مدیریت خطا در متدهای پیکل کردن (pickling) هنگامی که جستوجوی تابع توکار «getattr» با شکست مواجه میشود. سرعت پیمایشگرهای پیکلسازی افزایش یافت.
bpo-35436: رفع مسائل مختلف مربوط به مدیریت خطای تخصیص حافظه. وصله توسط زکری اسپیتز (Zackery Spytz).
bpo-35423: جداسازی محرک مدیریت سیگنال در حلقهی eval از مکانیسم «فراخوانیهای معلق» (pending calls). هیچ تغییر معنایی وجود ندارد و تفاوت در کارایی ناچیز است.
bpo-35357: نام ویژگیهای داخلی unittest.mock._Call و unittest.mock.MagicProxy (یعنی name، parent و from_kall) اکنون پیشوند _mock_ را دریافت میکنند تا از تداخل با ویژگیهای شیء که بهطور گسترده استفاده میشوند جلوگیری شود. رفع خطای تایپی جزئی در نام تابع آزمون.
bpo-35372: رمزگشای صفحهکد برای ورودیهای طولانیتر از ۲ گیگابایت که حاوی بایتهای غیرقابل رمزگشایی هستند، اصلاح شد.
bpo-35336: رفع مشکل متغیر محیطی PYTHONCOERCECLOCALE=1: تنها در صورتی لوکال C را سازگار کنید که لوکال LC_CTYPE برابر با "C" باشد.
bpo-31241: ویژگیهای lineno و col_offset گرههای درخت نحوی انتزاعی (AST) برای درکهای فهرستی، عبارتهای تولیدگر و تاپلها اکنون به پرانتز یا کروشهی باز اشاره میکنند. برای تاپلهای بدون پرانتز، آنها به موقعیت اولین آیتم اشاره میکنند.
bpo-33954: برای متدهای
str.format()،float.__format__()وcomplex.__format__()جهت نقطهاعشار غیر اسکی هنگام استفاده از قالببند "n".bpo-35269: رفع یک خطای احتمالی حافظه (segfault) مرتبط با یک همروال تازه ایجادشده. وصله توسط Zackery Spytz.
bpo-35224: پیادهسازی PEP 572 (عبارتهای انتسابی). وصله توسط Emily Morehouse.
bpo-32492: افزایش سرعت دسترسی به ویژگی
namedtuple()به میزان ۱.۶ برابر با استفاده از مسیر سریع C برای توصیفگرهای نام. وصله توسط Pablo Galindo.bpo-35214: رفع خطای دسترسی به حافظه خارج از کران هنگام تجزیهی یک دنباله گریز یونیکد ناقص در انتهای یک رشته مانند
'\N'. این کار باعث میشد یک بایت فراتر از انتهای فضای تخصیصیافته به حافظه خوانده شود.bpo-35214: حاشیهنویسیهایی به مفسر و ماژولهای توسعهای اضافه شده است تا به شکل مناسبی تحت ابزار پاکسازی حافظهی clang (Memory Sanitizer) کار کنند. پرچم پیکربندی جدید --with-memory-sanitizer اضافه شده است تا انجام دادن این نوع ساختهای آزمایشی سادهتر شود.
bpo-35193: رفع خطای اختلاف یک واحدی (off-by-one) در بهینهساز پیپهول بایتکد که ممکن بود هنگام حذف کد دستنیافتنی، بایتهایی را فراتر از کرانهای یک آرایه بخواند. این باگ تا کنون در تمامی نسخههای ۳.۶ و ۳.۷ پایتون وجود داشت.
bpo-35169: بهبود پیامهای خطا برای انتسابهای ممنوع.
bpo-34022: رفع مدیریت پروندههای بایتکد مبتنی بر هش در
zipimport. وصله توسط Elvis Pranskevichus.bpo-28401: ساختهای دیباگ دیگر تلاش نخواهند کرد ماژولهای توسعهای ساختهشده برای رابط دودویی کاربردی (ABI) را ایمپورت کنند، زیرا آنها از ابتدا با یکدیگر سازگار نبودند. وصله توسط Stefano Rivera.
bpo-29341: شفافسازی در رشتهمستندهای متدهای
osمبنی بر اینکه اشیاء شبهمسیر نیز به عنوان پارامتر ورودی پذیرفته میشوند.bpo-35050:
socket: رفع باگ اختلاف یک واحدی در بررسی طول برای نام و نوعAF_ALG.bpo-29743: در صورت وجود یک
_length_منفی در یک زیرکلاسctypes.Array، به جایOverflowErrorاستثنایValueErrorرا بالا بیاورید. همچنین برای_length_غیرعددصحیح به جایAttributeErrorاستثنایTypeErrorرا بالا بیاورید. وصلهی اصلی از Oren Milman.bpo-16806: رفع
linenoوcol_offsetبرای توکنهای رشتهای چندخطی.bpo-35029:
SyntaxWarningکه به عنوان یک استثنا در زمان تولید کد بالا میرود، اکنون برای گزارشدهی بهتر خطا با یکSyntaxErrorجایگزین خواهد شد.bpo-34983: قرار دادن متد
symtable.Symbol.is_nonlocal()در معرض دید در ماژول symtable. وصله توسط Pablo Galindo.bpo-34974: سازندههای
bytesوbytearrayدیگر استثناهای غیرمنتظره (مانندMemoryErrorوKeyboardInterrupt) را بهTypeErrorتبدیل نمیکنند.bpo-34939: امکان استفاده از نامهای حاشیهنویسیشده در فضای نام ماژول که قبل از انجام حاشیهنویسی به صورت سراسری اعلام شدهاند. پچ توسط Pablo Galindo.
bpo-34973: رفع فروپاشی در
bytes()هنگامی که آرگومانlistدر حین پیمایش تغییر میکند.bpo-34876: ویژگیهای lineno و col_offset از درخت نحوی انتزاعی (AST) برای توابع و کلاسهای دکوراتورشده، اکنون به جای موقعیت اولین دکوراتور، به موقعیت عبارتهای
def،async defوclassمربوطه اشاره میکنند. این امر منجر به گزارشدهی صحیحتر سطرها در ردیابی میشود. این تنها حالتی است که موقعیت گرههای فرزند درخت نحوی انتزاعی (AST) میتواند قبل از موقعیت گره والد باشد.bpo-34879: رفع یک خطای احتمالی ارجاع به اشارهگر تهی (null pointer dereference) در bytesobject.c. پچ توسط Zackery Spytz.
bpo-34784: اصلاح پیادهسازی PyStructSequence_NewType به منظور ایجاد StructSequenceهای تخصیصیافته در هیپ.
bpo-32912: یک
SyntaxWarningاکنون به جای یکDeprecationWarningبرای دنبالههای گریز نامعتبر در مقادیر لفظی رشته و bytes صادر میشود.bpo-34854: رفع فروپاشی در کامپایل حاشیهنویسیهای رشتهای حاوی یک لامبدا با یک آرگومان فقط-کلیدواژه که مقدار پیشفرضی ندارد.
bpo-34850: کامپایلر اکنون هنگامی که بررسیهای همانی (
isوis not) با انواعی از مقادیر لفظی (مانند رشتهها، اعداد صحیح) استفاده میشوند، یکSyntaxWarningتولید میکند. این موارد ممکن است به طور تصادفی در سیپایتون کار کنند، اما توسط مشخصات زبان تضمین نمیشوند. این هشدار به کاربران توصیه میکند به جای آن از آزمونهای برابری (==و!=) استفاده کنند.bpo-34824: رفع یک خطای احتمالی ارجاع به اشارهگر تهی (null pointer dereference) در Modules/_ssl.c. پچ توسط Zackery Spytz.
bpo-30156: تابع C به نام
property_descr_get()از یک تاپل «کششده» برای بهینهسازی فراخوانیهای تابع استفاده میکند. اما این تاپل را میتوان در حالت دیباگ باsys.getobjects()کشف کرد. بهینهسازی را حذف کنید، واقعاً ارزشش را ندارد و در سالهای گذشته ۳ فروپاشی مختلف ایجاد کرده است.bpo-34762: اصلاح API مربوط به contextvars برای استفاده از انواع اشارهگر PyObject*.
bpo-34751: تابع هش برای تاپلها اکنون بر اساس xxHash است که نتایج برخورد بهتری در موارد (قبلاً) بیمارگونه ارائه میدهد. علاوه بر این، در سیستمهای ۶۴ بیتی هشهای تاپل را به طور کلی بهبود میبخشد. پچ توسط Jeroen Demeyer با مشارکتهای اساسی از Tim Peters.
bpo-34735: رفع نشت حافظه در Modules/timemodule.c. پچ توسط Zackery Spytz.
bpo-34683: رفع باگی که در آن برخی از خطاهای SyntaxError به مکانهایی اشاره میکردند که یک واحد اختلاف داشتند (off-by-one).
bpo-34651: فقط به مفسر اصلی اجازه انشعاب (fork) بدهید. این کار از احتمال تأثیرگذاری بر مفسر اصلی جلوگیری میکند، که برای عملکرد رانتایم حیاتی است.
bpo-34653: حذف تابع استفادهنشده PyParser_SimpleParseStringFilename.
bpo-32236: هشدار دادن در مورد اینکه اگر
open()با حالت دودویی وbuffering=1فراخوانی شود، بافر کردن سطر پشتیبانی نمیشود.bpo-34641: محدود کردن بیشتر نحوه سمت چپ آرگومانهای کلیدواژهای در فراخوانیهای تابع. به ویژه،
f((keyword)=arg)اکنون مجاز نیست.bpo-34637: قابل مشاهده کردن آرگومان start در تابع sum() به عنوان یک آرگومان کلیدواژهای.
bpo-1621: هنگام تغییر اندازه جدول هش مجموعه، رفتار سرریز عدد صحیح علامتدار (رفتار تعریفنشده در C) را فرض نکنید.
bpo-34588: رفع یک خطای off-by-one در ویژگی هرس کردن فراخوانی بازگشتی در قالببندی ردگیری (traceback).
bpo-34485: در ویندوز، مقدار LC_CTYPE اکنون هنگام راهاندازی روی تنظیمات محلی ترجیحی کاربر تنظیم میشود. پیش از این، تنظیمات محلی LC_CTYPE هنگام راهاندازی برابر با "C" بود، اما هنگام فراخوانی setlocale(LC_CTYPE, "") یا setlocale(LC_ALL, "") تغییر میکرد.
bpo-34485: جریانهای استاندارد مانند sys.stdout اکنون در تنظیمات محلی POSIX (هنگامی که تنظیمات محلی C اجبار نشده و حالت UTF-8 غیرفعال است)، به جای "strict" از هندلر خطای "surrogateescape" استفاده میکنند.
bpo-34485: رفع هندلر خطای جریانهای استاندارد مانند sys.stdout: مقدار PYTHONIOENCODING=":" اکنون به جای تنظیم هندلر خطا روی "strict"، نادیده گرفته میشود.
bpo-34485: پایتون اکنون کدگذاری تنظیمات محلی را با کد C دریافت میکند تا کدگذاری جریانهای استانداردی مانند sys.stdout را مقداردهی اولیه کند. علاوه بر این، کدگذاری اکنون روی نام کُدک پایتون مقداردهی اولیه میشود تا یک نام کدگذاری نرمالشده بهدست آمده و اطمینان حاصل شود که کُدک بارگذاری شده است. این تغییر از ایمپورت کردن پیشفرض ماژولهای _bootlocale و _locale در هنگام راهاندازی جلوگیری میکند.
bpo-34527: روی FreeBSD، توابع Py_DecodeLocale() و Py_EncodeLocale() اکنون علاوه بر حالت تنظیمات محلی LC_CTYPE برابر با "C"، در صورتی که تنظیمات محلی LC_CTYPE برابر با "POSIX" نیز باشد، کدگذاری اسکی را اجبار میکنند.
bpo-34527: حالت UTF-8 اکنون علاوه بر تنظیمات محلی "C"، توسط تنظیمات محلی "POSIX" نیز فعال میشود.
bpo-34403: روی HP-UX با تنظیمات محلی C یا POSIX، تابع sys.getfilesystemencoding() اکنون به جای "roman8" مقدار "ascii" را برمیگرداند (هنگامی که حالت UTF-8 غیرفعال است و تنظیمات محلی C اجبار نشده است).
bpo-34523: کدگذاری سامانه فایلبندی پایتون اکنون زودتر و در طول راهاندازی پایتون خوانده میشود.
bpo-12458: ردگیریها اکنون شماره سطر صحیحی را برای زیرعبارتها در عبارتهای چندسطری نشان میدهند. ردگیریها اکنون به جای شماره سطر آخرین زیرعبارت، شماره سطر اولین سطر را برای عبارتهای چندسطری نشان میدهند.
bpo-34408: جلوگیری از رفع ارجاع اشارهگر تهی (null) و نشت منبع در تابع
PyInterpreterState_New().bpo-34400: رفع رفتار تعریفنشده در parsetok.c. وصله توسط Zackery Spytz.
bpo-33073: افزودن متد as_integer_ratio به اعداد صحیح (int) برای سازگاری بیشتر آنها با اعداد اعشاری (float).
bpo-34377: بهروزرسانی فهرست حذف valgrind برای استفاده از
_PyObject_Free/_PyObject_Reallocبه جایPyObject_Free/PyObject_Realloc.bpo-34353: افزودن گزینهی "socket" در پیادهسازی پایتون برای
stat.filemode()جهت تطابق با پیادهسازی C.bpo-34320: رفع مشکلی که در آن
dict(od)ترتیب پیمایش OrderedDict را کپی نمیکرد.bpo-34113: رفع فروپاشی در ساختهای دیباگ هنگامی که پشتهی آپکد با اعداد منفی تنظیم میشد. وصله توسط Constantin Petrisor.
bpo-34100: کامپایلر اکنون ثابتها را در تاپلها و frozensetها بهصورت بازگشتی ادغام میکند. ویژگیهای کد مانند
co_namesنیز ادغام میشوند.bpo-34151: عملکرد عملیات الحاق، تکرار و برش (slicing) فهرست کمی بهبود یافته است. وصله توسط Sergey Fedoseev.
bpo-34170: -X dev: اکنون امکان بازنویسی تخصیصدهندهی حافظه با استفاده از PYTHONMALLOC حتی در صورت فعال بودن حالت توسعهدهنده وجود دارد.
bpo-33237: بهبود پیام
AttributeErrorبرای ماژول تا حدی مقداردهی اولیه شده.bpo-34149: رفع توابع min و max برای دریافت رفتار پیشفرض هنگامی که key مقدار None است.
bpo-34125: پروفایلگیری متدهای توکار آزاد اکنون هنگام ارسال
**kwargsکار میکند.bpo-34141: بهینهسازی ترشیسازی (pickling) انواع اتمی (None, bool, int, float, bytes, str).
bpo-34126: رفع فروپاشیها هنگام پروفایلگیری فراخوانیهای نامعتبر خاصی از متدهای آزاد. بستهی وصله (Patch) توسط Jeroen Demeyer.
bpo-24618: رفع خواندن حافظهی نامعتبر هنگام ایجاد شیء کد با تاپل varnames بسیار کوچک یا تعداد آرگومانهای بسیار بزرگ.
bpo-34068: در
io.IOBase.close()، اطمینان حاصل کنید که ویژگیclosedبا یک استثنای زنده تنظیم نمیشود. وصله (Patch) توسط Zackery Spytz و Serhiy Storchaka.bpo-34087: رفع سرریز بافر هنگام تبدیل یونیکد به مقادیر عددی.
bpo-34080: رفع نشت حافظه در کامپایلر هنگامی که در طول توکنسازی خطاهای غیرمعمولی را ایجاد میکند.
bpo-34066: غیرفعال کردن وقفه توسط Ctrl-C بین فراخوانی
open()و ورود به یک بلوک with درwith open().bpo-34042: رفع dict.copy() برای حفظ شمارش ارجاع کل صحیح (همانطور که توسط sys.gettotalrefcount() گزارش شده است).
bpo-33418: رفع نشت حافظهی بالقوه در شیء تابع هنگامی که چرخه ارجاع ایجاد میکند.
bpo-33985: پیادهسازی ویژگی contextvars.ContextVar.name.
bpo-33956: بهروزرسانی نسخهی کتابخانهی Expat تجاریشده به نسخهی 2.2.5.
bpo-24596: کاهش ارجاع (Decref) شیء ماژول در
PyRun_SimpleFileExFlags()قبل از فراخوانیPyErr_Print(). وصله (Patch) توسط Zackery Spytz.bpo-33451: بستن پروندههای pyc که مستقیماً اجرا شدهاند قبل از فراخوانی
PyEval_EvalCode().bpo-1617161: هش نمونههای
BuiltinMethodType(متدهای کلاسهای توکار) اکنون به هش هویت __self__ بستگی دارد تا مقدار آن. هش و برابری نمونههایModuleTypeوMethodWrapperType(متدهای کلاسهای تعریفشده توسط کاربر و برخی متدهای کلاسهای توکار مانندstr.__add__) اکنون به هش و برابری هویت __self__ بستگی دارد تا مقدار آن. نمونههایMethodWrapperTypeدیگر از مرتبسازی پشتیبانی نمیکنند.bpo-33824: رفع "LC_ALL=C python3.7 -V": بازنشانی درست تجزیهکنندهی خط فرمان هنگامی که کدگذاری پس از خواندن پیکربندی پایتون تغییر میکند.
bpo-33803: رفع فروپاشی در hamt.c که به دلیل فعال کردن پیگیری GC برای شیءای ایجاد شده بود که همهی فیلدهای آن روی NULL تنظیم نشده بودند.
bpo-33738: هفت ناسازگاری ماکرو با API محدود (Limited API) رفع شد و ماکروهای
PyIter_Check()،PyIndex_Check()وPyExceptionClass_Name()به عنوان تابع اضافه شدند. یک اسکریپت برای بررسیهای خودکار ماکرو اضافه شد.bpo-33786: اصلاح تولیدگرهای ناهمگام برای مدیریت درست GeneratorExit در athrow()
bpo-30167: تابع
PyRun_SimpleFileExFlagsعلاوه بر__file__، ویژگی__cached__را نیز از ماژول حذف میکند.bpo-33706: اصلاح یک فروپاشی در راهاندازی پایتون هنگام تجزیهی گزینههای خط فرمان. از کریستوف گوهلکه (Christoph Gohlke) برای گزارش باگ و اصلاح آن سپاسگزاریم!
bpo-33597: کاهش اندازهی
PyGC_Headاز ۳ کلمه به ۲ کلمه.bpo-30654: اصلاح بازنشانی هندلر SIGINT به SIG_DFL هنگام خاموش شدن مفسر حتی زمانی که قبلاً یک هندلر سفارشی تنظیم شده بود. وصله توسط فیلیپ کرلینگ (Philipp Kerling).
bpo-33622: اصلاح یک نشتی زمانی که جمعآور زباله در افزودن شیءای با متد
__del__یا ارجاعدادهشده توسط آن به فهرستgc.garbageناموفق است. اکنون میتوانPyGC_Collect()را زمانی که یک استثنا تنظیم شده است فراخوانی کرد و آن را حفظ نمود.bpo-33462: قابلپیمایش معکوس کردن دیکشنریها و نماهای دیکشنری. وصله توسط رمی لاپیر (Rémi Lapeyre).
bpo-23722: اکنون وقتی فراکلاس سفارشی ورودی
__classcell__را در فضای نام ارسالشده بهtype.__new__فراهم نمیکند، یکRuntimeErrorبالا برده میشود. در نسخههای ۳.۶ تا ۳.۷ پایتون یکDeprecationWarningصادر میشد.bpo-33499: افزودن متغیر محیطی
PYTHONPYCACHEPREFIXو گزینهی خط فرمان-Xمربوط بهpycache_prefixبرای تعیین یک پوشهی ریشهی جایگزین جهت نوشتن پروندههای نهانگاه بایتکد ماژول.bpo-25711: ماژول
zipimportبهطور کامل با پایتون خالص بازنویسی شده است.bpo-33509: اصلاح پارامتر module_globals در warnings.warn_explicit(): اگر module_globals یک دیکشنری نباشد، دچار فروپاشی نمیشود.
bpo-31849: اصلاح هشدار مقایسهی علامتدار/بیعلامت در pyhash.c.
bpo-33475: اصلاح باگهای متفرقه در تبدیل حاشیهنویسیها به رشتهها و بهینهسازی پرانتزها در نمایش رشتهای.
bpo-20104: افزودن پشتیبانی برای پارامترهای
setpgroup،resetids،setsigmask،setsigdefوschedulerدرposix_spawn. وصله توسط پابلو گالیندو (Pablo Galindo).bpo-33391: اصلاح یک نشتی در set_symmetric_difference().
bpo-33363: بالا بردن یک SyntaxError برای دستورهای
async withوasync forدر خارج از توابع ناهمگام.bpo-28055: اصلاح دسترسیهای ناهمراز در siphash24(). وصله توسط رولف ایکه بیر (Rolf Eike Beer).
bpo-33128: اصلاح باگی که باعث میشود PathFinder دو بار در sys.meta_path ظاهر شود. وصله توسط پابلو گالیندو سالگادو (Pablo Galindo Salgado).
bpo-33331: ماژولهایی که آخر از همه وارد شدهاند، اکنون هنگام خاموش شدن مفسر اول از همه پاکسازی میشوند.
bpo-33312: اصلاح هشدارهای clang ubsan (پاکساز رفتار نامشخص) در dictobject.c با تنظیم نحوهی اعلان ساختار مشترک کلیدهای داخلی struct _dictkeysobject.
bpo-33305: بهبود پیامهای خطای نحو (syntax) برای مقادیر لفظی (literals) نامعتبر.
bpo-33306: بهبود پیامهای خطای نحو (syntax) برای پرانتزهای موازنهنشده.
bpo-33234: سازندهی فهرست (list) زمانی که طول ورودی مشخص باشد، اندازهی اولیه را از قبل تعیین میکند و تخصیص حافظه را بیش از حد انجام نمیدهد.
bpo-33270: درونیسازی کردن (intern) نامها برای تمام شیءهای (objects) کد ناشناس. اصلاحیه توسط Zackery Spytz.
bpo-30455: کدهای C و پایتون و مستندات مربوط به توکنها (tokens) اکنون از یک پروندهی (file) منبع واحد به نام
Grammar/Tokensتولید میشوند.bpo-33176: افزودن متد
toreadonly()به شیءهای memoryview.bpo-33231: رفع نشت حافظهی احتمالی در
normalizestring().bpo-33205: تغییر تابع (function) رشد dict از
round_up_to_power_2(used*2+hashtable_size/2)بهround_up_to_power_2(used*3). پیش از این، dict تنها زمانی کوچک میشد کهused == 0باشد. اکنون dict فرصت بیشتری برای کوچک شدن دارد.bpo-29922: بهبود پیامهای خطا در 'async with' زمانی که
__aenter__()یا__aexit__()یک شیء (object) غیرانتظارپذیر (non-awaitable) برمیگردانند.bpo-33199: رفع این مشکل که
ma_version_tagدر پیادهسازی dict هنگام کپیبرداری از یک dict با کلیدهای اشتراکی مقداردهی اولیه نمیشود.bpo-33053: هنگام استفاده از سوئیچ -m، مقدار sys.path[0] اکنون به صراحت به عنوان پوشهی (directory) کاری آغازین گسترش مییابد، به جای اینکه به عنوان یک مسیر خالی رها شود (که امکان ایمپورت (import) از پوشهی کاری فعلی را در زمان ایمپورت فراهم میکند)
bpo-33138: تغییر پیام خطای استاندارد برای انواع (types) غیرقابلپیکل (non-pickleable) و غیرقابلکپی. این پیام اکنون به جای «can't pickle» یا «cannot serialize» میگوید «cannot pickle».
bpo-33018: بهبود سازگاری خطاهای ایجادشده توسط
issubclass()هنگامی که با یک شیء غیرکلاس و یک کلاس پایه انتزاعی (abstract base class) به عنوان آرگومانهای (arguments) اول و دوم به ترتیب فراخوانی میشود. اصلاحیه توسط Josh Bronson.bpo-33083: تابع
math.factorialدیگر آرگومانهایی (arguments) را که شبیه به int نیستند نمیپذیرد. اصلاحیه توسط Pablo Galindo.bpo-33041: افزودن آپکد (opcode) جدید
END_ASYNC_FORو رفع مسائل زیر:تنظیم
StopAsyncIterationسراسری (global) دیگر حلقههایasync forرا مختل نمیکند.پریدن (Jumping) به درون یک حلقهی (loop)
async forاکنون غیرفعال شده است.پریدن به بیرون از یک حلقهی (loop)
async forدیگر پشته (stack) را خراب نمیکند.
bpo-25750: رفع خرابی نادر پایتون به دلیل شمارش ارجاع (refcounting) نامناسب در
type_getattro()اگر یک توصیفگر (descriptor) خود را از کلاس (class) حذف کند. اصلاحیه توسط Jeroen Demeyer.bpo-33041: رفع تولید بایتکد (bytecode) برای «async for» با یک هدف پیچیده. خطای StopAsyncIteration که هنگام تخصیص یا بازکردن بسته (unpacking) ایجاد میشود، اکنون به جای توقف پیمایش (iteration)، انتشار خواهد یافت.
bpo-33026: رفع مشکل پرش از درون بلوک "with" با تنظیم کردن f_lineno.
bpo-33005: رفع یک فروپاشی در زمان انشعاب (fork) هنگام استفاده از یک تخصیصدهندهی حافظهی سفارشی (بهعنوانمثال: استفاده از متغیر محیطی PYTHONMALLOC). توابع _PyGILState_Reinit() و _PyInterpreterState_Enable() اکنون از تخصیصدهندهی حافظهی پیشفرض RAW برای تخصیص یک قفل متقابل (mutex) جدید مفسر در هنگام انشعاب استفاده میکنند.
bpo-32911: به دلیل مشکلات سازگاری غیرمنتظرهای که در طول آزمونهای بتا در پاییندست کشف شد، تغییرات bpo-29463 به حالت قبل بازگردانده شد. فیلد
docstringاز گرههای ast مربوط به Module، ClassDef، FunctionDef و AsyncFunctionDef که در نسخهی 3.7a1 اضافه شده بود، حذف شد. عبارت رشته مستند (docstring) بهعنوان اولین دستور در بدنهی آنها بازیابی شد. بر اساس وصلهی (patch) ارائهشده توسط اینادا نائوکی (Inada Naoki).bpo-17288: جلوگیری از پرشها از رویدادهای رد (trace) 'return' و 'exception'.
bpo-32946: ایمپورت کردن نامها از ماژولی که از قبل ایمپورت شده است با استفاده از دستور "from ... import ..." اکنون ۳۰ درصد سریعتر است، مشروط بر اینکه ماژول یک بسته نباشد.
bpo-32932: واضحتر کردن پیام خطا هنگامی که شیءهای غیر str در
__all__وجود دارند.bpo-32925: بهینهسازی پیمایش و آزمون عضویت برای فهرستهای لفظی (literal lists) متشکل از مقادیر غیرثابت:
x in [a, b]وfor x in [a, b]. حالت تمامی عناصر ثابت از قبل بهینهسازی شده بود.bpo-32889: بهروزرسانی فهرست حذف والگریند (Valgrind) برای در نظر گرفتن تغییر نام
Py_ADDRESS_IN_RANGبهaddress_in_range.bpo-32836: عدم استفاده از متغیرهای موقت در مواردی که درکهای فهرست/دیکشنری/مجموعه (comprehensions) استفاده میشوند.
bpo-31356: حذف API جدید اضافه شده در bpo-31356 (مدیر زمینه gc.ensure_disabled()).
bpo-32305: برای بستههای فضای نام (namespace packages)، اطمینان حاصل کنید که هر دو مقدار
__file__و__spec__.originروی None تنظیم شدهاند.bpo-32303: اطمینان حاصل کنید که
__spec__.loaderبا__loader__برای بستههای فضای نام مطابقت دارد.bpo-32711: رفع پیامهای هشدار برای Python/ast_unparse.c. وصله توسط استفان ویرتل (Stéphane Wirtel).
bpo-32583: رفع خرابی احتمالی در رمزگشایان توکار یونیکد که ناشی از خطاهای نوشتن خارج از کران (out-of-bound) هنگام استفاده از هندلرهای خطای رمزگشایی سفارشی است.
bpo-17611: حلقهی مفسر با انتقال منطق باز کردن پشتهی بلوکها به کامپایلر سادهسازی شد. کامپایلر اکنون دستورات صریحی را برای تنظیم پشتهی مقادیر و فراخوانی کد پاکسازی برای
break،continueوreturnصادر میکند.حذف آپکدهای
BREAK_LOOP،CONTINUE_LOOP،SETUP_LOOPوSETUP_EXCEPT. افزودن آپکدهای جدیدROT_FOUR،BEGIN_FINALLY،CALL_FINALLYوPOP_FINALLY. تغییر رفتارEND_FINALLYوWITH_CLEANUP_START.bpo-32285: تابع جدید unicodedata.is_normalized، که میتواند بررسی کند آیا یک رشته در یک فرم نرمال خاص قرار دارد یا خیر.
bpo-10544: عبارات Yield دیگر در درکها (comprehensions) و عبارات تولیدگر (generator expressions) به جز عبارت مربوط به بیرونیترین شیء پیمایشپذیر مجاز نیستند.
bpo-32117: باز کردن بسته (unpacking) پیمایشپذیرها اکنون بدون پرانتز در دستورات yield و return مجاز است، به عنوان مثال
yield 1, 2, 3, *rest. با تشکر از دیوید کاتبرت (David Cuthbert) برای این تغییر و جردن چپمن (Jordan Chapman) برای افزودن آزمونها.bpo-31902: ویژگی
col_offsetرا برای گرههای ast یعنیast.AsyncFor،ast.AsyncFunctionDefوast.AsyncWithاصلاح میکند. پیشتر،col_offsetبه کلیدواژهی پس ازasyncاشاره میکرد.bpo-25862: خطاهای شرط (assertion) را در متد
tell()ازio.TextIOWrapperاصلاح میکند. وصلهای از Zackery Spytz.bpo-21983: فروپاشی (crash) در
ctypes.cast()را در حالتی که آرگومان نوع داده، یک نوع دادهی ساختاریافتهی ctypes باشد، اصلاح میکند. وصلهای از Eryk Sun و Oren Milman.bpo-31577: فروپاشی (crash) در
os.utime()را در صورت نامعتبر بودن آرگومان ns اصلاح میکند. وصلهای از Oren Milman.bpo-29832: ارجاعات به 'getsockaddrarg' را از پیامهای خطای مختلف socket حذف میکند. وصلهای از Oren Milman.
کتابخانه¶
bpo-35845: پارامتر 'order' را به memoryview.tobytes() اضافه میکند.
bpo-35864: متد _asdict() برای collections.namedtuple اکنون بهجای یک OrderedDict، یک dict معمولی برمیگرداند.
bpo-35537: اکنون یک ExitStack بهطور داخلی درون subprocess.Popen برای پاکسازی دستههای پروندهی پایپ استفاده میشود. تغییری در رفتار طی عملیات عادی رخ نمیدهد. اما اگر بستن یکی از دستهها روزی باعث بروز استثنایی شود، دستههای دیگر بهجای نشت کردن، بسته خواهند شد. (وصلهای از Giampaolo Rodola)
bpo-35847: معماری RISC-V به CTYPES_PASS_BY_REF_HACK نیاز داشت. آزمون test_pass_by_value مربوط به Structure در ctypes را اصلاح میکند.
bpo-35813: زیرماژول حافظهی مشترک (shared memory) به multiprocessing اضافه شد تا از نیاز به سریالسازی بین فرایندها جلوگیری شود.
bpo-35780: خطاهای lru_cache() که در کدهای بازورودپذیر (reentrant)، بازگشتی یا چندنخی (multi-threaded) رخ میدادند را اصلاح میکند. این خطاها میتوانستند به پیوندهای یتیم و گرفتار شدن نهانگاه (cache) در وضعیتی با تعداد پیوندهای کمتر از حد مشخصشدهی حداکثر منجر شوند. نحوهی پردازش maxsize منفی که باید صفر در نظر گرفته میشد، اصلاح شد. خطاهای مربوط به تغییر وضعیت پرچم «full» اصلاح شد. بههمریختگی ترتیب پیوندها هنگام بروز خطاها اصلاح شد. کدهای C و کدهای خالص پایتون برای مسیر صرفهجویی در فضا در توابع دارای یک آرگومان جایگاهی همگامسازی شدند. در این حالت رایج، سربار فضای یک درایهی نهانگاه lru تقریباً به نصف کاهش مییابد. شمارش خطاهای نهانگاه (cache misses) اصلاح شد. در موارد خطا، تعداد خطاها با تعداد دفعاتی که تابع کاربری زیرین فراخوانی شده بود، همگام نبود.
bpo-35537: توابع
os.posix_spawn()وos.posix_spawnp()اکنون دارای یک پارامتر setsid هستند.bpo-23846: کلاس
asyncio.ProactorEventLoopاکنون زمانی که پایپ خودی (self-pipe) پر است، خطاهای ارسال را دریافت کرده و ثبت (log) میکند.bpo-34323:
asyncio: بهبود ثبت وقایعIocpProactor.close(): صبر کردن ۱ ثانیه پیش از اولین ثبت، سپس ثبت در هر ثانیه. همچنین تعداد ثانیههای سپریشده از زمان فراخوانیclose()را ثبت کنید.bpo-35674: تابع جدید
os.posix_spawnp()را اضافه میکند. وصلهای از Joannah Nanjekye.bpo-35733: عبارت
ast.Constant(boolean)دیگر نمونهای (instance) ازast.Numنیست. وصلهای از Anthony Sottile.bpo-35726: متد QueueHandler.prepare() اکنون پیش از اصلاح و در صف قرار دادن رکورد، کپی از آن تهیه میکند تا از تأثیرگذاری بر سایر هندلرها در زنجیره جلوگیری شود.
bpo-35719: افزایش سرعت توابع چندآرگومانی
mathیعنی atan2()، copysign()، remainder() و hypot() به میزان ۱.۳ تا ۲.۵ برابر.bpo-35717: رفع استثنای KeyError هنگام استفاده از enumها و compile. وصلهی ارائه شده توسط Rémi Lapeyre.
bpo-35699: تشخیص ابزارهای ساخت ویژوال استودیو ۲۰۱۷ (Visual Studio Build Tools 2017) را در distutils اصلاح کرد.
bpo-32710: رفع نشاستهای حافظه در asyncio ProactorEventLoop هنگام شکست عملیات همپوشان.
bpo-35702: ثابت
time.CLOCK_UPTIME_RAWاکنون برای macOS 10.12 در دسترس است.bpo-32710: رفع یک نشتی حافظه در asyncio در ProactorEventLoop هنگامی که عملیات همپوشان
ReadFile()یاWSASend()بلافاصله با شکست مواجه میشوند: آزاد کردن بافر داخلی.bpo-35682: اصلاح
asyncio.ProactorEventLoop.sendfile(): اگر future داخلی از قبل انجام شده است، برای تعیین نتیجهی آن تلاشی نکنید.bpo-35283: افزودن یک اخطار منسوخ برای متد
threading.Thread.isAlive(). وصله توسط Donghee Na.bpo-35664: بهبود کارایی operator.itemgetter() به میزان ۳۳ درصد با مدیریت بهینهسازیشدهی آرگومانها و افزودن یک مسیر سریع برای حالت رایج یک اندیس عدد صحیح تک و نامنفی درون یک تاپل (که کاربرد نمونه در کتابخانهی استاندارد است).
bpo-35643: رفع خطای SyntaxWarning: دنبالهی گریز نامعتبر در Modules/_sha3/cleanup.py. وصله توسط Mickaël Schoentgen.
bpo-35619: بهبود پشتیبانی از توصیفگرهای دادهی سفارشی در
help()وpydoc.bpo-28503: ماژول
cryptاکنون در صورت امکان، به جایcrypt()از تابع کتابخانهایcrypt_r()به صورت داخلی استفاده میکند.bpo-35614: رفع help() روی فراکلاسها. وصله توسط Sanyam Khurana.
bpo-35568: قرار دادن
raise(signum)به عنوانraise_signalbpo-35588: عملیات تقسیم کف (floor division) و باقیمانده و تابع
divmod()روی انواعfractions.Fractionبین ۲ تا ۴ برابر سریعتر شدهاند. وصله توسط Stefan Behnel.bpo-35585: سرعتبخشی به ساخت enumها بر اساس مقدار، به عنوان مثال http.HTTPStatus(200).
bpo-30561: تابع random.gammavariate(1.0, beta) اکنون همان نتیجهای را محاسبه میکند که random.expovariate(1.0 / beta) محاسبه میکند. این کار دو الگوریتم را همگامسازی کرده و برخی ویژگیهای خاص در پیادهسازی قدیمی را حذف میکند. با این حال، جریان متفاوتی از متغیرهای تصادفی را نسبت به گذشته تولید میکند.
bpo-35537: ماژول
subprocessاکنون میتواند در برخی موارد برای کارایی بهتر از تابعos.posix_spawn()استفاده کند.bpo-35526: به تعویق انداختن «شوخی» barry_as_FLUFL.mandatory به نسخهی ۴.۰ پایتون
bpo-35523: حذف راهحل موقت فراخوانی بازگشتی
ctypes: دیگر در هنگام راهاندازی یک فراخوانی بازگشتی ایجاد نمیشود. جلوگیری از هشدار SELinux در هنگامimport ctypesوimport uuid.bpo-31784: تابع
uuid.uuid1()اکنون به جایint(time.time() * 1e9)تابعtime.time_ns()را فراخوانی میکند.bpo-35513: کلاس
TextTestRunnerاز ماژولunittest.runnerاکنون برای اندازهگیری زمان اجرای یک آزمون به جایtime.time()ازtime.perf_counter()استفاده میکند:time.time()ممکن است به عقب برگردد، در حالی کهtime.perf_counter()یکنواخت است.bpo-35502: رفع نشتیهای ارجاع در
xml.etree.ElementTree.TreeBuilderدر صورت ساخت ناقص درخت (بهویژه هنگامی که در طول تجزیهی XML خطایی ایجاد میشود).bpo-35348: افزایش قابلیت اطمینان تجزیهی تابع
platform.architecture()در خروجی دستورfile: افزودن سوئیچ-bبه دستورfileبرای حذف نام پرونده، اجبار به استفاده از locale مربوط به C و همچنین جستوجوی الگوی شیء مشترک («shared object»).bpo-35491:
multiprocessing: افزودن متدPool.__repr__()و بهبود متدBaseProcess.__repr__()(افزودن pid و pid والد) برای سادهتر کردن اشکالزدایی. مقادیر ثابت وضعیت استخر اکنون بهجای اعداد صحیح، رشته هستند؛ برای مثال مقدارRUNبهجای0به'RUN'تبدیل میشود.bpo-35477: متد
multiprocessing.Pool.__enter__()اکنون اگر استخر در حال اجرا نباشد با خطا مواجه میشود: عبارتwith pool:اگر بیش از یک بار استفاده شود با خطا مواجه میشود.bpo-31446: کپی کردن خط فرمان ارسالشده به CreateProcessW، از آنجا که این تابع میتواند محتوای بافر ورودی را تغییر دهد.
bpo-35471: پایتون ۲.۴ پشتیبانی از MacOS 9 را کنار گذاشت. ماژول macpath در پایتون ۳.۷ منسوخ شد. این ماژول اکنون حذف شده است.
bpo-23057: رفع انسداد حلقه رویداد Proactor هنگام دریافت وقفه صفحهکلید روی ویندوز
bpo-35052: رفع مشکل xml.dom.minidom cloneNode() روی یک سند دارای موجودیت: ارسال آرگومانهای صحیح به هندلر دادهی کاربر یک موجودیت.
bpo-20239: اجازه دادن به حذف انتسابهای تکراری ویژگیهای
unittest.mock.Mock. اصلاحیه از Pablo Galindo.bpo-17185: تنظیم
__signature__روی ماک برایinspectجهت دریافت امضا. اصلاحیه از Karthikeyan Singaravelan.bpo-35445: خطاهای حافظه هنگام ایجاد posix.environ دیگر نادیده گرفته نمیشوند.
bpo-35415: اعتبارسنجی آرگومان fileno= در socket.socket().
bpo-35424: تخریبگر
multiprocessing.Poolاکنون اگر استخر همچنان در حال اجرا باشد، اخطارResourceWarningصادر میکند.bpo-35330: هنگامی که یک نمونهی
Mockبرای پوشش دادن یک شیء استفاده میشود، اگرside_effectدر یکی از ماکهای متدهای آن استفاده شود، پیادهسازی اصلی فراخوانی نشود و نتیجهی استفاده از اثر جانبی (side effect) به همان شکلی که با return_value انجام میشود، برگردانده شود.bpo-35346: کنار گذاشتن پشتیبانی از Mac OS 9 و Rhapsody در ماژول
platform. آخرین نسخهی Rhapsody در سال ۲۰۰۰ منتشر شد. آخرین نسخهی Mac OS 9 در سال ۲۰۰۱ منتشر شد.bpo-10496: تابع
check_environ()از ماژولdistutils.utilsاکنون خطایKeyErrorرا هنگام فراخوانیpwd.getpwuid()صید میکند: در این حالت متغیر محیطیHOMEرا ایجاد نکنید.bpo-10496: تابع
posixpath.expanduser()اکنون اگر متغیر محیطیHOMEتنظیم نشده باشد و کاربر فعلی پوشهی خانگی نداشته باشد (اگر شناسه کاربر فعلی در پایگاه دادهی رمزعبور وجود نداشته باشد)، مسیر ورودی را دستنخورده برمیگرداند. این تغییر ماژولsiteرا در صورتی که کاربر فعلی در پایگاه دادهی رمزعبور وجود نداشته باشد (اگر کاربر پوشهی خانگی نداشته باشد) اصلاح میکند.bpo-35389: تابع
platform.libc_ver()اکنون اگر در دسترس باشد و پارامتر executable تنظیم نشده باشد، ازos.confstr('CS_GNU_LIBC_VERSION')استفاده میکند.bpo-35394: افزودن جایگاههای خالی به پروتکلهای انتزاعی asyncio.
bpo-35310: رفع اشکالی در
select.select()که در آن، در برخی موارد، دنبالههای توصیفگر پرونده پس از یک وقفهی سیگنال بدون تغییر برگردانده میشدند، حتی با وجود اینکه توصیفگرهای پرونده ممکن است هنوز آماده نباشند.select.select()اکنون اگر مهلت زمانی رخ داده باشد همیشه فهرستهای خالی برمیگرداند. اصلاحیه از Oran Avraham.bpo-35380: فعالسازی TCP_NODELAY روی ویندوز برای حلقهی رویداد proactor در asyncio.
bpo-35341: افزودن نسخهی عام
collections.OrderedDictبه ماژولtyping. اصلاحیه از Ismo Toijala.bpo-35371: رفع احتمال فروپاشی در
os.utime()روی ویندوز هنگام ارسال آرگومانهای نادرست.bpo-35346: تابع
platform.uname()اکنون هنگام اجرای برنامههای خارجی مانندcmd /c ver، جریانstderrرا بهos.devnullهدایت میکند.bpo-35066: پیش از این، فراخوانی متد strftime() روی یک شیء datetime با یک '%' پایانی در رشتهی قالببندی منجر به بروز یک استثنا میشد. با این حال، این اتفاق تنها زمانی رخ میداد که از ماژول C مربوط به datetime استفاده میشد؛ پیادهسازی پایتون با این رفتار مطابقت نداشت. کتابخانهی Datetime اکنون با PEP-399 سازگار است و روی '%' پایانی استثنایی پرتاب نخواهد کرد.
bpo-35345: تابع
platform.popenحذف شد، این تابع از نسخهی ۳.۳ پایتون منسوخ شده بود: بهجای آن ازos.popen()استفاده کنید.bpo-35344: در macOS، تابع
platform.platform()اکنون اگر رشتهی انتشار غیرخالی برگرداند، برای دریافت نسخهی macOS بهجای نسخهی darwin ازplatform.mac_ver()استفاده میکند.bpo-35312: قابلیت پیکلپذیر (pickle-able) بودن رفتوبرگشتی را به
lib2to3.pgen2.parse.ParseErrorاضافه کنید. وصله از Anthony Sottile.bpo-35308: رفع رگرسیون در
webbrowserکه در آن مرورگرهای پیشفرض ممکن است به مرورگرهای موجود در متغیر محیطیBROWSERترجیح داده شوند.bpo-24746: جلوگیری از حذف فضای خالی پایانی در تفاضل نمایشی (fancy diff) در doctest. وصلهی اصلی از R. David Murray و Jairo Trad. بهبودیافته توسط Sanyam Khurana.
bpo-28604: تابع
locale.localeconv()اکنون اگر دو محلی (locale) متفاوت باشند و رشتههای پولی غیر ASCII باشند، به طور موقت محلیLC_CTYPEرا به محلیLC_MONETARYتنظیم میکند. این تغییر موقت روی سایر نخها (threads) تأثیر میگذارد.bpo-35277: بهروزرسانی ensurepip برای نصب pip 18.1 و setuptools 40.6.2.
bpo-24209: افزودن پشتیبانی از IPv6 هنگام فراخوانی مستقیم http.server.
bpo-35226: بررسی بازگشتی آرگومانها هنگام آزمایش برابری اشیای
unittest.mock.callو افزودن این یادداشت که ردیابی پارامترهای استفادهشده برای ایجاد اجداد ماکها درmock_callsامکانپذیر نیست.bpo-29564: ماژول warnings اکنون پیشنهاد میکند اگر منبع مشخص شده باشد، ماژول tracemalloc در دسترس باشد، اما tracemalloc در حال ردیابی تخصیصهای حافظه نباشد، tracemalloc را فعال کنید.
bpo-35189: تغییر تابع fnctl زیر برای تلاش مجدد در صورت وقفه توسط یک سیگنال (EINTR): flock، lockf، fnctl
bpo-30064: استفاده از add_done_callback() در API نامتقارن (asyncio) با پیشوند sock_* برای لغو زودهنگام اشتراک خواننده/نویسنده هنگام لغو (cancellation).
bpo-35186: حذف کامنت «built with» که وقتی
setup.py uploadباbdist_rpmیاbdist_dumbاستفاده میشود، اضافه میگردد.bpo-35152: اجازه دادن به ارسال بیش از ۲ گیگابایت در یک بار روی یک اتصال پردازش چندگانه (multiprocessing) در سیستمهای غیرویندوزی.
bpo-35062: رفع تجزیه (parsing) نادرست آرگومان translate مربوط به
io.IncrementalNewlineDecoder.bpo-35065: حذف
StreamReaderProtocol._untrack_reader. فراخوانی_untrack_readerدر حال حاضر خیلی زود انجام میشود و باعث میشود پروتکل پیش از اینکهconnection_lostبتواند اجرا شود و EOF را به خواننده برساند، خواننده را فراموش کند.bpo-34160: اکنون ماژول ElementTree و minidom ترتیب ویژگیهای مشخصشده توسط کاربر را حفظ میکنند.
bpo-35079: بهبود مستندات difflib.SequenceManager.get_matching_blocks با افزودن عبارت 'non-overlapping' و تغییر '!=' به '<'.
bpo-33710: توابع و متدهای منسوخشدهی
l*gettext()در ماژولgettext. آنها بهجای رشتههای یونیکد، بایتهای کدگذاریشده برمیگردانند و از آثار دوران پایتون ۲ هستند. همچنین توابع و متدهای مربوط به تنظیم مجموعه نویسهها (charset) برای توابع و متدهایl*gettext()نیز منسوخ شدند.bpo-35017: متد
socketserver.BaseServer.serve_forever()اگر هنگام پایش رویدادهای جدید فراخوانی شود، اکنون در صورت فراخوانی متدshutdown()بلافاصله خارج میشود.bpo-35024: کتابخانهی
importlibپس از ثبت عبارت(created|could not create) <bytecode path>دیگر عبارتwrote <bytecode path>را به شکل اضافی ثبت نمیکند. وصله توسط Quentin Agren.bpo-35047: ماژول
unittest.mockاکنون در صورت شکست خوردنassert_not_called،assert_called_onceیاassert_called_once_with، فراخوانیهای ماک را در پیامهای استثنا قرار میدهد. وصله توسط Petter Strandmark.bpo-31047: رفع رگرسیون در
ntpath.abspathکه در آن جداکنندهی پایانی در ویندوز حذف نمیشد. وصله توسط Tim Graham.bpo-35053: ماژول tracemalloc اکنون تلاش میکند وقتی شیءای از یک «فهرست آزاد» (free list) دوباره استفاده میشود (بهینهسازی برای ایجاد سریعتر شیء، که مثلاً توسط نوع فهرست توکار استفاده میشود)، ردگیری (traceback) را بهروزرسانی کند.
bpo-31553: افزودن گزینهی --json-lines به json.tool. وصله توسط hongweipeng.
bpo-34794: رفع نشت حافظه در Tkinter هنگام انتقال پوشش (wrapper) پایتون مربوط به Tcl_Obj به Tcl/Tk.
bpo-34909: Enum: رفع مشکل زیرکلاسسازی نوههای کلاس (grandchildren subclassing) زمانی که والد با انواع دادهی مشخص ترکیب شده است.
bpo-35022: کلاس
unittest.mock.MagicMockاکنون از متد__fspath__(ازos.PathLike) پشتیبانی میکند.bpo-35008: رفع نشت ارجاعات هنگام فراخوانی متد
__setstate__()ازxml.etree.ElementTree.Elementدر پیادهسازی C برای یک عنصر ازپیشمقداردهیشده.bpo-23420: بررسی مقدار پارامتر '-s' در رابط خط فرمان (CLI) ماژول cProfile. وصله توسط Robert Kuska
bpo-33947: دیتاکلاسها اکنون بازنماییهای (reprs) بازگشتی را بدون ایجاد خطای RecursionError مدیریت میکنند.
bpo-34890: سازگار کردن
inspect.iscoroutinefunction()،inspect.isgeneratorfunction()وinspect.isasyncgenfunction()باfunctools.partial(). وصله توسط Pablo Galindo.bpo-34521: استفاده از
socket.CMSG_SPACE()بهجایsocket.CMSG_LEN()برای محاسبهی اندازهی دادهی جانبی درmultiprocessing.reduction.recvfds()، زیرا استاندارد RFC 3542 استفاده از روش اول را برای برنامههای قابلحمل الزامی میکند.bpo-31522: پارامتر from_ در تابع
mailbox.mbox.get_stringاکنون میتواند با موفقیت روی مقداری غیرپیشفرض تنظیم شود.bpo-34970: محافظت از دستکاری مجموعهی ضعیف وظایف در تابع
asyncio.all_tasks()bpo-34969: gzip: افزودن پارامترهای --fast و --best به رابط خط فرمان gzip؛ این پارامترها برای روش فشردهسازی سریع (سریعتر) یا بهترین روش فشردهسازی (کندتر، اما با پروندهی کوچکتر) استفاده خواهند شد. همچنین، سطح پیشفرض فشردهسازی به ۶ تغییر یافت (مصالحه بین سرعت و حجم).
bpo-16965: اصلاحکنندهی
execfileدر 2to3 اکنون پرونده را با حالت'rb'باز میکند. وصله توسط Zackery Spytz.bpo-34966: ماژول
pydocاکنون علاوه بر متدهای تعریفشده در کلاس نهایی، از مستعارها (alias) برای متدهای ارثبریشده نیز پشتیبانی میکند. رشته مستند برای مستعارها تکرار نمیشود.bpo-34926: متد
mimetypes.MimeTypes.guess_type()اکنون علاوه بر رشتههای نشانی (url)، شیء شبهمسیر را نیز میپذیرد. وصله توسط Mayank Asthana.bpo-23831: افزودن متد
moveto()به ابزارکtkinter.Canvas. وصله توسط Juliette Monsel.bpo-34941: متدهای
find()،findtext()وfindall()از کلاسElementدر ماژولxml.etree.ElementTreeاکنون قادر به یافتن فرزندانی هستند که نمونههایی از زیرکلاسهایElementهستند.bpo-32680: اشیاء
smtplib.SMTPاکنون همیشه یک ویژگیsockدارندbpo-34769: اصلاح باگ مربوط به نهایی نشدن تولیدگرهای ناهمگام هنگامی که حلقه رویداد در حالت اشکالزدایی است و زبالهجمعکن در نخ دیگری اجرا میشود.
bpo-34936: اصلاح خطای
TclErrorدرtkinter.Spinbox.selection_element(). وصله توسط Juliette Monsel.bpo-34829: افزودن متدهای
selection_from،selection_range،selection_presentوselection_toبهtkinter.Spinboxبرای سازگاری با ابزارکtkinter.Entry. وصله توسط Juliette Monsel.bpo-34911: آرگومان secure_protocols به http.cookiejar.DefaultCookiePolicy اضافه شد تا امکان تنظیم پروتکلها فراهم شود و همچنین پشتیبانی پیشفرض از wss (پروتکل امن وبسوکت) اضافه گردد.
bpo-34922: رفع سرریز عدد صحیح در متدهای
digest()وhexdigest()برای الگوریتم SHAKE در ماژولhashlib.bpo-34925: بهبود ۲۵ درصدی سرعت در تجزیه آرگومان برای توابع موجود در ماژول bisect.
bpo-34900: اصلاح
unittest.TestCase.debug()هنگامی که برای فراخوانی متدهای آزمون با زیرآزمونها استفاده میشود. وصله توسط Bruno Oliveira.bpo-34844: بهبود logging.Formatter - اطمینان از تطابق سبکها و fmt در logging.Formatter - افزوده شدن متد validate در هر کلاس سبک قالب: StrFormatStyle، PercentStyle، StringTemplateStyle. - این متد در سازندهی کلاس logging.Formatter فراخوانی میشود - همچنین بازسروری خطای KeyError در متد format هر کلاس سبک، تا کمی مشخصتر شود که خطا مربوط به فیلدهای قالب نامعتبر است.
bpo-34897: تنظیم بررسی test.support.missing_compiler_executable بهگونهای که نام دستوری صوری "" نادیده گرفته شود. وصله توسط Michael Felt.
bpo-34871: اصلاح آلوده شدن
sys.modulesتوسط ماژول inspect هنگام تجزیه__text_signature__یک شیء فراخوانیپذیر.bpo-34898: افزودن آرگومان
mtimeبهgzip.compressبرای خروجی قابل بازتولید. وصله توسط Guo Ci Teo.bpo-28441: در Cygwin و MinGW، اطمینان حاصل کنید که
sys.executableهمیشه نام پروندهی کامل را در مسیر، شامل پسوند.exe(مگر اینکه یک پیوند نمادین باشد) درج میکند.bpo-34866: افزودن
max_num_fieldsبهcgi.FieldStorageبرای دشوارتر کردن حملات DOS با محدود کردن تعداد اشیاءMiniFieldStorageایجاد شده توسطFieldStorage.bpo-34711: ماژول http.server اطمینان حاصل میکند که وقتی مسیر محلی با "/" ختم میشود و یک پوشه نیست، گزارش HTTPStatus.NOT_FOUND را ارائه میدهد، حتی اگر سیستمعامل زیرساخت (مثلاً AIX) چنین مسیرهایی را به عنوان یک ارجاع پروندهی معتبر بپذیرد. وصله توسط Michael Felt.
bpo-34872: رفع خود-لغوسازی در پیادهسازی C از وظیفهی asyncio.Task
bpo-34849: گزارشگیری انتظار برای
selector.selectرا در پیمایش حلقهی asyncio متوقف کنید. انتظار برای هر برنامهی asyncio کاملاً طبیعی است و ثبت زمان آن فقط بدون ارائهی اطلاعات مفید، سر و صدایی به گزارشها اضافه میکند.bpo-34022: متغیر محیطی
SOURCE_DATE_EPOCHدیگر مقدار آرگومان invalidation_mode را برایpy_compile.compile()بازنویسی نمیکند، بلکه مقدار پیشفرض آن را تعیین میکند.bpo-34819: برای محاسبهی مهلتهای زمانی در
Executor.map()وas_completed()از ساعت یکنواختی استفاده کنید تا از انحراف مهلتهای زمانی هنگام تنظیم ساعت سیستم جلوگیری شود.bpo-34758: افزودن .wasm -> application/wasm به فهرست انواع پروندههای شناختهشده و سرآیندهای نوع داده
bpo-34789: تابع
xml.sax.make_parser()اکنون هر پیمایشپذیری را به عنوان آرگومان parser_list خود میپذیرد. وصله توسط Andrés Delfino.bpo-34334: در
QueueHandler، مقدارexc_textرا ازLogRecordپاک کنید تا از دوبار نوشته شدن ردگیری جلوگیری شود.bpo-34687: در ویندوز، asyncio اکنون بهطور پیشفرض به جای SelectorEventLoop از ProactorEventLoop استفاده میکند.
bpo-5950: پشتیبانی از خواندن پروندههای زیپ با کامنتهای آرشیو در ماژول
zipimport.bpo-32892: پارسر اکنون همه ثوابت را به عنوان
ast.Constantنمایش میدهد و دیگر از انواع AST ثابت خاص (Num،Str،Bytes،NameConstantوEllipsis) استفاده نمیکند. این کلاسها منسوخ در نظر گرفته میشوند و در نسخههای آیندهی پایتون حذف خواهند شد.bpo-34728: افزودن هشدار منسوخ شدن هنگامی که
loopدر متدهایasyncio.sleep،asyncio.waitوasyncio.wait_forاستفاده میشود.bpo-34738: پروندههای ZIP ایجادشده توسط
distutilsاکنون شامل ورودیهایی برای پوشهها خواهند بود.bpo-34659: افزودن آرگومان اختیاری initial به itertools.accumulate().
bpo-29577: پشتیبانی از چندین کلاس mixin هنگام ایجاد Enumها.
bpo-34670: افزودن SSLContext.post_handshake_auth و SSLSocket.verify_client_post_handshake برای ویژگی احراز هویت پس از دستدهی در TLS 1.3.
bpo-32718: اسکریپت Activate.ps1 از venv با PowerShell Core 6.1 کار میکند و اکنون در تمام سیستمعاملها در دسترس است.
bpo-31177: رفع باگی که مانع از استفاده از
reset_mockروی نمونههای ماک با ویژگیهای حذفشده میشدbpo-34672: افزودن یک راهحل موقت، بهطوریکه مشخصکنندهی
'Z'درtime.strftime()روی کتابخانهی C musl میتواند در برخی موارد کار کند.bpo-34666: پیادهسازی همروالهای
asyncio.StreamWriter.awriteوasyncio.StreamWriter.aclose(). متدها برای ارائهی یک API جریان سازگار با کنترل جریان که بهطور پیشفرض فعال است، مورد نیاز هستند.bpo-6721: قفلهای داخلی پرکاربرد ماژول گزارشگیری را هنگام فورک کردن بهدست آورید تا از بنبستها در فرایند فرزند جلوگیری شود.
bpo-34658: برطرف کردن یک وضعیت استثنای مدیریتنشدهی نادر از مفسر با خطای SystemError که فقط هنگام استفاده از subprocess با preexec_fn در حالی که یک هندلر after_parent با os.register_at_fork ثبت شده است و سیستمکال fork با خطا مواجه میشود، دیده میشود.
bpo-34652: اطمینان حاصل کنید که
os.lchmod()هرگز روی لینوکس تعریف نمیشود.bpo-34638: ذخیرهسازی یک ارجاع ضعیف به خواننده جریان برای شکستن حلقهی ارجاعهای قوی بین خواننده و پروتکل. این کار اجازه میدهد اگر جریان بدون فراخوانی
close()حذف (جمعآوری زباله) شود، سوکت شناسایی و بسته شود.bpo-34536:
Enum._missing_: اگر None برگردانده شودValueErrorو اگر غیرعضو برگردانده شودTypeErrorرا بالا بیاورید.bpo-34636: افزایش سرعت پویش (scanning) مجدد تعداد زیادی از نویسههای تطابقنیافته برای s ،w و d درون شیءهای bytes. (بهینهسازی بسیار کوچک)
bpo-24412: اضافه کردن
addModuleCleanup()وaddClassCleanup()به unittest برای پشتیبانی از پاکسازیها برایsetUpModule()وsetUpClass(). وصله توسط Lisa Roach.bpo-34630: خطاهای گواهی SSL را در کد asyncio لاگ نکنید (گزارشگیری خطای اتصال از قبل رد شده است).
bpo-32490: جلوگیری از تکرار نام پرونده در پیامهای استثنای
subprocess. وصله توسط Zackery Spytz.bpo-34363: توابع dataclasses.asdict() و .astuple() اکنون namedtupleها را به درستی پردازش میکنند.
bpo-34625: بهروزرسانی نسخهی کتابخانهی عرضهکنندهی expat به ۲.۲.۶.
bpo-32270: ماژول subprocess دیگر به اشتباه توصیفگرهای پروندهی (fds) هدایتشده را، حتی زمانی که در pass_fds و خارج از مجموعهی پیشفرض {0, 1, 2} قرار دارند، نمیبندد.
bpo-34622: ایجاد کلاسهای استثنای اختصاصی
asyncio.CancelledError،asyncio.InvalidStateErrorوasyncio.TimeoutError. آنها را از استثناهای متناظر در بستهیconcurrent.futuresبه ارث ببرید. استثناهایasyncioرا در یک پروندهی جداگانه استخراج کنید.bpo-34610: رفع مشکل پیمایشگر
multiprocessing.managers.DictProxy.bpo-34421: رفع گزارشگیری distutils برای رشتههای غیر اسکی. این مورد باعث بروز مشکلات نصب روی ویندوز میشد.
bpo-34604: رفع احتمال به هم ریختگی نویسهها (mojibake) در پیام خطای
pwd.getpwnamوgrp.getgrnamبا استفاده از بازنمایی رشته به دلیل نویسههای ناپیدا یا فاصلههای خالی پایانی. وصله توسط William Grzybowski.bpo-30977: استفاده از
__slots__در uuid.UUID برای کاهش ردپای حافظه. بر اساس وصلهی اولیه از Wouter Bolsterlee.bpo-34574: پیمایشگرهای OrderedDict دیگر در طول فرآیند ترابری (pickling) تمام نمیشوند. وصله توسط Sergey Fedoseev.
bpo-8110: بازسازی ماژول
subprocessبرای بررسی ماژولهای مختص ویندوز به جایsys.platform == 'win32'.bpo-34530: تابع
distutils.spawn.find_executable()اکنون اگر متغیر محیطیPATHتنظیم نشده باشد، بهos.defpathرجوع میکند.bpo-34563: روی ویندوز، multiprocessing.Connection را برای خواندنهای بسیار بزرگ اصلاح کنید: توابع _winapi.PeekNamedPipe() و _winapi.ReadFile() را برای خواندنهای بزرگتر از INT_MAX (معمولاً
2**31-1) اصلاح کنید.bpo-34558: اصلاح خطای تایپی در Lib/ctypes/_aix.py
bpo-34282: انتقال
Enum._convertبهEnumMeta._convert_و رفع سایهدار شدن اعضای enum توسط ویژگیهای والد.bpo-22872: هنگامی که صف بسته است، متدهای
multiprocessing.Queue.put()وmultiprocessing.Queue.get()اکنون به جایAssertionErrorوOSErrorاستثنایValueErrorرا بالا میآورند. اصلاحیه از Zackery Spytz.bpo-34515: رفع تجزیهی شناسههای غیر اسکی (non-ASCII) در
lib2to3.pgen2.tokenize(PEP 3131).bpo-13312: جلوگیری از سرریز به زیر (underflow) احتمالی عدد صحیح (رفتار تعریفنشده) در کد مدیریت سال ماژول time هنگامی که مقدار سال منفی بسیار کوچکی به آن ارسال میشود.
bpo-34472: بهبود سازگاری برای پروندههای جریانی در
zipfile. پیشتر یک امضای اختیاری نوشته نمیشد و برخی برنامههای zip پشتیبانی نمیشدند. اصلاحیه از Silas Sewell.bpo-34454: رفع کرش کردن متدهای .fromisoformat() از انواع تاریخ و زمان (datetime) هنگام دریافت یونیکد با نقطهکدهای غیرقابل رمزگذاری با UTF-8. بهطور خاص، datetime.fromisoformat() اکنون نقطهکدهای جانشین یونیکد را که به عنوان جداکننده استفاده میشوند، میپذیرد. گزارش و آزمونها از Alexey Izbyshev، اصلاحیه از Paul Ganssle.
bpo-6700: رفع inspect.getsourcelines برای فریمها/ردگیریهای سطح ماژول. اصلاحیه از Vladimir Matveev.
bpo-34171: اجرای ماژول
traceدیگر پروندهیtrace.coverرا ایجاد نمیکند.bpo-34441: رفع فروپاشی هنگام ارسال یک کلاس مشتقشده از
ABCبا__subclasses__نامعتبر به عنوان آرگومان دوم بهissubclass(). اصلاحیه از Alexey Izbyshev.bpo-34427: رفع حلقهی بینهایت در
a.extend(a)برای زیرکلاسهایMutableSequence.bpo-34412: وادار کردن
signal.strsignal()به کار روی HP-UX. اصلاحیه از Michael Osipov.bpo-20849: متد shutil.copytree اکنون یک آرگومان کلیدواژهای جدید
dirs_exist_okرا میپذیرد. اصلاحیه از Josh Bronson.bpo-31715: مرتبط کردن پسوند پروندهی
.mjsبا نوع MIME به نامapplication/javascript.bpo-34384: تابع
os.readlink()اکنون شیءهای شبهمسیر وbytesرا در ویندوز میپذیرد.bpo-22602: رمزگشای UTF-7 اکنون برای دنبالههای بدنهنیافته که با "+" شروع میشوند استثنای
UnicodeDecodeErrorرا بالا میآورد (همانطور که در RFC 2152 مشخص شده است). اصلاحیه از Zackery Spytz.bpo-2122: متد
mmap.flush()اکنون در صورت موفقیتNoneرا برمیگرداند و در صورت بروز خطا در تمام پلتفرمها یک استثنا بالا میآورد.bpo-34341: الحاق به آرشیو ZIP با پسوند ZIP64 دیگر باعث افزایش اندازهی فیلدهای اضافی ورودیهای موجود نمیشود.
bpo-34333: رفع قالببندی درصدی (%-formatting) در
pathlib.PurePath.with_suffix()هنگام قالببندی پیام خطا.bpo-18540: کلاسهای
imaplib.IMAP4وimaplib.IMAP4_SSLاکنون هنگامی که از مقدار پیشفرض پارامتر host ('') استفاده میشود، به درستی به آیپی میزبان محلی حل میشوند.bpo-26502: پیادهسازی متد
traceback.FrameSummary.__len__()برای حفظ سازگاری با API قدیمی تاپل.bpo-34318: توابع
assertRaises()،assertRaisesRegex()،assertWarns()وassertWarnsRegex()اگر شیء فراخوانیپذیر ارسالی برابر با None باشد، دیگر موفق عمل نمیکنند. آنها دیگر آرگومانهای کلیدواژهای ناشناخته را در حالت مدیر زمینه نادیده نمیگیرند. از نسخهی ۳.۵ پایتون در این موارد یک DeprecationWarning صادر میشد.bpo-9372: منسوخ کردن متدهای
__getitem__()ازxml.dom.pulldom.DOMEventStream،wsgiref.util.FileWrapperوfileinput.FileInput.bpo-33613: رفع یک مشکل شرایط رقابت (race condition) در
multiprocessing.semaphore_trackerهنگامی که ردیاب پیش از آنکه بتواند هندلرهای سیگنال را برای نادیده گرفتن SIGINT ثبت کند، آن را دریافت میکند.bpo-34248: گزارش نام پرونده در استثنای ایجادشده هنگامی که پروندهی پایگاه داده به دلیل خطای مرتبط با سیستمعامل نمیتواند توسط
dbm.gnu.open()وdbm.ndbm.open()باز شود. وصله توسط Zsolt Cserna.bpo-33089: افزودن math.dist() برای محاسبهی فاصلهی اقلیدسی بین دو نقطه.
bpo-34246: متد
smtplib.SMTP.send_message()دیگر محتوای آرگومان mail_options را تغییر نمیدهد. وصله توسط Pablo S. Blum de Aguiar.bpo-31047: رفع
ntpath.abspathبرای مسیرهای نامعتبر در ویندوز. وصله توسط Franz Woellert.bpo-32321: افزودن جایگزین خالص پایتون برای functools.reduce. وصله توسط Robert Wright.
bpo-34270: کلاس وظیفهی پیشفرض asyncio اکنون همواره دارای نامی است که میتوان آن را با استفاده از دو متد جدید (
get_name()وset_name()) دریافت یا تنظیم کرد و در خروجیrepr()قابل مشاهده است. همچنین یک نام اولیه را میتوان با استفاده از آرگومان کلیدواژهای جدیدnameدرasyncio.create_task()یا متدcreate_task()حلقهی رویداد تنظیم کرد. اگر هیچ نام اولیهای تنظیم نشود، پیادهسازی پیشفرض وظیفه، نامی مانندTask-1را با استفاده از یک شمارندهی یکنواخت تولید میکند.bpo-34263: حلقهی رویداد asyncio مهلتهای زمانی (timeouts) طولانیتر از یک روز را به epoll/select و غیره ارسال نخواهد کرد.
bpo-34035: رفع چندین AttributeError در متدهای seek() در zipfile. وصله توسط Mickaël Schoentgen.
bpo-32215: رفع پسرفت عملکردی (performance regression) در
sqlite3هنگامی که یک دستور DML در سطری متفاوت از بقیهی پرسوجوی SQL ظاهر میشد.bpo-34075: منسوخ کردن ارسال نمونههای غیر ThreadPoolExecutor به
AbstractEventLoop.set_default_executor().bpo-34251: بازنشانی
msilib.Win64برای حفظ سازگاری با نسخههای قبلی، از آنجا که از پیش توسط دستورbdist_msiدرdistutilsاستفاده میشود.bpo-19891: نادیده گرفتن خطاهای ناشی از دایرکتوری خانگی گمشده / غیرقابلنوشتن هنگام نوشتن تاریخچه در زمان خروج از یک نشست تعاملی. وصله توسط Anthony Sottile.
bpo-33089: بهبود math.hypot() برای پشتیبانی از بیش از دو بعد.
bpo-34228: tracemalloc: متغیر محیطی PYTHONTRACEMALLOC=0 و گزینهی خط فرمان -X tracemalloc=0 اکنون اجازه میدهند تا tracemalloc صراحتاً در زمان راهاندازی غیرفعال شود.
bpo-13041: استفاده از
shutil.get_terminal_size()برای محاسبهی صحیح عرض ترمینال در کلاسargparse.HelpFormatter. وصلهی اولیه توسط Zbyszek Jędrzejewski-Szmek.bpo-34213: اجازه دادن به دیتاکلاسهای فریز شده (frozen) تا فیلدی با نام "object" داشته باشند. پیشتر این مورد با یک استفادهی داخلی از "object" تداخل داشت.
bpo-34052: متدهای
sqlite3.Connection.create_aggregate()،sqlite3.Connection.create_function()،sqlite3.Connection.set_authorizer()وsqlite3.Connection.set_progress_handler()هنگامی که اشیای هشناپذیر به عنوان شیء فراخوانیپذیر ارسال میشوند، خطای TypeError بروز میدهند. این متدها اکنون چنین اشیایی را به API مربوط به SQLite ارسال نمیکنند. رفتار قبلی میتوانست به خطاهای حافظه (segfaults) منجر شود. وصله از Sergey Fedoseev.bpo-34197: ویژگیهای skipinitialspace، doublequote و strict از صفت dialect در خوانندهی ماژول
csvاکنون بهجای اعداد صحیح ۰ یا ۱، نمونههایی ازboolهستند.bpo-32788: خطاهایی غیر از
TypeErrorکه در متدهای__adapt__()و__conform__()در ماژولsqlite3بروز میکنند، اکنون به کاربر منتشر میشوند.bpo-21446: اصلاحگر
reloadاکنون بهجای تابع منسوخimp.reload()ازimportlib.reload()استفاده میکند.bpo-940286: متد
Helper.showtopic()در pydoc اکنون ارجاعات متقابل یک موضوع را به درستی چاپ میکند.bpo-34164: تابع
base64.b32decode()ممکن است برای پدینگ نادرست، خطای UnboundLocalError یا OverflowError بروز دهد. اکنون این تابع در چنین مواردی همیشه خطایbase64.Errorرا بروز میدهد.bpo-33729: مشکلات مربوط به تجزیهی آرگومانها در ماژول
hashlibبرطرف شد.bpo-34097: کتابخانهی ZipFile میتواند با استفاده از یک پارامتر جدید به نام
strict_timestamps، پروندههای قدیمیتر از ۱۹۸۰-۰۱-۰۱ و جدیدتر از ۲۱-۱۲-۲۱۰۷ را با هزینهی تنظیم زمانسنج (timestamp) روی حد نهایی، فشردهسازی کند.bpo-34108: حذف کاراکترهای CR اضافی در بازسازی 2to3.
bpo-34070: مطمئن شوید که بررسی tty بودن هندل (handle)، فقط هنگام گشودن یک پرونده با
buffering=-1انجام میشود.bpo-27494: تغییرات bpo-27494 واگردانی شد. ابزار 2to3 اکنون کامای پایانی در عبارت تولیدگر را رد میکند.
bpo-33967: تابع functools.singledispatch اکنون هنگام ارسال نشدن آرگومانهای جایگاهی، بهجای IndexError خطای TypeError بروز میدهد.
bpo-34041: پارامتر deterministic به متد
sqlite3.Connection.create_function()افزوده شد. وصله از Sergey Fedoseev.bpo-34056: اطمینان حاصل کنید که بارگذار shim ایجادشده توسط
imp.load_moduleهمیشه بایتها را از تابعget_data()خود بازمیگرداند. این مورد استفاده ازimp.load_moduleرا با pycهای مبتنی بر هش PEP 552 اصلاح میکند.bpo-34054: ماژول multiprocessing اکنون برای پیادهسازی مهلت زمانی، بهجای ساعت سیستم
time.time()از ساعت یکنواختtime.monotonic()استفاده میکند.bpo-34043: عملکرد خارجسازی از حالت فشرده در tarfile هنگام استفاده از gzip حدود ۱۵ درصد بهینهسازی شد.
bpo-34044: تابع
subprocess.Popenاکنون آرگومان startupinfo را کپی میکند تا بدون تغییر باقی بماند: این تابع کپی را تغییر میدهد تا بتوان از یک شیءSTARTUPINFOبه دفعات استفاده کرد.bpo-34010: یک رگرسیون عملکردی برای خواندن جریانها با tarfile برطرف شد. خواندن با بافر باید بهجای الحاق به یک شیء بایت، از یک فهرست استفاده کند.
bpo-34019: webbrowser: آرگومانهای ارسالشده به مرورگر اپرا (Opera Browser) هنگام گشودن یک نشانیوب جدید با استفاده از ماژول
webbrowserاصلاح شدند. وصله از Bumsik Kim.bpo-34003: ماژول csv.DictReader اکنون بهجای OrderedDicts، دیکشنریها را ایجاد میکند. وصله از Michael Selik.
bpo-33978: بستن هندلرهای گزارشگیری موجود پیش از پیکربندی مجدد از طریق fileConfig و dictConfig. وصل توسط Karthikeyan Singaravelan.
bpo-14117: اعمال اصلاحات جزئی روی turtledemo. مثال 'wikipedia' اکنون به 'rosette' تغییر یافته است که موضوع ترسیم آن را توصیف میکند. خروجی چاپ 'penrose' کاهش یافته است. خروجی '1024' مربوط به 'tree' حذف شده است.
bpo-33974: رفع مشکل ارسال فهرستها و تاپلهای حاوی نویسههای خاص
"،\،{،}و\nبه عنوان گزینهها به ابزارکهایttk.bpo-27500: رفع مشکل getaddrinfo برای حل کردن درست آدرسهای IPv6.
bpo-24567: بهبود random.choices() برای مدیریت وزنهای ورودی زیرنرمال که گاهی اوقات میتوانستند باعث ایجاد یک IndexError شوند.
bpo-33871: رفع سرریز عدد صحیح در
os.readv()،os.writev()،os.preadv()وos.pwritev()و همچنین درos.sendfile()با آرگومانهای headers یا trailers (روی سیستمعاملهای مبتنی بر BSD و macOS).bpo-25007: افزودن پشتیبانی از
copy.copy()وcopy.deepcopy()برای فشردهسازها و واگشاهای zlib. وصل توسط Zackery Spytz.bpo-33929: ماژول multiprocessing: رفع یک شرط رقابت در Popen مربوط به multiprocessing.popen_spawn_win32. فرایند فرزند اکنون به جای «ربودن» انتهای خواندن پایپ، آن را تکثیر (duplicate) میکند. پیش از این، انتهای خواندن پایپ توسط فرایند فرزند «ربوده» میشد، اما اگر فرایند فرزند پیش از ربودن دسته از فرایند والد متوقف میشد، یک دسته نشت میکرد.
bpo-33899: توکنساز ماژول اکنون هنگامی که ورودی فاقد سطر جدید پایانی است، بهطور ضمنی یک NEWLINE صادر میکند. این رفتار اکنون با عملکرد داخلی توکنساز C مطابقت دارد. مشارکت توسط Ammar Askar.
bpo-33897: افزودن یک آرگومان کلیدواژهای 'force' به logging.basicConfig().
bpo-33695: تابع
shutil.copytree()از تابعos.scandir()استفاده میکند و تمام توابع کپی وابسته به آن از مقادیر کششدهیos.stat()استفاده میکنند. بهبود سرعت برای کپی کردن یک پوشه با ۸۰۰۰ پرونده در لینوکس حدود ۹٪+، در ویندوز ۲۰٪+ و در اشتراک SMB ویندوز ۳۰%+ است. همچنین تعداد فرایندهای سیستمیos.stat()تا ۳۸٪ کاهش یافته است که باعث میشودshutil.copytree()به ویژه روی سامانههای فایلبندی شبکهای سریعتر شود. (مشارکت توسط Giampaolo Rodola' در bpo-33695.)bpo-33916: ماژولهای bz2 و lzma: هنگامی که Decompressor.__init__() دو بار فراخوانی میشود، قفل قدیمی را آزاد کنید تا حافظه نشت نکند.
bpo-32568: سازگار کردن select.epoll() و مستندات آن در خصوص sizehint و flags.
bpo-33833: رفع باگ در asyncio که در آن ProactorSocketTransport در صورت بسته شدن اجباری هنگام نوشتن، خطای AssertionError را ثبت (log) میکند.
bpo-33663: تبدیل طول محتوا به رشته پیش از قرار دادن در سرآیند.
bpo-33721: توابع
os.pathکه نتیجهای بولی برمیگردانند مانندexists()،lexists()،isdir()،isfile()،islink()وismount()، و متدهایpathlib.Pathکه نتیجهای بولی برمیگردانند مانندexists()،is_dir()،is_file()،is_mount()،is_symlink()،is_block_device()،is_char_device()،is_fifo()،is_socket()اکنون به جای بالا آوردنValueErrorیا زیرکلاسهای آن یعنیUnicodeEncodeErrorوUnicodeDecodeErrorبرای مسیرهایی که حاوی نویسهها یا بایتهای غیرقابلنمایش در سطح سیستمعامل هستند، مقدارFalseبرمیگردانند.bpo-26544: رفع پیادهسازی
platform.libc_ver(). این تابع تقریباً همیشه نسخهی '2.9' را برای glibc برمیگرداند.bpo-33843: حذف توابع منسوخ
cgi.escape،cgi.parse_qsوcgi.parse_qsl.bpo-33842: حذف
tarfile.filemodeکه از نسخهی ۳.۳ پایتون منسوخ شده است.bpo-30167: جلوگیری از بروز استثنا در site.main() اگر متغیر PYTHONSTARTUP تنظیم شده باشد. وصل توسط Steve Weber.
bpo-33805: بهبود پیام خطای تابع dataclasses.replace() هنگامی که یک InitVar مشخص نشده است
bpo-33687: اصلاح فراخوانی
os.chmod()برایuu.decode()در صورتی که حالتی داده شده یا رمزگشایی شده باشد. این وصله توسط Timo Furrer تهیه شده است.bpo-33812: نمونهی تاریخساعت d با tzinfo غیر از None، اما با d.tzinfo.utcoffset(d) که None برمیگرداند، اکنون توسط متد astimezone() به عنوان ساده (naive) در نظر گرفته میشود.
bpo-32108: در configparser، وقتی یک بخش به خودش ارجاع داده میشود، آن را پاک نکنید.
bpo-27397: ماژول email را طوری تنظیم کنید که رشتههای base64 با طول نامعتبر را به درست مدیریت کند.
bpo-33578: پیادهسازی متدهای وضعیت کدگذار/رمزگشای چندبایتی
bpo-30805: جلوگیری از شرایط رقابت (race condition) در گزارشگیری اشکالزدایی
bpo-33476: اصلاح _header_value_parser.py هنگامی که گروه آدرس فاقد ';' پایانی است. مشارکتکننده: Enrique Perez-Terron
bpo-33694: asyncio: رفع یک شرایط رقابت که باعث از دست رفتن دادهها در pause_reading()/resume_reading() هنگام استفاده از ProactorEventLoop میشود.
bpo-32493: اصلاح آزمون دسترسپذیری
uuid_enc_beدرconfigure.ac. وصله توسط Michael Felt.bpo-33792: افزودن asyncio.WindowsSelectorEventLoopPolicy و asyncio.WindowsProactorEventLoopPolicy.
bpo-33274: سطح ۱ DOM استاندارد W3C مقدار بازگشتی Element.removeAttributeNode() را به عنوان «گره Attr که حذف شد.» مشخص میکند. xml.dom.minidom اکنون از این الزام پیروی میکند.
bpo-33778: بهروزرسانی پایگاه دادهی
unicodedataبه نسخهی ۱۱.۰.۰ یونیکد.bpo-33165: افزودن پارامتر stacklevel به فراخوانهای گزارشگیری برای امکان استفاده از توابع پوششی/کمکی برای APIهای گزارشگیری.
bpo-33770: بهبود پیام استثنای base64 برای ورودیهای رمزگذاریشده با طول نامعتبر
bpo-33769: asyncio/start_tls: رفع پیام خطا؛ لغو کالبکها در صورت بروز خطای مدیریتنشده؛ علامتگذاری SSLTransport به عنوان بسته شده در صورت متوقف شدن.
bpo-33767: عملیات دنبالهای الحاق (
+) و تکرار (*) اکنون هنگام اجرا روی اشیایmmap.mmapبه جایSystemErrorخطایTypeErrorرا بالا میآورند. وصله توسط Zackery Spytz.bpo-33734: asyncio/ssl: رفع AttributeError، افزایش مهلت زمانی پیشفرض دستدهی (handshake)
bpo-31014: رفع مشکل ایجاد کنترلر برای
webbrowserهنگامی که کاربر مسیری را به یک ورودی در متغیر محیطی BROWSER مشخص میکند. بر اساس وصلهای از John Still.bpo-2504: افزودن gettext.pgettext() و انواع آن.
bpo-33197: اضافهکردن ویژگی description برای _ParameterKind
bpo-32751: هنگام لغو وظیفه به دلیل اتمام مهلت زمانی، متد
asyncio.wait_for()اکنون تا زمان کامل شدن لغو منتظر میماند.bpo-32684: اصلاح gather برای انتقال دادن لغو خودش حتی در صورت وجود return_exceptions.
bpo-33654: پشتیبانی از تغییر نوع پروتکل در SSLTransport.set_protocol().
bpo-33674: حملونقل (transport) را در اسرع وقت متوقف کنید تا خطر فراخوانی شدن data_received() قبل از connection_made() بیشتر کاهش یابد.
bpo-33671: توابع
shutil.copyfile()،shutil.copy()،shutil.copy2()،shutil.copytree()وshutil.move()برای کپی کردن کارآمدتر پرونده، از سیستمکالهای (syscall) کپی سریعِ مختص پلتفرم روی لینوکس و مکاواس استفاده میکنند. در ویندوز، تابعshutil.copyfile()از اندازهی بافر پیشفرض بزرگتری (۱ مگابایت بهجای ۱۶ کیلوبایت) استفاده میکند و نوعی از تابعshutil.copyfileobj()که بر پایهیmemoryview()است، به کار میرود. سرعت کپی کردن یک پروندهی ۵۱۲ مگابایتی روی لینوکس حدود ۲۶%+، روی مکاواس ۵۰%+ و روی ویندوز ۴۰%+ است. همچنین، سیکلهای پردازندهی بسیار کمتری مصرف میشوند. (مشارکت توسط Giampaolo Rodola' در bpo-25427.)bpo-33674: رفع مشکل شرایط رقابت (race condition) در SSLProtocol.connection_made() متعلق به asyncio.sslproto: به جای استفاده از call_soon()، فرآیند دستدهی (handshake) را بلافاصله آغاز کنید. پیشتر، ممکن بود تابع data_received() قبل از آغاز دستدهی فراخوانی شود که باعث معلق ماندن یا شکست خوردن دستدهی میشد.
bpo-31647: رفع باگی که در آن فراخوانی write_eof() روی یک شیء _SelectorSocketTransport پس از بسته شدن آن، خطای AttributeError ایجاد میکرد.
bpo-32610: کاری کنید که asyncio.all_tasks() فقط وظایف در حال انتظار را برگرداند.
bpo-32410: جلوگیری از مسدود شدن روی ورودی/خروجی پرونده در کد جایگزین sendfile
bpo-33469: رفع خطای RuntimeError پس از بستن حلقهای که از run_in_executor استفاده میکرد
bpo-33672: رفع خرابی Task.__repr__ با همروالهای نادرست Cython
bpo-33654: اصلاح transport.set_protocol() برای پشتیبانی از جابهجایی بین asyncio.Protocol و asyncio.BufferedProtocol. همچنین اصلاح loop.start_tls() برای کار با asyncio.BufferedProtocols.
bpo-33652: پیکلهای متغیرهای نوع و جنریکهای زیرنویسشده اکنون در برابر آینده مقاوم هستند و با نسخههای قدیمیتر پایتون سازگاری دارند.
bpo-32493: رفع مشکل
uuid.uuid1()روی سیستمعامل FreeBSD.bpo-33238: اضافهکردن
InvalidStateErrorبهconcurrent.futures. متدهایFuture.set_resultوFuture.set_exceptionاکنون اگر آیندهنماها در حالت انتظار یا در حال اجرا نباشند، خطایInvalidStateErrorرا صادر میکنند. پچ توسط Jason Haydaman.bpo-33618: نهاییسازی و مستندسازی پشتیبانی مقدماتی و آزمایشی از TLS 1.3 با OpenSSL 1.1.1
bpo-33625: در صورت در دسترس بودن نوع بازورودپذیر (reentrant) این توابع، قفل GIL روی
grp.getgrnam،grp.getgrgid،pwd.getpwnamوpwd.getpwuidآزاد شود. پچ توسط William Grzybowski.bpo-33623: رفع خطای احتمالی SIGSGV هنگام ایجاد asyncio.Future در متد __del__
bpo-11874: استفاده از عبارت با قاعدهی (regex) بهتر هنگام شکستن بخشهای مربوط به نحوهی استفاده به قسمتهای قابلشکستن. از خطاهای ادعای نادرست ناشی از رشتههای metavar سفارشی جلوگیری میکند.
bpo-30877: یک باگ در پیادهسازی پایتونی رمزگشای JSON برطرف شد که مانع از پاکسازی نهانگاه (cache) رشتههای تحلیلشده پس از پایان رمزگشایی میشد. براساس وچی از c-fos.
bpo-33604: مقدار پیشفرض HMAC روی md5 که برای حذف در نسخهی 3.8 علامتگذاری شده بود، برداشته شد (حذف در اصل برای نسخهی 3.6 برنامهریزی شده بود، در PR 7062 به نسخهی 3.8 منتقل شد).
bpo-33582: ایجاد یک اخطار منسوخسازی (deprecation warning) برای inspect.formatargspec
bpo-21145: اضافهکردن دکوراتور
functools.cached_property، برای ویژگیهای محاسبهشدهای که برای طول عمر نمونه نهانگاه (cache) میشوند.bpo-33570: تغییر تنظیمات بدنهی رمزنگاری TLS 1.3 برای سازگاری با OpenSSL 1.1.1-pre6 و نسخههای جدیدتر. در OpenSSL 1.1.1 رمزهای TLS 1.3 به طور پیشفرض فعال خواهند بود.
bpo-28556: آرگومانها به
typing.Unionسادهسازی نمیشوند. اکنونUnion[Manager, Employee]در زمان اجرا (runtime) بهEmployeeسادهسازی نمیشود. چنین سادهسازیای قبلاً باعث چندین باگ و محدودیت در امکانات دروننگری (introspection) میشد.bpo-12486: تابع
tokenize.generate_tokens()اکنون به عنوان یک API عمومی برای رمزگشایی رشتههای یونیکد مستند شده است. این تابع قبلاً وجود داشت اما مستند نشده بود.bpo-33540: اضافهکردن یک ویژگی کلاس جدید
block_on_closeبه کلاسهایForkingMixInوThreadingMixInدرsocketserver.bpo-33548: tempfile._candidate_tempdir_list باید مکانهای رایج TEMP را در نظر بگیرد
bpo-33109: پارامترهای فرعی (subparsers) کتابخانهی argparse بار دیگر به طور پیشفرض الزامی نیستند، که تغییر رفتار ایجاد شده توسط bpo-26510 در 3.7.0a2 را به حالت قبل برمیگرداند.
bpo-33541: حذف متد خصوصی استفادهنشده
_strptime.LocaleTime.__pad(معروف به_LocaleTime__pad).bpo-33536: کلاس dataclasses.make_dataclass اکنون نام فیلدهای نامعتبر و فیلدهای تکراری را بررسی میکند. همچنین، بررسی برای مشخصات فیلد نامعتبر اضافه شده است.
bpo-33542: جلوگیری از استفاده
uuid.get_nodeاز DUID به جای MAC در ویندوز. وچی از Zvi Effronbpo-26819: رفع شرایط رقابت (race condition) با
ReadTransport.resume_readingدر حلقهی رویداد proactor ویندوز.برطرفکردن خطا در
typing.get_type_hints()زمانی که ClassVar به عنوان یک ارجاع پیشرو رشتهای (string forward reference) ارائه شده بود.bpo-33516: کلاس
unittest.mock.MagicMockاکنون از متد جادویی__round__پشتیبانی میکند.bpo-28612: پشتیبانی از نگاشتهای سایت (Site Maps) به
RobotFileParserدر urllib به عنوانRobotFileParser.site_maps()اضافه شد. وچی از Lady Red، براساس وچی از Peter Wirtz.bpo-28167: حذف platform.linux_distribution که از نسخهی 3.5 منسوخ شده بود.
bpo-33504: تغییر پیادهسازی دیکشنری پیشفرض برای
configparserازcollections.OrderedDictبه نوعdictاستاندارد.bpo-33505: بهینهسازی asyncio.ensure_future() با مرتبسازی مجدد بررسیهای if: ۱.۱۷ برابر سریعتر.
bpo-33497: پارامتر errors را به cgi.parse_multipart اضافه کرده و کدگذاری را در FieldStorage وادار به استفاده از errors دادهشده میکند (برای Twisted لازم است). اصلاحیهای از Amber Brown.
bpo-29235: کلاس
cProfile.Profileاکنون میتواند به عنوان یک مدیر زمینه استفاده شود. اصلاحیهای از Scott Sanderson.bpo-33495: متد repr دیتاکلاسهای Fields را تغییر دهید تا به جای str، از repr هر یک از اعضای خود استفاده کند. این کار باعث میشود که مشخص شود هر فیلد دقیقاً چه چیزی را نشان میدهد. این موضوع بهویژه برای عضو 'type' صادق است.
bpo-26103: اصلاح
inspect.isdatadescriptorبرای جستجوی__set__یا__delete__. اصلاحیهای از Aaron Hall.bpo-29209: متد
doctype()و پارامتر html سازندهیXMLParserحذف شدند. متدdoctype()تعریفشده در یک زیرکلاس دیگر فراخوانی نخواهد شد. متدهای منسوخgetchildren()وgetiterator()در ماژولElementTreeاکنون به جایPendingDeprecationWarningیک اخطارDeprecationWarningصادر میکنند.bpo-33453: رفع مشکل دیتاکلاسها برای کار کردن در صورت استفاده از حاشیهنویسیهای نوع رشتهی لفظی یا استفاده از PEP 563 یعنی «ارزیابی بهتعویقافتاده حاشیهنویسیها» («Postponed Evaluation of Annotations»). فقط پیشوندهای رشتهای خاصی برای هر دو مدل ClassVar («ClassVar» و «typing.ClassVar») و InitVar («InitVar» و «dataclasses.InitVar») شناسایی میشوند.
bpo-28556: اصلاحات جزئی در ماژول typing: افزودن حاشیهنویسیها به
NamedTuple.__new__، ارسال*argsو**kwdsدرGeneric.__new__. درخواستهای تغییر اصلی توسط Paulius Šarka و Chad Dombrova.bpo-33365: اگر debuglevel روی مقدار >0 در
http.clientتنظیم شود، مقادیر سرآیند را علاوه بر کلیدهای سرآیند چاپ کند، نه فقط کلیدهای سرآیند را. اصلاحیهای از Marco Strigl.bpo-20087: بهروزرسانی نگاشت نامهای مستعار با محلیهای پشتیبانیشده در glibc 2.27.
bpo-33422: رفع مشکل حذف شدن علائم نقلقول پایانی هنگام جستجوی مقادیر لفظی بایت/رشته در pydoc. اصلاحیهای از Andrés Delfino.
bpo-28167: توابع
platform.linux_distributionوplatform.distاکنون یک هشدارDeprecationWarningرا فعال میکنند و برای حذف در نسخهی ۳.۸ پایتون علامتگذاری شدهاند.bpo-33281: رفع رگرسیون ctypes.util.find_library روی macOS.
bpo-33311: خروجی متن و html تولیدشده توسط cgitb اگر فراخوانی فعلی مستقیماً در ماژول انجام شود، پرانتزها را نمایش نمیدهد. اصلاحیهای از Stéphane Blondon.
bpo-27300: کلاسهای پرونده در tempfile اکنون پارامتر errors را میپذیرند که کدگذاری از پیش موجود را تکمیل میکند. اصلاحیهای از Stephan Hohe.
bpo-32933:
unittest.mock.mock_open()اکنون از پیمایش روی محتویات پرونده پشتیبانی میکند. اصلاحیهای از Tony Flury.bpo-33217: هنگام جستجوی شیءهای غیر Enum در کلاسهای Enum و اعضای Enum، خطای
TypeErrorرا بالا بیاورید.bpo-33197: بهروزرسانی پیام خطا هنگام ساختن inspect.Parameters نامعتبر. اصلاحیهای از Donghee Na.
bpo-33383: رفع فروپاشی در متد get() از شیء پایگاه داده
dbm.ndbmهنگامی که با یک آرگومان منفرد فراخوانی میشود.bpo-33375: ماژول هشدارها اکنون پروندهی پایتون مرتبط با یک هشدار را از شیء کد پیدا میکند، نه از فضای نام سراسری فریم. این با نحوهی پیدا کردن نام پروندهها توسط ردگیریها و pdb سازگار است و باید برای کدهای بهصورت پویا اجراشونده بهتر کار کند.
bpo-33336: ماژول
imaplibاکنون دستورMOVEرا درIMAP4.uid()(استاندارد RFC 6851: افزونهی IMAP MOVE) و احتمالاً به عنوان نام یک متد پشتیبانیشده از شیءIMAP4مجاز میداند.bpo-32455: افزودن پارامتر jump به تابع
dis.stack_effect().bpo-27485: تغییر نام و منسوخ کردن توابع مستندنشده در
urllib.parse().bpo-33332: افزودن
signal.valid_signals()برای فراهم کردن قابلیت POSIX sigfillset().bpo-33251: تابع
ConfigParser.items()اصلاح شد تا جفتهای کلید-مقدار ارسالشده از طریقvars()در خروجی نهایی قرار نگیرند.bpo-33329: رفع رگرسیون پردازش موازی (multiprocessing) روی نسخههای جدیدتر glibc.
bpo-33334: تابع
dis.stack_effect()اکنون از تمام آپکدهای تعریفشده از جمله NOP و EXTENDED_ARG پشتیبانی میکند.bpo-991266: رفع نقلقولگذاری ویژگی
Commentازhttp.cookies.SimpleCookie.bpo-33131: ارتقای نسخهی بستهبندیشدهی pip به ۱۰.۰.۱.
bpo-33308: رفع فروپاشی در ماژول
parserهنگام تبدیل یک شیء ST به درختی از تاپلها یا فهرستها باline_info=Falseوcol_info=True.bpo-23403: کتابخانهی lib2to3 اکنون از پروتکل پیکل ۴ برای گرامرهای پیشمحاسبهشده استفاده میکند.
bpo-33266: کتابخانهی lib2to3 اکنون رشتههای
rf'...'را تشخیص میدهد.bpo-11594: اطمینان از رعایت پایان سطرها هنگام استفاده از lib2to3.
bpo-33254: توابع
importlib.resources.contents()وimportlib.abc.ResourceReader.contents()به جای یک پیمایشگر، یک پیمایشپذیر برمیگردانند.bpo-33265: کلاسهای
contextlib.ExitStackوcontextlib.AsyncExitStackاکنون به جای یک تابع پوششی، از یک متد برای کالبکهای خروج استفاده میکنند.bpo-33263: رفع نشت توصیفگر فایل (FD) در
_SelectorSocketTransport. پچ توسط Vlad Starostin.bpo-33256: رفع نمایش فراخوانی
<module>در کدهای HTML تولیدشده توسطcgitb.html(). پچ توسط Stéphane Blondon.bpo-33144: تابع
random.Random()و مکانیسم زیرکلاسسازی آن بهینهسازی شد تا تنها یک بار در زمان نمونهسازی کلاس/زیرکلاس بررسی شود که آیا متدgetrandbits()آن برای تولید اعداد صحیح تصادفی به هر اندازه، از جمله توسط متدrandrange()، قابل اعتماد است یا خیر. پچ توسط Wolfgang Maier.bpo-33185: رفع رگرسیون هنگام اجرای pydoc با سویچ
-m. (این رگرسیون در نسخهی 3.7.0b3 با رفع bpo-33053 ایجاد شده بود)این اصلاح همچنین pydoc را تغییر داد تا در صورت لزوم به جای افزودن
"."، مقدارos.getcwd()را بهsys.pathاضافه کند.bpo-29613: افزودن پشتیبانی از پرچم کوکی
SameSiteبه ماژولhttp.cookies.bpo-33169: حذف درایههای
Noneدرsys.path_importer_cacheهنگام فراخوانیimportlib.machinery.invalidate_caches().bpo-33203: تابع
random.Random.choice()اکنون برای دنبالههای خالی به طور سازگار خطایIndexErrorرا بالا میآورد، حتی زمانی که از زیرکلاسهایی بدون پیادهسازیgetrandbits()فراخوانی شود.bpo-33224: بهروزرسانی difflib.mdiff() برای PEP 479. تبدیل یک StopIteration صیدنشده در یک تولیدگر به یک دستور بازگشت (return-statement).
bpo-33209: پایان دادن به فریمبندی (framing) در انتهای پیادهسازی C مربوط به
pickle.Pickler.dump().bpo-32861: بازنمایی
__str__در urllib.robotparser اکنون شامل درایههای وایلدکارد و فیلدهای "Crawl-delay" و "Request-rate" میشود. همچنین خطوط جدید اضافی که به انتهای رشته الحاق میشدند را حذف میکند. وصله توسط مایکل لازار (Michael Lazar).bpo-23403: مقدار
DEFAULT_PROTOCOLدرpickleبه ۴ ارتقا یافت. پروتکل ۴ در PEP 3154 توصیف شده و از پایتون ۳.۴ به بعد در دسترس است. این پروتکل در مقایسه با پروتکل ۳ که در پایتون ۳.۰ معرفی شد، عملکرد بهتر و اندازه کوچکتری ارائه میدهد.bpo-20104: بهبود مدیریت خطا و رفع نشت ارجاع در
os.posix_spawn().bpo-33106: حذف یک کلید از یک پایگاه داده dbm فقطخواندنی، به جای KeyError، خطای مختص ماژول را بالا میآورد.
bpo-33175: در دیتاکلاسها، Field.__set_name__ اکنون متد ویژه ___*set_name*** را روی کلاس مقدار پیشفرض جستجو میکند، نه روی نمونهی آن.
bpo-32380: ایجاد functools.singledispatchmethod برای پشتیبانی از ارسال تکگانهی عام روی توصیفگرها و متدها.
bpo-33141: کاری کنید شیءهای Field در صورتی که __set_name__ خودشان را داشته باشند، آن را به مقادیر پیشفرض خود منتقل کنند.
bpo-33096: اجازه دادن به ttk.Treeview.insert برای درج iid که دارای یک مقدار بولی نادرست (false) است. توجه داشته باشید که iid=0 و iid=False یکسان خواهند بود. وصله توسط گارویت خاتری (Garvit Khatri).
bpo-32873: متغیرهای نوع و فرمهای تایپ ویژه به عنوان تغییرناپذیر توسط copy و pickle در نظر گرفته شوند. این کار چندین مشکل و ناسازگاری جزئی را برطرف میکند و سازگاری رو به عقب با پایتون ۳.۶ را بهبود میبخشد.
bpo-33134: هنگام محاسبهی __hash__ دیتاکلاس، از جدول جستجو برای نگهداری تابعی استفاده کنید که مقدار __hash__ را برمیگرداند. این کار بهینهسازی بهتری نسبت به جستجوی یک رشته و سپس آزمایش آن رشته برای تعیین اقدام بعدی است.
bpo-33127: ماژول ssl اکنون با LibreSSL 2.7.1 کامپایل میشود.
bpo-32505: اگر متغیر عضوی از یک دیتاکلاس از نوع Field باشد اما حاشیهنویسی نوع نداشته باشد، خطای TypeError را بالا بیاورید.
bpo-33078: رفع خطای رخداده در OSX که ناشی از آزمونهای متکی بر sem_getvalue بود
bpo-33116: اضافه کردن 'Field' به dataclasses.__all__.
bpo-32896: رفع خطایی که در آن زیرکلاسسازی یک دیتاکلاس با فیلدی که از یک default_factory استفاده میکند، کلاسی نادرست ایجاد میکرد.
bpo-33100: دیتاکلاسها: اگر یک فیلد دارای مقدار پیشفرضی باشد که از نوع MemberDescriptorType است، این بدان معناست که آن فیلد در __slots__ قرار دارد، نه اینکه یک مقدار پیشفرض واقعی باشد.
bpo-32953: اگر یک کلاس عادی از یک دیتاکلاس فریزشده ارثبری کند، اجازه دهید ویژگیها به کلاس مشتقشده اضافه شوند. فقط ویژگیهای متعلق به دیتاکلاس فریزشده قابل انتساب نیستند. این قانون را الزامی کنید که تمام دیتاکلاسها در یک سلسلهمراتب، یا همگی فریزشده باشند یا همگی غیرفریزشده.
bpo-33097: هنگام خاموش شدن مفسر و فراخوانی
executor.submit، خطای RuntimeError را بالا بیاورید.bpo-32968: عملیات باقیمانده (Modulo) و تقسیم کف که شامل Fraction و عدد اعشاری هستند باید عدد اعشاری برگردانند.
bpo-33061: افزودن مقدار مفقود
NoReturnبه__all__در typing.pybpo-33078: اصلاح نحوهی مدیریت اندازه در multiprocessing.Queue هنگامی که خطای پیکلسازی (pickling) رخ میدهد.
bpo-33064: ماژول lib2to3 اکنون به طور صحیح از کامای پایانی پس از
*argsو**kwargsدر امضای تابع پشتیبانی میکند.bpo-33056: اصلاح بستهشدن صحیح توصیفگرهای فایل (fd) دارای نشت در concurrent.futures.ProcessPoolExecutor.
bpo-33021: آزاد کردن GIL در طول فراخوانیهای fstat()، که از معلق ماندن تمام نخها هنگام فراخوانی mmap.mmap()، os.urandom() و random.seed() جلوگیری میکند. وصله توسط Nir Soffer.
bpo-31804: جلوگیری از شکست خوردن در multiprocessing.Process اگر جریانهای استاندارد در هنگام خروج بسته باشند یا None باشند.
bpo-33034: ارائهی یک پیام خطای صریح هنگام تبدیل ویژگی پورت (port) به هر چیزی که مقدار عدد صحیح نباشد با استفاده از
urlparse()وurlsplit(). وصله توسط Matt Eaton.bpo-30249: بهبود پیامهای استثنای struct.unpack_from() برای مشکلات مربوط به اندازه و آفست بافر.
bpo-33037: صرفنظر کردن از ارسال/دریافت داده پس از بستهشدن انتقال SSL.
bpo-27683: اصلاح یک رگرسیون در
ipaddressکه باعث میشود نتیجهیhosts()خالی باشد هنگامی که شبکه توسط یک تاپل شامل یک نقاب عدد صحیح و تنها ۱ بیت باقیمانده برای آدرسها ساخته شده است.bpo-22674: افزودن تابع strsignal() در ماژول signal که توضیح سیستمی سیگنال دادهشده را برمیگرداند، همانطور که توسط strsignal(3) برگردانده میشود.
bpo-32999: اصلاح کرش کردن پیادهسازی C از
ABC.__subclasscheck__(cls, subclass)هنگامی کهsubclassیک شیء نوع (type object) نیست.bpo-33009: اصلاح inspect.signature() برای متدهای جزئی تکپارامتری (single-parameter partialmethods).
bpo-32969: آشکار کردن چندین ثابت مفقود در zlib و اصلاح مستندات مربوطه.
bpo-32056: بهبود استثناهای بالاآمده برای تعداد نامعتبر کانالها و پهنای نمونه هنگام خواندن یک پروندهی صوتی در ماژولهای
aifc،waveوsunau.bpo-32970: بهبود جداسازی (disassembly) دستور MAKE_FUNCTION.
bpo-32844: اصلاح هدایت نادرست یک توصیفگر پایین (۰ یا ۱) به stderr در subprocess اگر توصیفگر پایین دیگری بسته شود.
bpo-32960: برای دیتاکلاسها، ارثبری کلاسهای فریزشده از کلاسهای غیرفریزشده و همچنین ارثبری کلاسهای غیرفریزشده از کلاسهای فریزشده را مجاز ندانید. این محدودیت در تاریخ دیگری در آینده تعدیل خواهد شد.
bpo-32713: رفع نحوهی مدیریت مقادیر اعشاری خارج از کران در tarfile.itn. وصله توسط Joffrey Fuhrer.
bpo-32257: ماژول ssl اکنون شامل ثابت OP_NO_RENEGOTIATION است که با OpenSSL نسخه ۱.۱.۰h یا ۱.۱.۱ در دسترس است.
bpo-32951: ایجاد نمونهی مستقیم از اشیای SSLSocket و SSLObject اکنون ممنوع است. سازندهها هرگز به عنوان سازندههای عمومی مستند، آزمایش یا طراحی نشده بودند. کاربران باید از ssl.wrap_socket() یا SSLContext استفاده کنند.
bpo-32929: پارامتر سهحالتهی hash را حذف کرده و پارامتر بولی unsafe_hash را اضافه کنید. اگر unsafe_hash برابر با True باشد، یک تابع __hash__ اضافه کنید، اما اگر تابع __hash__ وجود دارد، خطای TypeError را بالا بیاورید. اگر unsafe_hash برابر با False باشد، یک تابع __hash__ بر اساس مقادیر eq= و frozen= اضافه کنید. رفتار unsafe_hash=False مشابه رفتار قدیمی hash=None است. رفتار unsafe_hash=False حالت پیشفرض است، درست همانطور که hash=None قبلاً بود.
bpo-32947: افزودن OP_ENABLE_MIDDLEBOX_COMPAT و آزمون راهحل جایگزین برای TLSv1.3 جهت سازگاری آینده با OpenSSL نسخه ۱.۱.۱.
bpo-32146: مستندسازی تعامل بین برنامههای اجرایی فریزشده و روشهای شروع spawn و forkserver در multiprocessing.
bpo-30622: ماژول ssl اکنون پشتیبانی گمشدهی NPN را در LibreSSL شناسایی میکند.
bpo-32922: تابع dbm.open() اکنون نام پرونده را به جای کدگذاری پیشفرض، با کدگذاری سامانه فایلبندی کدگذاری میکند.
bpo-32759: آزاد کردن آرناهای استفادهنشده در multiprocessing.heap.
bpo-32859: در
os.dup2، در هر فراخوانی بررسی نکنید که آیا سامانهی فراخوانیdup3وجود دارد یا خیر.bpo-32556: توابع nt._getfinalpathname، nt._getvolumepathname و nt._getdiskusage اکنون به درستی از فرمت بایت تبدیل میشوند.
bpo-21060: بازنویسی پیام گیجکنندهی آپلود setup.py از "No dist file created in earlier command" به پیام مفیدتر "Must create and upload files in one command".
bpo-32857: در
tkinter، تابعafter_cancel(None)اکنون به جای لغو کردن اولین تابع زمانبندیشده، یکValueErrorایجاد میکند. وصله توسط Cheryl Sabella.bpo-32852: مطمئن شوید هنگام اجرای trace فهرست sys.argv دستنخورده باقی میماند.
bpo-31333: ماژول
_abcاضافه شد. این یک ماژول شتابدهنده با پیادهسازیهای C برای توابع و متدهای مختلف درabcاست. ایجاد زیرکلاس کلاس پایه انتزاعی و فراخوانیisinstanceیاissubclassبا یک زیرکلاس کلاس پایه انتزاعی تا ۱.۵ برابر سریعتر است. علاوه بر این، این کار راهاندازی پایتون را تا ۱۰ درصد سریعتر میکند.توجه داشته باشید که پیادهسازی جدید رجیستری و نهانگاههای داخلی را پنهان میکند که قبلاً از طریق ویژگیهای خصوصی
_abc_registry،_abc_cacheو_abc_negative_cacheقابل دسترسی بودند. سه متد کمکی اشکالزدایی وجود دارد که میتوان به جای آنها استفاده کرد:_dump_registry،_abc_registry_clearو_abc_caches_clear.bpo-32841: رفع مشکل
asyncio.Conditionکه پس از اطلاعرسانی و لغو یک قفل شرطی، لغو شدن را به سکوت نادیده میگرفت. وصله توسط Bar Harel.bpo-32819: تابع ssl.match_hostname() سادهسازی شده است و دیگر برای وایلدکاردها و آدرسهای IP به ماژولهای re و ipaddress وابسته نیست. گزارشدهی خطا برای وایلدکاردهای نامعتبر بهبود یافته است.
bpo-19675: اگر مقداردهی اولیهی
multiprocessing.Poolبا شکست مواجه شود، دیگر فرایندها نشت نمیکنند.bpo-32394: سوکت (socket): حذف پرچمهای TCP_FASTOPEN، TCP_KEEPCNT، TCP_KEEPIDLE و TCP_KEEPINTVL در نسخههای قدیمیتر ویندوز در زمان اجرا (run-time).
bpo-31787: رفع نشت حافظه (refleaks) متدهای
__init__()در ماژولهای مختلف. (مشارکت از Oren Milman)bpo-30157: رفع حدسزدن نقلقول و جداکننده در csv.Sniffer.sniff() هنگامی که فقط آخرین فیلد داخل نقلقول قرار دارد. وصله (Patch) از Jake Davis.
bpo-30688: افزوده شدن پشتیبانی از گریزهای (escapes)
\N{name}در عبارتهای باقاعده (regular expressions). بر اساس وصلهای از Jonathan Eunice.bpo-32792: تابع collections.ChainMap() ترتیب (order) نگاشتهای (mappings) زیرین را حفظ میکند.
bpo-32775: تابع
fnmatch.translate()دیگر الگوهایی که شامل عملیاتهای مجموعه هستند را تولید نمیکند. مجموعههایی که با '[' شروع میشوند یا شامل '--' ،'&&' ،'~~' یا '||' هستند در نسخههای آیندهی عبارتهای باقاعده به شکل متفاوتی تفسیر خواهند شد. در حال حاضر آنها اخطارهایی را صادر میکنند. تابع fnmatch.translate() اکنون از تولید تصادفی الگوهایی که حاوی چنین مجموعههایی هستند جلوگیری میکند.bpo-32622: پیادهسازی sendfile سریع بومی برای حلقهی رویداد (event loop) پرواکتور ویندوز.
bpo-32777: رفع یک بنبست کمیاب اما بالقوه در فرایند فرزند قبل از اجرا (pre-exec) در ماژول subprocess روی سیستمهای POSIX هنگام علامتگذاری توصیفگرهای پرونده به عنوان قابل به ارث بردن هنگام اجرا در فرایند فرزند. این باگ ظاهراً در نسخهی 3.4 معرفی شده است.
bpo-32647: ماژول ctypes پیش از این برای dlopen به پیونددهی غیرمستقیم وابسته بود. افزونهی اشتراکی اکنون بهطور صریح به libdl روی پلتفرمهای دارای dl پیوند داده میشود.
bpo-32749: یک پایگاه دادهی
dbm.dumbکه با پرچمهای 'r' باز شده است، اکنون فقطخواندنی است. تابعیdbm.dumb.open()با پرچمهای 'r' و 'w' دیگر در صورتی که پایگاه داده وجود نداشته باشد، آن را ایجاد نمیکند.bpo-32741: پیادهسازی متد
asyncio.TimerHandle.when().bpo-32691: استفاده از mod_spec.parent هنگام اجرای ماژولها با pdb
bpo-32734: رفع مسئلهی ایمنی
asyncio.Lock()که به دست آوردن و قفل کردن مکرر همان قفل را بدون آزاد شدن آن امکانپذیر میکرد. وصله از Bar Harel.bpo-32727: فیلد نام را در پاکت (envelope) SMTP از آدرس حذف نکنید. وصله از Stéphane Wirtel
bpo-31453: افزودن ثابتهای TLSVersion و ویژگیهای SSLContext.maximum_version / minimum_version. API جدید ویژگی 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: جزئیات پیادهسازی داخلی ماژول ssl پاکسازی شدند. کلاس SSLSocket یک لایهی غیرمستقیم کمتر دارد. اطلاعات مالک و نشست (session) اکنون توسط سازندهی SSLSocket و SSLObject مدیریت میشوند. پیادهسازی اتصالات کانال سادهتر شده است.
bpo-31848: رفع مدیریت خطا در Aifc_read.initfp() هنگامی که قطعهی SSND یافت نمیشود. وصله از Zackery Spytz.
bpo-32585: افزودن ابزارک (widget) اسپینباکس Ttk به
tkinter.ttk. وصله از Alan D Moore.bpo-32512: رابط خط فرمان (CLI) ماژول
profileعبارت-m module_nameرا به عنوان جایگزینی برای مسیر اسکریپت میپذیرد.bpo-8525: دستور help() روی یک نوع (type) اکنون زیرکلاسهای توکار را نمایش میدهد. این تغییر عمدتاً برای کمک به اعلام (notification) زیرکلاسهای استثنای (exception) خاصتر در نظر گرفته شده است.
وصلهی پینهدوزی توسط Sanyam Khurana.
bpo-31639: ماژول http.server اکنون کلاسی به نام ThreadingHTTPServer ارائه میدهد و هنگام اجرای ماژول با
-mاز آن استفاده میکند تا با باز کردن زودهنگام سوکتها توسط مرورگرهای وب مقابله کند.bpo-29877: تابع compileall: ایمپورت ProcessPoolExecutor فقط در صورت نیاز، برای جلوگیری از توقف روی پلتفرمهای کممنبع
bpo-32221: توابع مختلفی که تاپل شامل آدرسهای IPv6 برمیگردانند، اکنون بخش
%scopeرا حذف میکنند؛ زیرا همان اطلاعات قبلاً در آیتم scopeid تاپل کدگذاری شده است. به خصوص این کار باعث افزایش سرعتsocket.recvfrom()هنگام دریافت بستههای چندپخشی (multicast) میشود؛ زیرا حل کردن بیفایدهی نام رابط شبکه حذف شده است.bpo-32147: تابع
binascii.unhexlify()اکنون تا ۲ برابر سریعتر شده است. وصلهی پینهدوزی توسط Sergey Fedoseev.bpo-30693: کلاس TarFile اکنون به روشی قابل بازتولید در دایرکتوریها پیمایش میکند.
bpo-30693: کلاس ZipFile اکنون به روشی قابل بازتولید در دایرکتوریها پیمایش میکند.
bpo-31680: مقدار
curses.ncurses_versionاضافه شد.bpo-31908: رفع مشکل خروجی پروندههای پوششی برای ابزار خط فرمان ماژول
trace. پیش از این، پروندههای پوششی فقط زمانی صادر میشدند که از گزینهی--missingاستفاده میشد. وصلهی پینهدوزی توسط Michael Selik.bpo-31608: اگر زیرکلاس
collections.dequeاز طریق__new__مقداری غیر از صف دوطرفه (deque) برگرداند، به جای کرش کردن، یک خطایTypeErrorبالا بیاورید. وصلهی پینهدوزی توسط Oren Milman.bpo-31425: افزودن پشتیبانی از سوکتهای خانوادهی آدرس AF_QIPCRTR که توسط هستهی لینوکس پشتیبانی میشوند. از این قابلیت برای ارتباط با سرویسهایی مانند GPS یا رادیو که روی دستگاههای Qualcomm اجرا میشوند، استفاده میشود. وصله توسط Bjorn Andersson.
bpo-22005: پیادهسازی بارگذاری نمونههای (unpickling)
datetime،dateوtimeکه توسط پایتون ۲ پیکle شدهاند. برای کدگشایی موفق باید ازencoding='latin1'استفاده کنید.bpo-27645: کلاس
sqlite3.Connectionاکنون یک متدbackupرا ارائه میدهد، البته اگر کتابخانهی زیربنایی SQLite دارای نسخهی ۳.۶.۱۱ یا بالاتر باشد. وصله توسط Lele Gaifax.bpo-16865: پشتیبانی از آرایههای بزرگتر یا مساوی ۲ گیگابایت در ماژول
ctypes. وصله توسط Segev Finer.bpo-31508: پشتیبانی از آرگومانها در
tkinter.ttk.Treeview.selectionحذف شد. این قابلیت در نسخهی ۳.۶ منسوخ شده بود. برای تغییر دادن انتخاب، از متدهای تخصصی مانندselection_setاستفاده کنید.bpo-29456: رفع باگها در نرمالسازی هانگول (hangul): u1176، u11a7 و u11c3
مستندات¶
bpo-21257: مستندسازی تابع
http.client.parse_headers().bpo-34764: بهبود مثال تابع iter() با استفاده از دومین آرگومان نشانگر (sentinel).
bpo-35564: تنظیم صریح متغیر master_doc در پروندهی conf.py برای سازگاری با Sphinx 2.0
bpo-35511: مشخص شد که کلاس profile.Profile از متدهای enable یا disable پشتیبانی نمیکند. همچنین، توضیح داده شد که شیء Profile به عنوان یک مدیر زمینه (context manager) تنها در ماژول cProfile پشتیبانی میشود.
bpo-10536: بهبود مستندات gettext. وصله توسط Éric Araujo
bpo-35089: حذف اشاره به
typing.ioوtyping.re. انواع آنها باید مستقیماً ازtypingوارد شوند.bpo-35038: رفع مستندات مربوط به ویژگی ناموجود
f_restrictedدر شیء قاب (frame object). وصله توسط Stéphane Wirtelbpo-35042: جایگزینی PEP XYZ با نقش pep و امکان استفاده از پیوندهای مستقیم به PEPها.
bpo-35044: اصلاح مستندات با استفاده از نقش
excبرای استثنای مناسب. وصله توسط Stéphane Wirtelbpo-35035: تغییر نام مستندات
email.utilsبهemail.utils.rst.bpo-34967: استفاده از app.add_object_type() به جای تابع منسوخشدهی Sphinx یعنی app.description_unit()
bpo-34913: افزودن مستندات مربوط به رابط خط فرمان جدید ماژول gzip.
bpo-32174: سند chm نویسههای غیر اسکی را در برخی از سیستمهای ویندوز MBCS به درستی نمایش میدهد.
bpo-11233: ایجاد دایرکتیو دسترسپذیری برای مستندات. وصلهی اصلی توسط Georg Brandl.
bpo-34790: مستندسازی چگونگی گیجکننده بودن ارسال همروالها به asyncio.wait().
bpo-34552: روشن کردن این موضوع که عملگر
==گاهی باisمعادل است. عملگرهای<،<=،>و>=فقط در جاهایی تعریف شدهاند که معنا داشته باشند.bpo-28617: اطلاعات مربوط به انواع پشتیبانیکنندهی آزمونهای عضویت در مستندات stdtypes اصلاح شد.
bpo-20177: انتقال datetime.date.fromtimestamp به Argument Clinic. وصله توسط Tim Hoffmann.
bpo-34065: رفع خطای نحو نشهگذاری مستندات basicConfig که به اشتباه نوشته شده بود
bpo-33460: جایگزینی سهنقطه با کدهای خطای صحیح در فصل ۳ آموزش.
bpo-33847: افزودن ورودیه عملگر '@' به اندیس.
bpo-33409: شفافسازی رابطه بین PYTHONCOERCECLOCALE در PEP 538 و حالت PYTHONUTF8 در PEP 540.
bpo-33197: افزودن برچسب versionadded به مستندات ParameterKind.description
bpo-17045: بهبود مستندات C-API برای PyTypeObject. این مورد شامل افزودن چندین جدول مرجع سریع و تعداد زیادی جایگاه (slot) / ورودیهای typedef گمشده است. ورودیهای موجود نیز با قالب کمی سازگارتر پاکسازی شدند.
bpo-33736: بهبود مستندات
asyncio.open_connection()،asyncio.start_server()و همتایان سوکت UNIX آنها.bpo-23859: مستندسازی این موضوع که
asyncio.wait()آیندهنماهای خود را هنگام به پایان رسیدن مهلت زمانی لغو نمیکند.bpo-33604: بهروزرسانی پیشفرض HMAC md5 به یک DeprecationWarning و انتقال زمان حذف به نسخهی ۳.۸.
bpo-33594: مستندسازی
getargspec،from_functionوfrom_builtinبه عنوان منسوخ در رشته مستند مربوطه، و گنجاندن نسخهی شروع منسوخشدن در پیام DeprecationWarning.bpo-33503: اصلاح پیوند خراب pypi
bpo-33421: افزودن مستندات مفقود برای
typing.AsyncContextManager.bpo-33487: کلاس BZ2file اکنون زمانی که buffering=None ارسال شود یک DeprecationWarning صادر میکند، همچنین پیام منسوخشدن و مستندات اکنون بهصراحت بیان میکنند که این مورد از نسخهی ۳.۰ منسوخ شده است.
bpo-33378: افزودن تغییردهندهی زبان کرهای برای https://docs.python.org/3/
bpo-33276: شفافسازی این موضوع که ویژگی
__path__روی ماژولها نمیتواند هر مقداری باشد.bpo-33201: مدرنسازی مستندات مربوط به نوشتن نوعهای توسعهای C.
bpo-33195: منسوخ کردن استفاده از
Py_UNICODEدر سندc-api/arg. APIهای مرتبط باPy_UNICODEاز پایتون ۳.۳ منسوخ شدهاند، اما در سند از قلم افتاده بود.bpo-33126: مستندسازی PyBuffer_ToContiguous().
bpo-27212: اصلاح مستندات دستورالعمل
islice()برای مصرف مقادیر اولیه تا اندیس شروع.bpo-28247: بهروزرسانی مستندات
zipappبرای توضیح نحوهی ساخت برنامههای مستقل (standalone).bpo-18802: تغییرات مستندات برای ipaddress. وصلهای از Jon Foster و Berker Peksag.
bpo-27428: بهروزرسانی مستندات برای شفافسازی این که
WindowsRegistryFinderرابطMetaPathFinderرا پیادهسازی میکند. (وصلهای از Himanshu Lakhara)bpo-28124: تابع ماژول ssl یعنی ssl.wrap_socket() کمرنگ شده و به نفع متد امنتر و کارآمدتر SSLContext.wrap_socket() منسوخ شده است.
bpo-17232: شفافسازی مستندات برای -O و -OO. وصلهای از Terry Reedy.
bpo-32436: افزودن مستندات برای ماژول contextvars (PEP 567).
bpo-32800: بهروزرسانی پیوند به مستندات w3c برای فضاهای نام پیشفرض xml.
bpo-11015: بهروزرسانی مستندات
test.support.bpo-32613: بهروزرسانی پروندهی faq/windows.html برای استفاده از دستور py از PEP 397 بهجای python.
bpo-8722: مستندسازی رفتار
__getattr__()هنگامی که متدget()ویژگی خطایAttributeErrorرا بالا میآورد.bpo-32614: تغییر مثالهای عبارت باقاعده در مستندات برای استفاده از رشتههای خام جهت جلوگیری از
DeprecationWarningو افزودن متن به راهنمای عملی REGEX برای برجسته کردن منسوخ شدن.bpo-20709: حذف پاراگرافی که در آن توضیح میدهیم os.utime() از یک پوشه به عنوان مسیر تحت ویندوز پشتیبانی نمیکند. وصله توسط Jan-Philip Gehrcke
bpo-32722: حذف مثال نادرست در آموزش عبارت تولیدگر. وصله توسط Stéphane Wirtel
bpo-31972: بهبود رشتههای مستند برای زیرکلاسهای
pathlib.PurePath.bpo-30607: استفاده از بستهی خارجی
python-docs-themeهنگام ساخت مستندات.bpo-8243: افزودن یادداشتی دربارهی رفتار استثنای curses.addch و curses.addstr هنگام نوشتن خارج از یک پنجره یا پد.
bpo-32337: بهروزرسانی مستندات مرتبط با ترتیب
dict.bpo-31432: شفافسازی معنای پرچمهای CERT_NONE، CERT_OPTIONAL و CERT_REQUIRED برای ssl.SSLContext.verify_mode.
آزمونها¶
bpo-35772: رفع آزمونهای پروندهی تنک (sparse) مربوط به test_tarfile روی ppc64 با سامانه فایلبندی tmpfs. اصلاح تابعی که بررسی میکند آیا سامانه فایلبندی از پروندههای تنک پشتیبانی میکند یا خیر: ایجاد پروندهای که حاوی داده و «حفره» است، بهجای ایجاد پروندهای که هیچ دادهای ندارد. اندازهی بلوک مؤثر tmpfs برابر با اندازهی صفحه است (tmpfs در نهانگاه صفحه زندگی میکند). RHEL از صفحات ۶۴ کیلوبایتی روی aarch64، ppc64 و ppc64le استفاده میکند، فقط s390x و x86_64 از صفحات ۴ کیلوبایتی استفاده میکنند، در حالی که آزمون حفرههایی به اندازهی ۴ کیلوبایت ایجاد میکند.
bpo-35045: کمتر سختگیرانه کردن آزمونهای ssl و همچنین پذیرش TLSv1 به عنوان پیشفرض سیستم. این تغییرات شکست آزمون test_min_max_version روی فدرا ۲۹ را برطرف میکند.
bpo-32710:
test_asyncio/test_sendfile.pyاکنون خطمشی حلقه رویداد را با استفاده ازtearDownModule()همانند سایر آزمونها بازنشانی میکند تا از بروز هشدار هنگام اجرای آزمونها روی ویندوز جلوگیری شود.bpo-33717: test.pythoninfo اکنون اطلاعات تمام ساعتها را ثبت میکند، نه فقط time.time() و time.perf_counter().
bpo-35488: افزودن یک آزمون به متد Path.match() در pathlib برای تأیید اینکه از تطبیق الگوی بازگشتی ** به سبک glob پشتیبانی نمیکند.
bpo-31731: رفع یک مشکل رقابت در
check_interrupted_write()در test_io: ایجاد مستقیم نخ با سیگنال SIGALRM مسدود شده، بهجای مسدود کردن سیگنال در ادامه از طریق نخ. پیش از این، این احتمال وجود داشت که نخ پیش از مسدود شدن سیگنال، آن را دریافت کند.bpo-35424: رفع test_multiprocessing_main_handling: استفاده از
multiprocessing.Poolبا یک مدیر زمینه و سپس الحاق صریح استخر.bpo-35519: نام ماژول
test.bisectبهtest.bisect_cmdتغییر یافت تا از تداخل با ماژولbisectهنگام اجرای مستقیم آزمونی مانند./python Lib/test/test_xmlrpc.pyجلوگیری شود.bpo-35513: جایگزینی
time.time()باtime.monotonic()در آزمونها برای اندازهگیری دلتا زمان.bpo-34279: تابع
test.support.run_unittest()دیگر استثنایTestDidNotRunرا در صورتی که نتیجهی آزمون شامل آزمونهای ردشده باشد، بالا نمیآورد. این استثنا اکنون تنها در صورتی بالا میرود که هیچ آزمونی اجرا نشده باشد و هیچ آزمونی رد نشده باشد.bpo-35412: افزودن مورد آزمون به
test_future4: بررسی لفظی یونیکد.bpo-26704: افزوده شدن آزمونی که وصلهی مضاعف (double-patching) یک متد نمونه را نشان میدهد. وصله توسط آنتونی سوتیل (Anthony Sottile).
bpo-33725: ممکن است test_multiprocessing_fork در نسخران جدید macOS دچار فروپاشی شود. تا زمانی که این مسئله برطرف نشده است، این آزمون را در macOS نادیده بگیرید.
bpo-35352: اصلاح test_asyncio برای استفاده از مجموعهی گواهی از پوشهی آزمون.
bpo-35317: رفع خطای سرریز
mktime()درtest_email: اجرایtest_localtime_daylight_true_dst_true()وtest_localtime_daylight_false_dst_true()با یک منطقهی زمانی مشخص.bpo-21263: پس از گزارشهای متعدد مبنی بر اینکه test_gdb در macOS به درستی کار نمیکند و از آنجا که gdb دیگر به طور پیشفرض عرضه نمیشود، اکنون هنگام استفاده از LLVM Clang برای کامپایل پایتون، test_gdb در macOS نادیده گرفته میشود. وصله توسط لیساندروس نیکولائو (Lysandros Nikolaou)
bpo-34279: ماژول regrtest هنگامی که هیچ آزمونی در یک پروندهی آزمون خاص اجرا نشده باشد، یک هشدار صادر میکند. همچنین، اگر هیچ آزمونی در تمام پروندههای آزمون اجرا نشده باشد، وضعیت نتیجهی نهایی جدیدی صادر میشود. وصله توسط پابلو گالیندو (Pablo Galindo).
bpo-34962: دستور docstest در Doc اکنون با موفقیت اجرا میشود و در CI اعمال میگردد.
bpo-23596: استفاده از argparse برای خط فرمان ماژول gzip. وصله توسط آنتونی لی (Antony Lee)
bpo-34537: رفع خطای
test_gdb.test_strings()هنگامی کهLC_ALL=Cاست و GDB با پایتون ۳.۶ یا نسخههای قبلی کامپایلشده است.bpo-34587: test_socket: حذف RDSTest.testCongestion(). این آزمون تلاش میکند بافر سوکت گیرنده را پر کند و انتظار خطا دارد. اما پروتکل RDS الزامی برای این کار ندارد. علاوه بر این، پیادهسازی لینوکس از RDS انتظار دارد که تولیدکنندهی پیامها نرخ خود را کاهش دهد، و این وظیفهی گیرنده نیست که خطا ایجاد کند. این آزمون بر اساس طراحی روی فدورا ۲۸ با شکست مواجه میشود، بنابراین آن را حذف کنید.
bpo-34661: رفع مشکل test_shutil در صورتی که unzip از t- پشتیبانی نکند.
bpo-34200: رفع ناپایداری غیرقطعی test_pkg با استفاده نکردن از منطق ترسناک test.support.module_cleanup() برای ذخیره و بازیابی محتویات sys.modules بین موارد آزمون.
bpo-34569: کانالهای دادهی آزمایشی PEP 554 اکنون به درستی اشیاء PyLong منفی را بین زیرمفسرها در سیستمهای ۳۲ بیتی منتقل میکنند. وصله توسط مایکل فلت (Michael Felt).
bpo-34594: اصلاح استفاده از مقادیر سختکدشدهی
errnoدر آزمونها.bpo-34579: رفع test_embed برای AIX. وصله توسط مایکل فلت (Michael Felt)
bpo-34542: استفاده از کلیدهای ۳۰۷۲ بیتی RSA و امضای SHA-256 برای گواهیها و کلیدهای آزمایشی.
bpo-11193: حذف شرط خاص برای AIX در
test_subprocess.test_undecodable_envbpo-34347: رفع مشکل
test_utf8_mode.test_cmd_lineبرای AIXbpo-34490: در سیستم AIX با سوکتهای خانوادهی AF_UNIX تابع getsockname() مقدار 'sockname' را فراهم نمیکند، بنابراین فراخوانیهای transport.get_extra_info('sockname') نادیده گرفته میشوند.
bpo-34391: رفع آزمون ftplib برای TLS 1.3 با خواندن از سوکت داده.
bpo-11192: رفع مشکل
test_socketروی AIX 6.1 و نسخههای بعد که پشتیبانی از شناسهی ناحیهی IPv6 فقط توسطinet_pton6_zone()انجام میشود. برای تشخیص پلتفرم فعلی، بهجای استفاده ازsys.platform()در زمان ساخت (build)، بهplatform.system()مبتنی بر رانتایم (runtime) تغییر وضعیت دهید.bpo-34399: بهروزرسانی تمام کلیدهای RSA و پارامترهای DH برای استفاده از حداقل ۲۰۴۸ بیت.
bpo-34373: رفع آزمونهای
test_mktimeوtest_pthread_getcpuclickidبرای AIX. افزودن بررسی محدوده برای_PyTime_localtimeبرای AIX. وصلهی (patch) ارائهشده توسط مایکل فلت (Michael Felt)bpo-11191: نادیده گرفتن آزمون distutils به نام 'test_search_cpp' هنگام استفاده از XLC به عنوان کامپایلر. وصلهی ارائهشده توسط aixtools (مایکل فلت)
بهبود یک پیام خطا هنگامی که assert_has_calls ماک (mock) با شکست مواجه میشود.
bpo-33746: رفع مشکل test_unittest هنگامی که در حالت (mode) پرجزئیات اجرا میشود.
bpo-33901: اصلاح test_dbm_gnu روی سیستمعامل macOS با gdbm 1.15: افزودن یک مقدار بزرگتر برای اطمینان از تغییر اندازهی پرونده.
bpo-33873: رفع باگی در
regrtestکه باعث میشد در صورت استفاده از --huntrleaks/-R یک آزمون اضافی اجرا شود. در صورتی که پارامترهای نامعتبری برای --huntrleaks/-R مشخص شوند (حداقل یک اجرای گرمسازی (warmup) و یک تکرار باید استفاده شود)، با خطا خارج شوید.bpo-33562: بررسی این موضوع که هیچکدام از آزمونها خطمشی حلقه رویداد (event loop policy) سراسری asyncio را به جا نگذارند.
bpo-33655: نادیده گرفتن خطاهای test_posix_fallocate در پلتفرمهای BSD که ممکن است به دلیل اجرا روی ZFS رخ داده باشند.
bpo-32962: اصلاح test_gdb هنگامی که پایتون با پرچمهای -mcet -fcf-protection -O0 کامپایلشده است.
bpo-33358: رفع
test_embed.test_pre_initialization_sys_options()هنگامی که مفسر با--enable-sharedساخته شده است.bpo-32872: جلوگیری از مشکل سازگاری regrtest با بستههای فضای نام (namespace packages).
bpo-32517: رفع خطای
test_asyncioروی macOS 10.12.2 به بالا به دلیل بسته نشدن انتقالِ حلقهِKqueueSelector.bpo-32663: اطمینان از اینکه کلاس (class)
SMTPUTF8SimTestsاز آزمونها درtest_smtplib.pyاجرا میشود.bpo-27643: مورد آزمایشی Test_C به فیلدهای بیتی «signed short» نیاز دارد، اما کامپایلر IBM XLC (روی AIX) از این ویژگی پشتیبانی نمیکند. هنگام استفاده از AIX و XLC، کد و آزمون را نادیده بگیرید.
قابلاجرا برای Python2-2.7 و نسخههای بعدی
bpo-19417: افزودن پروندهی test_bdb.py.
bpo-31809: افزودن آزمونها برای بررسی اتصال با منحنیهای secp ECDH.
ساخت¶
bpo-34691: ماژول _contextvars اکنون در کتابخانهی اصلی پایتون روی ویندوز ساخته میشود.
bpo-35683: بهبود مراحل ساخت در Azure Pipelines و بررسی صحیح چیدمانها
bpo-35642: حذف asynciomodule.c از pythoncore.vcxproj
bpo-35550: اصلاح بررسیهای نادرست Solaris #ifdef به طوری که هنگام کامپایل کردن، به جای sun به دنبال __sun && __SVR4 بگردد.
bpo-35499: دستور
make profile-optدیگرCFLAGS_NODISTرا باCFLAGSجایگزین نمیکند. این دستور اکنون پرچمهای بهینهسازی مبتنی بر هدایت پروفایل (PGO) را بهCFLAGS_NODISTاضافه میکند: پرچمهای موجود درCFLAGS_NODISTحفظ میشوند.bpo-35257: جلوگیری از نشت پرچمهای پیونددهنده از بهینهسازیهای زمان پیوند (LTO) به distutils هنگام کامپایل کردن افزونههای C.
bpo-35351: هنگام ساخت پایتون با clang و LTO، پرچمهای LTO دیگر به CFLAGS ارسال نمیشوند تا افزونههای C شخص ثالث از طریق distutils ساخته شوند.
bpo-35139: رفع خطای کامپایلر هنگام پیوند استاتیک
pyexpatدرModules/Setup.bpo-35059: در بخش PCbuild: تنظیم InlineFunctionExpansion روی گزینهی OnlyExplicitInline (گزینهی "/Ob1") در پروندهی pyproject.props در حالت Debug برای گسترش توابع مشخصشده به صورت inline. این تغییر باید باعث شود پایتون کامپایلشده در حالت Debug روی ویندوز کمی سریعتر اجرا شود.
bpo-35011: بازیابی استفاده از pyexpatns.h برای ایزوله کردن نسخهی تعبیهشدهی ما از کتابخانهی C مربوط به expat؛ به طوری که نمادهای آن در زمان پیوند یا بارگذاری پویا با یک برنامهی میزبان (تعبیهکننده) یا سایر ماژولهای توسعهای دارای نسخهی مختص به خود از libexpat تداخل پیدا نکنند.
bpo-28015: سازگاری عملکرد --with-lto با clang.
bpo-34765: بهروزرسانی پروندهی منسوخ install-sh به آخرین نسخهی بازبینیشده از automake v1.16.1
bpo-34585: بررسی ترتیب بایتهای ممیز شناور در configure.ac با استفاده از آزمونهای کامپایل به جای اجرای کد، بهطوریکه این بررسیها در ساختهای متقابل (cross-compiled) به درستی کار کنند.
bpo-34710: رفع ساخت ماژول SSL با OpenSSL و CFLAGS سختگیرانه.
bpo-34582: افزودن خروجی JUnit XML برای آزمونهای رگرسیون و بهروزرسانی ساختهای Azure DevOps.
bpo-34081: تبدیل هشدارهای Sphinx به خطا در Makefile مستندات.
bpo-34555: رفع مشکلی که در آن امکان نداشت هر دو مقدار
HAVE_LINUX_VM_SOCKETS_HوHAVE_SOCKADDR_ALGبه صورت تعریفنشده (undefined) باقی بمانند.bpo-33015: رفع یک رفتار تعریفنشده در پیادهسازی pthread برای تابع
PyThread_start_new_thread(): افزودن یک تابع پوششی برای بازگرداندن همیشهیNULL.bpo-34245: کتابخانهی مشترک پایتون اکنون با دسترسی نوشتن (حالت 0755) نصب میشود که روش استاندارد برای نصب چنین کتابخانههایی است.
bpo-34121: رفع تشخیص پشتیبانی اتمی C11 در clang.
bpo-32430: تغییر نام Modules/Setup.dist به Modules/Setup، و حذف ضرورت کپی کردن دستی فایل اول به دومی هنگام بهروزرسانی درخت سورس محلی.
bpo-30345: افزودن -g به LDFLAGS هنگام کامپایل با LTO برای دریافت نمادهای رفع اشکال.
bpo-5755: انتقال گزینهی
-Wstrict-prototypesبهCFLAGS_NODISTازOPT. این گزینه هنگام ساخت ماژولهای توسعهای نوشتهشده با ++C هشدارهای آزاردهندهای صادر میکرد.bpo-33614: تضمین میکند که فایلهای تعریف ماژول برای ABI پایدار در ویندوز به درستی بازتولید میشوند.
bpo-33648: پرچم پیکربندی --with-c-locale-warning حذف شد. این پرچم حدود یک سال بود که هیچ تأثیری نداشت.
bpo-33522: فعالسازی ساختهای CI در Visual Studio Team Services در https://python.visualstudio.com/cpython
bpo-33512: بررسی دستور configure برای نوع دادهی «long double» سادهسازی شده است.
bpo-33483: کامپایلر C اکنون به درستی از متغیرهای محیطی استاندارد تشخیص داده میشود. گزینههای --without-gcc و --with-icc حذف شدهاند.
bpo-33394: فعالسازی ساخت پرجزئیات برای ماژولهای توسعهای، زمانی که ماکروها در خط فرمان به GNU make ارسال میشوند.
bpo-33393: بهروزرسانی فایلهای config.guess و config.sub.
bpo-33377: افزودن سهولتهای (triplets) جدید برای گونههای mips r6 و riscv (که در پسوندهای توسعهای استفاده میشوند).
bpo-32232: به طور پیشفرض، ماژولهای پیکربندیشده در
Modules/Setupدیگر با-DPy_BUILD_COREساخته نمیشوند. در عوض، ماژولهایی که بهطور خاص به آن تعریف پیشپردازنده نیاز دارند، آن را در ورودیهای مجزای خود قرار میدهند.bpo-33182: آزمونهای تعبیه یک بار دیگر میتوانند با clang 6.0 ساخته شوند.
bpo-33163: ارتقای pip به 9.0.3 و setuptools به v39.0.1.
bpo-33012: کامپایلر gcc 8 یک روش اکتشافی هشدار جدید برای تشخیص تبدیلهای نوع نامعتبر تابع اضافه کرده است و ساخت استاندارد پایتون به نظر میرسد به دفعات به این هشدار برخورد میکند. رایجترین مورد، تبدیل نوع یک تابع METH_NOARGS (که فقط از یک آرگومان استفاده میکند) به یک PyCFunction است. این مشکل را با افزودن یک آرگومان ساختگی به تمام توابعی که METH_NOARGS را پیادهسازی میکنند، برطرف کنید.
bpo-32898: رفع مشکل ساخت اشکالزدایی پایتون هنگام استفاده از COUNT_ALLOCS.
bpo-29442: جایگزینی optparse با argparse در setup.py
Windows¶
bpo-35890: اصلاح سازگاری فراخوانی API توابع GetVersionEx و wcstok.
bpo-32560: برنامهی راهانداز
pyاکنون ساختارSTARTUPINFOخود را به فرایندهای فرزند ارسال میکند.bpo-35854: اصلاح EnvBuilder و --symlinks در venv روی ویندوز
bpo-35811: جلوگیری از انتشار تنظیمات venv هنگام راهاندازی از طریق py.exe
bpo-35797: اصلاح فایل اجرایی پیشفرض استفادهشده توسط ماژول multiprocessing
bpo-35758: امکان ساخت روی ARM با MSVC.
bpo-29734: اصلاح نشت دستهها (handle leaks) در os.stat روی ویندوز.
bpo-35596: استفاده از فایلهای PYC بررسینشده برای توزیع قابلجاسازی به منظور اجتناب از محدودیتهای zipimport.
bpo-35596: اصلاح اضافه شدن مکرر vcruntime140.dll به توزیع قابلجاسازی.
bpo-35402: بهروزرسانی ساخت ویندوز برای استفاده از Tcl و Tk 8.6.9
bpo-35401: بهروزرسانی ساخت ویندوز به OpenSSL 1.1.0j
bpo-34977: ابزار venv روی ویندوز اکنون به جای کپی کردن فایلهای اجرایی واقعی از محیط پایه، از یک تغییردهندهی مسیر (redirector) به نام python.exe استفاده خواهد کرد.
bpo-34977: افزودن پشتیبانی برای ساخت بستهی فروشگاه مایکروسافت ویندوز
bpo-35067: حذف ماژول _distutils_findvs و استفاده از vswhere.exe به جای آن.
bpo-32557: اجازه دادن به shutil.disk_usage برای پذیرش مسیر پرونده روی ویندوز
bpo-34770: اصلاح ارجاع به اشارهگر تهی (null pointer dereference) احتمالی در pyshellext.cpp.
bpo-34603: اصلاح بازگرداندن structها از توابع تولیدشده توسط MSVC
bpo-34581: محافظت از کد مختص MSVC در socketmodule.c با
#ifdef _MSC_VER.bpo-34532: اصلاح کد خروج آرگومانهای فهرست نسخه برای py.exe.
bpo-34062: اصلاح آرگومانهای '--list' و '--list-paths' برای برنامهی راهانداز py.exe
bpo-34225: اطمینان حاصل کنید که پوشههای INCLUDE و LIB به یک بکاسلش ختم نمیشوند.
bpo-34011: بدنهای از کد تغییر یافته است که فایلهای DLL و init.tcl را از محل در حال اجرای پایتون درون یک venv در حال ساخت کپی میکرد. این کپیها فقط هنگام اجرا از روی ساخت سورس پایتون مورد نیاز هستند و کد کپیکردن اکنون فقط در همان حالت اجرا میشود، نه هر زمان که یک venv ساخته میشود.
bpo-34006: بازگردانی محدودیت طول سطر برای مستندات راهنمای ویندوز. محدودیت طول سطر لازم نیست زیرا صفحات بهجای تب مرورگر، در یک برنامهی جداگانه ظاهر میشوند. همچنین ممکن است با تنظیمات DPI تداخل داشته باشد.
bpo-31546: بازگردانی اجرای PyOS_InputHook هنگام انتظار برای ورودی کاربر در اعلان. این تغییر، یکپارچهسازی پنجرههای گرافیکی تعاملی (مانند نمودارهای Matplotlib) را با اعلان در ویندوز بازیابی میکند.
bpo-30237: بهجای ایجاد کرش، هنگام لغو شدن ReadConsole توسط CancelSynchronousIo خطای خروجی صادر کنید.
bpo-33895: هنگام فراخوانی توابعی که قفل بارگذار ویندوز را بهدست میآورند، قفل GIL آزاد میشود.
bpo-33720: عمق بازگشتی مارشالکردن حداکثر را در ساختهای release کاهش میدهد.
bpo-29097: رفع باگی که در آن
datetime.fromtimestamp()به اشتباه روی ویندوز برای مقادیر بین ۰ و ۸۶۴۰۰ یکOSErrorپرتاب میکند. وصله توسط Ammar Askar.bpo-33316: تابع PyThread_release_lock همیشه با شکست مواجه میشود
bpo-33184: بهروزرسانی نصبکنندهی ویندوز برای استفاده از OpenSSL 1.1.0h.
bpo-32890: رفع استفاده از GetLastError() بهجای errno در os.execve() و os.truncate().
bpo-33016: برطرفسازی استفادهی احتمالی از حافظهی مقداردهینشده در nt._getfinalpathname
bpo-32903: رفع یک نشت حافظه در os.chdir() روی ویندوز اگر پوشهی فعلی روی یک مسیر UNC تنظیم شده باشد.
bpo-32901: بهروزرسانی نسخههای Tcl و Tk به 8.6.8
bpo-31966: رفع WindowsConsoleIO.write() برای نوشتن دادههای خالی.
bpo-32409: تضمین میکند که activate.bat میتواند محتوای یونیکد را مدیریت کند.
bpo-32457: مدیریت مسیر اجراییِ عادینشده را هنگام راهاندازی پایتون بهبود میبخشد.
bpo-32370: استفاده از کدگذاری صحیح برای خروجی ipconfig در ماژول uuid. وصله توسط Segev Finer.
bpo-29248: رفع
os.readlink()روی ویندوز که به اشتباه فیلدPrintNameOffsetاز بافر دادهی تجزیه (reparse) را به عنوان تعداد نویسهها بهجای بایتها در نظر میگرفت. وصله توسط Craig Holmquist و SSE4.bpo-1104: مدیریت صحیح طول رشته در
msilib.SummaryInfo.GetProperty()برای جلوگیری از قطعشدن نویسهی آخر آن.
مکاواس¶
bpo-35401: بروزرسانی برنامهی نصب macOS برای استفاده از OpenSSL 1.1.0j.
bpo-35025: محافظت درست از استفادهی ماکروهای
CLOCK_GETTIMEو غیره درtimemoduleروی macOS.bpo-24658: روی macOS، رفع مشکل خواندن و نوشتن در پروندهای با اندازهی بزرگتر از ۲ گیگابایت.
bpo-34405: بروزرسانی به OpenSSL 1.1.0i برای ساختهای برنامهی نصب macOS.
bpo-33635: در macOS دستور stat روی برخی از توصیفگرهای پرونده (/dev/fd/3 به عنوان مثال) منجر به OSError توصیفگر پروندهی نامعتبر میشود. محافظت در برابر این استثنا در is_dir، is_file و متدهای مشابه اضافه شد. DirEntry.is_dir نیز میتواند این استثنا را پرتاب کند، بنابراین _RecursiveWildcardSelector._iterate_directories نیز با همان الگوی نادیده گرفتن خطا گسترش یافت.
bpo-13631: پروندهی .editrc در پوشهی خانگی کاربر اکنون در طول مقداردهی اولیهی readline از طریق شبیهسازی editline روی macOS به درستی پردازش میشود.
bpo-33184: بروزرسانی ساخت برنامهی نصب macOS برای استفاده از OpenSSL 1.1.0h.
bpo-32726: ساخت و پیوند دادن با نسخهی خصوصی Tcl/Tk 8.6 برای برنامهی نصب macOS 10.6+. نوع برنامهی نصب 10.9+ از قبل این کار را انجام میدهد. این بدان معناست که پایتون 3.7 ارائه شده توسط برنامههای نصب macOS در python.org دیگر به هیچ نسخهی خارجی Tcl/Tk، چه نسخههای ارائهشده توسط سیستم و چه نصبشده توسط کاربر مانند ActiveTcl، نیاز ندارد یا از آنها استفاده نمیکند.
bpo-32901: بروزرسانی برنامهی نصب macOS 10.9+ به Tcl/Tk 8.6.8.
bpo-31903: در
_scproxy، برای جلوگیری از بنبستها هنگام فراخوانیSystemConfiguration، قفل GIL را رها کنید.
IDLE¶
bpo-35770: برنامهی IDLE در macosx گزینهی Options => Configure IDLE را حذف میکند. این برنامه قبلاً به اشتباه گزینهی Window => Zoom Height را حذف کرده بود. (گزینهی Zoom Height اکنون در منوی Options قرار دارد). روی مک، دیالوگ تنظیمات از طریق Preferences در منوی IDLE قابل دسترسی است.
bpo-35769: تغییر نام پروندهی جدید IDLE از 'Untitled' به 'untitled'
bpo-35660: رفع ایمپورتها در idlelib.window.
bpo-35641: قالببندی درست
calltipهنگامی که تابع رشته مستند ندارد.bpo-33987: استفاده از قاب ttk برای ابزارکهای ttk.
bpo-34055: رفع تورفتگیها و خطوط جدید «هوشمند» نادرست در پوستهی IDLE.
bpo-35591: ویژگی Find Selection اکنون زمانی که انتخاب پیدا نشود کار میکند.
bpo-35196: افزایش سرعت شمارش سطرها در squeezer.
bpo-35598: بروزرسانی config_key: استفاده از نامهای PEP 8 و ابزارکهای ttk، سراسری کردن برخی از شیءها و افزودن آزمونها.
bpo-28097: افزودن ورودیهای تاریخچهی قبلی/بعدی به منوی پوسته.
bpo-35208: ابزار Squeezer اکنون خطوط پیچیده شده را پیش از نویسههای خط جدید به درستی میشمارد.
bpo-35555: هنگامی که گزینهی منوی «زمینهی کد» (Code Context) قابل اعمال نیست، آن را کمرنگ کنید.
bpo-35521: ویژگی زمینهی کد ویرایشگر IDLE را مستند کنید. برخی ارجاعات داخلی را در مستندات IDLE اضافه کنید.
bpo-22703: برچسب منوی «زمینهی کد» اکنون بین «نمایش زمینهی کد» و «پنهان کردن زمینهی کد» تغییر وضعیت میدهد. منوی «بزرگنمایی ارتفاع» اکنون بین «بزرگنمایی ارتفاع» و «بازیابی ارتفاع» تغییر وضعیت میدهد. «بزرگنمایی ارتفاع» از منوی Window به منوی Options منتقل شده است.
bpo-35213: در صورت لزوم، از 'macOS' در idlelib استفاده کنید.
bpo-34864: در سیستمعامل macOS، اگر ترجیح سیستمی "Prefer tabs when opening documents" روی "Always" تنظیم شده باشد، هشدار دهید.
bpo-34864: دو مسئلهی IDLE در سیستمعامل macOS را مستند کنید. تنظیم Dock در بخش System Preferences با عنوان "prefer tabs always" برخی ویژگیهای IDLE را غیرفعال میکند. منوها کمی با آنچه برای ویندوز و لینوکس توصیف شده است متفاوت هستند.
bpo-35202: ایمپورتهای استفادهنشده را از lib/idlelib حذف کنید.
bpo-33000: مستند کنید که پوستهی IDLE محدودیتی برای تعداد سطرها ندارد. برنامهای که به طور نامحدود اجرا میشود میتواند حافظه را بیش از حد پر کند.
bpo-23220: نحوهی نمایش خروجی توسط پوستهی IDLE را توضیح دهید.
bpo-35099: مستندات مربوط به اجرای کد کاربر توسط IDLE را بهبود ببخشید. عنوان این بخش از «IDLE -- تفاوتهای کنسول» به «اجرای کد کاربر» تغییر یافته است. این بخش عمدتاً پیامدهای استفاده از شیءهای سفارشی
sys.stdxxxرا پوشش میدهد.bpo-35097: زیربخش مستندات IDLE را که پنجرههای ویرایشگر را توضیح میدهد، اضافه کنید. موضوعات شامل باز کردن، نوار عنوان و وضعیت، پسوند .py* و اجرا هستند.
bpo-35093: نمایشگر سند IDLE را در مستندات IDLE مستند کنید. یک پاراگراف در زیربخش «Help and preferences»، «Help sources» اضافه کنید.
bpo-35088: رشته مستند idlelib.help.copy_string را بهروزرسانی کنید. ما اکنون به جای hg و ادغام رو به جلو (forward merging)، از git و backporting استفاده میکنیم.
bpo-35087: پروندههای راهنمای idlelib را برای ساخت مستندات فعلی بهروزرسانی کنید. تغییر اصلی، حذف شمارههای فصل-بخش است.
bpo-34548: از پوستهی رنگی پیکربندیشده برای نماهای متنی فقطخواندنی استفاده کنید.
bpo-1529353: امکان «فشردهسازی» (squeezing) خروجیهای طولانی را در پوسته فعال کنید تا از افت عملکرد جلوگیری شود و تاریخچه بدون از دست رفتن پاکسازی شود. خروجیهای فشردهشده را میتوان کپی کرد، در یک پنجرهی جداگانه مشاهده کرد و از حالت فشرده خارج کرد.
bpo-34047: جهتپیمایی چرخ ماوس در macOS اصلاح شد.
bpo-34275: نکات راهنمای تماس (calltips) IDLE را در مک همیشه مرئی کنید. برخی ترکیبات macOS-tk به .update_idletasks() نیاز دارند. وصله توسط کوین والزر (Kevin Walzer).
bpo-34120: مشکل عدم پاسخگویی پس از بستن برخی پنجرهها و محاورهها برطرف شد.
bpo-33975: از استفاده از نوع دادهی کوچک هنگام اجرای آزمونهای htests جلوگیری کنید. از آنجا که بخشی از هدف آزمونهای بررسیشده توسط انسان تعیین درست بودن ظاهر ابزارکها است، مهم است که ابزارکها هنگام آزمون همانند زمان اجرای IDLE به نظر برسند.
bpo-33905: افزودن آزمون برای idlelib.stackview.StackBrowser.
bpo-33924: کلید 'windows' را در mainmenu.menudefs به 'window' تغییر دهید. سایر کلیدهای menudef نسخهی با حروف کوچک از گزینهی منوی اصلی هستند.
bpo-33906: تغییر نام idlelib.windows به window مطابق با Window در منوی اصلی و حذف آخرین نام ماژول جمع.
bpo-33917: اصلاح و مستندسازی idlelib/idle_test/template.py. پروندهی بازبینیشده کامپایل میشود، اجرا میشود و آزمونها را با موفقیت پشت سر میگذارد. پروندهی idle_test/README.txt نحوهی استفاده از آن را برای ایجاد پروندههای آزمون جدید IDLE توضیح میدهد.
bpo-33904: ابزار IDLE: در rstrip، تغییر نام کلاس RstripExtension به Rstrip
bpo-33907: برای سازگاری و وضوح بیشتر، نام یک ماژول و کلاسهای IDLE تغییر یافت. ماژول calltips و کلاس آن به نام CallTips اکنون calltip و Calltip هستند. در ماژول calltip_w، کلاس CallTip اکنون CalltipWindow است.
bpo-33856: افزودن «help» در پیام خوشآمدگویی IDLE
bpo-33839: ابزار IDLE: بازسازی ToolTip و CallTip و افزودن مستندات و آزمونها
bpo-33855: آزمون حداقلی تمام ماژولهای IDLE. افزودن پروندههای گمشده، ایمپورت ماژول، نمونهسازی کلاسها و بررسی پوشش کد. بررسی پروندههای موجود.
bpo-33656: در ویندوز، افزودن فراخوانی API مبنی بر مقیاسگذاری tk برای DPI. در ویندوز 8.1+ یا 10، در صورتی که ویژگیهای سازگاری DPI فایل دودویی پایتون تغییر نکرده باشد و وضوح مانیتور بیشتر از ۹۶ DPI باشد، این امر باید متن و خطوط را واضحتر کند. در غیر این صورت نباید تأثیری داشته باشد.
bpo-33768: کلیک کردن روی یک سطر زمینهای، آن سطر را به بالای پنجرهی ویرایشگر منتقل میکند.
bpo-33763: ابزار IDLE: به جای ابزارک برچسب، از ابزارک متن فقطخواندنی برای زمینهی کد استفاده کنید.
bpo-33664: پیمایش متن ویرایشگر IDLE بر اساس سطرها. پیشتر، چرخ ماوس و نوار لغزان متن را به میزان ثابتی از پیکسلها جابجا میکردند که منجر به نمایش سطرهای ناقص در بالای کادر ویرایشگر میشد. این تغییر همچنین برای پوستههای خروجی و پنجرههای خروجی grep اعمال میشود، اما شامل نماهای متنی فقطخواندنی نمیشود.
bpo-33679: فعالسازی پیکربندی رنگ مختص به پوسته برای زمینهی کد (Code Context). برای مشاهدهی تنظیمات پوستههای توکار یا افزودن تنظیمات به پوستههای سفارشی، از زبانهی Highlights استفاده کنید.
bpo-33642: نمایش حداکثر maxlines سطر غیرخالی برای زمینهی کد. اگر زمینهی فعلی وجود نداشته باشد، یک سطر خالی منفرد نمایش داده میشود.
bpo-33628: ابزار IDLE: پاکسازی codecontext.py و آزمون آن.
bpo-33564: زمینهی کد IDLE اکنون کلمهی کلیدی async را به عنوان آغازگر یک بلوک تشخیص میدهد.
bpo-21474: بهروزرسانی تعریف کلمه/شناسه از ascii به یونیکد. در کادرهای متنی و ورودی، این تغییر روی انتخاب با دو بار کلیک، جابجایی به چپ/راست با کنترل-چپ/راست و حذف به چپ/راست با کنترل-BACKSPACE/DEL تأثیر میگذارد.
bpo-33204: ابزار IDLE: رنگآمیزی سازگار پیشوندهای رشتهای نامعتبر. پیشوند رشتهای 'u' نمیتواند با 'r' یا 'f' جفت شود. تا جایی از پیشوند که معتبر است، با شروع از سمت راست، بهطور سازگار رنگآمیزی شود. بازبینی و گسترش آزمون رنگپرداز (colorizer).
bpo-32984: هنگام اجرای یک پروندهی راهاندازی، متغیر
__file__را تنظیم کنید. ایدل (IDLE) مانند پایتون بهطور اختیاری یک پروندهی راهاندازی را پیش از ارائهی نخستین اعلان ورودی تعاملی در پنجرهی پوسته (Shell) اجرا میکند. برای ایدل،-sپروندهای را که در متغیر محیطیIDLESTARTUPیاPYTHONSTARTUPنامگذاری شده است اجرا میکند؛-r fileپروندهیfileرا اجرا میکند. پایتون__file__را پیش از اجرای پرونده روی نام پروندهی راهاندازی تنظیم میکند و پیش از نخستین اعلان آن را پاک میکند. ایدل اکنون هنگام اجرای عادی، بدون گزینهی-n، همین کار را انجام میدهد.bpo-32940: سادهسازی و تغییر نام StringTranslatePseudoMapping در pyparse.
bpo-32916: تغییر
strبهcodeدر pyparse.bpo-32905: حذف کد استفادهنشده در ماژول pyparse.
bpo-32874: افزودن آزمونها برای pyparse.
bpo-32837: استفاده از کدگذاری پیشفرض سیستم و وابسته به مکان برای open() ایدهی بدی برای پروندههای مستقل از مکان و سیستم ایدل است.
bpo-32826: افزودن «encoding=utf-8» به open() در test_help_about ایدل. آزمون گرافیکی test_file_buttons() فقط سطرهای اولیهی فقط-اسکی (ascii-only) را بررسی میکند، اما روی سیستمهایی که open() بهطور پیشفرض از «ascii» استفاده میکند با خطا مواجه شد؛ زیرا readline() بهطور داخلی به اندازهی کافی جلو میخواند و رمزگشایی میکند تا به یک نویسهی غیراسکی در CREDITS.txt برخورد کند.
bpo-32831: افزودن رشتههای مستند و آزمونها برای codecontext.
bpo-32765: بهروزرسانی رشتهی مستند زبانهی عمومی (General) در configdialog برای افزودن ابزارکهای جدید به فهرست ابزارکها.
Tools/Demos¶
bpo-35884: افزودن یک اسکریپت محک (benchmark) برای زمانسنجی راههای مختلف دسترسی به متغیرها:
Tools/scripts/var_access_benchmark.py.bpo-34989: برنامهی python-gdb.py اکنون خطاهای مربوط به محاسبهی شمارهی سطر یک فریم پایتون را مدیریت میکند.
bpo-20260: کلینیک آرگومان (Argument Clinic) اکنون مبدلهای اعداد صحیح بدون علامت غیربیتی دارد.
bpo-32962: برنامهی python-gdb اکنون هنگام فراخوانی
string()، استثناهایUnicodeDecodeErrorرا میگیرد.bpo-32962: برنامهی python-gdb اکنون خطای ValueError را در read_var() میگیرد: برای مثال زمانی که پایتون هیچ نماد اشکالزدایی ندارد.
bpo-33189: pygettext.py اکنون فقط رشتههای لفظی را به عنوان رشتههای مستند و رشتههای قابلترجمه تشخیص میدهد و مقادیر لفظی بایتی و عبارتهای افاسترینگ (f-string) را رد میکند.
bpo-31920: رفع مشکل مدیریت پوشهها به عنوان آرگومان در اسکریپت
pygettext. براساس وصلهی (patch) ارائهشده توسط Oleg Krasnikov.bpo-29673: رفع ماکروهای gdbinit به نامهای pystackv و pystack.
bpo-25427: حذف اسکریپت pyvenv به نفع
python3 -m venvبه منظور کاهش سردرگمی دربارهی اینکه یک محیط مجازی برای کدام مفسر پایتون ایجاد خواهد شد.bpo-32885: افزودن یک پرچم
-nبرایTools/scripts/pathfix.pyجهت غیرفعال کردن ایجاد خودکار پشتیبان (پروندههایی با پسوند~).bpo-32222: رفع مشکل استخراج نشدن رشتههای مستند توسط pygettext برای توابعی که آرگومانهای دارای نوعگذاری دارند. وصله (patch) از Toby Harradine.
bpo-31583: ابزار 2to3 را برای استفاده با گزینهی --add-suffix و بدون گزینهی --output-dir برای مسیرهای نسبی به پروندهها در پوشهی جاری اصلاح کرد.
رابط C API¶
bpo-35713: توابع
PyByteArray_Init()وPyByteArray_Fini()حذف شدند. آنها از نسخههای ۲.۷.۴ و ۳.۲.۰ پایتون کاری انجام نمیدادند، از API محدود (ABI پایدار) کنار گذاشته شده بودند و مستندنشده بودند.bpo-33817: تابع
_PyBytes_Resize()برای اشیای bytes خالی اصلاح شد.bpo-35322: نشتی حافظه در توابع
PyUnicode_EncodeLocale()وPyUnicode_EncodeFSDefault()هنگام مدیریت خطا اصلاح شد.bpo-35059: ماکروهای C زیر به توابع inline ایستا تبدیل شدند:
Py_INCREF()،Py_DECREF()،Py_XINCREF()،Py_XDECREF()،PyObject_INIT()،PyObject_INIT_VAR().bpo-35296: دستور
make installاکنون API داخلی را نیز نصب میکند: پروندههای سرآیندInclude/internal/*.h.bpo-35081: APIهای داخلی احاطهشده با
#ifdef Py_BUILD_COREاز سرآیندهایInclude/*.hبه پروندههای سرآیند جدیدInclude/internal/pycore_*.hمنتقل شدند.bpo-35259: اعلان تابع
Py_FinalizeEx()(جدید در نسخهی ۳.۶) را بهطور شرطی بر اساس Py_LIMITED_API انجام دهید. وصله توسط Arthur Neufeld.bpo-35081: ماکروهای
_PyObject_GC_TRACK()و_PyObject_GC_UNTRACK()از API عمومی C حذف شدند.bpo-35134: ایجاد یک زیرپوشهی جدید به نام
Include/cpython/.bpo-34725: تابع _Py_SetProgramFullPath را اضافه میکند تا جاسازان بتوانند sys.executable را بازنویسی کنند.
bpo-34910: اطمینان حاصل کنید که تابع
PyObject_Print()همیشه هنگام بروز خطا مقدار-1را برمیگرداند. وصله توسط Zackery Spytz.bpo-34523: توابع Py_DecodeLocale() و Py_EncodeLocale() اکنون در ویندوز، اگر Py_LegacyWindowsFSEncodingFlag برابر با صفر باشد، از کدگذاری UTF-8 استفاده میکنند.
bpo-34193: اصلاح حالت جمع بستن در پیامهای TypeError در getargs.c و typeobject.c: به جای '1 arguments' از '1 argument' و به جای '1 elements' از '1 element' استفاده شد.
bpo-34127: برگرداندن پیام خطای از نظر دستوری درست بر اساس تعداد آرگومانها. وصله توسط Karthikeyan Singaravelan.
bpo-23927: رفع خطای
SystemErrorدر تابعPyArg_ParseTupleAndKeywords()هنگامی که واحد قالبw*برای پارامتر اختیاری استفاده میشود.bpo-32455: تابع
PyCompile_OpcodeStackEffectWithJump()اضافه شد.bpo-34008: تابع Py_Main() مانند نسخهی ۳.۶ پایتون، مجدداً میتواند پس از Py_Initialize() فراخوانی شود.
bpo-32500: پیامهای خطا برای توابع
PySequence_Size()،PySequence_GetItem()،PySequence_SetItem()وPySequence_DelItem()هنگامی که با یک نگاشت فراخوانی میشوند، و تابعPyMapping_Size()هنگامی که با یک دنباله فراخوانی میشود، اصلاح شدند.bpo-33818: تابع
PyExceptionClass_Name()اکنون به جایchar *مقدارconst char *را برمیگرداند.bpo-33042: برنامههای دارای قابلیت تعبیه (embedding) میتوانند بار دیگر پیش از فراخوانی Py_Initialize، توابع PySys_ResetWarnOptions، PySys_AddWarnOption و PySys_AddXOption را فراخوانی کنند.
bpo-32374: مستندسازی شد که m_traverse برای ماژولهای مقداردهی اولیهی چندمرحلهای میتواند با m_state=NULL فراخوانی شود و یک بررسی سلامت (sanity check) اضافه شد.
bpo-30863: توابع
PyUnicode_AsWideChar()وPyUnicode_AsWideCharString()دیگر نمایشیwchar_t*از شیءهای رشتهای را در نهانگاه (cache) ذخیره نمیکنند.
نسخهی نهایی ۳.۷.۰ پایتون¶
تاریخ انتشار: ۲۰۱۸-۰۶-۲۷
کتابخانه¶
bpo-33851: اصلاح
ast.get_docstring()برای نودی که رشته مستند ندارد.
رابط C API¶
bpo-33932: فراخوانی دوبارهی Py_Initialize() به جای شکست با یک خطای مهلک، هیچ کاری انجام نمیدهد: بازگردانی رفتار پایتون ۳.۶.
نامزد انتشار ۱ نسخهی ۳.۷.۰ پایتون¶
تاریخ انتشار: ۲۰۱۸-۰۶-۱۲
هسته و توکارها (Core and Builtins)¶
bpo-33803: رفع فروپاشی در hamt.c که به دلیل فعال کردن پیگیری GC برای شیءای ایجاد شده بود که همهی فیلدهای آن روی NULL تنظیم نشده بودند.
bpo-33706: اصلاح یک فروپاشی در راهاندازی پایتون هنگام تجزیهی گزینههای خط فرمان. از کریستوف گوهلکه (Christoph Gohlke) برای گزارش باگ و اصلاح آن سپاسگزاریم!
bpo-30654: اصلاح بازنشانی هندلر SIGINT به SIG_DFL هنگام خاموش شدن مفسر حتی زمانی که قبلاً یک هندلر سفارشی تنظیم شده بود. وصله توسط فیلیپ کرلینگ (Philipp Kerling).
bpo-31849: اصلاح هشدار مقایسهی علامتدار/بیعلامت در pyhash.c.
کتابخانه¶
bpo-30167: جلوگیری از بروز استثنا در site.main() اگر متغیر PYTHONSTARTUP تنظیم شده باشد. وصل توسط Steve Weber.
bpo-33812: نمونهی تاریخساعت d با tzinfo غیر از None، اما با d.tzinfo.utcoffset(d) که None برمیگرداند، اکنون توسط متد astimezone() به عنوان ساده (naive) در نظر گرفته میشود.
bpo-30805: جلوگیری از شرایط رقابت (race condition) در گزارشگیری اشکالزدایی
bpo-33694: asyncio: رفع یک شرایط رقابت که باعث از دست رفتن دادهها در pause_reading()/resume_reading() هنگام استفاده از ProactorEventLoop میشود.
bpo-32493: اصلاح آزمون دسترسپذیری
uuid_enc_beدرconfigure.ac. وصله توسط Michael Felt.bpo-33792: افزودن asyncio.WindowsSelectorEventLoopPolicy و asyncio.WindowsProactorEventLoopPolicy.
bpo-33778: بهروزرسانی پایگاه دادهی
unicodedataبه نسخهی ۱۱.۰.۰ یونیکد.bpo-33770: بهبود پیام استثنای base64 برای ورودیهای رمزگذاریشده با طول نامعتبر
bpo-33769: asyncio/start_tls: رفع پیام خطا؛ لغو کالبکها در صورت بروز خطای مدیریتنشده؛ علامتگذاری SSLTransport به عنوان بسته شده در صورت متوقف شدن.
bpo-33767: عملیات دنبالهای الحاق (
+) و تکرار (*) اکنون هنگام اجرا روی اشیایmmap.mmapبه جایSystemErrorخطایTypeErrorرا بالا میآورند. وصله توسط Zackery Spytz.bpo-33734: asyncio/ssl: رفع AttributeError، افزایش مهلت زمانی پیشفرض دستدهی (handshake)
bpo-11874: استفاده از عبارت با قاعدهی (regex) بهتر هنگام شکستن بخشهای مربوط به نحوهی استفاده به قسمتهای قابلشکستن. از خطاهای ادعای نادرست ناشی از رشتههای metavar سفارشی جلوگیری میکند.
bpo-33582: ایجاد یک اخطار منسوخسازی (deprecation warning) برای inspect.formatargspec
مستندات¶
bpo-33409: شفافسازی رابطه بین PYTHONCOERCECLOCALE در PEP 538 و حالت PYTHONUTF8 در PEP 540.
bpo-33736: بهبود مستندات
asyncio.open_connection()،asyncio.start_server()و همتایان سوکت UNIX آنها.bpo-31432: شفافسازی معنای پرچمهای CERT_NONE، CERT_OPTIONAL و CERT_REQUIRED برای ssl.SSLContext.verify_mode.
ساخت¶
bpo-5755: انتقال گزینهی
-Wstrict-prototypesبهCFLAGS_NODISTازOPT. این گزینه هنگام ساخت ماژولهای توسعهای نوشتهشده با ++C هشدارهای آزاردهندهای صادر میکرد.
Windows¶
bpo-33720: عمق بازگشتی مارشالکردن حداکثر را در ساختهای release کاهش میدهد.
IDLE¶
bpo-33656: در ویندوز، افزودن فراخوانی API مبنی بر مقیاسگذاری tk برای DPI. در ویندوز 8.1+ یا 10، در صورتی که ویژگیهای سازگاری DPI فایل دودویی پایتون تغییر نکرده باشد و وضوح مانیتور بیشتر از ۹۶ DPI باشد، این امر باید متن و خطوط را واضحتر کند. در غیر این صورت نباید تأثیری داشته باشد.
bpo-33768: کلیک کردن روی یک سطر زمینهای، آن سطر را به بالای پنجرهی ویرایشگر منتقل میکند.
bpo-33763: ابزار IDLE: به جای ابزارک برچسب، از ابزارک متن فقطخواندنی برای زمینهی کد استفاده کنید.
bpo-33664: پیمایش متن ویرایشگر IDLE بر اساس سطرها. پیشتر، چرخ ماوس و نوار لغزان متن را به میزان ثابتی از پیکسلها جابجا میکردند که منجر به نمایش سطرهای ناقص در بالای کادر ویرایشگر میشد. این تغییر همچنین برای پوستههای خروجی و پنجرههای خروجی grep اعمال میشود، اما شامل نماهای متنی فقطخواندنی نمیشود.
bpo-33679: فعالسازی پیکربندی رنگ مختص به پوسته برای زمینهی کد (Code Context). برای مشاهدهی تنظیمات پوستههای توکار یا افزودن تنظیمات به پوستههای سفارشی، از زبانهی Highlights استفاده کنید.
bpo-33642: نمایش حداکثر maxlines سطر غیرخالی برای زمینهی کد. اگر زمینهی فعلی وجود نداشته باشد، یک سطر خالی منفرد نمایش داده میشود.
نسخهی بتا ۵ پایتون ۳.۷.۰¶
تاریخ انتشار: ۲۰۱۸-۰۵-۳۰
هسته و توکارها (Core and Builtins)¶
bpo-33622: اصلاح یک نشتی زمانی که جمعآور زباله در افزودن شیءای با متد
__del__یا ارجاعدادهشده توسط آن به فهرستgc.garbageناموفق است. اکنون میتوانPyGC_Collect()را زمانی که یک استثنا تنظیم شده است فراخوانی کرد و آن را حفظ نمود.bpo-33509: اصلاح پارامتر module_globals در warnings.warn_explicit(): اگر module_globals یک دیکشنری نباشد، دچار فروپاشی نمیشود.
bpo-20104: تابع جدید
os.posix_spawnکه در 3.7.0b1 اضافه شده بود، حذف شد؛ زیرا ما همچنان روی نحوهی طراحی API آن کار میکنیم. انتظار میرود این مورد در نسخهی ۳.۸ اضافه شود.bpo-33475: اصلاح باگهای متفرقه در تبدیل حاشیهنویسیها به رشتهها و بهینهسازی پرانتزها در نمایش رشتهای.
bpo-33391: اصلاح یک نشتی در set_symmetric_difference().
bpo-28055: اصلاح دسترسیهای ناهمراز در siphash24(). وصله توسط رولف ایکه بیر (Rolf Eike Beer).
bpo-32911: به دلیل مشکلات سازگاری غیرمنتظرهای که در طول آزمونهای بتا در پاییندست کشف شد، تغییرات bpo-29463 به حالت قبل بازگردانده شد. فیلد
docstringاز گرههای ast مربوط به Module، ClassDef، FunctionDef و AsyncFunctionDef که در نسخهی 3.7a1 اضافه شده بود، حذف شد. عبارت رشته مستند (docstring) بهعنوان اولین دستور در بدنهی آنها بازیابی شد. بر اساس وصلهی (patch) ارائهشده توسط اینادا نائوکی (Inada Naoki).bpo-21983: فروپاشی (crash) در
ctypes.cast()را در حالتی که آرگومان نوع داده، یک نوع دادهی ساختاریافتهی ctypes باشد، اصلاح میکند. وصلهای از Eryk Sun و Oren Milman.
کتابخانه¶
bpo-32751: هنگام لغو وظیفه به دلیل اتمام مهلت زمانی، متد
asyncio.wait_for()اکنون تا زمان کامل شدن لغو منتظر میماند.bpo-32684: اصلاح gather برای انتقال دادن لغو خودش حتی در صورت وجود return_exceptions.
bpo-33654: پشتیبانی از تغییر نوع پروتکل در SSLTransport.set_protocol().
bpo-33674: حملونقل (transport) را در اسرع وقت متوقف کنید تا خطر فراخوانی شدن data_received() قبل از connection_made() بیشتر کاهش یابد.
bpo-33674: رفع مشکل شرایط رقابت (race condition) در SSLProtocol.connection_made() متعلق به asyncio.sslproto: به جای استفاده از call_soon()، فرآیند دستدهی (handshake) را بلافاصله آغاز کنید. پیشتر، ممکن بود تابع data_received() قبل از آغاز دستدهی فراخوانی شود که باعث معلق ماندن یا شکست خوردن دستدهی میشد.
bpo-31647: رفع باگی که در آن فراخوانی write_eof() روی یک شیء _SelectorSocketTransport پس از بسته شدن آن، خطای AttributeError ایجاد میکرد.
bpo-32610: کاری کنید که asyncio.all_tasks() فقط وظایف در حال انتظار را برگرداند.
bpo-32410: جلوگیری از مسدود شدن روی ورودی/خروجی پرونده در کد جایگزین sendfile
bpo-33469: رفع خطای RuntimeError پس از بستن حلقهای که از run_in_executor استفاده میکرد
bpo-33672: رفع خرابی Task.__repr__ با همروالهای نادرست Cython
bpo-33654: اصلاح transport.set_protocol() برای پشتیبانی از جابهجایی بین asyncio.Protocol و asyncio.BufferedProtocol. همچنین اصلاح loop.start_tls() برای کار با asyncio.BufferedProtocols.
bpo-33652: پیکلهای متغیرهای نوع و جنریکهای زیرنویسشده اکنون در برابر آینده مقاوم هستند و با نسخههای قدیمیتر پایتون سازگاری دارند.
bpo-32493: رفع مشکل
uuid.uuid1()روی سیستمعامل FreeBSD.bpo-33618: نهاییسازی و مستندسازی پشتیبانی مقدماتی و آزمایشی از TLS 1.3 با OpenSSL 1.1.1
bpo-33623: رفع خطای احتمالی SIGSGV هنگام ایجاد asyncio.Future در متد __del__
bpo-30877: یک باگ در پیادهسازی پایتونی رمزگشای JSON برطرف شد که مانع از پاکسازی نهانگاه (cache) رشتههای تحلیلشده پس از پایان رمزگشایی میشد. براساس وچی از c-fos.
bpo-33570: تغییر تنظیمات بدنهی رمزنگاری TLS 1.3 برای سازگاری با OpenSSL 1.1.1-pre6 و نسخههای جدیدتر. در OpenSSL 1.1.1 رمزهای TLS 1.3 به طور پیشفرض فعال خواهند بود.
bpo-28556: آرگومانها به
typing.Unionسادهسازی نمیشوند. اکنونUnion[Manager, Employee]در زمان اجرا (runtime) بهEmployeeسادهسازی نمیشود. چنین سادهسازیای قبلاً باعث چندین باگ و محدودیت در امکانات دروننگری (introspection) میشد.bpo-33540: اضافهکردن یک ویژگی کلاس جدید
block_on_closeبه کلاسهایForkingMixInوThreadingMixInدرsocketserver.bpo-33548: tempfile._candidate_tempdir_list باید مکانهای رایج TEMP را در نظر بگیرد
bpo-33109: پارامترهای فرعی (subparsers) کتابخانهی argparse بار دیگر به طور پیشفرض الزامی نیستند، که تغییر رفتار ایجاد شده توسط bpo-26510 در 3.7.0a2 را به حالت قبل برمیگرداند.
bpo-33536: کلاس dataclasses.make_dataclass اکنون نام فیلدهای نامعتبر و فیلدهای تکراری را بررسی میکند. همچنین، بررسی برای مشخصات فیلد نامعتبر اضافه شده است.
bpo-33542: جلوگیری از استفاده
uuid.get_nodeاز DUID به جای MAC در ویندوز. وچی از Zvi Effronbpo-26819: رفع شرایط رقابت (race condition) با
ReadTransport.resume_readingدر حلقهی رویداد proactor ویندوز.برطرفکردن خطا در
typing.get_type_hints()زمانی که ClassVar به عنوان یک ارجاع پیشرو رشتهای (string forward reference) ارائه شده بود.bpo-33505: بهینهسازی asyncio.ensure_future() با مرتبسازی مجدد بررسیهای if: ۱.۱۷ برابر سریعتر.
bpo-33497: پارامتر errors را به cgi.parse_multipart اضافه کرده و کدگذاری را در FieldStorage وادار به استفاده از errors دادهشده میکند (برای Twisted لازم است). اصلاحیهای از Amber Brown.
bpo-33495: متد repr دیتاکلاسهای Fields را تغییر دهید تا به جای str، از repr هر یک از اعضای خود استفاده کند. این کار باعث میشود که مشخص شود هر فیلد دقیقاً چه چیزی را نشان میدهد. این موضوع بهویژه برای عضو 'type' صادق است.
bpo-33453: رفع مشکل دیتاکلاسها برای کار کردن در صورت استفاده از حاشیهنویسیهای نوع رشتهی لفظی یا استفاده از PEP 563 یعنی «ارزیابی بهتعویقافتاده حاشیهنویسیها» («Postponed Evaluation of Annotations»). فقط پیشوندهای رشتهای خاصی برای هر دو مدل ClassVar («ClassVar» و «typing.ClassVar») و InitVar («InitVar» و «dataclasses.InitVar») شناسایی میشوند.
bpo-28556: اصلاحات جزئی در ماژول typing: افزودن حاشیهنویسیها به
NamedTuple.__new__، ارسال*argsو**kwdsدرGeneric.__new__. درخواستهای تغییر اصلی توسط Paulius Šarka و Chad Dombrova.bpo-20087: بهروزرسانی نگاشت نامهای مستعار با محلیهای پشتیبانیشده در glibc 2.27.
bpo-33422: رفع مشکل حذف شدن علائم نقلقول پایانی هنگام جستجوی مقادیر لفظی بایت/رشته در pydoc. اصلاحیهای از Andrés Delfino.
bpo-28167: توابع
platform.linux_distributionوplatform.distاکنون یک هشدارDeprecationWarningرا فعال میکنند و برای حذف در نسخهی ۳.۸ پایتون علامتگذاری شدهاند.bpo-33197: بهروزرسانی پیام خطا هنگام ساختن inspect.Parameters نامعتبر. اصلاحیهای از Donghee Na.
bpo-33263: رفع نشت توصیفگر فایل (FD) در
_SelectorSocketTransport. پچ توسط Vlad Starostin.bpo-32861: نمایش
__str__در ماژول urllib.robotparser اکنون شامل ورودیهای وایلدکارد (wildcard) و فیلدهای "Crawl-delay" و "Request-rate" است. وصلهی ارائهشده توسط مایکل لازار (Michael Lazar).bpo-32257: ماژول ssl اکنون شامل ثابت OP_NO_RENEGOTIATION است که با OpenSSL نسخه ۱.۱.۰h یا ۱.۱.۱ در دسترس است.
bpo-16865: پشتیبانی از آرایههای بزرگتر یا مساوی ۲ گیگابایت در ماژول
ctypes. وصله توسط Segev Finer.
مستندات¶
bpo-23859: مستندسازی این موضوع که
asyncio.wait()آیندهنماهای خود را هنگام به پایان رسیدن مهلت زمانی لغو نمیکند.bpo-33604: بهروزرسانی پیشفرض HMAC md5 به یک DeprecationWarning و انتقال زمان حذف به نسخهی ۳.۸.
bpo-33503: اصلاح پیوند خراب pypi
bpo-33421: افزودن مستندات مفقود برای
typing.AsyncContextManager.
آزمونها¶
ساخت¶
bpo-33614: تضمین میکند که فایلهای تعریف ماژول برای ABI پایدار در ویندوز به درستی بازتولید میشوند.
bpo-33522: فعالسازی ساختهای CI در Visual Studio Team Services در https://python.visualstudio.com/cpython
bpo-33012: افزودن
-Wno-cast-function-typeبرای کامپایلر gcc 8 جهت بیصدا کردن اخطارها دربارهی تبدیلهای نوع تابع، مانند تبدیل نوع به PyCFunction در فهرستهای تعریف متد.
مکاواس¶
bpo-13631: پروندهی .editrc در پوشهی خانگی کاربر اکنون در طول مقداردهی اولیهی readline از طریق شبیهسازی editline روی macOS به درستی پردازش میشود.
IDLE¶
نسخهی بتا ۴ پایتون ۳.۷.۰¶
تاریخ انتشار: ۲۰۱۸-۰۵-۰۲
هسته و توکارها (Core and Builtins)¶
bpo-33363: بالا بردن یک SyntaxError برای دستورهای
async withوasync forدر خارج از توابع ناهمگام.bpo-33128: اصلاح باگی که باعث میشود PathFinder دو بار در sys.meta_path ظاهر شود. وصله توسط پابلو گالیندو سالگادو (Pablo Galindo Salgado).
bpo-33312: اصلاح هشدارهای clang ubsan (پاکساز رفتار نامشخص) در dictobject.c با تنظیم نحوهی اعلان ساختار مشترک کلیدهای داخلی struct _dictkeysobject.
bpo-33231: رفع نشت حافظهی احتمالی در
normalizestring().bpo-33205: تغییر تابع (function) رشد dict از
round_up_to_power_2(used*2+hashtable_size/2)بهround_up_to_power_2(used*3). پیش از این، dict تنها زمانی کوچک میشد کهused == 0باشد. اکنون dict فرصت بیشتری برای کوچک شدن دارد.bpo-29922: بهبود پیامهای خطا در 'async with' زمانی که
__aenter__()یا__aexit__()یک شیء (object) غیرانتظارپذیر (non-awaitable) برمیگردانند.bpo-33199: رفع این مشکل که
ma_version_tagدر پیادهسازی dict هنگام کپیبرداری از یک dict با کلیدهای اشتراکی مقداردهی اولیه نمیشود.
کتابخانه¶
bpo-33281: رفع رگرسیون ctypes.util.find_library روی macOS.
bpo-33383: رفع فروپاشی در متد get() از شیء پایگاه داده
dbm.ndbmهنگامی که با یک آرگومان منفرد فراخوانی میشود.bpo-33329: رفع رگرسیون پردازش موازی (multiprocessing) روی نسخههای جدیدتر glibc.
bpo-991266: رفع نقلقولگذاری ویژگی
Commentازhttp.cookies.SimpleCookie.bpo-33131: ارتقای نسخهی بستهبندیشدهی pip به ۱۰.۰.۱.
bpo-33308: رفع فروپاشی در ماژول
parserهنگام تبدیل یک شیء ST به درختی از تاپلها یا فهرستها باline_info=Falseوcol_info=True.bpo-33266: کتابخانهی lib2to3 اکنون رشتههای
rf'...'را تشخیص میدهد.bpo-11594: اطمینان از رعایت پایان سطرها هنگام استفاده از lib2to3.
bpo-33254: توابع
importlib.resources.contents()وimportlib.abc.ResourceReader.contents()به جای یک پیمایشگر، یک پیمایشپذیر برمیگردانند.bpo-33256: رفع نمایش فراخوانی
<module>در کدهای HTML تولیدشده توسطcgitb.html(). پچ توسط Stéphane Blondon.bpo-33185: رفع رگرسیون هنگام اجرای pydoc با سویچ
-m. (این رگرسیون در 3.7.0b3 بر اثر حل شدن bpo-33053 ایجاد شده بود). این اصلاح همچنین pydoc را تغییر میدهد تا در صورت نیاز، به جای افزودن"."، مقدارos.getcwd()را بهsys.pathاضافه کند.bpo-33169: حذف درایههای
Noneدرsys.path_importer_cacheهنگام فراخوانیimportlib.machinery.invalidate_caches().bpo-33217: منسوخسازی جستجوی شیءهای غیر Enum در کلاسها و اعضای Enum (در نسخهی ۳.۸ به بعد خطای
TypeErrorایجاد خواهد کرد).bpo-33203: تابع
random.Random.choice()اکنون برای دنبالههای خالی به طور سازگار خطایIndexErrorرا بالا میآورد، حتی زمانی که از زیرکلاسهایی بدون پیادهسازیgetrandbits()فراخوانی شود.bpo-33224: بهروزرسانی difflib.mdiff() برای PEP 479. تبدیل یک StopIteration صیدنشده در یک تولیدگر به یک دستور بازگشت (return-statement).
bpo-33209: پایان دادن به فریمبندی (framing) در انتهای پیادهسازی C مربوط به
pickle.Pickler.dump().bpo-20104: بهبود مدیریت خطا و رفع نشت ارجاع در
os.posix_spawn().bpo-33175: در دیتاکلاسها، Field.__set_name__ اکنون متد ویژه ___*set_name*** را روی کلاس مقدار پیشفرض جستجو میکند، نه روی نمونهی آن.
bpo-33097: هنگام خاموش شدن مفسر و فراخوانی
executor.submit، خطای RuntimeError را بالا بیاورید.bpo-31908: رفع مشکل خروجی پروندههای پوششی برای ابزار خط فرمان ماژول
trace. پیش از این، پروندههای پوششی فقط زمانی صادر میشدند که از گزینهی--missingاستفاده میشد. وصلهی پینهدوزی توسط Michael Selik.
مستندات¶
bpo-33378: افزودن تغییردهندهی زبان کرهای برای https://docs.python.org/3/
bpo-33276: شفافسازی این موضوع که ویژگی
__path__روی ماژولها نمیتواند هر مقداری باشد.bpo-33201: مدرنسازی مستندات مربوط به نوشتن نوعهای توسعهای C.
bpo-33195: منسوخ کردن استفاده از
Py_UNICODEدر سندc-api/arg. APIهای مرتبط باPy_UNICODEاز پایتون ۳.۳ منسوخ شدهاند، اما در سند از قلم افتاده بود.bpo-8243: افزودن یادداشتی دربارهی رفتار استثنای curses.addch و curses.addstr هنگام نوشتن خارج از یک پنجره یا پد.
bpo-32337: بهروزرسانی مستندات مرتبط با ترتیب
dict.
آزمونها¶
bpo-33358: رفع
test_embed.test_pre_initialization_sys_options()هنگامی که مفسر با--enable-sharedساخته شده است.
ساخت¶
bpo-33394: فعالسازی ساخت پرجزئیات برای ماژولهای توسعهای، زمانی که ماکروها در خط فرمان به GNU make ارسال میشوند.
bpo-33393: بهروزرسانی فایلهای config.guess و config.sub.
bpo-33377: افزودن سهولتهای (triplets) جدید برای گونههای mips r6 و riscv (که در پسوندهای توسعهای استفاده میشوند).
bpo-32232: به طور پیشفرض، ماژولهای پیکربندیشده در
Modules/Setupدیگر با-DPy_BUILD_COREساخته نمیشوند. در عوض، ماژولهایی که بهطور خاص به آن تعریف پیشپردازنده نیاز دارند، آن را در ورودیهای مجزای خود قرار میدهند.bpo-33182: آزمونهای تعبیه یک بار دیگر میتوانند با clang 6.0 ساخته شوند.
Windows¶
bpo-33184: بهروزرسانی نصبکنندهی ویندوز برای استفاده از OpenSSL 1.1.0h.
مکاواس¶
bpo-33184: بروزرسانی ساخت برنامهی نصب macOS برای استفاده از OpenSSL 1.1.0h.
IDLE¶
bpo-21474: بهروزرسانی تعریف کلمه/شناسه از ascii به یونیکد. در کادرهای متنی و ورودی، این تغییر روی انتخاب با دو بار کلیک، جابجایی به چپ/راست با کنترل-چپ/راست و حذف به چپ/راست با کنترل-BACKSPACE/DEL تأثیر میگذارد.
bpo-33204: ابزار IDLE: رنگآمیزی سازگار پیشوندهای رشتهای نامعتبر. پیشوند رشتهای 'u' نمیتواند با 'r' یا 'f' جفت شود. تا جایی از پیشوند که معتبر است، با شروع از سمت راست، بهطور سازگار رنگآمیزی شود. بازبینی و گسترش آزمون رنگپرداز (colorizer).
Tools/Demos¶
bpo-33189: pygettext.py اکنون فقط رشتههای لفظی را به عنوان رشتههای مستند و رشتههای قابلترجمه تشخیص میدهد و مقادیر لفظی بایتی و عبارتهای افاسترینگ (f-string) را رد میکند.
bpo-31920: رفع مشکل مدیریت پوشهها به عنوان آرگومان در اسکریپت
pygettext. براساس وصلهی (patch) ارائهشده توسط Oleg Krasnikov.bpo-29673: رفع ماکروهای gdbinit به نامهای pystackv و pystack.
bpo-31583: ابزار 2to3 را برای استفاده با گزینهی --add-suffix و بدون گزینهی --output-dir برای مسیرهای نسبی به پروندهها در پوشهی جاری اصلاح کرد.
نسخهی بتا ۳ پایتون ۳.۷.۰¶
تاریخ انتشار: ۱۳۹۷-۰۱-۰۹
امنیت¶
bpo-33136: ایمنسازی ماژول ssl در برابر آسیبپذیری LibreSSL CVE 2018-8970. تابع X509_VERIFY_PARAM_set1_host() با یک طول نام صریح فراخوانی میشود. یک آزمون جدید تضمین میکند که بایتهای NULL مجاز نیستند.
bpo-33001: رفع حداقلی برای جلوگیری از سرریز بافر در os.symlink روی ویندوز
bpo-32981: عبارتهای باقاعده در difflib و poplib در برابر بازگشت فاجعهبار آسیبپذیر بودند. این عبارتهای باقاعده بردارهای بالقوهی DOS (REDOS) را تشکیل میدادند. آنها بازسازی شدند. این مورد CVE 2018-1060 و CVE 2018-1061 را حل میکند. وصله توسط جیمی دیویس (Jamie Davis).
هسته و توکارها (Core and Builtins)¶
bpo-33053: هنگام استفاده از سوئیچ -m، مقدار sys.path[0] اکنون به صراحت به عنوان پوشهی (directory) کاری آغازین گسترش مییابد، به جای اینکه به عنوان یک مسیر خالی رها شود (که امکان ایمپورت (import) از پوشهی کاری فعلی را در زمان ایمپورت فراهم میکند)
bpo-33018: بهبود سازگاری خطاهای ایجادشده توسط
issubclass()هنگامی که با یک شیء غیرکلاس و یک کلاس پایه انتزاعی (abstract base class) به عنوان آرگومانهای (arguments) اول و دوم به ترتیب فراخوانی میشود. اصلاحیه توسط Josh Bronson.bpo-33041: رفع پرش هنگامی که تابع حاوی یک حلقه
async forاست.bpo-33026: رفع مشکل پرش از درون بلوک "with" با تنظیم کردن f_lineno.
bpo-33005: رفع یک فروپاشی در زمان انشعاب (fork) هنگام استفاده از یک تخصیصدهندهی حافظهی سفارشی (بهعنوانمثال: استفاده از متغیر محیطی PYTHONMALLOC). توابع _PyGILState_Reinit() و _PyInterpreterState_Enable() اکنون از تخصیصدهندهی حافظهی پیشفرض RAW برای تخصیص یک قفل متقابل (mutex) جدید مفسر در هنگام انشعاب استفاده میکنند.
bpo-17288: جلوگیری از پرشها از رویدادهای رد (trace) 'return' و 'exception'.
bpo-32836: عدم استفاده از متغیرهای موقت در مواردی که درکهای فهرست/دیکشنری/مجموعه (comprehensions) استفاده میشوند.
کتابخانه¶
bpo-33141: کاری کنید شیءهای Field در صورتی که __set_name__ خودشان را داشته باشند، آن را به مقادیر پیشفرض خود منتقل کنند.
bpo-33096: اجازه دادن به ttk.Treeview.insert برای درج iid که دارای یک مقدار بولی نادرست (false) است. توجه داشته باشید که iid=0 و iid=False یکسان خواهند بود. وصله توسط گارویت خاتری (Garvit Khatri).
bpo-32873: متغیرهای نوع و فرمهای تایپ ویژه به عنوان تغییرناپذیر توسط copy و pickle در نظر گرفته شوند. این کار چندین مشکل و ناسازگاری جزئی را برطرف میکند و سازگاری رو به عقب با پایتون ۳.۶ را بهبود میبخشد.
bpo-33134: هنگام محاسبهی __hash__ دیتاکلاس، از جدول جستجو برای نگهداری تابعی استفاده کنید که مقدار __hash__ را برمیگرداند. این کار بهینهسازی بهتری نسبت به جستجوی یک رشته و سپس آزمایش آن رشته برای تعیین اقدام بعدی است.
bpo-33127: ماژول ssl اکنون با LibreSSL 2.7.1 کامپایل میشود.
bpo-32505: اگر متغیر عضوی از یک دیتاکلاس از نوع Field باشد اما حاشیهنویسی نوع نداشته باشد، خطای TypeError را بالا بیاورید.
bpo-33078: رفع خطای رخداده در OSX که ناشی از آزمونهای متکی بر sem_getvalue بود
bpo-33116: اضافه کردن 'Field' به dataclasses.__all__.
bpo-32896: رفع خطایی که در آن زیرکلاسسازی یک دیتاکلاس با فیلدی که از یک default_factory استفاده میکند، کلاسی نادرست ایجاد میکرد.
bpo-33100: دیتاکلاسها: اگر یک فیلد دارای مقدار پیشفرضی باشد که از نوع MemberDescriptorType است، این بدان معناست که آن فیلد در __slots__ قرار دارد، نه اینکه یک مقدار پیشفرض واقعی باشد.
bpo-32953: اگر یک کلاس عادی از یک دیتاکلاس فریزشده ارثبری کند، اجازه دهید ویژگیها به کلاس مشتقشده اضافه شوند. فقط ویژگیهای متعلق به دیتاکلاس فریزشده قابل انتساب نیستند. این قانون را الزامی کنید که تمام دیتاکلاسها در یک سلسلهمراتب، یا همگی فریزشده باشند یا همگی غیرفریزشده.
bpo-33061: افزودن مقدار مفقود
NoReturnبه__all__در typing.pybpo-33078: اصلاح نحوهی مدیریت اندازه در multiprocessing.Queue هنگامی که خطای پیکلسازی (pickling) رخ میدهد.
bpo-33064: ماژول lib2to3 اکنون به طور صحیح از کامای پایانی پس از
*argsو**kwargsدر امضای تابع پشتیبانی میکند.bpo-33056: اصلاح بستهشدن صحیح توصیفگرهای فایل (fd) دارای نشت در concurrent.futures.ProcessPoolExecutor.
bpo-33021: آزاد کردن GIL در طول فراخوانیهای fstat()، که از معلق ماندن تمام نخها هنگام فراخوانی mmap.mmap()، os.urandom() و random.seed() جلوگیری میکند. وصله توسط Nir Soffer.
bpo-31804: جلوگیری از شکست خوردن در multiprocessing.Process اگر جریانهای استاندارد در هنگام خروج بسته باشند یا None باشند.
bpo-33037: صرفنظر کردن از ارسال/دریافت داده پس از بستهشدن انتقال SSL.
bpo-27683: اصلاح یک رگرسیون در
ipaddressکه باعث میشود نتیجهیhosts()خالی باشد هنگامی که شبکه توسط یک تاپل شامل یک نقاب عدد صحیح و تنها ۱ بیت باقیمانده برای آدرسها ساخته شده است.bpo-32999: اصلاح کرش کردن پیادهسازی C از
ABC.__subclasscheck__(cls, subclass)هنگامی کهsubclassیک شیء نوع (type object) نیست.bpo-33009: اصلاح inspect.signature() برای متدهای جزئی تکپارامتری (single-parameter partialmethods).
bpo-32969: آشکار کردن چندین ثابت مفقود در zlib و اصلاح مستندات مربوطه.
bpo-32056: بهبود استثناهای بالاآمده برای تعداد نامعتبر کانالها و پهنای نمونه هنگام خواندن یک پروندهی صوتی در ماژولهای
aifc،waveوsunau.bpo-32844: اصلاح هدایت نادرست یک توصیفگر پایین (۰ یا ۱) به stderr در subprocess اگر توصیفگر پایین دیگری بسته شود.
bpo-32857: در
tkinter، تابعafter_cancel(None)اکنون به جای لغو کردن اولین تابع زمانبندیشده، یکValueErrorایجاد میکند. وصله توسط Cheryl Sabella.bpo-31639: ماژول http.server اکنون یک کلاس ThreadedHTTPServer ارائه میدهد و هنگامی که ماژول با
-mاجرا میشود، از آن برای مقابله با باز شدن زودهنگام سوکتها توسط مرورگرهای وب استفاده میکند.bpo-27645: کلاس
sqlite3.Connectionاکنون یک متدbackupرا ارائه میدهد، البته اگر کتابخانهی زیربنایی SQLite دارای نسخهی ۳.۶.۱۱ یا بالاتر باشد. وصله توسط Lele Gaifax.
مستندات¶
bpo-33126: مستندسازی PyBuffer_ToContiguous().
bpo-27212: اصلاح مستندات دستورالعمل
islice()برای مصرف مقادیر اولیه تا اندیس شروع.bpo-28247: بهروزرسانی مستندات
zipappبرای توضیح نحوهی ساخت برنامههای مستقل (standalone).bpo-18802: تغییرات مستندات برای ipaddress. وصلهای از Jon Foster و Berker Peksag.
bpo-27428: بهروزرسانی مستندات برای شفافسازی این که
WindowsRegistryFinderرابطMetaPathFinderرا پیادهسازی میکند. (وصلهای از Himanshu Lakhara)
آزمونها¶
ساخت¶
bpo-33163: ارتقای pip به 9.0.3 و setuptools به v39.0.1.
Windows¶
مکاواس¶
bpo-32726: ساخت و پیوند دادن با نسخهی خصوصی Tcl/Tk 8.6 برای برنامهی نصب macOS 10.6+. نوع برنامهی نصب 10.9+ از قبل این کار را انجام میدهد. این بدان معناست که پایتون 3.7 ارائه شده توسط برنامههای نصب macOS در python.org دیگر به هیچ نسخهی خارجی Tcl/Tk، چه نسخههای ارائهشده توسط سیستم و چه نصبشده توسط کاربر مانند ActiveTcl، نیاز ندارد یا از آنها استفاده نمیکند.
IDLE¶
bpo-32984: هنگام اجرای یک پروندهی راهاندازی، متغیر
__file__را تنظیم کنید. ایدل (IDLE) مانند پایتون بهطور اختیاری یک پروندهی راهاندازی را پیش از ارائهی نخستین اعلان ورودی تعاملی در پنجرهی پوسته (Shell) اجرا میکند. برای ایدل،-sپروندهای را که در متغیر محیطیIDLESTARTUPیاPYTHONSTARTUPنامگذاری شده است اجرا میکند؛-r fileپروندهیfileرا اجرا میکند. پایتون__file__را پیش از اجرای پرونده روی نام پروندهی راهاندازی تنظیم میکند و پیش از نخستین اعلان آن را پاک میکند. ایدل اکنون هنگام اجرای عادی، بدون گزینهی-n، همین کار را انجام میدهد.bpo-32940: سادهسازی و تغییر نام StringTranslatePseudoMapping در pyparse.
Tools/Demos¶
bpo-32885: افزودن یک پرچم
-nبرایTools/scripts/pathfix.pyجهت غیرفعال کردن ایجاد خودکار پشتیبان (پروندههایی با پسوند~).
رابط C API¶
bpo-33042: برنامههای دارای قابلیت تعبیه (embedding) میتوانند بار دیگر پیش از فراخوانی Py_Initialize، توابع PySys_ResetWarnOptions، PySys_AddWarnOption و PySys_AddXOption را فراخوانی کنند.
bpo-32374: مستندسازی شد که m_traverse برای ماژولهای مقداردهی اولیهی چندمرحلهای میتواند با m_state=NULL فراخوانی شود و یک بررسی سلامت (sanity check) اضافه شد.
پایتون 3.7.0 بتا 2¶
تاریخ انتشار: ۱۳۹۶-۱۲-۰۸
امنیت¶
bpo-28414: ماژول ssl اکنون به کاربران اجازه میدهد هنگام استفاده از SNI، کدگذاری/کدگشایی IDN خود را انجام دهند.
هسته و توکارها (Core and Builtins)¶
bpo-32889: بهروزرسانی فهرست حذف والگریند (Valgrind) برای در نظر گرفتن تغییر نام
Py_ADDRESS_IN_RANGبهaddress_in_range.bpo-31356: حذف API جدید اضافه شده در bpo-31356 (مدیر زمینه gc.ensure_disabled()).
bpo-32305: برای بستههای فضای نام (namespace packages)، اطمینان حاصل کنید که هر دو مقدار
__file__و__spec__.originروی None تنظیم شدهاند.bpo-32303: اطمینان حاصل کنید که
__spec__.loaderبا__loader__برای بستههای فضای نام مطابقت دارد.bpo-32711: رفع پیامهای هشدار برای Python/ast_unparse.c. وصله توسط استفان ویرتل (Stéphane Wirtel).
bpo-32583: رفع خرابی احتمالی در رمزگشایان توکار یونیکد که ناشی از خطاهای نوشتن خارج از کران (out-of-bound) هنگام استفاده از هندلرهای خطای رمزگشایی سفارشی است.
کتابخانه¶
bpo-32960: برای دیتاکلاسها، ارثبری کلاسهای فریزشده از کلاسهای غیرفریزشده و همچنین ارثبری کلاسهای غیرفریزشده از کلاسهای فریزشده را مجاز ندانید. این محدودیت در تاریخ دیگری در آینده تعدیل خواهد شد.
bpo-32713: رفع نحوهی مدیریت مقادیر اعشاری خارج از کران در tarfile.itn. وصله توسط Joffrey Fuhrer.
bpo-32951: ایجاد نمونهی مستقیم از اشیای SSLSocket و SSLObject اکنون ممنوع است. سازندهها هرگز به عنوان سازندههای عمومی مستند، آزمایش یا طراحی نشده بودند. کاربران باید از ssl.wrap_socket() یا SSLContext استفاده کنند.
bpo-32929: پارامتر سهحالتهی hash را حذف کرده و پارامتر بولی unsafe_hash را اضافه کنید. اگر unsafe_hash برابر با True باشد، یک تابع __hash__ اضافه کنید، اما اگر تابع __hash__ وجود دارد، خطای TypeError را بالا بیاورید. اگر unsafe_hash برابر با False باشد، یک تابع __hash__ بر اساس مقادیر eq= و frozen= اضافه کنید. رفتار unsafe_hash=False مشابه رفتار قدیمی hash=None است. رفتار unsafe_hash=False حالت پیشفرض است، درست همانطور که hash=None قبلاً بود.
bpo-32947: افزودن OP_ENABLE_MIDDLEBOX_COMPAT و آزمون راهحل جایگزین برای TLSv1.3 جهت سازگاری آینده با OpenSSL نسخه ۱.۱.۱.
bpo-30622: ماژول ssl اکنون پشتیبانی گمشدهی NPN را در LibreSSL شناسایی میکند.
bpo-32922: تابع dbm.open() اکنون نام پرونده را به جای کدگذاری پیشفرض، با کدگذاری سامانه فایلبندی کدگذاری میکند.
bpo-32859: در
os.dup2، در هر فراخوانی بررسی نکنید که آیا سامانهی فراخوانیdup3وجود دارد یا خیر.bpo-32556: توابع nt._getfinalpathname، nt._getvolumepathname و nt._getdiskusage اکنون به درستی از فرمت بایت تبدیل میشوند.
bpo-25988: صدور یک
DeprecationWarningهنگام استفاده یا ایمپورت کردن یک کلاس پایه انتزاعی (ABC) مستقیماً ازcollectionsبهجایcollections.abc.bpo-21060: بازنویسی پیام گیجکنندهی آپلود setup.py از "No dist file created in earlier command" به پیام مفیدتر "Must create and upload files in one command".
bpo-32852: مطمئن شوید هنگام اجرای trace فهرست sys.argv دستنخورده باقی میماند.
bpo-31333: ماژول
_abcاضافه شد. این یک ماژول سرعتبخش با پیادهسازیهای C برای توابع و متدهای مختلف درabcاست. ایجاد یک زیرکلاس از کلاس پایه انتزاعی و فراخوانیisinstanceیاissubclassبا یک زیرکلاس کلاس پایه انتزاعی تا ۱.۵ برابر سریعتر شده است. علاوه بر این، این کار راهاندازی پایتون را تا ۱۰ درصد سریعتر میکند. توجه داشته باشید که پیادهسازی جدید، رجیستری داخلی و نهانگاهها را که پیشتر از طریق ویژگیهای خصوصی_abc_registry،_abc_cacheو_abc_negative_cacheقابل دسترسی بودند، پنهان میکند. سه متد کمکی اشکالزدایی وجود دارد که میتوان بهجای آنها استفاده کرد:_dump_registry،_abc_registry_clearو_abc_caches_clear.bpo-32841: رفع مشکل
asyncio.Conditionکه پس از اطلاعرسانی و لغو یک قفل شرطی، لغو شدن را به سکوت نادیده میگرفت. وصله توسط Bar Harel.bpo-32819: تابع ssl.match_hostname() سادهسازی شده است و دیگر برای وایلدکاردها و آدرسهای IP به ماژولهای re و ipaddress وابسته نیست. گزارشدهی خطا برای وایلدکاردهای نامعتبر بهبود یافته است.
bpo-32394: سوکت (socket): حذف پرچمهای TCP_FASTOPEN، TCP_KEEPCNT، TCP_KEEPIDLE و TCP_KEEPINTVL در نسخههای قدیمیتر ویندوز در زمان اجرا (run-time).
bpo-31787: رفع نشت حافظه (refleaks) متدهای
__init__()در ماژولهای مختلف. (مشارکت از Oren Milman)bpo-30157: رفع حدسزدن نقلقول و جداکننده در csv.Sniffer.sniff() هنگامی که فقط آخرین فیلد داخل نقلقول قرار دارد. وصله (Patch) از Jake Davis.
bpo-32792: تابع collections.ChainMap() ترتیب (order) نگاشتهای (mappings) زیرین را حفظ میکند.
bpo-32775: تابع
fnmatch.translate()دیگر الگوهایی که شامل عملیاتهای مجموعه هستند را تولید نمیکند. مجموعههایی که با '[' شروع میشوند یا شامل '--' ،'&&' ،'~~' یا '||' هستند در نسخههای آیندهی عبارتهای باقاعده به شکل متفاوتی تفسیر خواهند شد. در حال حاضر آنها اخطارهایی را صادر میکنند. تابع fnmatch.translate() اکنون از تولید تصادفی الگوهایی که حاوی چنین مجموعههایی هستند جلوگیری میکند.bpo-32622: پیادهسازی sendfile سریع بومی برای حلقهی رویداد (event loop) پرواکتور ویندوز.
bpo-32777: رفع یک بنبست کمیاب اما بالقوه در فرایند فرزند قبل از اجرا (pre-exec) در ماژول subprocess روی سیستمهای POSIX هنگام علامتگذاری توصیفگرهای پرونده به عنوان قابل به ارث بردن هنگام اجرا در فرایند فرزند. این باگ ظاهراً در نسخهی 3.4 معرفی شده است.
bpo-32647: ماژول ctypes پیش از این برای dlopen به پیونددهی غیرمستقیم وابسته بود. افزونهی اشتراکی اکنون بهطور صریح به libdl روی پلتفرمهای دارای dl پیوند داده میشود.
bpo-32741: پیادهسازی متد
asyncio.TimerHandle.when().bpo-32691: استفاده از mod_spec.parent هنگام اجرای ماژولها با pdb
bpo-32734: رفع مسئلهی ایمنی
asyncio.Lock()که به دست آوردن و قفل کردن مکرر همان قفل را بدون آزاد شدن آن امکانپذیر میکرد. وصله از Bar Harel.bpo-32727: فیلد نام را در پاکت (envelope) SMTP از آدرس حذف نکنید. وصله از Stéphane Wirtel
bpo-31453: افزودن ثابتهای TLSVersion و ویژگیهای SSLContext.maximum_version / minimum_version. API جدید ویژگی 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: جزئیات پیادهسازی داخلی ماژول ssl پاکسازی شدند. کلاس SSLSocket یک لایهی غیرمستقیم کمتر دارد. اطلاعات مالک و نشست (session) اکنون توسط سازندهی SSLSocket و SSLObject مدیریت میشوند. پیادهسازی اتصالات کانال سادهتر شده است.
bpo-31848: رفع مدیریت خطا در Aifc_read.initfp() هنگامی که قطعهی SSND یافت نمیشود. وصله از Zackery Spytz.
bpo-32585: افزودن ابزارک (widget) اسپینباکس Ttk به
tkinter.ttk. وصله از Alan D Moore.bpo-32221: توابع مختلفی که تاپل شامل آدرسهای IPv6 برمیگردانند، اکنون بخش
%scopeرا حذف میکنند؛ زیرا همان اطلاعات قبلاً در آیتم scopeid تاپل کدگذاری شده است. به خصوص این کار باعث افزایش سرعتsocket.recvfrom()هنگام دریافت بستههای چندپخشی (multicast) میشود؛ زیرا حل کردن بیفایدهی نام رابط شبکه حذف شده است.bpo-30693: کلاس TarFile اکنون به روشی قابل بازتولید در دایرکتوریها پیمایش میکند.
bpo-30693: کلاس ZipFile اکنون به روشی قابل بازتولید در دایرکتوریها پیمایش میکند.
مستندات¶
bpo-28124: تابع ماژول ssl یعنی ssl.wrap_socket() کمرنگ شده و به نفع متد امنتر و کارآمدتر SSLContext.wrap_socket() منسوخ شده است.
bpo-17232: شفافسازی مستندات برای -O و -OO. وصلهای از Terry Reedy.
bpo-32436: افزودن مستندات برای ماژول contextvars (PEP 567).
bpo-32800: بهروزرسانی پیوند به مستندات w3c برای فضاهای نام پیشفرض xml.
bpo-11015: بهروزرسانی مستندات
test.support.bpo-8722: مستندسازی رفتار
__getattr__()هنگامی که متدget()ویژگی خطایAttributeErrorرا بالا میآورد.bpo-32614: تغییر مثالهای عبارت باقاعده در مستندات برای استفاده از رشتههای خام جهت جلوگیری از
DeprecationWarningو افزودن متن به راهنمای عملی REGEX برای برجسته کردن منسوخ شدن.bpo-31972: بهبود رشتههای مستند برای زیرکلاسهای
pathlib.PurePath.
آزمونها¶
bpo-31809: افزودن آزمونها برای بررسی اتصال با منحنیهای secp ECDH.
ساخت¶
bpo-32898: رفع مشکل ساخت اشکالزدایی پایتون هنگام استفاده از COUNT_ALLOCS.
Windows¶
bpo-32901: بهروزرسانی نسخههای Tcl و Tk به 8.6.8
bpo-31966: رفع WindowsConsoleIO.write() برای نوشتن دادههای خالی.
bpo-32409: تضمین میکند که activate.bat میتواند محتوای یونیکد را مدیریت کند.
bpo-32457: مدیریت مسیر اجراییِ عادینشده را هنگام راهاندازی پایتون بهبود میبخشد.
bpo-32370: استفاده از کدگذاری صحیح برای خروجی ipconfig در ماژول uuid. وصله توسط Segev Finer.
bpo-29248: رفع
os.readlink()روی ویندوز که به اشتباه فیلدPrintNameOffsetاز بافر دادهی تجزیه (reparse) را به عنوان تعداد نویسهها بهجای بایتها در نظر میگرفت. وصله توسط Craig Holmquist و SSE4.
مکاواس¶
bpo-32901: بروزرسانی برنامهی نصب macOS 10.9+ به Tcl/Tk 8.6.8.
IDLE¶
bpo-32916: تغییر
strبهcodeدر pyparse.bpo-32905: حذف کد استفادهنشده در ماژول pyparse.
bpo-32874: افزودن آزمونها برای pyparse.
bpo-32837: استفاده از کدگذاری پیشفرض سیستم و وابسته به مکان برای open() ایدهی بدی برای پروندههای مستقل از مکان و سیستم ایدل است.
bpo-32826: افزودن «encoding=utf-8» به open() در test_help_about ایدل. آزمون گرافیکی test_file_buttons() فقط سطرهای اولیهی فقط-اسکی (ascii-only) را بررسی میکند، اما روی سیستمهایی که open() بهطور پیشفرض از «ascii» استفاده میکند با خطا مواجه شد؛ زیرا readline() بهطور داخلی به اندازهی کافی جلو میخواند و رمزگشایی میکند تا به یک نویسهی غیراسکی در CREDITS.txt برخورد کند.
bpo-32765: بهروزرسانی رشتهی مستند زبانهی عمومی (General) در configdialog برای افزودن ابزارکهای جدید به فهرست ابزارکها.
Tools/Demos¶
bpo-32222: رفع مشکل استخراج نشدن رشتههای مستند توسط pygettext برای توابعی که آرگومانهای دارای نوعگذاری دارند. وصله (patch) از Toby Harradine.
پایتون 3.7.0 بتا 1¶
تاریخ انتشار: ۱۳۹۶-۱۱-۱۰
هسته و توکارها (Core and Builtins)¶
bpo-32703: رفع ResourceWarning همروال هنگامی که یک خطای فعال در زمان نهاییسازی آن تنظیم شده است.
bpo-32650: اشکالزدای Pdb و سایر اشکالزدابهایی که به bdb.py وابستهاند، بهدرستی از روی همروالهای بومی عبور میکنند (دستور next). وصله توسط پابلو گالیندو (Pablo Galindo).
bpo-28685: بهینهسازی list.sort() و sorted() با استفاده از مقایسههای تخصصی نوع داده در صورت امکان.
bpo-32685: بهبود پیشنهاد زمانی که فرم پایتون 2 از دستور print یا روی همان سطری که سرآیند یک دستور مرکب قرار دارد دیده شود و یا به جای نویسهی خط جدید، با نقطهویرگول ختم شود. وصله توسط نิติش چاندرا (Nitish Chandra).
bpo-32697: پایتون اکنون بهطور صریح ترتیب تعریف پارامترهای فقط-کلیدواژه را حفظ میکند. ترتیب آنها همیشه حفظ میشد، اما این رفتار پیشتر هرگز تضمین نشده بود؛ این رفتار اکنون تضمین شده و آزمایش میشود.
bpo-32690: دیکشنری locals() اکنون به ترتیبی که متغیرها تعریف شدهاند نمایش داده میشود. پیشتر، ترتیب برعکس بود.
bpo-32677: افزودن متد
.isascii()بهstr،bytesوbytearray. میتوان از آن برای آزمون اینکه رشته فقط شامل نویسههای اسکی (ASCII) است، استفاده کرد.bpo-32670: اعمال اجباری PEP 479 برای تمام کدها. این بدان معناست که بالا آوردن دستی یک استثنای StopIteration از یک تولیدگر برای تمام کدها ممنوع است، صرفنظر از اینکه از 'from __future__ import generator_stop' استفاده شده باشد یا خیر.
bpo-32591: پشتیبانی توکار برای ردیابی منشأ شیءهای همروال اضافه شد؛ sys.set_coroutine_origin_tracking_depth و CoroutineType.cr_origin را ببیند. این ویژگی جایگزین استفادهی حالت اشکالزدایی asyncio از بستهبندی همروال برای شیءهای همروال بومی میشود.
bpo-31368: ارائهی فرایندهای سیستمی preadv و pwritev در ماژول os. وصله توسط پابلو گالیندو
bpo-32544: عبارات
hasattr(obj, name)وgetattr(obj, name, default)هنگامی کهnameپیدا نمیشود وobjمتد__getattr__یا__getattribute__را بازنویسی (override) نکرده است، حدود ۴ برابر سریعتر از قبل هستند.bpo-26163: بهبود هش ()frozenset برای ایجاد مقادیر هش متمایزتر هنگام مواجهه با مجموعهدادههای حاوی مقادیر مشابه زیاد.
bpo-32550: حذف بایتکد STORE_ANNOTATION.
bpo-20104: ارائهی posix_spawn به عنوان یک API سطح پایین در ماژول os. (قبل از 3.7.0rc1 حذف شد)
bpo-24340: رفع برآورد اندازه پشته کد.
bpo-18533: متد
repr()روی یک دیکشنری حاویvalues()یاitems()خودش دیگر خطایRecursionErrorرا پرتاب نمیکند؛ OrderedDict نیز به همین ترتیب است. به جای آن، درست مانند سایر ساختارهای بازگشتی، از...استفاده کنید. وصل توسط Ben North.bpo-20891: تابع Py_Initialize() اکنون GIL را ایجاد میکند. GIL دیگر برای رفع یک شرایط مسابقه (race condition) هنگام فراخوانی PyGILState_Ensure() در یک نخ غیرپایتونی، به صورت «بر حسب تقاضا» ایجاد نمیشود.
bpo-32028: فاصلهی خالی پیشتاز (Leading whitespace) هنگام تولید پیشنهادها برای تبدیل دستورات print در Py2 به فرایندهای تابع print توکار Py3 اکنون به درستی نادیده گرفته میشود. وصل توسط Sanyam Khurana.
bpo-31179: افزایش سرعت دیکشنری ()dict.copy تا ۵.۵ برابر.
bpo-31113: خلاص شدن از شر بازگشت (recursion) در کامپایلر برای جریان کنترل عادی.
کتابخانه¶
bpo-25988: منسوخ کردن ارائهی محتویات collections.abc در ماژول منظم collections.
bpo-31429: انتخاب مجموعهی رمز (cipher suite) پیشفرض ماژول ssl اکنون به جای استفاده از رویکرد لیست سفید سختکد شده، از رویکرد لیست سیاه استفاده میکند. پایتون دیگر رمزهایی را که توسط بهروزرسانی امنیتی OpenSSL مسدود شدهاند، دوباره فعال نمیکند. انتخاب مجموعهی رمز پیشفرض را میتوان در زمان کامپایل پیکربندی کرد.
bpo-30306: تابع contextlib.contextmanager اکنون آرگومانهای ارسالشده به تولیدگر زیرین را به محض ورود به مدیر زمینه آزاد میکند. پیش از این، آنها را تا زمانی که مدیر زمینه فعال بود، زنده نگه میداشت، حتی زمانی که به عنوان دکوراتور تابع استفاده نمیشد. وصل توسط Martin Teichmann.
bpo-21417: افزودن پشتیبانی برای تنظیم سطح فشردهسازی برای zipfile.ZipFile.
bpo-32251: پیادهسازی asyncio.BufferedProtocol (API آزمایشی).
bpo-32513: در دیتاکلاسها، اجازه دادن به بازنویسی سادهتر متدهای دابلآندر بدون مشخص کردن پارامترهای دکوراتور.
bpo-32660: ماژول
termiosمقادیرFIONREAD،FIONCLEX،FIOCLEX،FIOASYNCوFIONBIOرا نیز تحت Solaris/مشتقات آن در دسترس قرار میدهد.bpo-27931: رفع خطای تجزیهی سرآیند آدرس ایمیل هنگامی که نام کاربری یک رشتهی نقلقولشدهی خالی است. وصل توسط Xiang Zhang.
bpo-32659: تحت Solaris و مشتقات آن،
os.stat_resultیک ویژگی st_fstype را فراهم میکند.bpo-32662: پیادهسازی متدهای Server.start_serving()، Server.serve_forever() و Server.is_serving(). افزودن پارامتر کلیدواژهی 'start_serving' به روشهای loop.create_server() و loop.create_unix_server().
bpo-32391: پیادهسازی متدهای
asyncio.StreamWriter.wait_closed()وasyncio.StreamWriter.is_closing()bpo-32643: خصوصی کردن متدهای Task._step، Task._wakeup و Future._schedule_callbacks.
bpo-32630: بازسازی ماژول decimal برای استفاده از contextvars جهت ذخیرهسازی زمینهی دهدهی.
bpo-32622: افزودن متد
asyncio.AbstractEventLoop.sendfile().bpo-32304: دستور upload در distutils دیگر پروندههای tar که با یک بایت CR تمام میشوند را خراب نمیکند، و دیگر تلاش نمیکند تا CR را در هیچیک از فیلدهای متنی upload به CRLF تبدیل کند.
bpo-32502: اگر با یک آدرس سختافزاری ۶۴ بیتی مواجه شود، تابع uuid.uuid1 دیگر استثنایی ایجاد نمیکند.
bpo-32596: ماژول
concurrent.futuresاکنونThreadPoolExecutorوProcessPoolExecutorرا به صورت تنبل (با استفاده از PEP 562) ایمپورت میکند. این کار باعث میشودimport asyncioحدود ۱۵ درصد سریعتر شود زیرا asyncio به طور پیشفرض فقط ازThreadPoolExecutorاستفاده میکند.bpo-31801: افزودن
_ignore_بهEnumتا بتوان از متغیرهای موقت در هنگام ساخت کلاس بدون تبدیل شدن به عضو استفاده کرد.bpo-32576: استفاده از queue.SimpleQueue() در جاهایی که میتوان آن را از یک فراخوانی بازگشتی weakref فراخوانی کرد.
bpo-32574: رفع نشت حافظه در asyncio.Queue؛ هنگامی که صف اندازهی محدودی دارد و پر است، لغو queue.put() میتواند باعث نشت حافظه شود. وصله توسط: José Melero.
bpo-32521: ماژول nis اکنون با libnsl جدید و محل سرآیندها سازگار است.
bpo-32467: بخش collections.abc.ValuesView اکنون از collections.abc.Collection ارثبری میکند.
bpo-32473: بهبود خوانایی خروجی ABCMeta._dump_registry()
bpo-32102: آرگومان جدید
capture_outputبرای subprocess.runbpo-32521: کتابخانهی glibc ساختار Sun RPC را حذف کرده است. در ماژول nis از سرآیندها و کتابخانهی جایگزین libtirpc استفاده کنید.
bpo-32493: ماژول UUID ساخت را برای FreeBSD/OpenBSD اصلاح میکند
bpo-32503: پیکلسازی با پروتکل ۴ دیگر قابهای بسیار کوچک ایجاد نمیکند.
bpo-29237: ایجاد enum برای گزینههای مرتبسازی pstats
bpo-32454: افزودن تابع close(fd) به ماژول socket.
bpo-25942: ماژول subprocess اکنون در هنگام مدیریت یک KeyboardInterrupt از نوع Ctrl-C در طول subprocess.call، subprocess.run یا یک مدیر زمینهی Popen ملایمتر عمل میکند. این ماژول اکنون مدت زمان کوتاهی منتظر میماند تا فرآیند فرزند (که فرض میشود آن هم SIGINT را دریافت کرده است) قبل از ادامهی مدیریت استثنای KeyboardInterrupt خارج شود. این روش همچنان شامل یک SIGKILL در APIهای call() و run() است، اما حداقل فرزند ابتدا شانس خود را داشته است.
bpo-32433: ماژول hmac اکنون دارای تابع hmac.digest() است که یک خلاصهی بهینهسازیشدهی HMAC را فراهم میکند.
bpo-28134: سوکتها اکنون به طور پیشفرض، نوع (type)، پروتکل و خانواده را به طور خودکار از توصیفگر پرونده تشخیص میدهند.
bpo-32404: برطرف کردن باگی که در آن
datetime.datetime.fromtimestamp()متد __new__ را در زیرکلاسهایdatetime.datetimeفراخوانی نمیکرد.bpo-32403: بهبود سرعت سازندههای جایگزین
datetime.dateوdatetime.datetime.bpo-32228: اطمینان حاصل کنید که
truncate()پس از نوشتنهای طولانیتر از اندازهی بافر، موقعیت پرونده (همانطور که توسطtell()گزارش میشود) را حفظ میکند.bpo-32410: پیادهسازی
loop.sock_sendfileبرای حلقه رویداد asyncio.bpo-22908: متدهای seek و tell به کلاس ZipExtFile اضافه شدند. این قابلیت فقط زمانی کار میکند که شیء پروندهی استفادهشده برای باز کردن پروندهی zip، قابلیت مکانیابی (seekable) داشته باشد.
bpo-32373: افزودن متد socket.getblocking().
bpo-32248: افزودن
importlib.resourcesوimportlib.abc.ResourceReaderبه عنوان API یکپارچه برای خواندن منابع موجود در بستهها. بارگذارهایی که میخواهند از خواندن منابع پشتیبانی کنند باید متدget_resource_reader()را پیادهسازی کنند. بارگذار مبتنی بر پرونده و مبتنی بر zipimport هر دو این APIها را پیادهسازی میکنند. کلاسimportlib.abc.ResourceLoaderبه نفع این APIهای جدید منسوخ شده است.bpo-32320: تابع collections.namedtuple() اکنون از مقادیر پیشفرض پشتیبانی میکند.
bpo-29302: افزودن contextlib.AsyncExitStack. وصله توسط Alexander Mohr و Ilya Kulakov.
bpo-31961: در پایتون 3.7.0b2 حذف شد. آرگومان args در subprocess.Popen اکنون میتواند یک شیء شبهمسیر باشد. اگر args به صورت یک دنباله داده شود، اولین عنصر آن نیز اکنون میتواند یک شیء شبهمسیر باشد.
bpo-31900: تابع
locale.localeconv()اکنون به طور موقت locale مربوط بهLC_CTYPEرا روی locale مربوط بهLC_NUMERICتنظیم میکند تا رشتههای بایتیdecimal_pointوthousands_sepرا رمزگشایی کند، در صورتی که آنها غیر ASCII یا طولانیتر از ۱ بایت باشند و locale مربوط بهLC_NUMERICبا locale مربوط بهLC_CTYPEمتفاوت باشد. این تغییر موقت روی سایر نخها تأثیر میگذارد. تغییر مشابهی برای متدstr.format()هنگام قالببندی یک عدد (int،float،floatو زیرکلاسها) با نوعn(مثال:'{:n}'.format(1234)) اعمال میشود.bpo-31853: استفاده از super().method به جای socket.method در SSLSocket. آنها احتمالاً به دلایل میراثی (legacy) آنجا بودند.
bpo-31399: ماژول ssl اکنون از APIهای X509_VERIFY_PARAM_set1_host() و X509_VERIFY_PARAM_set1_ip() در OpenSSL برای تأیید نام میزبان و آدرسهای IP استفاده میکند. امکان بازگشت (fallback) به نام عمومی Subject را میتوان با SSLContext.hostname_checks_common_name غیرفعال کرد.
bpo-14976: افزودن یک کلاس queue.SimpleQueue، یک صف FIFO بدون محدودیت با یک پیادهسازی C بازورودپذیر از put().
مستندات¶
bpo-32724: افزودن ارجاع به برخی از دستورات در مستندات Pdb. وصله توسط Stéphane Wirtel
bpo-32649: تکمیل مستندات C API، بخش پروفایلگیری و ردیابی با رویدادهای جدید مربوط به هر آپکد (per-opcode).
bpo-17799: توضیح رفتار واقعی sys.settrace و sys.setprofile و همتایان C-API آنها در خصوص اینکه چه نوع رویدادهایی در هر تابع دریافت میشوند. وصله توسط Pablo Galindo Salgado.
آزمونها¶
bpo-32721: رفع تست test_hashlib به طوری که اگر ماژول _md5 ساخته نشده باشد، با خطا مواجه نشود.
bpo-28414: افزودن موارد آزمون برای نامهای میزبان IDNA ۲۰۰۳ و ۲۰۰۸. نامهای میزبان بینالمللیشدهی IDNA ۲۰۰۳ از زمان انتشار bpo-31399 کار میکنند. نامهای میزبان IDNA ۲۰۰۸ همچنان خراب هستند.
bpo-32604: افزودن یک ماژول توسعهای جدید به نام "_xxsubinterpreters" که API مربوط به زیرمفسر موجود و مکانیسم جدید اشتراکگذاری داده بین مفسرها را ارائه میدهد. این ماژول در درجهی اول برای آزمون دقیقتر پشتیبانی از زیرمفسر موجود در نظر گرفته شده است. توجه داشته باشید که ماژول _xxsubinterpreters در نسخهی 3.7.0rc1 حذف شده است.
bpo-32602: افزودن گواهیهای آزمون و آزمون برای گواهی ECDSA و حالت دوگانهی EC/RSA.
bpo-32549: در Travis CI، پایتون اکنون یک نسخهی محلی از OpenSSL 1.1.0g را برای آزمون کامپایل و استفاده میکند.
ساخت¶
bpo-32635: رفع خطای حافظه (segfault) در ماژول crypt هنگامی که به جای libcrypt در سیستم، libxcrypt فراهم شده باشد.
bpo-32598: استفاده از autoconf برای شناسایی کتابخانهها، سرآیندها و ویژگیهای پشتیبانیشدهی OpenSSL. ماکروی M4 به نام ax_check_openssl از pkg-config برای یافتن OpenSSL استفاده میکند و در صورت عدم موفقیت، به جستجوی دستی برمیگردد.
bpo-32593: توقف پشتیبانی از FreeBSD ۹ و نسخههای قدیمیتر.
bpo-29708: اگر متغیر محیطی
SOURCE_DATE_EPOCHتنظیم شده باشد،py_compileهمیشه پروندههای.pycمبتنی بر هش ایجاد میکند.
Windows¶
مکاواس¶
bpo-32726: ارائهی یک گزینهی نصب مدرنتر و اضافی برای macOS که از سیستمهای macOS 10.9+ صرفاً در حالت ۶۴ بیتی پشتیبانی میکند. ارتقای کتابخانههای شخص ثالث ارائهشده به OpenSSL 1.1.0g و SQLite 3.22.0. برنامهی نصب نسخهی 10.9+ اکنون به نسخهی اختصاصی خود از Tcl/Tk 8.6 پیوند خورده و آن را ارائه میدهد.
bpo-28440: عدم افزودن مسیر /Library/Python/3.x/site-packages به sys.path برای ساختهای چارچوب macOS به منظور جلوگیری از تضادهای آتی.
رابط C API¶
پایتون 3.7.0 آلفا ۴¶
تاریخ انتشار: ۲۰۱۸-۰۱-۰۸
هسته و توکارها (Core and Builtins)¶
bpo-31975: فهرست پیشفرض فیلتر هشدار اکنون با یک مدخل "default::DeprecationWarning:__main__" شروع میشود، بنابراین هشدارهای منسوخشدن بار دیگر به طور پیشفرض در اسکریپتهای تکپروندهای و در اعلان تعاملی نمایش داده میشوند.
bpo-32226: عبارت
__class_getitem__اکنون یک متد کلاس خودکار است.bpo-32399: افزودن پشتیبانی از کتابخانهی uuid در AIX برای RFC4122 با استفاده از تابع uuid_create() در libc.a
bpo-32390: رفع خطای کامپایل در AIX پس از اضافهشدن فیلد f_fsid به شیء بازگرداندهشده توسط os.statvfs() (bpo-32143). وصلهی اصلی از Michael Felt.
bpo-32379: تسریع محاسبهی ترتیب حل متد (MRO) هنگامی که کلاسی از یک پایهی منفرد ارثبری میکند.
bpo-32259: پیام خطای TypeError که هنگام بازکردن بستهی یک شیء پیمایشناپذیر بالا آورده میشود، اکنون دقیقتر شده است.
bpo-27169: ثابت
__debug__اکنون در زمان کامپایل بهینهسازی و حذف میشود. این مورد همچنین bpo-22091 را برطرف میکند.bpo-32329: گزینهی
-Rاکنون زمانی که متغیر محیطیPYTHONHASHSEEDروی0تنظیم شده باشد، تصادفیسازی هش را فعال میکند. پیش از این، این گزینه نادیده گرفته میشد. علاوه بر این،sys.flags.hash_randomizationاکنون بهدرستی روی 0 تنظیم میشود هنگامی که تصادفیسازی هش توسطPYTHONHASHSEED=0غیرفعال شده باشد.bpo-30416: بهینهساز اکنون در برابر صرف زمان زیاد برای انجام محاسبات پیچیده و مصرف حافظه زیاد جهت ایجاد ثابتهای بزرگ در تا کردن ثابت (constant folding) محافظت میشود. محدودیتهای ثابتهایی که میتوانند در تا کردن ثابت تولید شوند افزایش یافته است.
bpo-32282: رفع یک ifdef غیرضروری در واردسازی VersionHelpers.h در ماژول socket روی ویندوز.
bpo-30579: پیادهسازی TracebackType.__new__ به منظور امکان ایجاد اشیای ردگیری در سطح پایتون، و قابلتغییر کردن TracebackType.tb_next.
bpo-32260: کلیدهای ورودی الگوریتم SipHash را روی پلتفرمهای بزرگاندیان (big-endian) بایتسواپ نکنید. این کار تضمین میکند که siphash نتایج ثابتی را در پلتفرمهای مختلف ارائه دهد.
bpo-31506: بهبود منطق پیام خطا برای object.__new__ و object.__init__. وصله از Sanyam Khurana.
bpo-20361: سوئیچهای
-bو-bbاکنون ورودیهای'default::BytesWarning'وerror::BytesWarningرا به درونsys.warnoptionsتزریق میکنند و تضمین مینمایند که آنها بر هر فیلتر هشدار دیگری که از طریق گزینهی-Wیا متغیر محیطیPYTHONWARNINGSپیکربندی شده است، اولویت داشته باشند.bpo-32230: سویچ
-X devاکنون یک ورودی'default'را به sys.warnoptions تزریق میکند و تضمین مینماید که رفتاری کاملاً مشابه با ارسال واقعی-Wdefaultدر خط فرمان داشته باشد.bpo-29240: افزودن حالت (mode) جدید UTF-8: پیادهسازی PEP 540.
bpo-32226: PEP 560: افزودن پشتیبانی برای
__mro_entries__و__class_getitem__. پیادهسازیشده توسط Ivan Levkivskyi.bpo-32225: PEP 562: افزودن پشتیبانی برای
__getattr__و__dir__ماژول. پیادهسازیشده توسط Ivan Levkivskyi.bpo-31901: ماژول
atexitاکنون تابع بازگشتی (callback) خود را به ازای هر مفسر ذخیره میکند.bpo-31650: پیادهسازی PEP 552 (فایلهای pyc قطعی). پایتون اکنون از بیاعتبار کردن پروندههای نهانگاه بایتکد بر اساس هش محتوای منبع بهجای زمان آخرین ویرایش منبع پشتیبانی میکند.
bpo-29469: انتقال تا کردن ثابت (constant folding) از لایهی بایتکد به لایهی درخت نحوی انتزاعی (AST). وصلهی اصلی از Eugene Toder.
کتابخانه¶
bpo-32506: از آنجا که dict به عنوان حفظکنندهی ترتیب درج تعریف شده است، OrderedDict را کنار بگذارید و فقط از dict ساده استفاده کنید.
bpo-32279: افزودن پارامترها به dataclasses.make_dataclasses(): شامل init، repr، eq، order، hash، و frozen. ارسال آنها به dataclass().
bpo-32278: اطلاعات نوع را در تابع dataclasses.make_dataclass() اختیاری کنید. اگر این مقدار ذکر نشود، از رشتهی 'typing.Any' استفاده میشود.
bpo-32499: تابع dataclasses.is_dataclass(obj) اضافه شد که اگر obj یک دیتاکلاس یا نمونهای از آن باشد، مقدار True را برمیگرداند.
bpo-32468: تابع repr() قاب (frame) بهبود یافت تا نام پرونده، نام کد و شماره سطر فعلی را ذکر کند.
bpo-23749: کتابخانهی asyncio: پیادهسازی متد loop.start_tls()
bpo-32441: برگرداندن توصیفگر پروندهی جدید (یعنی آرگومان دوم) از
os.dup2. پیش از این، همیشهNoneبرگردانده میشد.bpo-32422: تابع
functools.lru_cacheحافظهی کمتری مصرف میکند (۳ کلمه برای هر کلید ذخیرهشده در حافظهی پنهان) و حدود ۱/۳ زمان را برای جمعآوری زبالهی چرخهای (cyclic GC) صرف میکند.bpo-31721: جلوگیری از فروپاشی پایتون هنگامی که Future._log_traceback بهصورت دستی روی True تنظیم میشود. اکنون این مقدار فقط میتواند روی False تنظیم شود، در غیر این صورت یک ValueError بالا آورده میشود.
bpo-32415: کتابخانهی asyncio: اضافه شدن Task.get_loop() و Future.get_loop()
bpo-26133: سیگنالها را در حلقهی رویداد UNIX کتابخانهی asyncio هنگام خاموش شدن مفسر لغو اشتراک نکنید.
bpo-32363: باعث شوید متدهای asyncio.Task.set_exception() و set_result() استثنای NotImplementedError را بالا بیاورند. متدهای Task._step() و Future.__await__() زمانی که در وضعیت نامعتبری قرار دارند، بهجای بالا آوردن یک AssertionError، استثناهای مناسبی را بالا میآورند.
bpo-32357: بهینهسازی asyncio.iscoroutine() و loop.create_task() برای همروالهای غیربومی (بهعنوانمثال async/await کامپایلشده با Cython). عبارت 'loop.create_task(python_coroutine)' پیشتر ۲۰ درصد سریعتر از 'loop.create_task(cython_coroutine)' بود. اکنون دومی به همان اندازه سریع است.
bpo-32356: متدهای asyncio.transport.resume_reading() و pause_reading() اکنون همتوان هستند. متد جدید transport.is_reading() اضافه شده است.
bpo-32355: بهینهسازی asyncio.gather()؛ که اکنون تا ۱۵ درصد سریعتر شده است.
bpo-32351: استفاده از مسیر سریع (fastpath) در asyncio.sleep اگر delay<0 باشد (افزایش سرعت ۲ برابری)
bpo-32348: بهینهسازی زمانبندی/افزودن/حذف کالبک در asyncio.Future. این بهینهسازی بهبود کارایی ۳ تا ۶ درصدی را در کد async/await نشان میدهد.
bpo-32331: اصلاح متدهای socket.settimeout() و socket.setblocking() بهطوریکه نوع (type) سوکت دستنخورده باقی بماند. اصلاح سازندهی socket.socket() برای بازنشانی هرگونه پرچم بیتی اعمالشده روی نوع سوکت. این تغییر فقط سیستمعاملهایی را تحتتأثیر قرار میدهد که دارای SOCK_NONBLOCK و/یا SOCK_CLOEXEC هستند.
bpo-32248: افزودن
importlib.abc.ResourceReaderبهعنوان یک کلاس پایه انتزاعی برای بارگذارها تا یک API یکپارچه برای خواندن منابع موجود در بستهها فراهم کند. همچنین افزودنimportlib.resourcesبهعنوان پورت کتابخانهیimportlib_resources.bpo-32311: پیادهسازی میانبر asyncio.create_task(coro)
bpo-32327: تبدیل توابع asyncio که در مستندات بهعنوان همروال معرفی شده بودند، به همروال واقعی. توابع تحتتأثیر: loop.sock_sendall، loop.sock_recv، loop.sock_accept، loop.getaddrinfo، loop.getnameinfo.
bpo-32323: تابع
urllib.parse.urlsplit()اکنون شناسهی محدوده (zone-id) را برای آدرسهای IPv6 محدودشده در نامهای میزبان به حروف کوچک تبدیل نمیکند.bpo-32302: رفع مشکل bdist_wininst در distutils برای CRT v142: این ابزار با CRT v140 سازگار است.
bpo-29711: رفع مشکل
stop_servingدر حلقهی proactor ماژول asyncio که باعث متوقف شدن تمام سرورهای در حال گوش دادن میشدbpo-32308: تابع
re.sub()اکنون تطابقهای خالی مجاور با یک تطابق غیرخالی قبلی را جایگزین میکند.bpo-29970: در صورتی که دستدهی (handshake) ظرف مدت ۱۰ ثانیه کامل نشود، اتصال SSLProtocol در asyncio متوقف میشود.
bpo-32314: پیادهسازی asyncio.run().
bpo-17852: بازگردانی اصلاح نادرست که بر اساس برداشت اشتباه از معناشناسی تابع _Py_PyAtExit() انجام شده بود.
bpo-32296: پیادهسازی asyncio._get_running_loop() و get_event_loop() به زبان C. این کار باعث میشود که آنها ۴ برابر سریعتر شوند.
bpo-32250: پیادهسازی
asyncio.current_task()وasyncio.all_tasks(). اضافه کردن توابع کمکی که برای استفاده در پیادهسازیهای جایگزین وظیفه در نظر گرفته شدهاند:asyncio._register_task،asyncio._enter_task،asyncio._leave_taskوasyncio._unregister_task. منسوخ کردنasyncio.Task.current_task()وasyncio.Task.all_tasks().bpo-32255: یک فیلد خالی واحد اکنون هنگام نوشته شدن در یک پروندهی CSV همیشه در داخل نقلقول قرار میگیرد. این امر امکان تمایز بین یک ردیف خالی و ردیفی متشکل از یک فیلد خالی واحد را فراهم میکند. وصلهی ارائه شده توسط Licht Takeuchi.
bpo-32277: در پلتفرمهایی که از
chmod(..., follow_symlinks=False)پشتیبانی نمیکنند، بهجایSystemErrorاستثنایNotImplementedErrorبالا آورده شود. وصلهی ارائه شده توسط Anthony Sottile.bpo-30050: آرگومان جدید warn_on_full_buffer در signal.set_wakeup_fd به شما اجازه میدهد کنترل کنید که آیا پایتون هنگامی که بافر fd بیداری سرریز میشود، هشداری را روی stderr چاپ میکند یا خیر.
bpo-29137: کتابخانهی
fpectlحذف شد. این کتابخانه هرگز بهطور پیشفرض فعال نبود، روی x86-64 بهدرستی کار نمیکرد و ABI پایتون را به روشهایی تغییر میداد که باعث خرابی غیرمنتظرهی افزونههای C میشد.bpo-32273: انتقال asyncio.test_utils به test.test_asyncio.
bpo-32272: حذف تابع asyncio.async().
bpo-32269: اضافه کردن تابع asyncio.get_running_loop().
bpo-32265: تمام متدهای کلاس و متدهای ایستای انواع توکار اکنون بهدرستی توسط inspect.classify_class_attrs() دستهبندی شده و در خروجی pydoc گروهبندی میشوند. نوع types.ClassMethodDescriptorType برای متدهای کلاس غیرمتصلِ انواع توکار اضافه شد.
bpo-32253: منسوخ کردن
yield from lock،await lock،with (yield from lock)وwith await lockبرای اولیههای همگامسازی در asyncio.bpo-22589: تغییر نوع MIME پروندههای .bmp از 'image/x-ms-bmp' به 'image/bmp'
bpo-32193: تبدیل asyncio برای استفاده از نحو async/await. نحو قدیمی
yield fromنیز همچنان پشتیبانی میشود.bpo-32206: افزودن پشتیبانی برای اجرای ماژولها با pdb
bpo-32227:
functools.singledispatchاکنون از ثبت پیادهسازیها با استفاده از حاشیهنویسی نوع پشتیبانی میکند.bpo-15873: سازندههای جایگزین جدید
datetime.datetime.fromisoformat()،datetime.time.fromisoformat()وdatetime.date.fromisoformat()به عنوان عملگر معکوس متدهایisoformatمربوط به هر کلاس اضافه شدند.bpo-32199: متد دریافتکنندهی ip یعنی getnode() اکنون به جای 'ip link list' از 'ip link' استفاده میکند.
bpo-32143 : تابع os.statvfs() اکنون شامل فیلد f_fsid از statvfs(2) است
bpo-26439: رفع مشکل ctypes.util.find_library() برای AIX با پیادهسازی ctypes._aix.find_library(). وصله توسط: Michael Felt
bpo-31993: پیکلساز اکنون هنگام سریالسازی اشیای بزرگ bytes و str در یک پرونده، حافظه کمتری مصرف میکند. پیکلهای ایجادشده با پروتکل ۴ برای بارپیکلسازی (unpickling) اشیای بزرگ bytes و str به حافظه کمتری نیاز خواهند داشت.
bpo-27456: اطمینان حاصل کنید که TCP_NODELAY روی لینوکس تنظیم شده است. آزمونها توسط Victor Stinner.
bpo-31778: تابع ast.literal_eval() اکنون سختگیرانهتر شده است. جمع و تفریق اعداد دلخواه دیگر مجاز نیست.
bpo-31802: ایمپورت کردن ماژولهای مسیر بومی (
posixpath،ntpath) اکنون حتی اگر ماژولosهنوز ایمپورت نشده باشد نیز کار میکند.bpo-30241: افزودن contextlib.AbstractAsyncContextManager. وصله توسط Jelle Zijlstra.
bpo-31699: رفع بنبستها در
concurrent.futures.ProcessPoolExecutorهنگامی که آرگومانها یا نتایج وظایف باعث خطاهای پیکلسازی یا بارپیکلسازی میشوند. این کار تضمین میکند که فراخوانیهای API کلاسProcessPoolExecutorهمیشه در نهایت برگردانده شوند.bpo-15216: متد
TextIOWrapper.reconfigure()از تغییر encoding، errors و newline پشتیبانی میکند.
مستندات¶
bpo-32418: افزودن متد get_loop() به کلاسهای Server و AbstractServer.
آزمونها¶
bpo-32252: رفع مشکل faulthandler_suppress_crash_report() که برای جلوگیری از ایجاد پروندههای برونریزی حافظه (core dump) هنگام آزمایش خرابیها استفاده میشد. تابع getrlimit() در صورت موفقیت صفر برمیگرداند.
bpo-32002: تنظیم آزمایش تبدیل ضمنی نوع locale در C برای حالتهای locale خالی و POSIX، جهت تطبیق آسانتر با رفتار وابسته به سکو.
Windows¶
bpo-19764: پیادهسازی پشتیبانی از
subprocess.Popen(close_fds=True)روی ویندوز. وصله توسط Segev Finer.
Tools/Demos¶
bpo-24960: ابزارهای 2to3 و lib2to3 اکنون میتوانند به جای بررسی سامانه فایلبندی، پروندههای دستور زبان پیکلشده را با استفاده از pkgutil.get_data() بخوانند. این امکان باعث میشود 2to3 و lib2to3 هنگام اجرا از داخل یک پرونده فشردهی zip نیز کار کنند.
رابط C API¶
bpo-32030: تابع Py_Initialize() اگر متغیر محیطی
PYTHONMALLOCتنظیم نشده باشد، تخصیصدهندههای حافظه را به حالت پیشفرض بازنشانی نمیکند.bpo-29084: API زبان C مستندنشده برای OrderedDict از API محدود C حذف شد. این مورد به اشتباه اضافه شده بود و در واقع هرگز در API محدود C کار نکرده بود.
bpo-32264: سرآیند pygetopt.h به دلیل نداشتن APIهای عمومی، به پوشهی internal/ منتقل شد.
bpo-32241: توابع
Py_SetProgramName()وPy_SetPythonHome()اکنون به جایwchar *آرگومانهایconst wchar *را میپذیرند.
پایتون ۳.۷.۰ آلفا ۳¶
تاریخ انتشار: ۲۰۱۷-۱۲-۰۵
هسته و توکارها (Core and Builtins)¶
bpo-32176: ویژگی co_flags.CO_NOFREE اکنون همیشه بهدرستی توسط سازندهی شیء کد بر اساس freevars و cellvars تنظیم میشود، و نیازی نیست که توسط فراخواننده بهدرستی تنظیم شود. این کار تضمین میکند که وقتی ارجاعهای سلولی اضافی به یک شیء کد و تابع اصلاحشده تزریق میشوند، این مقدار بهطور خودکار پاکسازی خواهد شد.
bpo-10544: عبارتهای yield اکنون در درککنندهها (comprehensions) و عبارتهای تولیدگر منسوخ شدهاند. آنها همچنان در تعریف بیرونیترین پیمایشپذیر مجاز هستند، زیرا این مورد مستقیماً در محدودهی احاطهکننده ارزیابی میشود.
bpo-32137: نمایش repr از دیکشنریهای بسیار تودرتو اکنون به جای از کار افتادن به دلیل سرریز پشته، یک RecursionError بالا میآورد.
bpo-32096: بازگردانی تغییرات تخصیصدهندهی حافظه در API زبان C: انتقال ساختارها از _PyRuntime به Objects/obmalloc.c. تخصیصدهندههای حافظه بار دیگر بهصورت ایستا مقداردهی اولیه میشوند، بنابراین میتوان PyMem_RawMalloc() و Py_DecodeLocale() را پیش از _PyRuntime_Initialize() فراخوانی کرد.
bpo-32043: افزودن «حالت توسعهدهنده» جدید: گزینهی خط فرمان جدید "-X dev" برای فعالسازی بررسیهای اشکالزدایی در زمان اجرا.
bpo-32023: خطای SyntaxError اکنون بهدرستی زمانی بالا میآید که یک عبارت تولیدگر بدون پرانتز به جای فهرست ارثبری در یک تعریف کلاس استفاده شود. تکرار پرانتزها فقط در فراخوانیها قابل حذف است.
bpo-32012: خطای SyntaxError اکنون بهدرستی زمانی بالا میآید که یک عبارت تولیدگر بدون پرانتز به عنوان آرگومان ارسال شود، اما پس از آن کامای پایانی بیاید. یک عبارت تولیدگر همیشه باید مستقیماً درون یک مجموعه پرانتز قرار گیرد و نمیتواند در هیچیک از دو طرف کاما داشته باشد.
bpo-28180: تابع کمکی داخلی جدید
_Py_SetLocaleFromEnv(category)به منظور بهبود سازگاری رفتار در پیادهسازیهای مختلفlibcاضافه شده است (به عنوان مثال اندروید بهطور پیشفرض از تنظیم locale از محیط پشتیبانی نمیکند).bpo-31949: چند مسئله در چاپ ردگیریها (PyTraceBack_Print()) اصلاح شد. تنظیم sys.tracebacklimit روی صفر یا کمتر اکنون چاپ ردگیریها را متوقف میکند. تنظیم sys.tracebacklimit روی None اکنون باعث استفاده از حد پیشفرض میشود. تنظیم sys.tracebacklimit روی یک عدد صحیح بزرگتر از LONG_MAX اکنون به معنای استفاده از حد LONG_MAX به جای حد پیشفرض است. سرریزهای عدد صحیح در صورت وجود بیش از
2**31آیتم ردگیری در ویندوز اصلاح شد. مدیریت خطاهای خروجی اصلاح شد.bpo-30696: رفع مشکل حلقهی بینهایت مفسر تعاملی در صورت عدم وجود حافظه.
bpo-20047: متدهای بایتآرایه partition() و rpartition() همانطور که مستند شده است، اکنون فقط اشیاء شبهبایت را به عنوان جداکننده میپذیرند. به ویژه، آنها اکنون به جای بازگرداندن یک نتیجه نادرست هنگام ارسال یک عدد صحیح به عنوان جداکننده، TypeError بالا میآورند.
bpo-21720: زمانی که آرگومان fromlist تابع
__import__()یا ویژگی__all__ماژول حاوی نمونههای بایت باشد، دیگر هشدار BytesWarning صادر نمیشود.bpo-31845: متغیرهای محیطی یک بار دیگر در زمان راهاندازی مفسر بهدرستی خوانده میشوند.
bpo-28936: اطمینان حاصل کنید که از نظر ترتیبی اولین خطای نحوی شامل یک پارامتر و
globalیاnonlocalابتدا در یک محدودهی مشخص شناسایی میشود. پچ توسط ایوان لوکوسکی (Ivan Levkivskyi).bpo-31825: رفع خطای OverflowError در کُدک 'unicode-escape' و در codecs.escape_decode() هنگام رمزگشایی یک بایت گریزیافتهی غیر اسکی.
bpo-31618: منطق ردیابی در سطح فریم که در نسخه ی 3.7a1 اضافه شده بود، به گونهای تغییر یافت که قبل از انتشار رویدادهای
"line"یا"opcode"، مقدارframe->f_linenoبهروزرسانی شود. پیش از این، رویدادهای آپکد ابتدا منتشر میشدند و بنابراین گاهی اوقات شماره سطرهای کهنه را روی فریم مشاهده میکردند. در نتیجه، رفتار این ویژگی کمی تغییر کرده است: زمانی که هر دو مقدارf_trace_linesوf_trace_opcodesفعال باشند، رویدادهای خط اکنون ابتدا رخ میدهند.bpo-28603: چاپ زنجیرهی کامل زمینه/علت استثناها در خروج از مفسر، حتی اگر یک استثنا در زنجیره هشناپذیر باشد یا با موارد بعدی برابر مقایسه شود. پچ توسط زین بیتر (Zane Bitter).
bpo-31786: اصلاح گرد کردن مهلت زمانی در ماژول select بهطوریکه مهلتهای زمانی منفی بین -1.0 و 0.0 را بهدرستی گرد کند. توابع اکنون همانطور که انتظار میرود برای رویدادها مسدود میشوند. پیشتر، فراخوانی بهاشتباه غیرمسدودکننده بود. وصلهای از Pablo Galindo.
bpo-31781: جلوگیری از فروپاشیها هنگام فراخوانی متدهای یک شیء مقداردهینشدهی
zipimport.zipimporter. وصلهای از Oren Milman.bpo-30399: بازنمایی استاندارد repr() از BaseException با یک آرگومان منفرد دیگر حاوی کامای پایانی اضافی نیست.
bpo-31626: یک باگ در تخصیصدهندهی حافظهی اشکالزدایی برطرف شد. پس از کوچکسازی یک بلوک حافظه، نوشتنی روی حافظهی آزادشده انجام میشد.
bpo-30817: تابع
PyErr_PrintEx()اکنون استثنای نادیدهگرفتهشدهای را که ممکن است توسط_PySys_SetObjectId()(مثلاً هنگام کمبود حافظه) بالا برده شود، پاک میکند.
کتابخانه¶
bpo-28556: دو اصلاح جزئی برای ماژول
typing: اجازه دادن به کپی سطحی نمونههای کلاسهای عام، بهبود تعامل__init_subclass__با انواع عام. درخواستهای پول اصلی از Ivan Levkivskyi.bpo-32214: پیشنهاد PEP 557، کلاسهای داده (Data Classes). یک دکوراتور فراهم میکند که متدهای پیشساخته را به کلاسهایی اضافه میکند که از حاشیهنویسیهای نوع برای مشخص کردن فیلدها استفاده میکنند.
bpo-27240: الگوریتم تا کردن سرآیند برای سیاستهای ایمیل جدید بازنویسی شده است که این امر bpo-30788، bpo-31831 و bpo-32182 را نیز برطرف میکند. بهویژه، تا کردن بر اساس RFC2231 اکنون بهدرستی انجام میشود.
bpo-32186: توابع io.FileIO.readall() و io.FileIO.read() اکنون هنگام دریافت اندازهی پرونده، GIL را آزاد میکنند. مشکل متوقف شدن همهی نخها با سرور NFS غیرقابلدسترس برطرف شد. وصلهای از Nir Soffer.
bpo-32101: اضافه کردن پرچم
sys.flags.dev_modebpo-32154: تابع
asyncio.windows_utils.socketpair()حذف شده است: مستقیماً ازsocket.socketpair()استفاده کنید که از پایتون نسخه ۳.۵ به بعد روی تمام پلتفرمها در دسترس است (پیشتر، روی ویندوز در دسترس نبود). تابعasyncio.windows_utils.socketpair()در پایتون ۳.۵ و جدیدتر صرفاً یک نام مستعار برایsocket.socketpairبود.bpo-32089: هشدارها: در حالت توسعه (-X dev) و حالت اشکالزدایی (بیلد pydebug)، در صافیهای پیشفرض هشدارها، بهجای کنش "always"، از کنش "default" برای ResourceWarning استفاده کنید.
bpo-32107: تابع
uuid.getnode()اکنون در صورت موجود بودن، بهترجیح آدرسهای MAC مدیریتشدهی سراسری را نسبت به آدرسهای MAC مدیریتشدهی محلی برمیگرداند. این کار تضمین بهتری برای یکتایی سراسری شناسههای UUID برگرداندهشده ازuuid.uuid1()فراهم میکند. اگر تنها آدرسهای MAC مدیریتشدهی محلی در دسترس باشند، اولین موردی که یافت شود برگردانده میشود.bpo-23033: وایلدکارد اکنون در نام میزبان پشتیبانی میشود، زمانی که تنها نویسه در سمت چپترین بخش نام میزبان در آرگومان دوم متد
ssl.match_hostname()باشد. وصلهای از Mandeep Singh.bpo-12239: کاری کنید که متد
msilib.SummaryInformation.GetProperty()زمانی که مقدار ویژگیVT_EMPTYاست، مقدارNoneرا برگرداند. وصلهی اولیه از Mark Mc Mahon.bpo-28334: از
os.path.expanduser()برای یافتن پروندهی~/.netrcدر کلاسnetrc.netrcاستفاده کنید. اگر وجود نداشته باشد، استثنایFileNotFoundErrorبالا برده میشود. وصلهای از Dimitri Merejkowsky.bpo-32121: باعث شد که کلاس
tracemalloc.Tracebackبیشتر شبیه به ماژول ردگیری (traceback) رفتار کند و قابها را از قدیمیترین تا جدیدترین مرتب کند. متدTraceback.format()اکنون محدودهی منفی limit را میپذیرد و نتیجه را به قدیمیترین قابهایabs(limit)محدود میکند. برای دستیابی به رفتار قبلی، میتوانید از آرگومان جدید most_recent_first در متدTraceback.format()استفاده کنید. (وصلهای از Jesse Bakker.)bpo-31325: رفع استفادهی نادرست از تابع
collections.namedtuple()در متدRobotFileParser.parse(). وصلهی اولیه از Robin Wellner.bpo-12382: تابع
msilib.OpenDatabase()اکنون زمانی که نمیتواند یک پروندهی MSI را باز کند یا بسازد، پیام استثنای بهتری را بالا میبرد. وصلهی اولیه از William Tisäter.bpo-19610: تابع
setup()اکنون دربارهی انواع نامعتبر برای برخی فیلدها هشدار میدهد. کلاسdistutils.dist.Distributionاکنون زمانی که فیلدهایclassifiers،keywordsوplatformsبه شکل فهرست یا رشته مشخص نشده باشند، هشدار میدهد.bpo-32071: گزینهی خط فرمانی
-kبهpython -m unittestاضافه شد تا فقط آزمونهایی اجرا شوند که با الگو(های) دادهشده مطابقت دارند.bpo-10049: مدیر زمینهی عملیات بیاثر nullcontext به contextlib اضافه شد. این کار جایگزین سادهتر و سریعتری برای ExitStack() هنگام مدیریت مدیرهای زمینهی اختیاری فراهم میکند.
bpo-28684: دکوراتور جدید test.support.skip_unless_bind_unix_socket() در اینجا استفاده میشود تا آزمونهای asyncio که به دلیل نداشتن تابع عملکردی bind() برای سوکتهای دامنه یونیکس توسط پلتفرم با شکست مواجه میشوند، پرش داده شوند (همانطور که در مورد کاربران غیررسول/غیرroot در نسخههای اخیر اندروید که اکنون SELinux را در حالت اجباری اجرا میکنند، صدق میکند).
bpo-32110: تابع
codecs.StreamReader.read(n)اکنون برای n نامنفی، حداکثر n نویسه/بایت برمیگرداند. این تغییر باعث سازگاری آن با متدهایread()سایر اشیاء شبهپرونده میشود.bpo-27535: ماژول warnings دیگر در رجیستری هشدار پنهان برای کنش «ignore» در فیلترهای هشدار، نشت حافظه ندارد. تابع warn_explicit() دیگر کلید هشدار را برای کنش «ignore» به رجیستری اضافه نمیکند.
bpo-32088: هشدارها: وقتی پایتون در حالت اشکالزدایی (
Py_DEBUG) ساخته میشود، هشدارهایDeprecationWarning،PendingDeprecationWarningوImportWarningاکنون بهطور پیشفرض نمایش داده میشوند.bpo-1647489: جستوجوی الگوهای عبارت باقاعده که میتوانند با یک رشتهی خالی مطابقت داشته باشند، اصلاح شد. از این پس رشتههای ناتهی پس از تطابق با یک رشتهی خالی بهدرستی پیدا میشوند.
bpo-25054: پشتیبانی از تفکیک روی الگویی که میتواند با یک رشتهی خالی مطابقت داشته باشد، اضافه شد.
bpo-32072: رفع مشکلات مربوط به ساختارهای دادهی دودویی plist: رفع مشکل ذخیرهسازی bytearrayها. اشیاء یکسان فقط یک بار ذخیره خواهند شد. ارجاعهای برابر به عنوان اشیای یکسان بارگذاری خواهند شد. پشتیبانی از ذخیرهسازی و بارگذاری ساختارهای دادهی بازگشتی اضافه شد.
bpo-32069: انتقال قدیمی SSL از asyncio حذف شد، در هر صورت ssl.MemoryBIO همیشه استفاده میشود.
bpo-32066: ماژول asyncio: پشتیبانی از pathlib.Path در create_unix_connection اضافه شد؛ آرگومان sock باید اختیاری باشد
bpo-32046: نسخهی 2to3 بهروزرسانی شد تا از operator.isCallable(obj) به callable(obj) تبدیل شود. وصله توسط Donghee Na.
bpo-32018: تابع inspect.signature باید از PEP 8 پیروی کند، اگر پارامتر دارای حاشیهنویسی و مقدار پیشفرض باشد. وصله توسط Donghee Na.
bpo-32025: توابع time.thread_time() و time.thread_time_ns() اضافه شدند.
bpo-32037: اعداد صحیحی که در یک عدد صحیح ۳۲ بیتی علامتدار جا میشوند، اکنون با پروتکل ۰ و با استفاده از آپکد INT پیکل میشوند. این کار اندازهی پیکل را کاهش میدهد، پیکلکردن و ناپیکلکردن را تسریع میکند و باعث میشود این اعداد صحیح در پایتون ۲ به عنوان نمونههای int ناپیکل شوند.
bpo-32034: امکان پیکلکردن asyncio.IncompleteReadError و LimitOverrunError فراهم شد.
bpo-32015: حلقهی asyncio در صورت اتصال مجدد سوکت هنگام انتظار برای خواندن/نوشتن ناهمگام از/به سوکت اصلاح شد.
bpo-32011: پشتیبانی از بارگذاری پروندههای marshal با کد TYPE_INT64 بازیابی شد. این پروندهها میتوانند در پایتون ۲.۷ تولید شده باشند.
bpo-28369: بررسی add_reader/writer بهبود یافت تا اطمینان حاصل شود که سوکت توسط هیچ انتقال دیگری استفاده نمیشود. پیش از این، فقط مواردی پشتیبانی میشدند که add_reader/writer با یک FD از نوع int فراخوانی میشدند. اکنون این بررسی بهدرستی برای تمام اشیاء شبهپرونده پیادهسازی شده است.
bpo-31976: حالت رقابتی هنگام کند بودن تخلیهی (flushing) یک پرونده رفع شد؛ این امر میتواند در صورت بستن پرونده از یک نخ دیگر، باعث خطای segmentation fault شود.
bpo-31985: توابع aifc.openfp، sunau.openfp و wave.openfp رسماً منسوخ شدند. از زمان تغییر 7bc817d5ba917528e8bd07ec461c635291e7b06a در سال ۱۹۹۳، openfp در هر سه ماژول به عنوان مزیتی برای سازگاری با نسخههای پیشین به تابع open آن ماژول اشاره میکرد، هرچند که نه آزمایش شده بود و نه مستندسازی شده بود.
bpo-21862: خط فرمان cProfile اکنون
-m module_nameرا به عنوان جایگزینی برای مسیر اسکریپت میپذیرد. وصله توسط Sanyam Khurana.bpo-31970: کاهش بار سربار عملکرد حالت عیبیابی asyncio.
bpo-31843: آرگومان database در تابع sqlite3.connect() اکنون بهجای فقط یک رشته، یک شیء شبهمسیر را میپذیرد.
bpo-31945: افزودن blocksize قابل تنظیم به
HTTPConnectionوHTTPSConnectionبرای بهبود کارایی آپلود. وصله از Nir Soffer.bpo-31943: افزودن متد
cancelled()بهasyncio.Handle. وصله از Marat Sharafutdinov.bpo-9678: اصلاح تعیین آدرس MAC در ماژول uuid: استفاده از ifconfig در NetBSD و OpenBSD. استفاده از arp در Linux، FreeBSD، NetBSD و OpenBSD. بر اساس وصلهای از Takayuki Shimizukawa.
bpo-30057: رفع سیگنال ازدسترفتهی احتمالی در signal.signal().
bpo-31933: رفع پارامترهای leaf_size و node_offset مربوط به Blake2 روی سکوهای بزرگاندیان (big endian). وصله از Jack O'Connor.
bpo-21423: افزودن آرگومان اولیهساز (initializer) به {Process,Thread}PoolExecutor
bpo-31927: رفع مشکل کامپایل ماژول socket روی NetBSD 8. رفع خطای ادعا (assertion) یا خواندن دادهی دلخواه هنگام تجزیهی یک آدرس AF_BLUETOOTH روی NetBSD و DragonFly BSD.
bpo-27666: رفع خرابی پشته در curses.box() و curses.ungetmouse() هنگامی که اندازهی انواع دادهی chtype یا mmask_t کمتر از اندازهی C long است. تابع curses.box() اکنون کاراکترها را به عنوان آرگومان میپذیرد. بر اساس وصلهای از Steve Fink.
bpo-31917: افزودن ۳ شناسه ساعت جدید:
time.CLOCK_BOOTTIME،time.CLOCK_PROFوtime.CLOCK_UPTIME.bpo-31897: ماژول plistlib اکنون هنگام خواندن فایلهای plist دودویی خطاهای بیشتری را صید کرده و بهجای استثناهای غیرمنتظره، InvalidFileException را بالا میآورد (raise).
bpo-25720: رفع متد بررسی وضعیت pad در WINDOW مربوط به curses. وصله از Masayuki Yamamoto.
bpo-31893: رفع ساختار طرحبندی (layout) ساختار دادهی kqueue_event روی OpenBSD و NetBSD. رفع مقایسهی اشیای kqueue_event.
bpo-31891: رفع ساخت (building) ماژول curses روی NetBSD.
bpo-31884: افزودن ثابتهای مورد نیاز به ماژول subprocess برای تنظیم اولویت در ویندوز
bpo-28281: حذف محدودیتهای سال (1-9999) روی تابع Calendar.weekday(). وصله از Mark Gollahon.
bpo-31702: تابع crypt.mksalt() اکنون امکان مشخص کردن تعداد دورها را برای درهمسازی (hashing) SHA-256 و SHA-512 فراهم میکند.
bpo-30639: تابع
inspect.getfile()دیگر برای نمایش در پیام خطا، مقدار repr اشیای ناشناخته را محاسبه نمیکند تا در برابر reprهای سفارشی با رفتار نامناسب محافظت شود.bpo-30768: رفع پیادهسازی pthread+semaphore در PyThread_acquire_lock_timed() هنگامی که با timeout > 0 و intr_flag=0 فراخوانی میشود: محاسبهی مجدد مهلت زمانی اگر sem_timedwait() توسط یک سیگنال (EINTR) متوقف شود. همچنین نگاه کنید به PEP 475.
bpo-31854: افزودن ثابت
mmap.ACCESS_DEFAULT.bpo-31834: استفاده از کد بهینهشده برای BLAKE2 فقط با SSSE3+. پیادهسازی خالص SSE2 کندتر از پیادهسازی مرجع خالص C است.
bpo-28292: تابع Calendar.itermonthdates() اکنون بهطور سازگار هنگامی که یک تاریخ خارج از بازهی 0001-01-01 تا 9999-12-31 قرار گیرد، یک استثنا بالا میآورد. برای پشتیبانی از برنامههایی که نمیتوانند چنین استثنائاتی را تحمل کنند، متدهای جدید itermonthdays3() و itermonthdays4() اضافه شدهاند. متدهای جدید چنددوتاییها (tuples) را برمیگردانند و توسط بازهی پشتیبانیشده توسط datetime.date محدودچندانی نمیشوند.
bpo-28564: تابع shutil.rmtree() تا 20--40٪ سریعتر شده است. این کار با استفاده از تابع os.scandir() انجام شد.
bpo-28416: نمونههای زیرکلاس pickle.Pickler با متد persistent_id() و زیرکلاس pickle.Unpickler با متد persistent_load() دیگر چرخههای ارجاع ایجاد نمیکنند.
bpo-31653: اگر بتوانیم یک سمافور چندپردازشی را بلافاصله بهدست آوریم، GIL را آزاد نکنید.
bpo-28326: رفع مشکل multiprocessing.Process هنگامی که stdout و/یا stderr بسته شده یا None است.
bpo-20825: افزودن آزمونهای مهار (containment tests)
subnet_ofوsuperset_ofبهipaddress.IPv6Networkوipaddress.IPv4Network. وصله توسط Michel Albert و Cheryl Sabella.bpo-31827: حذف تابع os.stat_float_times(). این تابع در پایتون 2.3 برای سازگاری عقبگرد با پایتون 2.2 معرفی شد و از پایتون 3.1 منسوخ شده بود.
bpo-31756: افزودن یک آرگومان کلیدواژهای
subprocess.Popen(text=False)به توابعsubprocessبرای صراحت بیشتر دربارهی زمانی که کتابخانه باید تلاش کند خروجیها را به متن رمزگشایی کند. وصله توسط Andrew Clegg.bpo-31819: افزودن AbstractEventLoop.sock_recv_into().
bpo-31457: اگر از آداپتورهای لاگ تو در تو استفاده شود، متدهای درونی
process()دیگر حذف نمیشوند.bpo-31457: ویژگی
managerروی اشیای LoggerAdapter اکنون بهدرستی قابل تنظیم است.bpo-31806: رفع گرد کردن مهلت زمانی در time.sleep()، threading.Lock.acquire() و socket.socket.settimeout() برای گرد کردن درست مهلتهای زمانی منفی بین 1.0- و 0.0. توابع اکنون همانطور که انتظار میرود برای رویدادها مسدود میشوند. پیشتر، فراخوانی بهطور نادرست غیرمسدودکننده بود. وصله توسط Pablo Galindo.
bpo-31803: توابع time.clock() و time.get_clock_info('clock') اکنون یک هشدار DeprecationWarning صادر میکنند.
bpo-31800: پشتیبانی توسعهیافته برای تجزیه آفستهای UTC. تابع strptime '%z' اکنون میتواند خروجی تولیدشده توسط datetime.isoformat، از جمله ثانیهها و میکروثانیهها را تجزیه کند.
bpo-28603: ردگیری (traceback): رفع خطای TypeError که هنگام چاپ ردگیریهای استثنا رخ میداد، زمانی که یا استثنای فعلی و یا استثنایی در زنجیرهی زمینه/علت آن هشناپذیر باشد. وصله توسط Zane Bitter.
bpo-30541: افزودن تابع جدید برای مهر و موم کردن یک ماک (mock) و جلوگیری از ایجاد خودکار ماکهای فرزند. وصله توسط Mario Corchero.
bpo-31784: پیادهسازی PEP 564، افزودن ۶ تابع جدید با وضوح نانوثانیه به ماژول
time:clock_gettime_ns()،clock_settime_ns()،monotonic_ns()،perf_counter_ns()،process_time_ns()،time_ns().bpo-30143: ابزار 2to3 اکنون کدی را تولید میکند که از کلاسهای مجموعه انتزاعی از collections.abc به جای collections استفاده میکند.
bpo-31770: جلوگیری از فروپاشی هنگام فراخوانی متد
__init__()از یک شیءsqlite3.Cursorبیش از یک بار. اصلاحیه از Oren Milman.bpo-31764: جلوگیری از فروپاشی در
sqlite3.Cursor.close()در صورتی که شیءCursorمقداردهی اولیه نشده باشد. اصلاحیه از Oren Milman.bpo-31752: رفع فروپاشی احتمالی در سازندهی timedelta که با اعداد صحیح سفارشی فراخوانی میشود.
bpo-31620: یک asyncio.Queue خالی اکنون هنگامی که مهلت زمانی پولرهای queue.get به پایان میرسد، نشت حافظه ندارد
bpo-31690: اجازه دادن به پرچمهای re.ASCII، re.LOCALE و re.UNICODE تا به عنوان پرچمهای گروه برای عبارتهای باقاعده استفاده شوند.
bpo-30349: FutureWarning اکنون صادر میشود اگر یک عبارت باقاعده شامل سازههای مجموعهی نویسهای باشد که در آینده از نظر معنایی تغییر خواهند کرد (مجموعههای تو در تو و عملیات مجموعهها).
bpo-31664: افزودن پشتیبانی از هش کردن Blowfish در ماژول crypt.
bpo-31632: رفع متد set_protocol() از کلاس _SSLProtocolTransport در ماژول asyncio. این متد پیشتر در حال اصلاح یک ارجاع نادرست به پروتکل بود.
bpo-15037: افزودن یک راهکار موقت برای getkey() در curses برای ncurses نسخهی ۵.۷ و پیش از آن.
bpo-31307: اجازه دادن به استفاده از اشیاء bytes برای آرگومانها به
configparser.ConfigParser.read(). اصلاحیه از Vincent Michel.bpo-31334: رفع
poll.poll([timeout])در ماژولselectبرای مهلتهای زمانی منفی دلخواه در تمام سیستمعاملهایی که فقط میتوانند یک عدد صحیح غیرمنفی یا ۱- باشند. اصلاحیه از Riccardo Coccioli.bpo-31310: ردیاب سمافور multiprocessing در صورت فروپاشی باید دوباره راهاندازی شود.
bpo-31308: فرایند forkserver ماژول multiprocessing را در برابر کلید Ctrl-C و سایر وقفههای کاربری مصون کنید. اگر دچار فروپاشی شد، در صورت لزوم آن را دوباره راهاندازی کنید.
bpo-31245: افزودن پشتیبانی از سوکت AF_UNIX در
create_datagram_endpointماژول asyncio.bpo-30553: افزودن کد وضعیت HTTP/2 شمارهی ۴۲۱ (درخواست نادرست هدایتشده) به
http.HTTPStatus. اصلاحیه از Vitor Pereira.
مستندات¶
bpo-32105: افزودن نشانگر versionadded به asyncio.BaseEventLoop.connect_accepted_socket.
آزمونها¶
bpo-31380: رد کردن test_httpservers test_undecodable_file روی سیستمعامل macOS: روی APFS با شکست مواجه میشود.
bpo-31705: رد کردن آزمون test_socket.test_sha256() روی هستهی لینوکس قدیمیتر از ۴.۵. این آزمون با خطای ENOKEY روی هستهی ۳.۱۰ (روی ppc64le) با شکست مواجه میشود. یک اصلاحیه در هستهی ۴.۵ ادغام شد.
bpo-32138: رد کردن آزمونهای test_faulthandler که SIGSEGV تولید میکنند روی اندروید و حذف دکوراتور test.support.requires_android_level.
bpo-32136: آزمونهای تعبیهی رانتایم از
Lib/test/test_capi.pyبه یک پروندهی جدیدLib/test/test_embed.pyجدا شدهاند.bpo-28668: تابع test.support.requires_multiprocessing_queue حذف شده است. بهجای آن، هنگامی که پیادهسازی سمافور (semaphore) خراب یا مفقود است، آزمونها را با استفاده از test.support.import_module('multiprocessing.synchronize') رد کنید (skip).
bpo-32126: هنگامی که تابع sem_open() کار نمیکند، آزمون test_get_event_loop_new_process را در test.test_asyncio.test_events رد کنید (skip).
bpo-31174: رفع آزمون test_tools.test_unparse: اکنون DirectoryTestCase نمونهی نامها را ذخیره میکند تا همیشه همان پروندهها را آزمایش کند. این کار از هشدارهای کاذب هنگام بررسی نشتهای ارجاع جلوگیری میکند.
ساخت¶
bpo-28538: بازنشانی تغییرات قبلی؛ ساختار if_nameindex توسط سرآیندهای یکپارچهی اندروید (Unified Headers) تعریف میشود.
bpo-28762: بازنشانی آخرین ثبت نهایی (commit)؛ کلاندستور F_LOCK توسط سرآیندهای یکپارچهی اندروید تعریف میشود.
bpo-29040: پشتیبانی از ساخت اندروید با سرآیندهای یکپارچه. نخستین نسخهی NDK که از سرآیندهای یکپارچه پشتیبانی میکند android-ndk-r14 است.
bpo-32059: تابع
detect_modules()درsetup.pyاکنون هنگام کامپایل متقاطع (cross-compiling)، مسیرهای sysroot را نیز جستوجو میکند.bpo-31957: رفع تشخیص نسخهی SDK ویندوز هنگام ساخت برای ویندوز.
bpo-31609: رفع نقلقولها در PCbuild/clean.bat
bpo-31934: هنگام ساخت در خارج از یک درخت سورس پاک، عملیات ساخت (build) را متوقف کنید.
bpo-31926: رفع مشکلی در Argument Clinic که گاهی اوقات هنگام وجود بیش از یک تابع و/یا متد با نامی یکسان در یک پروندهی c. باعث بروز خطاهای کامپایل میشد.
bpo-28791: بهروزرسانی ساختهای ویندوز برای استفاده از SQLite 3.21.0.
bpo-28791: بهروزرسانی برنامهی نصب OS X برای استفاده از SQLite 3.21.0.
bpo-28643: ثبت پیشرفت ساخت profile-opt با استفاده از پروندههای مهر (stamp files).
bpo-31866: به پایان رساندن حذف پشتیبانی از AtheOS.
Windows¶
bpo-1102: هنگامی که
View.Fetch()مقدارERROR_NO_MORE_ITEMSرا برمیگرداند، بهجای بالا آوردن (raising) خطایMSIError، مقدارNoneرا برگردانید. وصلهی اولیه توسط Anthony Tuininga.bpo-31944: رفع دکمهی Modify در محاورهی Apps and Features.
bpo-20486: پیادهسازی متد
Database.Close()برای کمک به بستن اشیاء پایگاه دادهی MSI.bpo-31857: قطعی (deterministic) کردن رفتار USE_STACKCHECK در یک محیط چندنخی (multi-threaded).
مکاواس¶
bpo-31392: بهروزرسانی برنامهی نصب macOS برای استفاده از OpenSSL 1.0.2m
IDLE¶
bpo-32207: بهبود ردگیری استثناهای رویداد tk در IDLE. هنگامی که مدیریت رویداد tk توسط حلقهی اجرای IDLE هدایت میشود، دیگر یک زمینهی ردگیری گیجکننده و مزاحم queue.EMPTY به ردگیری استثناهای رویداد tk اضافه نمیشود. اکنون ردگیری مانند زمانی است که مدیریت رویداد توسط کد کاربر هدایت میشود. این وصله بر اساس پیشنهادی از Serhiy Storchaka است.
bpo-32164: حذف پروندهی استفادهنشده idlelib/tabbedpages.py. استفاده از TabbedPageSet در configdialog با ttk.Notebook جایگزین شد.
bpo-32100: محیط IDLE: رفع باگهای قدیمی و جدید در pathbrowser؛ بهبود آزمونها. وصله عمدتاً توسط Cheryl Sabella.
bpo-31858: محیط IDLE -- محدود کردن دستکاری اعلان پوسته به خودِ پوسته. پنجرههای ویرایشگر و خروجی فقط یک سطر اعلان خالیِ آخر را میبینند. این کار کد را ساده میکند و یک باگ جزئی هنگام درج نویسهی خط جدید را برطرف میکند. مقدار Sys.ps1، در صورت وجود، هنگام راهاندازی پوسته خوانده میشود، اما تنظیم یا تغییر داده نمیشود.
bpo-31860: نمونهی قلم در محاورهی پیکربندی IDLE اکنون قابل ویرایش است. تغییرات تا زمانی که IDLE باز بماند باقی میمانند.
bpo-31836: آزمون test_code_module اکنون اگر پس از test_idle (که ps1 را تنظیم میکند) اجرا شود، با موفقیت گذر میکند. این ماژول کد از sys.ps1 در صورت وجود استفاده میکند یا اگر موجود نباشد آن را روی '>>> ' تنظیم میکند. ماژول test_code_module اکنون هر دو رفتار را بهران درست میآزماید. همین موضوع برای ps2 نیز صادق است.
bpo-28603: رفع یک خطای TypeError که هنگام چاپ کردن یک ردگیری شامل یک استثنای هشناپذیر، باعث راهاندازی مجدد پوسته میشد. وصله از Zane Bitter.
bpo-13802: استفاده از نویسههای غیرلاتین در نمونهی تنظیمات قلم (Font) در IDLE. حتی اگر شخصی قلمی را انتخاب کند که زیرمجموعهی محدودی از صفحهی چندزبانه پایهی یونیکد را تعریف میکند، tcl/tk از قلمهای دیگری که یک نویسه را تعریف میکنند استفاده خواهد کرد. مثال گسترشیافته به کاربران نویسههای غیرلاتین ایده بهتری از آنچه ممکن است در پوسته و ویرایشگرهای IDLE ببینند، میدهد. برای باز کردن فضا جهت نمونهی گسترشیافته، قابها در زبانهی قلم مجدداً مرتب شدهاند. راهنمای قلم/زبانهها توضیح کوچکی دربارهی این اضافات میدهد.
Tools/Demos¶
bpo-32159: حذف ابزارهای CVS و Subversion: حذف اسکریپتهای svneol.py و treesync.py. سیپایتون از CVS به Subversion، سپس به Mercurial و بعد به Git مهاجرت کرد. CVS و Subversion دیگر برای توسعهی سیپایتون استفاده نمیشوند.
bpo-30722: سازگاری redemo با پایتون ۳.۶ و نسخههای جدیدتر. همچنین، گزینهی
LOCALEرا حذف کنید زیرا با الگوهای رشتهای در پایتون ۳ کار نمیکند. وصله از Christoph Sarnowski.
رابط C API¶
bpo-20891: رفع خطای PyGILState_Ensure(). هنگامی که PyGILState_Ensure() در یک نخِ غیرپایتونی پیش از PyEval_InitThreads() فراخوانی میشود، برای رفع یک خرابی، تنها پس از فراخوانی PyThreadState_New() اقدام به فراخوانی PyEval_InitThreads() کنید.
bpo-32125: پرچم
Py_UseClassExceptionsFlagحذف شد. این پرچم منسوخ شده بود و از پایتون ۲.۰ به بعد دیگر استفاده نمیشد.bpo-25612: انتقال وضعیت استثنای فعلی از شیء قاب به همروند (co-routine). این کار مفسر را سادهتر میکند و تعدادی از باگهای مبهم ناشی از جابجایی وضعیت استثنا هنگام ورود یا خروج از یک تولیدگر را برطرف میکند.
bpo-23699: افزودن کلاندستور Py_RETURN_RICHCOMPARE برای کاهش کد پیشساخته در عملگرهای مقایسهی غنی.
bpo-30697: تکنمونهی
PyExc_RecursionErrorInstحذف شد وPyErr_NormalizeException()دیگر از آن استفاده نمیکند. این تکنمونه پایا است و پاک نشدن اعضای آن ممکن است باعث ایجاد خطای حافظه (segfault) در هنگام نهاییسازی مفسر شود. همچنین نگاه کنید به bpo-22898.
پایتون ۳.۷.۰ آلفا ۲¶
تاریخ انتشار: ۲۰۱۷-۱۰-۱۶
هسته و توکارها (Core and Builtins)¶
bpo-31558: تابع
gc.freeze()یک رابط برنامهنویسی کاربردی (API) جدید است که امکان انتقال تمام اشیاء در حال ردیابی توسط زبالهروب را به یک نسل دائمی فراهم میکند و عملاً آنها را از رویدادهای جمعآوری آینده حذف میکند. این قابلیت میتواند برای محافظت از آن اشیاء در برابر تغییر یافتن PyGC_Head آنها استفاده شود. در نتیجه، این امر ثابتی فوقالعادهای از نوع copy-on-write را در fork() امکانپذیر میکند.bpo-31642: بازیابی مسدودسازی دستور "from package import module" با تنظیم کردن sys.modules["package.module"] روی None.
bpo-31708: اجازه دادن به استفاده از عبارات تولیدگر ناهمگام در توابع همگام.
bpo-31709: توقف پشتیبانی از __aiter__ ناهمگام.
bpo-30404: گزینهی -u اکنون جریانهای stdout و stderr را بهجای بافرگذاری سطری، بدون بافر میکند.
bpo-31619: رفع یک خطای ValueError هنگام تبدیل یک رشته با تعداد زیادی زیرخط به عدد صحیح با پایهی دودویی.
bpo-31602: رفع یک خطای عدم برقراری شرط (assertion) در تابع
zipimporter.get_source()در صورت بروز نقص درzlib.decompress(). وصلهای از Oren Milman.bpo-31592: رفع یک خطای عدم برقراری شرط (assertion) در پارسر پایتون در صورت بروز نقص در
unicodedata.normalize(). وصلهای از Oren Milman.bpo-31588: در صورت شکست ایجاد کلاس به دلیل وجود یک فراکلاس با متد نامعتبر
__prepare__()، یک خطایTypeErrorهمراه با پیام راهنمایی صادر کنید. وصلهای از Oren Milman.bpo-31574: ماژول Importlib با دو پراب dtrace برای پروفایلسازی زمان ایمپورت تجهیز شد.
bpo-31566: رفع یک خطای عدم برقراری شرط (assertion) در
_warnings.warn()در صورت وجود متغیر سراسری نامعتبر__name__. وصلهای از Oren Milman.bpo-31506: بهبود منطق پیام خطا برای
object.__new__وobject.__init__.bpo-31505: رفع یک خطای عدم برقراری شرط (assertion) در
json، در حالتی که_json.make_encoder()یک آرگومانencoder()نامعتبر دریافت کند. وصلهای از Oren Milman.bpo-31492: رفع خطاهای عدم برقراری شرط (assertion) در صورت شکست در ایمپورت از یک ماژول دارای ویژگی
__name__نامعتبر، و همچنین در صورت شکست در دسترسی به ویژگی چنین ماژولی. وصلهای از Oren Milman.bpo-31478: رفع یک خطای عدم برقراری شرط (assertion) در
_random.Random.seed()در صورتی که آرگومان دارای متد__abs__()نامعتبر باشد. وصلهای از Oren Milman.bpo-31336: افزایش سرعت ایجاد کلاس به میزان ۱۰ تا ۲۰ درصد با کاهش سربار در جستوجوهای متد ویژهی لازم. وصلهای از Stefan Behnel.
bpo-31415: افزودن گزینهی
-X importtimeبرای نمایش مدتزمان لازم برای هر ایمپورت. از این گزینه میتوان برای بهینهسازی زمان راهاندازی برنامه استفاده کرد. پشتیبانی ازPYTHONPROFILEIMPORTTIMEبه عنوان روشی معادل برای فعالسازی این قابلیت.bpo-31410: بهینهسازی فراخوانی توصیفگرهای پوششی و classmethod.
bpo-31353: PEP 553 - افزودن یک تابع توکار جدید به نام
breakpoint()که تابعsys.breakpointhook()را فراخوانی میکند. بهطور پیشفرض این تابعpdbرا ایمپورت کرده وpdb.set_trace()را فراخوانی میکند، اما کاربران میتوانندsys.breakpointhook()را بازنویسی کنند تا هر دیباگری که میخواهند را فراخوانی نمایند. مقدار اصلی قلاب درsys.__breakpointhook__ذخیره میشود.bpo-17852: نگهداری فهرستی از پروندههای بافرشدهی باز، و تخلیه (flush) آنها پیش از خروج از مفسر. بر اساس وصلهای از Armin Rigo.
bpo-31315: رفع یک خطای عدم برقراری شرط (assertion) در imp.create_dynamic()، هنگامی که spec.name یک رشته نباشد. وصلهای از Oren Milman.
bpo-31311: رفع خرابی (crash) در متد
__setstate__()ازctypes._CData، در صورت وجود یک__dict__نامعتبر. وصلهای از Oren Milman.bpo-31293: رفع خرابیها در تقسیم حقیقی و ضرب یک شیء timedelta در یک عدد اعشاری با متد نامعتبر as_integer_ratio(). وصلهای از Oren Milman.
bpo-31285: رفع یک خطای عدم برقراری شرط (assertion failure) در
warnings.warn_explicit، هنگامی که مقدار بازگشتی متدget_source()در بارگذار دریافتی دارای متد نامعتبرsplitlines()باشد. اصلاح از Oren Milman.bpo-30406: تبدیل
asyncوawaitبه کلیدواژههای اصلی، همانطور که در PEP 492 مشخص شده است.
کتابخانه¶
bpo-30058: رفع سرریز بافر (buffer overflow) در select.kqueue.control().
bpo-31672: بخش
idpatternدرstring.Templateبا برخی نویسههای غیر اسکی (non-ASCII) مطابقت داشت. اکنون از پرچم محلی (local flag) عبارت باقاعده-iبرای جلوگیری از نویسههای غیر اسکی استفاده میکند.bpo-31701: در ویندوز، faulthandler.enable() اکنون استثناهای MSC و COM را نادیده میگیرد.
bpo-31728: جلوگیری از فروپاشیها در
_elementtreeبه دلیل پاکسازی ناامنElement.textوElement.tail. اصلاح از Oren Milman.bpo-31671: اکنون
re.compile()شیء RegexFlag ارسالشده را پیش از کامپایل کردن به یک شیء int عادی تبدیل میکند. بنچمارک bm_regex_compile بهبود عملکرد ۱۴ درصدی را نشان میدهد.bpo-30397: انواع (types) اشیای عبارت باقاعدهی کامپایلشده و اشیای تطبیق (match objects) اکنون به صورت
re.Patternوre.Matchدر معرض دید قرار گرفتهاند. این تغییر اطلاعاتی را در خروجی pydoc برای ماژولreاضافه میکند.bpo-31675: رفع نشت حافظه در متدهای splitlist() و split() در Tkinter هنگام ارسال رشتهای بزرگتر از ۲ گیگابایت.
bpo-31673: رفع خطای تایپی در نام متد adderrorinfo() در Tkinter.
bpo-31648: بهبودهای مربوط به محمولهای مسیر (path predicates) در ElementTree: اجازه دادن به وجود فضای خالی پیرامون بخشهای محمول، یعنی استفاده از "[a = 'text']" به جای الزام به استفاده از شکل کمتر خوانای "[a='text']". افزودن پشتیبانی برای مقایسه متن گره فعلی، مانند "[.='text']". اصلاح از Stefan Behnel.
bpo-30806: رفع نمایش رشتهای یک شیء netrc.
bpo-31638: افزودن آرگومان اختیاری
compressedبهzipapp.create_archive، و افزودن گزینه--compressبه رابط خط فرمان (command line interface) درzipapp.bpo-25351: جلوگیری از خرابیهای فعالسازی venv با متغیرهای تعریفنشده
bpo-20519: جلوگیری از استفاده از ctypes (در صورت امکان) و بهبود زمان ایمپورت برای uuid.
bpo-28293: نهانگاه عبارت باقاعده (regular expression cache) دیگر هنگامی که پر میشود به طور کامل پاکسازی نمیشود.
bpo-31596: افزودن pthread_getcpuclockid() به ماژول time
bpo-27494: امکان پذیرش کامای پایانی در عبارتهای تولیدگر (generator expressions) توسط 2to3. برای مثال،
set(x for x in [],)اکنون مجاز است.bpo-30347: جلوگیری از فروپاشیها هنگام پیمایش همزمان روی پیمایشگرهای itertools.groupby().
bpo-30346: یک پیمایشگر تولیدشده توسط پیمایشگر itertools.groupby() اکنون پس از پیشروی در پیمایشگر groupby، تخلیه میشود.
bpo-31556: لغو سریعتر شیء آیندهی asyncio.wait_for در صورت کمتر یا مساوی صفر بودن مهلت زمانی (timeout <= 0).
bpo-31540: امکان ارسال یک شیء زمینه در سازندهی
concurrent.futures.ProcessPoolExecutor. همچنین، آزادسازی زودتر منابع کار درconcurrent.futures.ProcessPoolExecutorجهت بهبود میزان مصرف حافظه هنگامی که یک کارگر (worker) منتظر کارهای جدید است.bpo-31516: عبارت
threading.current_thread()نباید هنگام خاموش شدن یک نخ ساختگی برگرداند.bpo-31525: در ماژول sqlite، از این پس استفاده از API به نام sqlite3_prepare_v2 الزامی است. بنابراین، ماژول sqlite اکنون به نسخهی حداقل ۳.۳.۹ از sqlite نیاز دارد.
bpo-26510: زیرپارسرهای argparse اکنون بهطور پیشفرض الزامی هستند. این رفتار با پایتون ۲ مطابقت دارد. برای زیرپارسرهای اختیاری، از پارامتر جدید
add_subparsers(required=False)استفاده کنید. پچ توسط Anthony Sottile. (از نسخهی 3.7.0rc1، پیشفرض تغییر کرد تا همانند روال برقرار از پایتون ۳.۳، الزامی نباشد.)bpo-27541: توابع نمایشی (repr) زیرکلاسهای برخی کلاسهای مجموعهای و پیمایشگر (
bytearray،array.array،collections.deque،collections.defaultdict،itertools.count،itertools.repeat) اکنون بهجای نامهای سختکدشدهی کلاس پایه، حاوی نام واقعی نوع هستند.bpo-31351: اگر فرآیند بوتاسترپینگ pip با شکست مواجه شود، دستور python -m ensurepip اکنون با کد خروج غیرصفر خارج میشود.
bpo-31389: دستور
pdb.set_trace()اکنون یک آرگومان کلیدواژهای اختیاری به نامheaderمیپذیرد. در صورت ارائه شدن، این مقدار دقیقاً پیش از شروع اشکالزدایی در کنسول چاپ میشود.
مستندات¶
ساخت¶
bpo-31696: بهبود اطلاعات نسخهی کامپایلر در
sys.versionهنگامی که پایتون با Clang ساخته میشود.bpo-31625: توقف استفاده از ranlib روی کتابخانههای ایستا. در عوض، فرض میکنیم که ar از پرچم 's' پشتیبانی میکند.
bpo-31624: حذف پشتیبانی از BSD/OS.
bpo-22140: جلوگیری از جایگزینی مضاعف پیشوند در python-config.sh.
bpo-31569: اصلاح حروف کوچک و بزرگ PCBuild/ به PCbuild/ در اسکریپتهای ساخت و مستندات.
bpo-31536: جلوگیری از ساخت مجدد کامل (wholesale rebuild) پس از دستور
make regen-allدر صورتی که هیچ تغییری رخ نداده باشد.
IDLE¶
bpo-31460: سادهسازی API مرورگر ماژول IDLE. ارسال یک ابزارک بهجای یک flist با یک ابزارک ریشه، امکان ایجاد یک قاب مرورگر را فراهم میکند که تنها بخشی از یک پنجره است. ارسال یک نام پروندهی کامل بهجای بخشهایی که فرض میشود از یک پروندهی py. آمدهاند، امکان مرور پروندههای پایتونی را فراهم میکند که با py. تمام نمیشوند.
bpo-31649: بخش IDLE - پارامترهای _htest و _utest را منحصراً به صورت کلیدواژهای (keyword only) درآورد.
bpo-31559: حذف وابستگی به ترتیب آزمون در idle_test.test_browser.
bpo-31459: تغییر نام مرورگر ماژول IDLE از Class Browser به Module Browser. مرورگر کلاس و متد در سطح ماژول اصلی، سالها پیش با افزوده شدن توابع در سطح ماژول به یک مرورگر ماژول تبدیل شد. کلاسها و توابع تو در تو روز گذشته اضافه شدند. برای سازگاری عقببر، رویداد مجازی <<open-class-browser>> که در زبانهی Keys در کادر محاورهای Settings ظاهر میشود، تغییر نکرده است. پچ توسط Cheryl Sabella.
bpo-31500: قلمهای پیشفرض اکنون در نمایشگرهای HiDPI مقیاسبندی میشوند.
bpo-1612262: مرورگر ماژول IDLE اکنون کلاسها و توابع تو در تو را نشان میدهد. پچهای اصلی برای کد و آزمونها به ترتیب از گیلفرم پولو (Guilherme Polo) و چریل سابلا (Cheryl Sabella) است.
رابط C API¶
bpo-28280: توابع
PyMapping_Keys()،PyMapping_Values()وPyMapping_Items()را به گونهای تغییر دهید که همیشه یکlist(بهجای یکlistیا یکtuple) برگردانند. پچ از اورن میلمن (Oren Milman).bpo-31532: رفع خرابی حافظه به دلیل ترکیب تخصیصدهنده در getpath.c بین Py_GetPath() و Py_SetPath()
bpo-25658: پیادهسازی PEP 539 برای API ذخیرهسازی اختصاصی نخ (TSS): این یک API جدید ذخیرهسازی محلی نخ (TLS) برای سیپایتون است که جایگزین استفاده از API موجود TLS در مفسر سیپایتون میشود، در حالی که API موجود را منسوخ میکند. PEP نوشتهشده توسط اریک ام. بری (Erik M. Bray)، پچ از ماسایوکی یاماموتو (Masayuki Yamamoto).
Python 3.7.0 alpha 1¶
Release date: 2017-09-19
امنیت¶
bpo-29781: تابع SSLObject.version() اکنون وقتی دستدهی روی BIO هنوز انجام نشده است، به درستی None را برمیگرداند.
bpo-29505: افزودن آزمونهای فاز برای float(str)، int(str)، unicode(str)؛ برای oss-fuzz.
bpo-30947: ارتقای نسخهی تعبیهشدهی libexpat از نسخهی 2.2.1 به 2.2.3 برای دریافت اصلاحات امنیتی.
bpo-30730: جلوگیری از تزریق متغیرهای محیطی در subprocess در ویندوز. جلوگیری از ارسال سایر متغیرهای محیطی و آرگومانهای دستور.
bpo-30694: ارتقای نسخهی expat از 2.2.0 به 2.2.1 جهت دریافت اصلاحات مربوط به آسیبپذیریهای امنیتی متعدد از جمله: CVE 2017-9233 (حلقه بیپهایت موجودیت خارجی DoS)، CVE 2016-9063 (سرریز عدد صحیح، اصلاح مجدد)، CVE 2016-0718 (رفع اشکالات رگرسیون از اصلاحیهی 2.2.0 برای CVE 2016-0718) و CVE 2012-0876 (مقابله با طغیان هش با SipHash). نکته: مورد CVE 2016-5300 (استفاده از منابع انتروپی خاص سیستمعامل مانند getrandom) روی پایتون تأثیری ندارد، زیرا پایتون از قبل انتروپی را از سیستمعامل دریافت میکند تا راز expat را با استفاده از
XML_SetHashSalt()تنظیم کند.bpo-30500: رفع مشکل urllib.parse.splithost() برای تجزیه صحیح بخشها. برای نمونه،
splithost('//127.0.0.1#@evil.com/')اکنون بهجای در نظر گرفتن@evil.comبه عنوان میزبان در یک احراز هویت (login@host)، میزبان127.0.0.1را به درستی برمیگرداند.bpo-29591: بهروزرسانی نسخهی expat از 2.1.1 به 2.2.0 برای دریافت اصلاحات CVE 2016-0718 و CVE 2016-4472. برای اطلاعات بیشتر به https://sourceforge.net/p/expat/bugs/537/ مراجعه کنید.
هسته و توکارها (Core and Builtins)¶
bpo-31490: رفع خطای ادعا در تعریف کلاس
ctypes، در صورتی که کلاس دارای ویژگیای باشد که نام آن در_anonymous_مشخص شده اما در_fields_نباشد. پچ از اورن میلمن (Oren Milman).bpo-31471: رفع خطای ادعا در
subprocess.Popen()روی ویندوز، در صورتی که آرگومان env دارای متدkeys()نامناسبی باشد. پچ از اورن میلمن (Oren Milman).bpo-31418: رفع خطای ادعا در
PyErr_WriteUnraisable()در صورت بروز یک استثنا با ویژگی__module__نامناسب. پچ از اورن میلمن (Oren Milman).bpo-31416: رفع خطاهای ادعا در صورت وجود warnings.filters یا warnings.defaultaction نامناسب. پچ از اورن میلمن (Oren Milman).
bpo-28411: تغییر استفادهی مستقیم از PyInterpreterState.modules به PyImport_GetModuleDict(). همچنین ایجاد یکنواختی بیشتر در سایر کدهایی که با sys.modules سر و کار دارند. این امر به کاهش پیچیدگیها هنگام کار روی sys.modules کمک میکند.
bpo-28411: هنگام کار با
PyInterpreterState.modulesبه API انتزاعی سوییچ کنید. این کار امکان پشتیبانی بعدی از تمام زیرکلاسهای dict و سایر پیادهسازیهای نگاشت را فراهم میکند. همچنین یک تابعPyImport_GetModule()اضافه کنید تا حجم زیادی از کدهای تکراری کاهش یابد.bpo-31411: در صورتی که warnings.onceregistry یک دیکشنری نباشد، به جای SystemError یک TypeError بالا بیاورید. وصله توسط Oren Milman.
bpo-31344: برای کنترل دقیقتر رفتار ردگیری هنگام آزمایش مفسر، دو ویژگی قاب جدید برای کنترل انتشار رویدادهای ردگیری خاص اضافه شدهاند:
f_trace_lines(که به طور پیشفرضTrueاست) برای خاموش کردن رویدادهای ردگیری در هر سطر؛ وf_trace_opcodes(که به طور پیشفرضFalseاست) برای روشن کردن رویدادهای ردگیری در هر آپکد.bpo-31373: چند نمونه احتمالی از رفتار تعریفنشده به دلیل تنزلهای ممیز شناور را اصلاح کنید.
bpo-30465: اطلاعات مکانی (
linenoوcol_offset) در افاسترینگها اکنون (عمدتاً) درست است. این کار ابزارهایی مانند flake8 را از نشان دادن هشدارها در سطر اشتباه (معمولاً سطر اول پرونده) اصلاح میکند.bpo-30860: وضعیت زمان اجرای سراسری سیپایتون را تحت یک struct واحد یکپارچه کنید. این کار قابلیت کشف وضعیت زمان اجرا را بهبود میبخشد.
bpo-31347: رفتار تعریفنشده احتمالی در _PyObject_FastCall_Prepend را اصلاح کنید.
bpo-31343: برای major()، minor() و makedev() پرونده sys/sysmacros.h را اضافه کنید. کتابخانهی C گنو قصد دارد این توابع را از sys/types.h حذف کند.
bpo-31291: یک خطای ادعا در
zipimport.zipimporter.get_dataروی ویندوز، هنگامی که مقدار بازگشتیpathname.replace('/','\\')یک رشته نباشد، اصلاح کنید. وصله توسط Oren Milman.bpo-31271: یک خطای ادعا در متد
write()ازio.TextIOWrapper، هنگامی که کدگذار یک شیء bytes برنمیگرداند، اصلاح کنید. وصله توسط Oren Milman.bpo-31243: یک خرابی در برخی از متدهای
io.TextIOWrapper، هنگامی که وضعیت کدگشا نامعتبر است، اصلاح کنید. وصله توسط Oren Milman.bpo-30721:
printاکنون راهنمایی استفادهی صحیح برای استفاده از نحو هدایت مجدد پایتون ۲ را نمایش میدهد. وصله توسط Sanyam Khurana.bpo-31070: یک شرایط رقابت در importlib _get_module_lock() را اصلاح کنید.
bpo-30747: یک پیادهسازی غیردمی از _Py_atomic_store و _Py_atomic_load روی MSVC اضافه کنید.
bpo-31095: خرابی احتمالی در طول GC ناشی از
tp_deallocکهPyObject_GC_UnTrack()را فراخوانی نمیکند، اصلاح کنید.bpo-31071: از پوشاندن TypeError اصلی در فراخوانی با بازکردن بسته * هنگامی که آرگومانهای دیگر ارسال میشوند، خودداری کنید.
bpo-30978: str.format_map() اکنون استثناهای جستجوی کلید را عبور میدهد. پیش از این هر استثنایی با یک استثنای KeyError جایگزین میشد.
bpo-30808: از API مربوط به _Py_atomic برای وضعیت سیگنال حساس به همگامسازی استفاده کنید.
bpo-30876: ایمپورت نسبی از بستهی بارگذارینشده اکنون به جای شکست با SystemError، بسته را مجدداً ایمپورت میکند. ایمپورت نسبی از غیربسته اکنون به جای SystemError با ImportError شکست میخورد.
bpo-30703: تحویل سیگنال را بهبود ببخشید. از استفادهی Py_AddPendingCall از هندلر سیگنال خودداری کنید تا از فراخوانی توابع ناامن برای سیگنال جلوگیری شود. آزمونهایی که من در اینجا اضافه میکنم بدون بقیهی وصله، روی لینوکس و OS X شکست میخورند. این بدان معناست که منطق تحویل سیگنال ما دارای نقصهایی بود (برخی سیگنالها ممکن است گم شوند).
bpo-30765: هنگام درخواست عدم مسدودسازی از PyThread_acquire_lock()، از مسدود شدن در pthread_mutex_lock() جلوگیری کنید.
bpo-31161: مطمئن شوید که پیام خطای نحوی «Missing parentheses» فقط برای SyntaxError اعمال میشود، نه برای زیرکلاسها. نوشتهشده توسط Martijn Pieters.
bpo-30814: رفع یک حالت رقابت (race condition) هنگام ایمپورت کردن یک زیرماژول از یک بسته.
bpo-30736: پایگاهدادهی داخلی unicodedata به یونیگد (Unicode) ۱۰.۰ ارتقا یافته است.
bpo-30604: انتقال co_extra_freefuncs از سطح هر نخ (per-thread) به سطح هر مفسر (per-interpreter) برای جلوگیری از فروپاشیها.
bpo-30597: دستور
printاکنون هنگام استفاده به عنوان یک دستور (statement) در پایتون ۲، ورودی مورد انتظار را در پیام خطای سفارشی نشان میدهد. نوشتهشده توسط Sanyam Khurana.bpo-30682: حذف یک شرط (assertion) بیشازحد سختگیرانه که برای برخی افاسترینگها مانند eval("f'\n'") و eval("f'\r'") با شکست مواجه میشد.
bpo-30501: کامپایلر اکنون برای عبارتهای شرطی پیچیده در دستورهای «if»، «while» و «assert»، عبارت «if» و همچنین عبارتهای تولیدگر و درککنندهها (comprehensions)، کد بهینهتری تولید میکند.
bpo-28180: پیادهسازی PEP 538 (تبدیل ضمنی نوع محلی قدیمی C). این یعنی هنگامی که یک محلیِ هدف مناسب برای تبدیل موجود باشد، هم مفسر اصلی و هم افزونههای C آگاه از محلی (locale)، استفاده از UTF-8 را به عنوان کدگذاری متن پیشفرض به جای ASCII فرض خواهند کرد.
bpo-30486: امکان تنظیم مقادیر سلول برای __closure__ را فراهم میکند. نوشتهشده توسط Lisa Roach.
bpo-30537: ماژول itertools.islice اکنون اشیاء شبیه به عدد صحیح (دارای متد __index__) را به عنوان آرگومانهای start، stop و slice میپذیرد.
bpo-25324: توکنهای مورد نیاز برای تجزیه (parsing) در پایتون به C منتقل شدند:
COMMENT،NLوENCODING. به این ترتیب، توکنها و tok_names در ماژول token با ایمپورت کردن ماژول tokenize تغییر نمیکنند.bpo-29104: رفع تجزیهی بکاسلشها در افاسترینگها.
bpo-27945: رفع اشکالات مختلف segfault در دیکشنری هنگامی که مجموعههای ورودی در حین جستجو، درج یا مقایسه تغییر (mutation) پیدا میکنند. بر اساس وصلههایی از Duane Griffin و Tim Mitchell.
bpo-25794: رفع اشکال type.__setattr__() و type.__delattr__() برای نامهای ویژگی غیردرونیسازیشده. بر اساس وصلهای از Eryk Sun.
bpo-30039: اگر رویداد KeyboardInterrupt زمانی رخ دهد که مفسر در حال ازسرگیری زنجیرهای از فراخوانیهای تو در توی 'yield from' یا 'await' باشد، اکنون به درستی به درونیترین فریم تحویل داده میشود.
bpo-28974: عبارت
object.__format__(x, '')اکنون معادلstr(x)است تاformat(str(self), '').bpo-30024: ایمپورتهای چرخشی که شامل ایمپورتهای مطلق همراه با اتصال یک زیرماژول به یک نام هستند، اکنون پشتیبانی میشوند.
bpo-12414: تابع sys.getsizeof() روی یک شیء کد (code object) اکنون اندازههایی را برمیگرداند که شامل ساختار (struct) کد و اندازههای اشیایی است که به آنها ارجاع میدهد. نوشتهشده توسط Donghee Na.
bpo-29839: تابع len() اکنون اگر __len__() یک عدد صحیح منفی بزرگ برگرداند، به جای OverflowError، خطای ValueError را بالا میآورد.
bpo-11913: پروندهی README.rst اکنون در فهرست READMEهای استاندارد distutils و در نتیجه در توزیعهای سورس گنجانده شده است.
bpo-29914: پیادهسازیهای پیشفرض __reduce__ و __reduce_ex__() اصلاح شدند. متد object.__reduce__() دیگر آرگومانی نمیپذیرد، و object.__reduce_ex__() اکنون به یک آرگومان نیاز دارد.
bpo-29949: رفع رگرسیون مصرف حافظه در شیءهای set و frozenset.
bpo-29935: اصلاح پیامهای خطا در متد index() مربوط به tuple، list و deque هنگام ارسال اندیسهایی با نوع نامعتبر.
bpo-29816: عملیات شیفت اکنون احتمال کمتری برای ایجاد خطای OverflowError دارد. برای تعداد دفعات (counts) منفی، به جای OverflowError همیشه ValueError ایجاد میشود. شیفت دادن صفر با تعداد دفعات نامنفی همیشه صفر برمیگرداند.
bpo-24821: اصلاح کند شدن تا ۲۵ برابر در جستجوی برخی نویسههای یونیکد خاص.
bpo-29102: افزودن یک شناسهی یکتا به PyInterpreterState. این کار شناسایی هر زیرمفسر (subinterpreter) را آسانتر میکند.
bpo-29894: اگر __complex__ نمونهای از زیرکلاس محض complex را برگرداند، هشدار انقضا (deprecation warning) صادر میشود. در نسخههای آیندهی پایتون این مورد میتواند یک خطا باشد.
bpo-29859: نمایش پیامهای خطای صحیح هنگامی که هر یک از فراخوانیهای pthread_* در thread_pthread.h با خطا مواجه میشوند.
bpo-29849: رفع نشت حافظه هنگامی که یک خطای ImportError در طول ایمپورت (from import) رخ میدهد.
bpo-28856: رفع یک غفلت که در آن قالب %b برای bytes باید از شیءهای پیرو پروتکل بافر پشتیبانی میکرد.
bpo-29723: تغییر مقداردهی اولیهی
sys.path[0]برای bpo-29139 با آشکار کردن ناسازگاری در نحوهی مقداردهی اولیهی sys.path هنگام اجرای__main__از یک پروندهی فشرده (zipfile)، پوشه یا سایر مکانهای ایمپورت، باعث ایجاد یک رگرسیون شد. مفسر اکنون به طور مداوم از افزودن پوشهی والد مکان ایمپورت بهsys.pathجلوگیری میکند و مطمئن میشود که هنگام درج مکان ایمپورت مشخصشده در خط فرمان، هیچ ورودی دیگری درsys.pathبه طور ناخواسته تغییر نکند.bpo-29568: علامت درصد گریخته «%%» در رشتهی قالببندی برای قالببندی کلاسیک رشته، دیگر هیچ نویسهای را بین دو علامت درصد مجاز نمیداند.
bpo-29714: رفع رگرسیونی که ممکن است قالب bytes هنگام داشتن بایتهای صفر در داخل خود با خطا مواجه شود.
bpo-29695: توابع bool()، float()، list() و tuple() دیگر آرگومانهای کلیدواژهای نمیپذیرند. اولین آرگومان int() اکنون فقط میتواند به صورت آرگومان جایگاهی ارسال شود.
bpo-28893: تنظیم __cause__ صحیح برای خطاهای مربوط به اشیاء انتظارپذیر نامعتبر (invalid awaitables) برگرداندهشده از __aiter__ و __anext__.
bpo-28876: عبارت
bool(range)حتی اگرlen(range)خطایOverflowErrorرا ایجاد کند، کار میکند.bpo-29683: اصلاحات تخصیص حافظه در _PyCode_SetExtra. وصله توسط برایان کولمن (Brian Coleman).
bpo-29684: رفع رگرسیون جزئی PyEval_CallObjectWithKeywords. این تابع باید هنگامی که kwargs یک دیکشنری نیست، TypeError ایجاد کند. اما ممکن است وقتی args=NULL و kwargs دیکشنری نیست، باعث خطای segv شود.
bpo-28598: پشتیبانی از __rmod__ برای زیرکلاسهای str که قبل از str.__mod__ فراخوانی میشوند. وصله توسط مارتین پیترز (Martijn Pieters).
bpo-29607: اصلاح محاسبهی stack_effect برای CALL_FUNCTION_EX. وصله توسط ماتیو دارتیایه (Matthieu Dartiailh).
bpo-29602: اصلاح مدیریت نادرست صفرهای علامتدار در سازندهی complex برای زیرکلاسهای complex و ورودیهایی که دارای متد __complex__ هستند. وصله از Serhiy Storchaka.
bpo-29347: رفع امکان واگرهارجاعی (dereferencing) به اشارهگرهای تعریفنشده هنگام ایجاد شیءهای weakref.
bpo-29463: افزودن فیلد
docstringبه گرههای ast مربوط به Module، ClassDef، FunctionDef و AsyncFunctionDef. دیگر رشته مستند اولین دستور در بدنهی آنها نیست. این تغییر رویco_firstlinenoوco_lnotabشیء کد مربوط به ماژول و کلاس تأثیر میگذارد. (بازنشانی شده در bpo-32911.)bpo-29438: رفع مشکل استفاده پس از آزادسازی (use-after-free) در دیکشنری اشتراکگذاری کلید.
bpo-29546: تنظیم ویژگیهای 'path' و 'name' روی ImportError برای دستوات
from ... import ....bpo-29546: بهبود پیام خطای from-import همراه با موقعیت
bpo-29478: اگر هنگام استفاده از خطمشی Compat32 مقدار max_line_length=None مشخص شود، دیگر نادیده گرفته نمیشود. وصله از Mircea Cosbuc.
bpo-29319: جلوگیری از بازنویسی sys.path[0] توسط RunMainFromImporter.
bpo-29337: رفع خطای احتمالی BytesWarning هنگام مقایسهی شیءهای کد. هشدارها ممکن است در زمان کامپایل صادر شوند.
bpo-29327: رفع فروپاشی هنگام ارسال آرگومان کلیدواژهای پیمایشپذیر به ()sorted.
bpo-29034: رفع نشت حافظه و مشکل استفاده پس از آزادسازی در ماژول os (path_converter).
bpo-29159: رفع رگرسیون در bytes(x) هنگامی که x.__index__() یک استثنا ایجاد میکند.
bpo-29049: فراخوانی تنبلانهی ()_PyObject_GC_TRACK هنگام فراخوانی تابع پایتون. فراخوانی تابع تا ۵٪ سریعتر شده است.
bpo-28927: متدهای bytes.fromhex() و bytearray.fromhex() اکنون تمام فضاهای خالی اسکی (ASCII)، و نه فقط فاصلهها، را نادیده میگیرند. وصله از Robert Xiao.
bpo-28932: اگر پروندهی <sys/random.h> وجود ندارد، آن را درج نکنید.
bpo-25677: اصلاح مکاننمایی نشانک خطای نحو برای بلوکهای دارای تورفتگی. بر اساس وصله از Michael Layzell.
bpo-29000: رفع قالببندی بایت اعداد مبنای هشت با پُرکنندهی صفر در شکل جایگزین.
bpo-18896: توابع پایتون اکنون میتوانند بیش از ۲۵۵ پارامتر داشته باشند. متد collections.namedtuple() اکنون از تاپلهای با بیش از ۲۵۵ عنصر پشتیبانی میکند.
bpo-28596: کدگذاری ترجیحی در اندروید UTF-8 است. وصله نوشتهشده توسط Chi Hsuan Yen.
bpo-26919: در اندروید، دادههای سیستمعامل اکنون همیشه به/از UTF-8 رمزگذاری/رمزگشایی میشوند، و جایگزین کدگذاری locale (کدگذاری محلی) شدهاند تا از ناسازگاری با os.fsencode() و os.fsdecode() که از قبل از UTF-8 استفاده میکنند، جلوگیری شود.
bpo-28991: تابع functools.lru_cache() در برابر یک باگ بازورودپذیری نامفهوم که توسط یک تابع len() مانکیپچشده ایجاد میشد، آسیبپذیر بود.
bpo-28147: یک نشتی حافظه در دیکشنریهای جدول-تفکیکشده (split-table) برطرف شد: دستور setattr() نباید جدول ترکیبی را به جدول تفکیکشده تبدیل کند. این وصله توسط INADA Naoki نوشته شده است.
bpo-28739: عبارتهای افاسترینگ دیگر به عنوان رشته مستند و توسط ast.literal_eval() پذیرفته نمیشوند، حتی اگر شامل هیچ عبارتی نباشند.
bpo-28512: تنظیم ویژگی آفست SyntaxError توسط PyErr_SyntaxLocationEx() و PyErr_SyntaxLocationObject() اصلاح شد.
bpo-28918: کامپایل متقابل xxlimited هنگامی که پایتون با Py_DEBUG تعریفشده ساخته شده است، اصلاح شد.
bpo-23722: به جای تولید بیصدا کلاسی که از آرگومان صفر
super()در متدها پشتیبانی نمیکند، عدم انتقال ورودی جدید فضای نام__classcell__بهtype.__new__اکنون منجر به یکDeprecationWarningو کلاسی میشود که از آرگومان صفرsuper()پشتیبانی میکند.bpo-28797: اصلاح __dict__ کلاس در داخل متد __set_name__ یک توصیفگر که در داخل آن کلاس استفاده میشود، دیگر مانع از فراخوانی متد __set_name__ سایر توصیفگرها نمیشود.
bpo-28799: تابع
PyEval_GetCallStats()حذف شد و تابع بررسینشده و مستندنشدهsys.callstats()منسوخ شد. ساخت ویژهCALL_PROFILEحذف شد: برای پروفایل کردن فراخوانیهای تابع، از تابعsys.setprofile()،cProfileیاprofileاستفاده کنید.bpo-12844: اکنون میتوان بیش از ۲۵۵ آرگومان به یک تابع ارسال کرد.
bpo-28782: یک باگ در پیادهسازی
yield fromهنگام بررسی اینکه آیا دستور بعدی YIELD_FROM است، رفع شد. رگرسیون ایجادشده توسط WORDCODE (bpo-26647).bpo-28774: موقعیت خطای خطای یونیکد در کُدکهای اسکی و Latin1 هنگامی که رشتهی بازگرداندهشده توسط هندلر خطا شامل چندین نویسهی غیرقابلکدگذاری باشد (نویسههای غیر اسکی برای کُدک اسکی، و نویسههای خارج از محدودهی U+0000-U+00FF برای Latin1)، اصلاح شد.
bpo-28731: بهینهسازی _PyDict_NewPresized() برای ایجاد دیکشنری با اندازه صحیح. بهبود سرعت ساختار لفظی دیکشنری با کلیدهای ثابت تا ۳۰ درصد.
bpo-28532: هنگام دو بار استفاده از گزینهی -V، مقدار sys.version نمایش داده شود.
bpo-27100: دستور with اکنون پیش از بررسی __enter__، وجود __exit__ را بررسی میکند. این کار هنگام مفقود بودن هر دو متد، پیامهای خطای کمتری ایجاد میکند که گیجکننده نیستند. وصله توسط Jonathan Ellington.
bpo-28746: متد توصیفگر پروندهی set_inheritable() در پلتفرمهایی که دستورات ioctl به نامهای FIOCLEX و FIONCLEX را ندارند، اصلاح شد.
bpo-26920: رفع مشکل دریافت نکردن مجموعه نویسههای locale هنگام مقداردهی اولیه مفسر، در پلتفرمهایی که langinfo را ندارند.
bpo-28648: رفع فروپاشی در Py_DecodeLocale() در ساخت دیباگ روی مکاواسایکس هنگام رمزگشایی نویسههای ستارهای (astral). وصله توسط Xiang Zhang.
bpo-28665: بهبود ۴۰ درصدی سرعت آپکد STORE_DEREF.
bpo-19398: در صورت خالی بودن اجزای PYTHONPATH در زمان کامپایل، اسلش اضافی دیگر به اجزای sys.path اضافه نمیشود.
bpo-28621: سرعت تبدیل int به float با استفاده مجدد از پیادهسازی سریعتر شمارش بیتها افزایش یافت. این وصله توسط Adrian Wielgosik تهیه شده است.
bpo-28580: بهینهسازی پیمایش مقادیر جدول تقسیمشده (split table). این وصله توسط Xiang Zhang تهیه شده است.
bpo-28583: تابع PyDict_SetDefault در صورت نیاز، جدول تقسیمشده را ترکیب نمیکرد. این وصله توسط Xiang Zhang تهیه شده است.
bpo-28128: اخطار منسوخسازی برای دنبالههای گریز (escape) نامعتبر در رشتهها و بایتها اکنون اطلاعات بهتری دربارهی محل وقوع خطا چاپ میکند. این وصله توسط Serhiy Storchaka و Eric Smith تهیه شده است.
bpo-28509: متد dict.update() دیگر حافظهی غیرضروری بزرگی را تخصیص نمیدهد.
bpo-28426: فروپاشی احتمالی در تابع PyUnicode_AsDecodedObject() در نسخهی ساخت اشکالزدایی (debug build) برطرف شد.
bpo-28517: خطای اندازهگیری یکیکمیابیش (of-by-one) در بهینهساز سوراخسویی (peephole optimizer) که باعث نگهداری کد دستنیافتنی میشد، برطرف شد.
bpo-28214: گزارشدهی استثنا برای ویژگیهای مسئلهدار __set_name__ بهبود یافت.
bpo-23782: نشتی حافظهی احتمالی در _PyTraceback_Add() و از دست رفتن استثنا در PyTraceBack_Here() برطرف شد.
bpo-28183: پیمایش دیکشنری بهینهسازی و پاکسازی شد.
bpo-26081: پیادهسازی C برای asyncio.Future اضافه شد. وصلهی اصلی توسط Yury Selivanov تهیه شده است.
bpo-28379: بررسیهای سلامت (sanity checks) و آزمونها برای PyUnicode_CopyCharacters() اضافه شدند. این وصله توسط Xiang Zhang تهیه شده است.
bpo-28376: نوع (type) پیمایشگر بازهی طولانی (long range iterator) اکنون به عنوان Iterator ثبت میشود. این وصله توسط Oren Milman تهیه شده است.
bpo-28376: ایجاد نمونههایی از range_iterator با فراخوانی نوع range_iterator دیگر مجاز نیست. فراخوانی iter() روی نمونهی range تنها راه است. این وصله توسط Oren Milman تهیه شده است.
bpo-26906: حل کردن متدهای ویژهی یک نوع مقداردهینشده (uninitialized)، اکنون به جای شکست، باعث مقداردهی اولیهی ضمنی آن نوع میشود.
bpo-18287: تابع PyType_Ready() اکنون بررسی میکند که tp_name مقدار NULL نباشد. وصلهی اصلی توسط Niklas Koep تهیه شده است.
bpo-24098: فروپاشی احتمالی هنگام تغییر درخت نحوی انتزاعی (AST) در فرایند کامپایل آن برطرف شد.
bpo-28201: دیکشنری امکان وقوع دومین تداخل را در جدول درهمسازی (hash table) هنگامی که درهمسازها بیتهای پایینی یکسانی دارند، کاهش میدهد.
bpo-28350: ثابتهای رشتهای دارای نویسهی پوچ (null character) دیگر درونیسازی نمیشوند.
bpo-26617: رفع فروپاشی هنگام اجرای جمعآور زباله (GC) در طول فراخوانیهای بازگشتی (callbacks) مرجع ضعیف.
bpo-27942: ثابتهای رشتهای اکنون بهصورت بازگشتی در تاپلها و مجموعههای فریزشده (frozensets) درونیسازیشده (interned) میشوند.
bpo-28289: متد ImportError.__init__ اکنون ویژگیهای مشخصنشده را بازنشانی میکند.
bpo-21578: برطرفسازی پیام خطای گمراهکننده هنگام فراخوانی ImportError با آرگومانهای کلیدواژهای نامعتبر.
bpo-28203: رفع نوع دادهی نادرست در پیام خطای complex(1.0, {2:3}). وصلهای از Soumya Sharma.
bpo-28086: آرگومان تکجایگاهی با زیرنوع تاپل، دستنخورده به تابع تعریفشده با C ارسال میشد. اکنون به تاپل دقیق تبدیل میشود.
bpo-28214: اکنون __set_name__ بهجای نمونه (instance)، روی کلاس جستجو میشود.
bpo-27955: در صورت بروز خطای EPERM در سیستمعامل هنگام فراخوانی سیستمی getrandom() (برای مثال وقتی توسط SECCOMP مسدود شده است)، خواندن از دستگاه /dev/urandom بهعنوان جایگزین استفاده شود.
bpo-28192: readline را در حالت (mode) ایزوله ایمپورت نکنید.
bpo-27441: حذف برخی انتسابهای اضافی به ob_size در longobject.c. با تشکر از Oren Milman.
bpo-27222: پاکسازی کد اضافی در تابع long_rshift. با تشکر از Oren Milman.
ارتقای پایگاهدادههای داخلی یونیکد به نسخهی ۹.۰.۰ یونیکد.
bpo-28131: برطرفسازی یک رگرسیون در compile_source() در ماژول zipimport. ماژول zipimport باید از همان سطح بهینهسازی مفسر استفاده کند.
bpo-28126: جایگزینی Py_MEMCPY با memcpy(). ویژوال استودیو میتواند memcpy() را بهدرستی بهینهسازی کند.
bpo-28120: برطرفسازی dict.pop() برای دیکشنریهای تقسیمشده هنگام تلاش برای حذف یک «کلید معلق» (هنوز در جدول تقسیمشده درج نشده است). وصلهای از Xiang Zhang.
bpo-26182: هنگامی که کلیدواژههای async و await به عنوان نام متغیر/ویژگی/کلاس/تابع استفاده میشوند، DeprecationWarning صادر کنید.
bpo-26182: رفع یک نشت ارجاع (refleak) در کدی که DeprecationWarning ایجاد میکند.
bpo-28721: اصلاح تولیدگرهای ناهمگام aclose() و athrow() برای مدیریت صحیح انتشار StopAsyncIteration.
bpo-26110: افزایش سرعت فراخوانی متدها: افزودن آپکدهای LOAD_METHOD و CALL_METHOD.
کتابخانه¶
bpo-31499: xml.etree: برطرفسازی خرابی (crash) هنگامی که یک تجزیهکننده (parser) بخشی از یک چرخه ارجاع است.
bpo-31482:
random.seed()اکنون با بایتها در version=1 کار میکندbpo-28556: تابع typing.get_type_hints اکنون بهطور پیشفرض globalns مناسب را برای کلاسها و ماژولها پیدا میکند (هنگامی که هیچ
globalnsای از سوی فراخواننده مشخص نشده باشد).bpo-28556: بهبودهای سرعت در ماژول
typing. درخواستهای پول (PR) اصلی توسط Ivan Levkivskyi و Mitar.bpo-31544: ماژول شتابدهندهی C در ElementTree استثناهای پرتابشده هنگام جستجوی متدهای هدف TreeBuilder در XMLParser() را نادیده میگرفت.
bpo-31234: تابع socket.create_connection() اکنون یک چرخهی ارجاع را بهصورت دستی اصلاح میکند: متغیر ذخیرهکنندهی آخرین استثنا را پس از موفقیت پاک میکند.
bpo-31457: اشیاء LoggerAdapter اکنون میتوانند تو در تو قرار گیرند.
bpo-31431: ویژگی SSLContext.check_hostname اکنون بهطور خودکار SSLContext.verify_mode را به جای شکست با یک ValueError روی ssl.CERT_REQUIRED تنظیم میکند.
bpo-31233: کلاس socketserver.ThreadingMixIn اکنون فهرستی از نخهای غیردیمون را نگه میدارد تا زمان کامل شدن تمام این نخها در server_close() منتظر بماند.
bpo-28638: استراتژی پیادهسازی collections.namedtuple() تغییر یافت تا استفاده از exec() بهطور قابلتوجهی به نفع متدهای ازپیشمحاسبهشده کاهش یابد. در نتیجه، پارامتر verbose و ویژگی _source دیگر پشتیبانی نمیشوند. مزایا عبارتند از: ۱) داشتن ردپای حافظهی کمتر برای برنامههایی که از چندین تاپل نامدار استفاده میکنند، ۲) ایجاد سریعتر کلاس تاپل نامدار (تقریباً ۴ تا ۶ برابر بسته به نحوهی اندازهگیری)، و ۳) بهبودهای جزئی سرعت برای ایجاد نمونه با استفاده از __new__، _make و _replace. (مشارکتکنندهی اصلی پچ Jelle Zijlstra است و بهبودهای بیشتری توسط INADA Naoki، Serhiy Storchaka و Raymond Hettinger انجام شده است.)
bpo-31400: مدیریت خطای SSL را بهبود میبخشد تا از دست دادن شمارههای خطا جلوگیری شود.
bpo-27629: انواع بازگشتی SSLContext.wrap_bio() و SSLContext.wrap_socket() قابل سفارشیسازی شوند.
bpo-28958: کتابخانهی ssl.SSLContext() اکنون زمانی که یک زمینه نمیتواند نمونهسازی شود، از اطلاعات خطای OpenSSL استفاده میکند.
bpo-28182: ماژول SSL اکنون وقتی OpenSSL در تأیید گواهی همتا ناکام میماند، SSLCertVerificationError را پرتاب میکند. این استثنا حاوی اطلاعات بیشتری دربارهی خطا است.
bpo-27340: تابع SSLSocket.sendall() اکنون از memoryview برای ایجاد اسلایسهای داده استفاده میکند. این کار پشتیبانی از تمام اشیاء شبهبایت را اصلاح میکند. همچنین کارآمدتر است و از کپیهای پرهزینه جلوگیری میکند.
bpo-14191: یک تابع جدید
argparse.ArgumentParser.parse_intermixed_argsتوانایی تجزیهی خطوط فرمان را که کاربر در آنها گزینهها و آرگومانهای جایگاهی را با هم مخلوط میکند، فراهم میکند.bpo-31178: رفع باگ الحاق رشته در مسیر خطای نادر در ماژول subprocess
bpo-31350: ریزبهینهسازی
asyncio._get_running_loop()برای اینکه تا ۱۰ درصد سریعتر شود.bpo-31170: expat: بهروزرسانی libexpat از نسخهی 2.2.3 به 2.2.4. رفع کپیکردن نویسههای جزئی برای ورودی UTF-8 (باگ libexpat شمارهی ۱۱۵): https://github.com/libexpat/libexpat/issues/115
bpo-29136: افزودن مجموعههای رمز (cipher suites) مربوط به TLS 1.3 و OP_NO_TLSv1_3.
bpo-1198569: زیرکلاسهای
string.Templateاگر بخواهند الگوهای جاینگهدار متفاوتی را در داخل و خارج آکولادها مشخص کنند، میتوانند بهصورت اختیاریbraceidpatternرا تعریف کنند. اگر None باشد (پیشفرض) بهidpatternبرمیگردد.bpo-31326: تابع concurrent.futures.ProcessPoolExecutor.shutdown() اکنون صف فراخوانی را صراحتاً میبندد. علاوه بر این، shutdown(wait=True) اکنون به نخ صف فراخوانی نیز میپیوندد تا از نشت یک نخ معلق جلوگیری کند.
bpo-27144: پیمایشگرهای
map()وas_completed()درconcurrent.futuresاکنون از نگهداری ارجاع به شیءهای تولیدشده جلوگیری میکنند.bpo-31281: رفع مشکل
fileinput.FileInput(files, inplace=True)هنگامی کهfilesحاوی شیءهایpathlib.Pathاست.bpo-10746: رفع مشکلی که در آن ctypes کدهای نوع PEP 3118 نادرستی برای انواع عدد صحیح تولید میکرد.
bpo-27584: مقدار
AF_VSOCKبه رابط سوکت اضافه شده است که امکان ارتباط بین ماشینهای مجازی و میزبان آنها را فراهم میکند.bpo-22536: ماژول subprocess اکنون زمانی که خطای FileNotFoundError در سیستمهای POSIX به دلیل پیدا نشدن فایل اجرایی یا cwd رخ میدهد، نام فایل را تنظیم میکند.
bpo-29741: بهروزرسانی برخی متدها در ماژول _pyio برای پذیرش انواع عدد صحیح. پچ توسط Oren Milman.
bpo-31249: ماژول concurrent.futures: کلاس WorkItem.run() که توسط ThreadPoolExecutor استفاده میشود، اکنون چرخه ارجاع بین یک شیء استثنا و شیء WorkItem را میشکند.
bpo-31247: ماژول xmlrpc.server اکنون هنگام استفاده از sys.exc_info() در کد مدیریت استثناها، چرخههای ارجاع را بهطور صریح میشکند.
bpo-23835: ماژول configparser: خواندن مقادیر پیشفرض در سازندهی
ConfigParser()اکنون با استفاده ازread_dict()انجام میشود که رفتار آن را با بقیهی پارسر سازگار میکند. کلیدها و مقادیر غیررشتهای در دیکشنری پیشفرض اکنون بهطور ضمنی به رشته تبدیل میشوند. پچ توسط James Tocknell.bpo-31238: ماژول pydoc: متد stop() از کلاس خصوصی ServerThread اکنون تا زمان اتمام DocServer.serve_until_quit() منتظر میماند و سپس برای شکستن چرخه ارجاع، صراحتاً ویژگی docserver خود را برابر با None قرار میدهد.
bpo-5001: بسیاری از ادعاها (asserts) در
multiprocessingاکنون اطلاعات بیشتری ارائه میدهند و برخی از انواع خطا به انواع خاصتری تغییر یافتهاند.bpo-31109: تبدیل zipimport برای استفاده از Argument Clinic.
bpo-30102: ماژولهای ssl و hashlib اکنون در نسخههای OpenSSL < 1.1.0 تابع OPENSSL_add_all_algorithms_noconf() را فراخوانی میکنند. این تابع ویژگیهای پردازنده را شناسایی کرده و بهینهسازیها را روی برخی معماریهای پردازنده مانند POWER8 فعال میکند. این پچ بر اساس پژوهشهای Gustavo Serra Scalet است.
bpo-18966: نخهای غیردیمنی (non-daemonic) ایجادشده توسط یک multiprocessing.Process اکنون در زمان خروج فرزند join میشوند.
bpo-31183: ماژول
disاکنون با تولیدگرهای ناهمگام و شیءهای همروال کار میکند. پچ توسط George Collins بر اساس عارضهیابی Luciano Ramalho.bpo-5001: همانطور که در مسئلهی 5001 ذکر شد، تعداد زیادی از ادعاهای (asserts) فاقد اطلاعات مفید در ماژول
multiprocessingوجود دارد. این تغییر دو مورد از مشکلسازترین آنها را، از آنجا که در کد گزارشدهی خطا هستند، در تابعmultiprocessing.managers.convert_to_errorاصلاح میکند. (همچنین پیام خطای ValueError را آموزندهتر میکند.) تنها تغییر بالقوه مشکلساز این است که AssertionError اکنون به یک TypeError تبدیل شده است؛ با این حال، این تغییر باید به تمایز آن از AssertionError ای که توسط تابع/فراخوانندهی آن گزارش میشود (مانند مسئلهی 31169) نیز کمک کند. - پچ توسط Allen W. Smith (drallensmith در گیتهاب).bpo-31185: رفع خطاهای متفرقه در ماژول شتابدهی asyncio.
bpo-31151: متد socketserver.ForkingMixIn.server_close() اکنون تا اتمام تمام فرایندهای فرزند منتظر میماند تا از نشت فرایندهای زامبی جلوگیری شود.
bpo-31072: افزودن یک پارامتر
include_fileبه تابعzipapp.create_archive()bpo-24700: بهینهسازی مقایسهی array.array. این کار اکنون هنگام مقایسهی آرایههایی که مقادیری از یک نوع عدد صحیح مشابه را نگه میدارند، از ۱۰ تا ۷۰ برابر سریعتر است.
bpo-31135: بستهی ttk: اصلاح متد destroy() در کلاسهای LabeledScale و OptionMenu. حتی اگر ویژگی مورد استفاده وجود نداشته باشد، متد destroy() والد را فراخوانی کنید. متد LabeledScale.destroy() همچنین اکنون بهطور صریح ویژگیهای label و scale را پاکسازی میکند تا به زبالهروب کمک کند همهی ابزارکها را نابود کند.
bpo-31107: اصلاح محاسبهی ویژگی مخدوششدهی
copyreg._slotnames()برای کلاسهایی که نامشان با یک زیرخط شروع میشود. پچ توسط Shane Harvey.bpo-31080: به
logging.config.fileConfigاجازه دهید kwargs و/یا args را بپذیرد.bpo-30897: اشیاء
pathlib.Pathاکنون شامل متدis_mount()هستند (که فقط روی POSIX پیادهسازی شده است). این شبیه بهos.path.ismount(p)است. پچ توسط Cooper Ry Lees.bpo-31061: رفع یک فروپاشی هنگام استفاده از asyncio و نخها.
bpo-30987: افزودن پشتیبانی از پروتکل CAN ISO-TP در ماژول socket.
bpo-30522: افزودن متد
setStreamبهlogging.StreamHandlerبرای امکان تنظیم جریان پس از ایجاد.bpo-30502: اصلاح مدیریت شناسه شیءهای (oid) طولانی در ssl. براساس پچ نوشتهشده توسط Christian Heimes.
bpo-5288: پشتیبانی از اشیاء tzinfo با آفستهای زیر دقیقه.
bpo-30919: اصلاح رگرسیون کارایی حافظهی مشترک در multiprocessing در نسخهی ۳.x. حافظهی مشترک در نسخهی ۲.x از نگاشتهای حافظهی ناشناس استفاده میکرد، در حالی که نسخهی ۳.x پروندههای واقعی را نگاشت (mmap) میکند. تلاش کنید مراقب باشید تا حد امکان ورودی/خروجی دیسک کمتری انجام شود.
bpo-26732: اصلاح تعداد زیاد توصیفکنندههای فایل (fd) در فرایندهای شروعشده با متد "forkserver". یک فرایند فرزند به همان تعداد fd به ارث میبرد که تعداد فرزندان در حال اجرای فعلی است.
bpo-29403: اصلاح autospec ماژول
unittest.mockبه طوری که روی توابع توکار متصلبهمتد شکست نخورد. پچ توسط Aaron Gallagher.bpo-30961: اصلاح کاهش دادن یک ارجاع امانتی در tracemalloc.
bpo-19896: اصلاح multiprocessing.sharedctypes برای شناسایی کدهای نوع
'q'و'Q'.bpo-30946: حذف کد منسوخشده در ماژول readline برای پلتفرمهایی که GNU readline قدیمیتر از 2.1 است یا select() در آنها در دسترس نیست.
bpo-25684: تغییر دکمههای رادیویی
ttk.OptionMenuبه طوری که در میان نمونههایOptionMenuیکتا باشند.bpo-30886: اصلاح multiprocessing.Queue.join_thread(): این متد اکنون تا زمانی که نخ کامل شود صبر میکند، حتی اگر نخ توسط همان فرایندی آغاز شده باشد که صف را ایجاد کرده است.
bpo-29854: اصلاح خطای segmentation fault در readline هنگام استفاده از گزینهی history-size در readline. پچ توسط Nir Soffer.
bpo-30794: افزودن متد multiprocessing.Process.kill برای خاتمه دادن با استفاده از سیگنال SIGKILL روی سیستمعاملهای یونیکس.
bpo-30319: تابع socket.close() اکنون خطای ECONNRESET را نادیده میگیرد.
bpo-30828: اصلاح نوشتن خارج از کران (out of bounds write) در تابع
asyncio.CFuture.remove_done_callback().bpo-30302: استفاده از کلیدواژهها در
reprمربوط بهdatetime.timedelta.bpo-30807: تابع signal.setitimer() ممکن است هنگام دریافت مقادیر بسیار کوچک، تایمر را غیرفعال کند. مقادیر کوچک (مانند 1e-6) مقادیر معتبر غیرصفر برای setitimer() هستند، که تعیین شده است بازههایی با دقت میکروثانیه را بپذیرد. با این حال، روی برخی از پلتفرمها، روال تبدیل ما میتواند 1e-6 را به بازهای صفر تبدیل کند و در نتیجه به جای زمانبندی مجدد (re-scheduling)، تایمر را غیرفعال کند.
bpo-30441: رفع باگ هنگام تغییر دادن os.environ در حین پیمایش روی آن
bpo-29585: اجتناب از ایمپورت کردن
sysconfigازsiteجهت بهبود سرعت راهاندازی. راهاندازی پایتون در لینوکس حدود ۵ درصد و در macOS حدود ۳۰ درصد سریعتر شده است.bpo-29293: افزودن پارامتر گمشده «n» به multiprocessing.Condition.notify(). مستندات ادعا میکنند که multiprocessing.Condition مانند threading.Condition رفتار میکند، اما متد notify() آن فاقد آرگومان اختیاری «n» بود (برای مشخص کردن تعداد رشتههایی که باید بیدار شوند) که threading.Condition.notify() آن را میپذیرد.
bpo-30532: رفع حذف شدن فاصلههای سفید تاشو (folding white space) در برخی موارد توسط پارسر مقادیر سرآیند ایمیل.
bpo-30596: افزودن یک متد
close()بهmultiprocessing.Process.bpo-9146: رفع خطای قطعهبندی (segmentation fault) در _hashopenssl هنگامی که توابع هش استاندارد مانند md5 در کتابخانهی لینکشدهی OpenSSL در دسترس نیستند. مانند برخی از محیطهای ساخت (build) خاص FIPS-140.
bpo-29169: بهروزرسانی zlib به نسخهی 1.2.11.
bpo-30119: تابع ftplib.FTP.putline() اکنون روی دستوراتی که شامل CR یا LF باشند، ValueError پرتاب میکند. وصله از Donghee Na.
bpo-30879: توابع os.listdir() و os.scandir() اکنون هنگام فراخوانی با آرگومان شبیه به بایت (bytes-like)، نامهای بایت منتشر میکنند.
bpo-30746: ممنوعیت نویسهی '=' در نامهای متغیر محیطی در
os.putenv()وos.spawn*().bpo-30664: توضیحات یک زیرآزمون (subtest) از unittest اکنون ترتیب آرگومانهای کلیدواژهای TestCase.subTest() را حفظ میکند.
bpo-21071: نوع struct.Struct.format اکنون به جای
bytesبرابر باstrاست.bpo-29212: اصلاح رشتههای concurrent.futures.thread.ThreadPoolExecutor بهگونهای که بهطور پیشفرض، زمانی که هیچ thread_name_prefix ارائه نشده باشد، دارای نام رشتهی مبتنی بر repr() نباشند. آنها اکنون خود را به عنوان "ThreadPoolExecutor-y_n" شناسایی خواهند کرد.
bpo-29755: اصلاح خانوادهی توابع lgettext() در ماژول gettext. آنها اکنون همیشه بایتها را برمیگردانند.
bpo-30616: API تابعی enum امکان ایجاد enumهای خالی را فراهم میکند. وصلهشده توسط Donghee Na
bpo-30038: رفع شرایط رقابت (race condition) بین ارسال سیگنال و توصیفگر پروندهی بیدارباش. وصله از Nathaniel Smith.
bpo-23894: کتابخانهی lib2to3 اکنون رشتههای
rb'...'وf'...'را تشخیص میدهد.bpo-24744: تابع pkgutil.walk_packages اکنون اگر path یک رشته باشد، خطای ValueError بالا میآورد. اصلاحیه از Sanyam Khurana.
bpo-24484: جلوگیری از شرایط رقابت (race condition) در پاکسازی multiprocessing.
bpo-30589: رفع مشکل multiprocessing.Process.exitcode تا هنگام استفاده از متد "forkserver"، اگر فرایند توسط یک سیگنال کشته شود (بهجای ۲۵۵)، عکسشماره سیگنال را برگرداند.
bpo-28994: ردگیری (traceback) دیگر برای SystemExit که در یک کالبک ثبتشده توسط atexit بالا آورده شده است، نمایش داده نمیشود.
bpo-30508: اگر متد "cancel()" برای Task یا Future فراخوانی شده باشد، استثناها را ثبت (log) نکنید.
bpo-30645: رفع محاسبهی مسر در
imp.load_package()، بهگونهای که برای مواردی که یک بسته فقط با بایتکدها ارائه شده است نیز کار کند. اصلاحیه از Alexandru Ardelean.bpo-11822: تابع dis.dis() اکنون قادر است اشیاء کد تو در تو را واسازی کند.
bpo-30624: ماژول selectors خطاهای KeyboardInterrupt و SystemExit را در نظر نمیگیرد و در صورت بروز خطا، یک توصیفگر فایل (fd) را در وضعیت نامناسبی رها میکند. اصلاحیه از Giampaolo Rodola'.
bpo-30595: متد multiprocessing.Queue.get() همراه با مهلت زمانی (timeout)، اگر موفق به بهدست آوردن قفل شود اما این کار بیشتر از مهلت زمانی طول بکشد، اکنون خوانندهی خود را در حالت غیرمسدودکننده پایش (poll) میکند.
bpo-28556: بهروزرسانیهای ماژول typing: افزودن AsyncContextManager عام، افزودن پشتیبانی از ContextManager در تمام نسخهها. درخواستهای پول (PR) اصلی توسط Jelle Zijlstra و Ivan Levkivskyi
bpo-30605: تابع re.compile() هنگام کامپایل کردن یک نمونه از نوع bytes با اصلاحکنندهی خطی (inline modifier) جابهجا شده، دیگر خطای BytesWarning بالا نمیآورد. اصلاحیه از Roy Williams.
bpo-29870: رفع نشت سوکتهای ssl هنگامی که اتصال در پیادهسازی asyncio/ssl متوقف میشود. اصلاحیه از Michaël Sghaïer.
bpo-29743: بستن انتقال (transport) در طی فرایند دستدهی (handshake) باعث نشت سوکت باز میشود. اصلاحیه از Nikolay Kim
bpo-27585: رفع لغو لغتپرداز (waiter) در asyncio.Lock. اصلاحیه از Mathieu Sornay.
bpo-30014: متد modify() در کلاسهای مبتنی بر poll()، epoll() و devpoll() از ماژول selectors حدود ۱۰ درصد سریعتر است. اصلاحیه از Giampaolo Rodola'.
bpo-30418: در ویندوز، تابع subprocess.Popen.communicate() اکنون اگر فرایند فرزند همچنان در حال اجرا باشد اما پایپ را بسته باشد، خطای EINVAL را روی stdin.write() نادیده میگیرد.
bpo-30463: افزودن __slots__ خالی به abc.ABC. این کار به زیرکلاسها اجازه میدهد ایجاد __dict__ و __weakref__ را رد کنند. اصلاحیه از Aaron Hall.
bpo-30520: گزارشگیرها (loggers) اکنون قابل پیکل شدن (pickleable) هستند.
bpo-30557: ماژول faulthandler اکنون کدهای استثنا را در ویندوز به طور صحیح فیلتر و نمایش میدهد.
bpo-30526: افزودن متد TextIOWrapper.reconfigure() و ویژگی TextIOWrapper.write_through.
bpo-30245: برطرف کردن سرریز احتمالی هنگام ساخت پیام خطای struct.pack_into. توسط Yuan Liu.
bpo-30378: برطرف کردن مشکلی که در آن logging.handlers.SysLogHandler نمیتواند آدرسهای IPv6 را پردازش کند.
bpo-16500: امکان ثبت هندلرهای at-fork فراهم شد.
bpo-30470: منسوخ کردن محافظت نامعتبر فراخوانی ctypes روی ویندوز. توسط Mariatta Wijaya.
bpo-30414: نخ در حال اجرای پسزمینهی multiprocessing.Queue._feed هنگام بروز استثنا از حلقهی اصلی خارج نمیشود.
bpo-30003: برطرف کردن نحوهی دستهبندی نویسههای گریز در کُدک HZ. براساس وصلهی Ma Lin.
bpo-30149: تابع inspect.signature() اکنون از موارد فراخوانیپذیر با پارامترهای با تعداد آرگومان متغیر که با partialmethod پوشانده شدهاند پشتیبانی میکند. توسط Donghee Na.
bpo-30436: اگر ماژول والد مشخصشده یک بسته نباشد (یعنی ویژگی __path__ را نداشته باشد)، تابع importlib.find_spec() به جای AttributeError خطای ModuleNotFoundError را بالا میآورد.
bpo-30301: برطرف کردن خطای AttributeError هنگام استفاده از SimpleQueue.empty() در متدهای راهاندازی spawn و forkserver.
bpo-30375: هشدارهایی که هنگام کامپایل یک عبارت باقاعده صادر میشوند، اکنون همیشه به سطری در کد کاربر اشاره میکنند. پیش از این، اگر از درون گروهها یا شرطها صادر میشدند، ممکن بود به بخشهای درونی ماژول re اشاره کنند.
bpo-30329: ماژولهای imaplib و poplib اکنون خطای socket مربوط به ویندوز یعنی WSAEINVAL (کد 10022) را روی shutdown(SHUT_RDWR) صید میکنند: عملیات نامعتبری تلاش شد. این خطا گاهی اوقات روی اتصالهای SSL رخ میدهد.
bpo-29196: کلاسهای Plist، Dict و _InternalDict که قبلاً در پایتون 2.4 منسوخ شده بودند، از ماژول plistlib حذف شدند. مقادیر دیکشنری در نتیجهی توابع readPlist() و readPlistFromBytes() اکنون دیکشنریهای معمولی هستند. دیگر نمیتوانید برای دسترسی به آیتمهای این دیکشنریها از دسترسی ویژگی استفاده کنید.
bpo-9850: ماژول
macpathاکنون منسوخ شده است و در پایتون 3.8 حذف خواهد شد.bpo-30299: کامپایل کردن عبارت باقاعده در حالت رفع اشکال (debug) روی سیپایتون اکنون بایتکد کامپایلشده را به شکلی خوانا برای انسان نمایش میدهد.
bpo-30048: برطرف شد: هنگامی که وظیفه در حال اجرای همروال است و همروال بدون هیچ
awaitدیگری بازمیگردد، میتوان ازTask.cancel()چشمپوشی کرد.bpo-30266: کلاس contextlib.AbstractContextManager اکنون با تعیین __enter__ = None یا __exit__ = None، به پیروی از الگوی معرفیشده در bpo-25958 از ثبتنشزی (anti-registration) پشتیبانی میکند. توسط Jelle Zijlstra.
bpo-30340: بهبود بهینهسازی عبارات باقاعده. این کار عملکرد تطبیق برخی الگوها را تا 25 برابر افزایش داد.
bpo-30298: ضعیف کردن شرط هشدارهای منسوخسازی برای اصلاحگرهای درونخطی. اکنون چندین اصلاحگر درونخطی متوالی در ابتدای الگو مجاز است (مثلاً
'(?i)(?s)...'). در حالت پرجزئیات، فاصلهها و کامنتها اکنون قبل و بین اصلاحگرهای درونخطی مجاز هستند (مثلاً'(?x) (?i) (?s)...').bpo-30285: بهینهسازی تطبیق و جستجوی عبارات باقاعده بدون در نظر گرفتن بزرگی و کوچکی حروف.
bpo-29990: برطرف کردن بررسی محدوده در رمزگشای GB18030. وصلهی اصلی از Ma Lin.
bpo-29979: بازنویسی cgi.parse_multipart، با استفادهی مجدد از کلاس FieldStorage و هماهنگسازی نتایج آن با نتایج FieldStorage برای درخواستهای multipart/form-data. وصله توسط Pierre Quentel.
bpo-30243: متدهای __init__ مربوط به اسکنر و کدگذار ماژول _json حذف شدند. سوءاستفاده از آنها میتوانست باعث نشت حافظه یا فروپاشی شود. اکنون اشیاء اسکنر و کدگذار بهطور کامل در متدهای __new__ مقداردهی اولیه میشوند.
bpo-30215: اشیاء عبارت باقاعده کامپایلشده با پرچم re.LOCALE دیگر در زمان کامپایل به locale وابسته نیستند. فقط locale در زمان تطبیق روی نتیجهی تطبیق تأثیر میگذارد.
bpo-30185: جلوگیری از رخداد ردگیریهای KeyboardInterrupt در فرایند کمکی forkserver هنگام دریافت کلید Ctrl-C.
bpo-30103: توابع binascii.b2a_uu() و uu.encode() اکنون از استفادهی
'`'به عنوان صفر به جای فاصله پشتیبانی میکنند.bpo-28556: بهروزرسانیهای مختلف در ماژول typing: افزودن نوع typing.NoReturn، استفاده از WrapperDescriptorType و رفع باگهای جزئی. درخواستهای پول اصل (PR) توسط Jim Fasarakis-Hilliard و Ivan Levkivskyi.
bpo-30205: رفع تابع getsockname() برای سوکتهای بدون اتصَال AF_UNIX در لینوکس.
bpo-30228: متدهای seek() و tell() در io.FileIO اکنون صفت داخلی seekable را تنظیم میکنند تا از یک سیستکال (syscall) در هنگام open() (در حالت با بافر یا متنی) جلوگیری شود.
bpo-30190: متدهای assertAlmostEqual و assertNotAlmostEqual در unittest پیام بهتری در صورت شکست ارائه میدهند که شامل اختلاف بین آرگومانهای چپ و راست است. (وصله توسط Giampaolo Rodola')
bpo-30101: افزودن پشتیبانی برای curses.A_ITALIC.
bpo-29822: تابع inspect.isabstract() اکنون در طول __init_subclass__ کار میکند. وصله توسط Nate Soares.
bpo-29960: حفظ وضعیت تولیدگر هنگامی که تابع _random.Random.setstate() یک استثنا پرتاب میکند. وصله توسط Bryan Olson.
bpo-30070: رفع نشت حافظه و فروپاشیها در مدیریت خطاها در ماژول parser.
bpo-22352: عرض ستونها در خروجی تابع dis.dis() اکنون برای شماره سسطرهای بزرگ و آفستهای دستورالعمل تنظیم میشود.
bpo-30061: رفع فروپاشیها در متدهای IOBase یعنی __next__() و readlines() به ترتیب زمانی که readline() یا __next__() شیء با اندازهی نامشخص برمیگردانند. رفع خطاهای احتمالی دیگر ناشی از عدم بررسی نتایج PyObject_Size()، PySequence_Size() یا PyMapping_Size().
bpo-30218: رفع پشتیبانی PathLike برای shutil.unpack_archive. وصله توسط Jelle Zijlstra.
bpo-10076: عبارت باقاعده کامپایلشده و اشیاء تطبیق در ماژول re اکنون از copy.copy() و copy.deepcopy() پشتیبانی میکنند (آنها اتمی در نظر گرفته میشوند).
bpo-30068: تابع _io._IOBase.readlines هنگامی که hint وجود دارد، ابتدا بررسی میکند که آیا بسته است یا خیر.
bpo-29694: رفع شرایط مسابقه (race condition) در ایجاد پوشه با pathlib برای پرچم parents=True. وصله توسط Armin Rigo.
bpo-29692: رفع قطع زنجیرهی دلخواه استثناهای RuntimeError در contextlib.contextmanager. وصله توسط Siddharth Velankar.
bpo-26187: آزمون اینکه کالبک رد sqlite3 هنگام تغییر شما (schema) چندین بار فراخوانی نمیشود. این مسئله به طور غیرمستقیم با تغییر به استفاده از sqlite3_prepare_v2() در bpo-9303 برطرف شد. وصله توسط Aviv Palivoda.
bpo-30017: امکان فراخوانی چندین بارهی متد close() شیء نویسندهی ورودی zip فراهم شد. نوشتن روی یک نویسندهی بستهشده اکنون همیشه یک ValueError تولید میکند.
bpo-29998: عملیات Pickling و کپی کردن ImportError اکنون ویژگیها (attributes)ی نام و مسیر را حفظ میکند.
bpo-29995: تابع re.escape() اکنون فقط نویسههای خاص عبارت منظم (regex) را خنثی میکند.
bpo-29962: افزودن عملیات math.remainder که باقیمانده را همانطور که در استاندارد IEEE 754 مشخص شده است، پیادهسازی میکند.
bpo-29649: بهبود پیامهای استثنای struct.pack_into() برای مشکلاتی مربوط به اندازهی بافر و آفست. وصله توسط Andrew Nester.
bpo-29654: پشتیبانی از سرآیند HTTP به نام If-Modified-Since (نهانگاه مرورگر). وصله توسط Pierre Quentel.
bpo-29931: رفع بررسی مقایسه برای اشیاء ipaddress.ip_interface. وصله توسط Sanjay Sundaresan.
bpo-29953: رفع نشت حافظه در متد replace() از اشیاء datetime و time هنگام ارسال آرگومان fold خارج از کران.
bpo-29942: رفع یک فروپاشی در itertools.chain.from_iterable هنگام مواجهه با تعداد زیادی از پیمایشپذیرهای خالی.
bpo-10030: سرعت خواندن پروندههای ZIP رمزنگاریشده ۲ برابر افزایش یافت.
bpo-29204: متد Element.getiterator() و پارامتر html در XMLParser() فقط در مستندات منسوخ شده بودند (بهترتیب از نسخههای ۳.۲ و ۳.۳ پایتون). اکنون استفاده از آنها هشدار منسوخ شدن صادر میکند.
bpo-27863: رفع چندین فروپاشی در ElementTree که ناشی از شرایط مسابقه (race conditions) و انواع نادرست بودند.
bpo-25996: افزودن پشتیبانی از توصیفگرهای پرونده در os.scandir() روی یونیکس. سرعت os.fwalk() با استفاده از os.scandir() دو برابر شد.
bpo-28699: رفع یک باگ در استخرهای multiprocessing.pool که در آن ایجاد یک استثنا در همان ابتدای یک پیمایشپذیر ممکن بود استثنا را ببلعد یا باعث معلق ماندن برنامه شود. وصله توسط Davin Potts و Xiang Zhang.
bpo-23890: متد unittest.TestCase.assertRaises() اکنون بهطور دستی یک چرخه ارجاع را میشکند تا اشیاء را بیش از حد انتظار زنده نگه ندارد.
bpo-29901: ماژول zipapp اکنون از اشیاء شبهمسیر عمومی، و نه فقط pathlib.Path، پشتیبانی میکند.
bpo-25803: جلوگیری از خطاهای نادرستی که توسط Path.mkdir(exist_ok=True) ایجاد میشوند، هنگامی که سیستمعامل به خطاهایی مانند EACCES نسبت به EEXIST اولویت میدهد.
bpo-29861: آزادسازی ارجاعات به وظایف، آرگومانهای آنها و نتایج آنها به محض اتمام در multiprocessing.Pool.
bpo-19930: آرگومان mode در os.makedirs() دیگر روی بیتهای مجوز پروندهی دایرکتوریهای میانردهی تازهایجادشده تأثیر نمیگذارد.
bpo-29884: ماژول faulthandler: بازیابی sigaltstack قدیمی در طول فرایند آزادسازی. این وصله توسط Christophe Zeitouny تهیه شده است.
bpo-25455: برطرفسازی فروپاشیها در متد repr از اشیاء شبهپروندهی بافرشدهی بازگشتی.
bpo-29800: برطرفسازی فروپاشیها در partial.__repr__ اگر کلیدهای partial.keywords رشته نباشند. این وصله توسط Michael Seifert تهیه شده است.
bpo-8256: برطرفسازی احتمال شکست یا فروپاشی در تابع input() در صورتی که ویژگیهای «encoding» یا «errors» در sys.stdin یا sys.stdout تنظیم نشده باشند یا رشته نباشند.
bpo-28692: استفاده از مقدار غیرصحیح برای انتخاب شکل جمع در gettext اکنون منسوخ شده است.
bpo-26121: استفاده از پیادهسازی کتابخانهی C برای توابع ریاضی erf() و erfc().
bpo-29619: توابع os.stat() و os.DirEntry.inode() اکنون مقدار آینود (st_ino) را با استفاده از اعداد صحیح بدون علامت تبدیل میکنند.
bpo-28298: برطرفسازی باگی که مانع از پذیرش اعداد صحیح بزرگ (اشیایی که دارای __int__ هستند) به عنوان عنصر در آرایههای 'Q' و 'L' و 'I' میشد.
bpo-29645: افزایش سرعت ایمپورت کردن ماژول webbrowser. تابع webbrowser.register() اکنون نخایمن است.
bpo-28231: ماژول zipfile اکنون اشیاء شبهمسیر را برای مسیرهای خارجی میپذیرد.
bpo-26915: متدهای index() و count() در collections.abc.Sequence اکنون پیش از بررسی برابری، هویت را هنگام مقایسهها بررسی میکنند.
bpo-28682: افزودن پشتیبانی از مسیرهای بایتی در os.fwalk().
bpo-29728: افزودن ثابت جدید
socket.TCP_NOTSENT_LOWAT(نسخه ۳.۱۲ لینوکس). این وصله توسط Nathaniel J. Smith تهیه شده است.bpo-29623: اجازه دادن به استفاده از شیء شبهمسیر به عنوان یک آرگومان منفرد در ConfigParser.read(). این وصله توسط David Ellis تهیه شده است.
bpo-9303: انتقال ماژول sqlite3 به API نسخهی _v2. این وصله توسط Aviv Palivoda تهیه شده است.
bpo-28963: برطرفسازی پیمایش خارج از کران در asyncio.Future.remove_done_callback که در زبان C پیادهسازی شده است.
bpo-29704: کلاس asyncio.subprocess.SubprocessStreamProtocol دیگر پیش از بستهشدن تمامی پایپها بسته نمیشود.
bpo-29271: برطرفسازی Task.current_task و Task.all_tasks که در C پیادهسازی شدهاند تا آرگومان None را همانند پیادهسازی خالص پایتونی خود بپذیرند.
bpo-29703: برطرفسازی ماژول asyncio برای پشتیبانی از نمونهسازی حلقههای رویداد جدید در فرایندهای فرزند.
bpo-29615: کلاس SimpleXMLRPCDispatcher دیگر خطای KeyError (یا هر استثنای دیگری) را به استثنا(های) ایجادشده در متدهای دیسپچشده زنجیر نمیکند. این وصله توسط Petr Motejlek تهیه شده است.
bpo-7769: متد register_function() از ماژول xmlrpc.server.SimpleXMLRPCDispatcher و زیرکلاسهای آن اکنون میتوانند به عنوان یک دکوراتور استفاده شوند.
bpo-29376: رفع خطای ادعا (assertion error) در threading._DummyThread.is_alive().
bpo-28624: افزودن آزمونی که بررسی میکند آیا پارامتر cwd از Popen() اشیاء PathLike را میپذیرد یا خیر. توسط Sayan Chowdhury.
bpo-28518: شروع ضمنی تراکنش پیش از یک دستور DML. توسط Aviv Palivoda.
bpo-29742: متد get_extra_info() در صورت فراخوانی روی یک انتقال (transport) بستهشدهی ssl استثنا پرتاب میکند. توسط Nikolay Kim.
bpo-16285: تابع urllib.parse.quote اکنون بر اساس RFC 3986 است و به همین دلیل '~' را در مجموعهی نویسههایی که به طور پیشفرض نقلقول نمیشوند، قرار میدهد. توسط Christian Theune و Ratnadeep Debnath.
bpo-29532: تغییر دادن دیکشنری آرگومانهای کلیدواژهای (kwarg) که به functools.partial() پاس داده شده است، دیگر روی یک شیء partial پس از ایجاد تأثیری نمیگذارد.
bpo-29110: رفع نشت شیء پرونده در aifc.open() هنگامی که پرونده به صورت یک مسیر سیستمعامل ارائه میشود و در قالب معتبر AIFF نیست. توسط Anthony Zhang.
bpo-22807: افزودن uuid.SafeUUID و uuid.UUID.is_safe برای انتقال اطلاعات از سکو (platform) دربارهی اینکه آیا UUIDهای تولیدشده با یک متد امن برای پردازش چندگانه (multiprocessing) تولید شدهاند یا خیر.
bpo-29576: بهبود برخی موارد منسوخشده در importlib. برخی متدهای منسوخشده اکنون DeprecationWarning صادر میکنند و پیامهای توضیحی بهتری دارند.
bpo-29534: رفع رفتار متفاوت Decimal.from_float() برای _decimal و _pydecimal. با تشکر از Andrew Nester.
bpo-10379: تابع locale.format_string اکنون از آرگومان کلیدواژهای 'monetary' پشتیبانی میکند و locale.format منسوخ شده است.
bpo-29851: تابع importlib.reload() اکنون اگر ماژول فاقد مشخصات (spec) باشد، خطای ModuleNotFoundError پرتاب میکند.
bpo-28556: بهروزرسانیهای مختلف در ماژول typing: شامل typing.Counter، typing.ChainMap، بهبود کشسازی کلاسهای پایه انتزاعی (ABC) و غیره. درخواستهای پول (PR) اصلی توسط Jelle Zijlstra، Ivan Levkivskyi، Manuel Krebber و Łukasz Langa.
bpo-29100: رفع رگرسیون datetime.fromtimestamp() که در پایتون 3.6.0introduced معرفی شده بود: بررسی سالهای حداقل و حداکثر.
bpo-29416: جلوگیری از حلقهی بینهایت در pathlib.Path.mkdir
bpo-29444: رفع دسترسی به بافر خارج از کران (out-of-bounds) در متد group() از شیء تطابق (match). بر اساس وصله (patch) ارائه شده توسط WGH.
bpo-29377: افزودن انواع توکار WrapperDescriptorType، MethodWrapperType و MethodDescriptorType به ماژول types. وصلهی اصلی توسط Manuel Krebber.
bpo-29218: دستور استفادهنشدهی install_misc اکنون حذف شد. این دستور از سال ۲۰۰۰ به عنوان استفادهنشده مستند شده بود. توسط Eric N. Vander Weele.
bpo-29368: متد extend() اکنون به جای متد append() هنگام پیکلگشایی collections.deque و سایر اشیاء فهرستمانند فراخوانی میشود. این کار میتواند سرعت پیکلگشایی را تا ۲ برابر افزایش دهد.
bpo-29338: راهنمای یک کلاس داخلی یا افزونه اکنون در صورت فراهم بودن __text_signature__ برای کلاس، امضای سازنده را نیز شامل میشود.
bpo-29335: رفع مشکل subprocess.Popen.wait() هنگامی که فرایند فرزند بهجای حالت پایانیافته، به یک حالت متوقفشده خارج شده است (مثلاً هنگام استفاده از ptrace).
bpo-29290: رفع یک رگرسیون در argparse که پیامهای راهنما در فضاهای خالی غیرشکننده شکسته میشدند.
bpo-28735: رفع مقایسهی mock.MagickMock با mock.ANY.
bpo-29197: حذف تابع منسوخ ntpath.splitunc().
bpo-29210: حذف پشتیبانی از آرگومان منسوخ «exclude» در tarfile.TarFile.add().
bpo-29219: رفع بازگشتی بینهایت در repr نمونههای مقداردهینشدهی ctypes.CDLL.
bpo-29192: حذف ویژگیهای منسوخ در ماژول http.cookies.
bpo-29193: یک آرگومان رشتهی قالب برای string.Formatter.format() اکنون فقط جایگاهی است.
bpo-29195: حذف پشتیبانی از آرگومانهای کلیدواژهای مستندنشدهی منسوخ در متدهای اشیاء عبارت باقاعده.
bpo-28969: رفع شرایط رقابت در پیادهسازی C مربوط به functools.lru_cache. خطای KeyError ممکن بود هنگام فراخوانی همزمان تابع نهانگاهگذاریشده با نهانگاه پر از نخهای مختلف و آرگومانهای یکسانِ نهانگاهگذارینشده رخ دهد.
bpo-20804: ویژگیهای unittest.mock.sentinel اکنون هنگام کپیشدن یا پیکلشدن، هویت خود را حفظ میکنند.
bpo-29142: در urllib.request، پسوندها در متغیر محیطی no_proxy با نقطههای پیشتاز میتوانند دوباره با نام میزبانهای مرتبط مطابقت پیدا کنند (مثلاً b.c. با a.b.c مطابقت دارد). وصله توسط Milan Oberkirch.
bpo-28961: رفع کمکی unittest.mock._Call: دیگر پارامتر name را نادیده نگیرید. وصله نوشتهشده توسط Jiajun Huang.
bpo-15812: تابع inspect.getframeinfo() اکنون سطر اول یک زمینه را به درستی نمایش میدهد. وصله توسط Sam Breese.
bpo-28985: بهروزرسانی ثابتهای تأییدکننده در ماژول sqlite3. وصله توسط Dingyuan Wang.
bpo-29079: جلوگیری از حلقهی بینهایت در pathlib.resolve() روی ویندوز
bpo-13051: رفع خطاهای بازگشتی در curses.textpad.Textbox بزرگ یا تغییر اندازه یافته. بر اساس وصلهای از Tycho Andersen.
bpo-9770: محمولهای curses.ascii اکنون با اعداد صحیح منفی به درستی کار میکنند.
bpo-28427: کلیدهای قدیمی نباید مقادیر جدید را هنگام جمعآوری از نخی دیگر از WeakValueDictionary حذف کنند.
bpo-28923: حذف آثار ویرایشگر از Tix.py.
bpo-28871: رفع یک فروپاشی هنگام زدایش (deallocate) عمیق ElementTree.
bpo-19542: رفع باگهای WeakValueDictionary.setdefault() و WeakValueDictionary.pop() هنگامی که یک جمعآوری زباله در نخی دیگر اتفاق میافتد.
bpo-20191: رفع یک فروپاشی در resource.prlimit() هنگام ارسال یک دنباله که عناصر خود را به عنوان محدودیت مالک نیست.
bpo-16255: ماژول subprocess.Popen از /system/bin/sh روی اندروید به عنوان پوسته استفاده میکند، به جای /bin/sh.
bpo-28779: تابع multiprocessing.set_forkserver_preload() فرایند forkserver را دچار فروپاشی میکرد اگر یک ماژول ازپیشبارگذاریشده برخی از اشیای چندپردازشی مانند قفلها را نمونهسازی میکرد.
bpo-26937: متد chown() از کلاس tarfile.TarFile اکنون زمانی که ماژول grp نتواند وارد شود (به عنوان مثال روی پلتفرمهای اندروید) با خطا مواجه نمیشود.
bpo-28847: ماژول dbm.dumb اکنون خواندن پروندههای فقطخواندنی را پشتیبانی میکند و دیگر زمانی که پروندهی اندیس تغییر نمیکند، آن را نمینویسد. اگر پروندهی اندیس گم شود و در حالتهای 'r' و 'w' دوباره ساخته شود، اکنون یک هشدار منسوخشدگی صادر میشود (که در نسخههای آیندهی پایتون به یک خطا تبدیل خواهد شد).
bpo-27030: گریزهای ناشناخته متشکل از
'\'و یک حرف اسکی در عبارتهای باقاعدهی الگوهای جایگزینی re.sub() اکنون خطا محسوب میشوند.bpo-28835: رفع یک رگرسیون ایجادشده در warnings.catch_warnings(): فراخوانی warnings.showwarning() اگر درون مدیر زمینه بازنشناسی (overridden) شده باشد.
bpo-27172: برای کمک به ارتقا از نسخهی ۲.۷، منسوخشدگی مستندشدهی قبلی تابع
inspect.getfullargspec()معکوس شده است. این تصمیم ممکن است پس از اینکه شاخهی پایتون ۲.۷ دیگر به طور رسمی پشتیبانی نشود، دوباره بررسی شود.bpo-28740: افزودن sys.getandroidapilevel(): نسخهی API زمان ساخت اندروید را به عنوان یک عدد صحیح برمیگرداند. این تابع فقط روی اندروید در دسترس است.
bpo-26273: افزودن ثابتهای جدید
socket.TCP_CONGESTION(لینوکس ۲.۶.۱۳) وsocket.TCP_USER_TIMEOUT(لینوکس ۲.۶.۳۷). وصله نوشتهشده توسط عمر ساندووال (Omar Sandoval).bpo-28752: بازیابی متدهای __reduce__() از اشیای تاریخوساعت (datetime).
bpo-28727: الگوهای عبارت باقاعده، شیءهای _sre.SRE_Pattern ایجادشده توسط re.compile()، قابل مقایسه میشوند (فقط عملگرهای x==y و x!=y). این تغییر باید bpo-18383 را اصلاح کند: هنگام بارگذاری مجدد ماژول warnings، فیلترهای هشدار را تکثیر نکنید (کاری که معمولاً فقط در آزمونهای واحد انجام میشود).
bpo-20572: حذف پارامتر endtime از subprocess.Popen.wait. این پارامتر در نسخهی ۳.۴ منسوخ شد و پیش از آن مستند نشده بود.
bpo-25659: در ctypes، از بروز فروپاشی هنگام فراخوانی متدهای from_buffer() و from_buffer_copy() روی کلاسهای انتزاعی مانند Array جلوگیری کنید.
bpo-28548: در ماژول "http.server"، در صورت امکان نسخهی پروتکل را تجزیه (parse) کنید تا از استفاده از HTTP 0.9 در برخی پاسخهای خطا جلوگیری شود.
bpo-19717: موفقیتآمیز ساختن Path.resolve() روی مسیردهایی که وجود ندارند. وصله از Vajrasky Kok
bpo-28563: رفع احتمال حملهی DoS و اجرای کد دلخواه هنگام مدیریت انتخابهای شکل جمع در ماژول gettext. پارسر عبارت اکنون سینتکس دقیقی را که توسط GNU gettext پشتیبانی میشود، پشتیبانی میکند.
bpo-28387: رفع فروپاشی احتمالی در تابع تخریبکنندهی _io.TextIOWrapper هنگامی که جمعآوریکنندهی زباله در نخ دیگری فراخوانی میشود. براساس وصلهی Sebastian Cufre.
bpo-27517: فشردهساز و واگشای LZMA اگر دو بار دادهی خالی دریافت کنند دیگر استثنایی بالا نمیآورند. وصله توسط Benjamin Fogle.
bpo-28549: رفع خطای قطعی حافظه (segfault) در تابع addch() کتابخانهی curses به همراه ncurses6.
bpo-28449: تابع tarfile.open() با حالت "r" یا "r:" اکنون پیش از تلاش برای باز کردن پروندهی tar بدون فشردهسازی، تلاش میکند آن را با فشردهسازی باز کند. در غیر این صورت، احتمال ۵۰ درصد با خطای ignore_zeros=True مواجه میشد.
bpo-23262: ماژول webbrowser اکنون از فایرفاکس ۳۶ به بالا و مرورگرهای مشتقشده از آن پشتیبانی میکند. براساس وصلهی Oleg Broytman.
bpo-24241: ابزار webbrowser در محیط X اکنون استفاده از مرورگر پیشفرض را بهطور مستقیم ترجیح میدهد. همچنین، تابع ثبت کردن (
register) در webbrowser اکنون دارای آرگومان مستندشدهی 'preferred' است تا مرورگرهایی را مشخص کند که توسط get() بدون هیچ آرگومانی بازگردانده شوند. وصله توسط David Steelebpo-27939: رفع باگهای موجود در tkinter.ttk.LabeledScale و tkinter.Scale که به دلیل نمایش مقیاس به عنوان عدد اعشاری درونی در Tk ایجاد شده بودند. تابع tkinter.IntVar اکنون اگر مقدار عدد اعشاری به متغیر زیربنایی Tk اختصاص یابد، به درستی کار میکند.
bpo-28255: تابع calendar.TextCalendar.prweek() دیگر پس از تقویم یک هفته، یک فاصله چاپ نمیکند. تابع calendar.TextCalendar.pryear() دیگر پس از تقویم یک سال، خط جدید اضافی چاپ نمیکند. براساس وصلهی Xiang Zhang.
bpo-28255: تابع calendar.TextCalendar.prmonth() دیگر پس از چاپ تقویم یک ماه، در ابتدای سطر جدید فاصله چاپ نمیکند. وصله توسط Xiang Zhang.
bpo-20491: کلاس textwrap.TextWrapper اکنون به فاصلههای غیرشکستنی احترام میگذارد. براساس وصلهای از Kaarle Ritvanen.
bpo-28353: تابع os.fwalk() دیگر روی پیوندهای خراب دچار خطا نمیشود.
bpo-28430: اصلاح این مشکل که پیمایشگر (iterator) نوع asyncio.Future پیادهسازیشده در C، مقداری (value) غیر از None را که به متد ()send. ارسال میشود، نمیپذیرد.
bpo-27025: نامهای تولیدشده برای ابزارکهای Tkinter اکنون برای خوانایی بهتر با پیشوند "!" شروع میشوند.
bpo-25464: رفع تابع HList.header_exists() در ماژول tkinter.tix با افزودن یک راهحل موقتی برای باگ کتابخانهی Tix.
bpo-28488: تابع shutil.make_archive() دیگر ورودی "./" را به آرشیو ZIP اضافه نمیکند.
bpo-25953: تابع re.sub() اکنون برای ارجاع عددی نامعتبر به گروه در قالب جایگزینی، حتی اگر الگو در رشته پیدا نشود، یک خطا ایجاد میکند. پیام خطا برای ارجاع نامعتبر گروه اکنون شامل اندیس گروه و موقعیت ارجاع است. براساس وصلهی SilentGhost.
bpo-28469: ماژول timeit اکنون بهجای دنبالهی 1, 10, 100,... برای تنظیم خودکار محدودهی اندازهگیری، از دنبالهی 1, 2, 5, 10, 20, 50,... استفاده میکند.
bpo-28115: رابط خط فرمان ماژول zipfile اکنون از argparse استفاده میکند. پشتیبانی از گزینههای طولانی اضافه شد.
bpo-18219: بهینهسازی csv.DictWriter برای تعداد زیادی از ستونها. وصله توسط Mariatta Wijaya.
bpo-28448: رفع این مشکل که asyncio.Future پیادهسازیشده با C روی ویندوز کار نمیکرد.
bpo-23214: در ماژول io، آرگومان متدهای read1 کلاسهای BufferedReader و BytesIO اکنون اختیاری است و میتواند برابر با 1- باشد که با مشخصات BufferedIOBase مطابقت دارد.
bpo-28480: رفع خطای ساخت ماژول socket هنگامی که چندنخی (multithreading) غیرفعال است.
bpo-28240: ماژول timeit: گزینههای خط فرمان
-c/--clockو-t/--timeرا که از نسخهی ۳.۳ پایتون منسوخ شده بودند، حذف کرد.bpo-28240: ماژول timeit اکنون برای قابل اعتمادتر کردن بنچمارکها، آنها را ۵ بار به جای فقط ۳ بار تکرار میکند.
bpo-28240: ویژگی autorange در timeit اکنون اگر بنچمارک کمتر از ۱۰ ثانیه طول بکشد، به جای ۱۰ پیمایش، از یک پیمایش حلقه استفاده میکند. دستور "python3 -m timeit -s 'import time' 'time.sleep(1)'" اکنون به جای ۴۰ ثانیه، ۴ ثانیه طول میکشد.
Distutils.sdist اکنون پروندههای README و setup.py را با در نظر گرفتن بزرگی و کوچکی حروف (case sensitivity) جستجو میکند. این رفتار با رفتار موجود در Setuptools 6.0 و پس از آن مطابقت دارد. برای دریافت دلایل این تغییر، به setuptools 100 مراجعه کنید.
bpo-24452: افزودن پشتیبانی از مرورگر Chrome در سیستمعامل Mac OS X به ماژول webbrowser. وصله از Ned Batchelder.
bpo-20766: رفع ارجاعات نشتیافته توسط pdb در مدیریت هندلرهای SIGINT.
bpo-27998: رفع پشتیبانی از مسیر بایتها (bytes path) در تابع os.scandir() روی سیستمعامل ویندوز. وصله از Eryk Sun.
bpo-28317: واساز (disassembler) اکنون آرگومان FORMAT_VALUE را رمزگشایی میکند.
bpo-28380: توابع autospec در ماک unittest.mock اکنون به درستی از assert_called، assert_not_called و assert_called_once پشتیبانی میکنند.
bpo-28229: ماژول lzma اکنون از pathlib پشتیبانی میکند.
bpo-28321: رفع مشکل نوشتن نویسههای غیر BMP با قالب دودویی در plistlib.
bpo-28225: ماژول bz2 اکنون از pathlib پشتیبانی میکند. وصلهی اولیه از Ethan Furman.
bpo-28227: ماژول gzip اکنون از pathlib پشتیبانی میکند. وصله از Ethan Furman.
bpo-28332: منسوخ کردن برشهای (truncations) خاموش در socket.htons و socket.ntohs. وصلهی اصلی از Oren Milman.
bpo-27358: بهینهسازی ادغام آرگومانهای کلیدواژهای متغیر (var-keyword) و بهبود پیام خطا هنگام ارسال یک شیء غیرنگاشت به عنوان آرگومان کلیدواژهای متغیر.
bpo-28257: بهبود پیام خطا هنگام ارسال یک شیء پیمایشپذیر (iterable) به عنوان آرگومان جایگاهی متغیر (var-positional). آپکد BUILD_TUPLE_UNPACK_WITH_CALL اضافه شد.
bpo-28322: رفع خرابیهای احتمالی هنگام پیکلگشایی (unpickle) اشیای itertools از دادههای پیکل نادرست. بر اساس وصلهای از John Leitch.
bpo-28228: ماژول imghdr اکنون از pathlib پشتیبانی میکند.
bpo-28226: ماژول compileall اکنون از pathlib پشتیبانی میکند.
bpo-28314: اصلاح اعلان تابع (پرچمهای C) برای متد getiterator() در xml.etree.ElementTree.Element.
bpo-28148: توقف استفاده از localtime() و gmtime() در ماژول time. افزودن API مستقل از پلتفرم _PyTime_localtime که مشابه POSIX localtime_r است، اما روی تمام پلتفرمها در دسترس است. وصله از Ed Schouten.
bpo-28253: اصلاح توابع گاهشماری برای ماههای حدی: 0001-01 و 9999-12. متدهای itermonthdays() و itermonthdays2() بازنویسی شدهاند تا itermonthdates() را فراخوانی نکنند؛ زیرا این امر میتواند باعث سرریز/کمریز در datetime.date شود.
bpo-28275: اصلاح احتمال استفاده پس از آزادسازی حافظه در متدهای decompress() مربوط به کلاسهای LZMADecompressor و BZ2Decompressor. وصلهی اولیه از John Leitch.
bpo-27897: اصلاح احتمال فروپاشی در sqlite3.Connection.create_collation() در صورتی که شیء رشتهمانند نامعتبری به عنوان نام ارسال شود. وصله از Xiang Zhang.
bpo-18844: تابع random.choices() اکنون آرگومان k را به صورت فقط-کلیدواژه میپذیرد تا خوانایی موارد رایج بهبود یابد و با امضای استفادهشده در سایر زبانها هماهنگ شود.
bpo-18893: اصلاح مدیریت نامعتبر استثنا در Lib/ctypes/macholib/dyld.py. وصله از Madison May.
bpo-27611: اصلاح پشتیبانی از پنجرهی ریشه پیشفرض در ماژول tkinter.tix. افزودن پارامتر master در سازندهی DisplayStyle.
bpo-27348: در ماژول traceback، قالببندی پیامهای استثنا مانند "Exception: None" بازیابی شد. این کار یک رگرسیون معرفیشده در 3.5a2 را اصلاح میکند.
bpo-25651: امکان استفاده از مقادیر نادرست برای پارامتر msg در subTest() فراهم شد.
bpo-27778: اصلاح نشت حافظه در os.getrandom() هنگامی که اجرای getrandom() توسط یک سیگنال متوقف میشود و یک هندلر سیگنال، یک استثنای پایتون را بالا میآورد.
bpo-28200: اصلاح نشت حافظه روی ویندوز در ماژول os (اصلاح تابع path_converter()).
bpo-25400: کلاس RobotFileParser اکنون مقادیر پیشفرض را برای crawl_delay و request_rate به درستی برمیگرداند. وصلهی اولیه از Peter Wirtz.
bpo-27932: جلوگیری از نشت حافظه در win32_ver().
اصلاح خطای UnboundLocalError در socket._sendfile_use_sendfile.
bpo-28075: بررسی وجود ERROR_ACCESS_DENIED در پیادهسازی ویندوزی os.stat(). وصله از Eryk Sun.
bpo-22493: پیام هشدار صادرشده با استفاده از پرچمهای درونخطی در وسط عبارت باقاعده اکنون حاوی یک الگوی عبارت باقاعده (کوتاهشده) است. وصله از Tim Graham.
bpo-25270: جلوگیری از ایجاد SystemError توسط codecs.escape_encode() هنگامی که یک بایترشتهی خالی ارسال میشود.
bpo-28181: دریافت antigravity روی HTTPS. وصله از Kaartic Sivaraam.
bpo-25895: فعالسازی طرحوارههای URL در urllib.parse.urljoin. وصله توسط Gergely Imreh و Markus Holtermann.
bpo-28114: رفع یک فروپاشی در parse_envlist() هنگامی که متغیرهای محیطی شامل رشتههای بایتی هستند. وصله توسط Eryk Sun.
bpo-27599: رفع سرریز بافر در binascii.b2a_qp() و binascii.a2b_qp().
bpo-27906: رفع تمام شدن ظرفیت پذیرش سوکت در جریان ترافیک بالای TCP. وصله توسط Kevin Conway.
bpo-28174: مدیریت زمانی که SO_REUSEPORT بهدرستی پشتیبانی نمیشود. وصله توسط Seth Michael Larson.
bpo-26654: بازرسی functools.partial در asyncio.Handle.__repr__. وصله توسط iceboy.
bpo-26909: رفع کندی ورودی/خروجی پایپها در asyncio. وصله توسط INADA Naoki.
bpo-28176: رفع وضعیت رقابتی فراخوانیهای بازگشتی در asyncio.SelectorLoop.sock_connect.
bpo-27759: رفع نگهداری نادرست توصیفگرهای پروندهی نامعتبر توسط selectorها. وصله توسط Mark Williams.
bpo-28325: حذف ماژول منسوخ macurl2path برای مکاواس ۹ و آزمونهای آن.
bpo-28368: اگر ناظر فرزند هیچ حلقهای متصل نداشته باشد، پایش فرایندها رد میشود. وصله از Vincent Michel.
bpo-28369: هنگامی که از FD ترابرد با add_reader، add_writer و غیره استفاده میشود، خطای RuntimeError را بالا بیاورید.
bpo-28370: افزایش سرعت asyncio.StreamReader.readexactly. وصله از Коренберг Марк.
bpo-28371: منسوخ کردن ارسال asyncio.Handles به run_in_executor.
bpo-28372: اصلاح asyncio برای پشتیبانی از قالببندی همروالهای غیرپایتونی.
bpo-28399: حذف سوکت UNIX از FS قبل از اتصال (binding). وصله از Коренберг Марк.
bpo-27972: ممنوع کردن انتظار (await) وظایف روی خودشان.
bpo-24142: خواندن یک پروندهی تنظیمات آسیبدیده، configparser را در وضعیت نامعتبری باقی میگذاشت. وصلهی اصلی از Florian Höch.
bpo-29581: متد ABCMeta.__new__ اکنون
**kwargsرا میپذیرد که به کلاسهای پایه انتزاعی اجازه میدهد از پارامترهای کلیدواژهای در __init_subclass__ استفاده کنند. وصله از Nate Soares.bpo-25532: تابع inspect.unwrap() اکنون تنها به تعداد sys.getrecursionlimit() بار تلاش میکند تا یک شیء را باز کند (unwrap)، تا در برابر اشیایی که در هر دسترسی به ویژگی، شیء جدیدی ایجاد میکنند، محافظت شود.
bpo-30177: متد path.resolve(strict=False) دیگر مسیر را پس از نخستین عنصری که در سامانه فایلبندی وجود ندارد، کوتاه نمیکند. وصله توسط Antoine Pietri.
مستندات¶
bpo-31294: اصلاح قطعهکد ناقص در مثالهای ZeroMQSocketListener و ZeroMQSocketHandler و تطبیق آنها با پایتون ۳.
bpo-21649: افزودن پیوندهای RFC 7525 و TLS سمت سرور Mozilla به مستندات SSL.
bpo-31128: اجازه دادن به سرور pydoc برای مقید کردن به نامهای میزبان دلخواه.
bpo-30803: شفافسازی مستندات مربوط به آزمون ارزش درستی. وصلهی اولیه از Peter Thomassen.
bpo-30176: افزودن ثابتهای مرتبط با ویژگیهای مفقود در مستندات curses.
bpo-30052: هدفهای پیوند برای
bytes()وbytearray()اکنون تعاریف نوع مربوط به خودشان هستند، نه ورودیهای تابع توکار متناظر. از bytes و bytearray برای ارجاع به موارد دوم استفاده کنید. بهمنظور اطمینان از اعمال خودکار این بهروزرسانیهای ارجاع متقابل و موارد آینده، ساخت روزانهی مستندات اکنون ویژگیهای پیشفرض کش خروجی را در Sphinx غیرفعال میکند.bpo-26985: افزودن اطلاعات مفقود شیء کد در مستندات inspect.
bpo-19824: بهبود مستندات و پیوندهای مربوط به رشتههای الگو با تأکید بر کارایی آنها برای بینالمللیسازی و شفافسازی برخی محدودیتهای استفاده. (همچنین ببینید: bpo-20314، bpo-12518)
bpo-28929: پیوند دادن مستندات به پروندهی منبع آن در GitHub.
bpo-25008: مستندسازی smtpd.py به عنوان عملاً منسوخ و افزودن یک اشارهگر به aiosmtpd، یک جایگزین شخص ثالث مبتنی بر asyncio.
bpo-26355: افزودن پیوند سرآیند کانونیکال در هر صفحه به نسخهی اصلی متناظر از مستندات. وصله توسط Matthias Bussonnier.
bpo-29349: اصلاح نحو پایتون ۲ در کد مربوط به ساخت مستندات.
bpo-23722: مرجع مدل داده و بخش انتقال در راهنمای «چه چیزی جدید است» نسخهی ۳.۶ اکنون مدیریت اضافهی
__classcell__مورد نیاز برای فراکلاسهای سفارشی را جهت پشتیبانی کامل از PEP 487 وsuper()بدون آرگومان پوشش میدهد.bpo-28513: مستندسازی رابط خط فرمان zipfile.
آزمونها¶
bpo-29639: متغیر test.support.HOST اکنون "localhost" است، یک ثابت جدید HOSTv4 برای نیازهای
127.0.0.1شما افزوده شده است، مشابه ثابت موجود HOSTv6.bpo-31320: بیصدا کردن ردگیری در test_ssl
bpo-31346: ترجیح دادن پروتکلهای PROTOCOL_TLS_CLIENT و PROTOCOL_TLS_SERVER برای SSLContext.
bpo-25674: حذف آزمون ssl مربوط به sha256.tbs-internet.com
bpo-30715: رسیدگی به تغییرات فراخوانی بازگشتی ALPN برای OpenSSL 1.1.0f. آخرین نسخه مانند OpenSSL 1.0.2 عمل میکند و دیگر دستدهی را متوقف نمیکند.
bpo-30822: ابزار regrtest: حذف tzdata از regrtest --all. هنگام اجرای مجموعهآزمون با استفاده از --use=all / -u all، دادههای tzdata را مستثنا کنید زیرا باعث کند شدن بیش از حد test_datetime میشود (۱۵ تا ۲۰ دقیقه روی برخی از سامانههای ساخت) که در نتیجه روی برخی از سامانههای ساخت باعث انقضای زمان (timeout) میشود. همچنین تحلیلگر خط فرمان regrtest را اصلاح کنید تا امکان ارسال -u extralargefile برای اجرای test_zipfile64 فراهم شود.
bpo-30695: توابع
set_nomemory(start, stop)وremove_mem_hooks()را به ماژول_testcapiاضافه کنید.bpo-30357: بخش test_thread: تابع setUp() اکنون از support.threading_setup() و support.threading_cleanup() استفاده میکند تا برای جلوگیری از اثرات جانبی تصادفی روی آزمونهای بعدی، تا زمان تکمیل نخها صبر کند. وصلهی اولیه توسط Grzegorz Grzywacz نوشته شده است.
bpo-30197: توابع بهبودیافتهی swap_attr() و swap_item() در ماژول test.support. آنها اکنون زمانی که صفت یا آیتم جایگزینشده را در داخل دستور with حذف میکنید، کار میکنند. مقدار قبلی صفت یا آیتم (یا None اگر وجود نداشته باشد) اکنون به هدف بند "as" (در صورت وجود) اختصاص داده خواهد شد.
bpo-24932: استفاده از تحلیل درست خط فرمان در _testembed
bpo-28950: عدم اجازه برای ترکیب -j0 با -T/-l در آرگومانهای خط فرمان regrtest.
bpo-28683: اصلاح آزمونهایی که یک سوکت unix را bind() میکنند و خطای PermissionError را در اندروید برای یک کاربر غیر root ایجاد میکنند.
bpo-26936: اصلاح خطاهای test_socket در اندروید - توابع getservbyname()، getservbyport() و getaddrinfo() در برخی از سطوح API اندروید خراب هستند.
bpo-28666: اکنون test.support.rmtree قادر است دایرکتوریهای غیرقابلنوشتن یا غیرقابلخواندن را حذف کند.
bpo-23839: نهانگاههای مختلف اکنون قبل از اجرای هر پروندهی آزمونی پاکسازی میشوند.
bpo-26944: رفع مشکل test_posix در اندروید که در آن دستور 'id -G' کاملاً اشتباه است یا شناسه گروه مؤثر (gid) را ندارد.
bpo-28409: ابزار regrtest: اصلاح تحلیلگر آرگومانهای خط فرمان.
bpo-28217: افزودن ماژول _testconsole برای آزمون ورودی کنسول.
bpo-26939: افزودن تابع support.setswitchinterval() برای رفع مشکل معلق ماندن test_functools در شبیهساز qemu اندروید با معماری armv7.
ساخت¶
bpo-31354: امکان استفاده از
--with-ltoدر تمام ساختها، نه فقطmake profile-opt.bpo-31370: حذف پشتیبانی از ساخت با --without-threads. این گزینه دیگر در قرن بیست و یکم چندان مفید نیست. حذف مسیرهای شرطی فراوان به ما اجازه میدهد تا پایگاه کد را سادهسازی کنیم، از جمله کدهای سطح پایین داخلی که نگهداری آنها دشوار است.
bpo-30854: رفع خطای کامپایل هنگام کامپایل کردن با --without-threads. وصله توسط Masayuki Yamamoto.
bpo-30687: پیدا کردن msbuild.exe در ویندوز هنگام ساخت به جای استفاده از vcvarsall.bat
bpo-20210: پشتیبانی از نشانگر disabled در پروندههای Setup. ماژولهای توسعهای فهرستشده پس از این نشانگر اصلاً ساخته نمیشوند، نه توسط Makefile و نه توسط setup.py.
bpo-29941: افزودن پرچم پیکربندی
--with-assertionsبرای فعالسازی صریح بررسیهایassert()در زبان C. حالت پیشفرض غیرفعال است. گزینهی--with-pydebugبه معنای استفاده از--with-assertionsاست.bpo-28787: رفع مشکل ساختهای خارج از درخت (out-of-tree) پایتون هنگامی که با
--with--dtraceپیکربندی شده است.bpo-29243: جلوگیری از ساخت مجدد غیرضروری پایتون در هنگام اجرای دستورات
make test،make installو برخی هدفهای دیگر make زمانی که با--enable-optimizationsپیکربندی شده است.bpo-23404: دیگر پروندههای تولیدشده بر اساس زمان تغییر پرونده بازتولید نمیشوند: این کنش اکنون به صورت صریح انجام میشود. جایگزینی
make touchباmake regen-all.bpo-29643: رفع مشکلی که در آن
--enable-optimizationکار نمیکرد.bpo-27593: ماژولهای sys.version و platform و توابع python_build()، python_branch() و python_revision() اکنون هنگام ساخت از یک مخزن، به جای hg از اطلاعات git استفاده میکنند.
bpo-29572: بهروزرسانی ساخت ویندوز و نصبکنندههای OS X برای استفاده از OpenSSL 1.0.2k.
bpo-27659: ممنوعیت اعلانهای ضمنی توابع C: در صورت امکان از
-Werror=implicit-function-declarationاستفاده کنید (GCC و Clang، اما بستگی به نسخهی کامپایلر دارد). وصله نوشته شده توسط Chi Hsuan Yen.bpo-29384: حذف اسکریپتهای کمکی قدیمی Be OS.
bpo-26851: تنظیم پرچمهای کامپایل و پیوند اندروید.
bpo-28768: رفع اعلان ضمنی تابع _setmode. وصله توسط Masayuki Yamamoto
bpo-29080: حذف وابستگی سخت به hg.exe از PCBuild/build.bat
bpo-23903: افزودن نامهای جاافتاده به PC/python3.def.
bpo-28762: تابع lockf() در سطح API شماره 24 اندروید در دسترس است، اما ماکرو F_LOCK در android-ndk-r13 تعریف نشده است.
bpo-28538: رفع خطای کامپایلی که به این دلیل رخ میدهد که تابع if_nameindex() در سطح API شماره 24 اندروید در دسترس است، اما ساختار if_nameindex تعریف نشده است.
bpo-20211: پوشهی مربوط به نصب پروندههای سرآیند C و پوشهی مربوط به نصب کتابخانههای کد شیء را به مسیرهای جستجوی کامپایل متقاطع (cross compilation) اضافه نکنید. وصلهی اصلی توسط Thomas Petazzoni.
bpo-28849: عدم تعریف sys.implementation._multiarch روی اندروید.
bpo-10656: رفع ساخت خارج از درخت (out-of-tree) روی AIX. وصله توسط Tristan Carel و Michael Haubenwallner.
bpo-26359: تغییر نام --with-optimiations به --enable-optimizations.
bpo-28444: رفع ماژولهای افزونهی گمشده هنگام کامپایل متقاطع.
bpo-28208: بهروزرسانی ساخت ویندوز و نصبکنندههای OS X برای استفاده از SQLite نسخه 3.14.2.
bpo-28248: بهروزرسانی ساخت ویندوز و نصبکنندههای OS X برای استفاده از OpenSSL نسخه 1.0.2j.
bpo-21124: رفع مشکل ساخت ماژول _struct روی Cygwin با ارسال
NULLبهجای&PyType_Typeبه PyVarObject_HEAD_INIT. وصلهای از Masayuki Yamamoto.bpo-13756: رفع مشکل ساخت ماژولهای افزونه روی Cygwin. وصلهای از Roumen Petrov، بر اساس وصلهی اصلی از Jason Tishler.
bpo-21085: افزودن بررسی configure برای siginfo_t.si_band که Cygwin آن را فراهم نمیکند. وصلهای از Masayuki Yamamoto با بررسی و بازپایه (rebase) از Erik Bray.
bpo-28258: رفع مشکل ساخت با locale استونیایی (هدفهای python-config و distclean در Makefile). وصلهای از Arfrever Frehtes Taifersar Arahesis.
bpo-26661: ماژول setup.py اکنون libffi سیستمی را با پوشش multiarch شناسایی میکند.
bpo-27979: نسخهی کاملی از libffi دیگر برای استفاده هنگام ساخت _ctypes روی پلتفرمهای UNIX غیر از OSX بهصورت بستهبندیشده ارائه نمیشود. اکنون هنگام ساخت _ctypes روی چنین پلتفرمهایی، وجود نسخهی نصبشدهای از libffi الزامی است.
bpo-15819: حذف گزینهی پوشهی جستجوی شامل (include) تکراری برای ساخت در خارج از درخت منبع.
bpo-28676: جلوگیری از هشدار کمبود اعلام 'getentropy' روی مکاواس. وصلهای از Gareth Rees.
Windows¶
bpo-31392: بهروزرسانی ساخت ویندوز برای استفاده از OpenSSL نسخه 1.1.0f
bpo-30389: افزودن قابلیت تشخیص Visual Studio 2017 به distutils روی ویندوز.
bpo-31358: کتابخانهی zlib دیگر بهصورت بستهبندیشده در منبع سیپایتون قرار ندارد، بلکه درست مانند bz2، lzma، OpenSSL، Tcl/Tk و SQLite بر حسب تقاضا بارگیری میشود.
bpo-31340: تغییر فرآیند ساخت به استفاده از MSVC نسخه v141 (همراه با Visual Studio 2017)
bpo-30581: تابع os.cpu_count() اکنون هنگامی که تعداد پردازندههای منطقی بیشتر از ۶۴ است، تعداد صحیح پردازندهها را روی ویندوز برمیگرداند.
bpo-30916: ساخت پیشهنگام (Pre-build) کتابخانههای OpenSSL، Tcl و Tk و گنجاندن فایلهای دودویی در ساخت.
bpo-30731: افزودن یک xmlns گمشده به python.manifest بهطوریکه با طرحواره (schema) مطابقت داشته باشد.
bpo-30291: امکان درخواست مفسرهای ۶۴ بیتی از py.exe با استفاده از پسوند 64-. مشارکتکننده: Steve (Gadget) Barnes.
bpo-30362: افزودن گزینههای فهرست (0-, 0p-) به راهانداز py.exe. مشارکتکننده: Steve Barnes.
bpo-23451: رفع هشدارهای منسوخسازی socket در socketmodule.c. وصلهای از Segev Finer.
bpo-30450: فرایند ساخت در ویندوز دیگر به Subversion وابستگی ندارد و در عوض کدهای خارجی را از طریق یک اسکریپت پایتون از GitHub دریافت میکند. اگر پایتون ۳.۶ روی سیستم پیدا نشود (از طریق
py -3.6)، از NuGet برای دانلود نسخهای از پایتون ۳۲ بیتی استفاده میشود.bpo-29579: حذف پروندهی readme.txt از نصبکننده.
bpo-25778: ماژول winreg رشته را به شکل صحیح کوتاه نمیکند (ارائهی وصل توسط Eryk Sun)
bpo-28896: منسوخ کردن WindowsRegistryFinder و غیرفعال کردن پیشفرض آن
bpo-28522: اصلاح تخصیص مجدد بافر که به درستی مدیریت نشده بود در getpathp.c
bpo-28402: افزودن پروندههای کاتالوگ امضاشده برای کتابخانه استاندارد در ویندوز.
bpo-28333: فعالسازی یونیکد برای اعلانات ps1/ps2 و input(). (ارائهی وصل توسط Eryk Sun)
bpo-28251: بهبود راهنماهای کمکی در ویندوز.
bpo-28110: پروندهی launcher.msi کدهای محصول متفاوتی بین نسخههای ۳۲ بیتی و ۶۴ بیتی دارد
bpo-28161: باز کردن CON برای دسترسی نوشتن با شکست مواجه میشود
bpo-28162: تابع readall() در WindowsConsoleIO اگر با سطر اول با Ctrl+Z شروع شود با شکست مواجه میشود
bpo-28163: تابع fileno() در WindowsConsoleIO پرچمهای اشتباهی را به _open_osfhandle ارسال میکند
bpo-28164: تابع _PyIO_get_console_type برای مسیرهای مختلف با شکست مواجه میشود
bpo-28137: تغییر نام پروندهی مسیر ویندوز به ._pth
bpo-28138: پروندهی ._pth در ویندوز باید اجازهی ایمپورت site را بدهد
IDLE¶
bpo-31493: زمینهی کد IDLE -- اصلاح بهروزرسانی کد و تایمرهای بهروزرسانی فونت. لغو تایمرها از بروز پیام هشدار هنگام اتمام test_idle جلوگیری میکند.
bpo-31488: ابزار IDLE - بهروزرسانی گزینههای غیرکلیدی در کلاسهای افزونهی سابق. هنگام اعمال تغییرات configdialog، تابع .reload را برای هر کلاس قابلیت فراخوانی کنید. ParenMatch را تغییر دهید تا گزینههای بهروزرسانیشده روی نمونههای موجود متصل به پنجرههای ویرایشگر موجود تأثیر بگذارند.
bpo-31477: ابزار IDLE - بهبود ورودی rstrip در مستندات. حذف فضای خالی انتهایی، بیش از فضاهای خالی را حذف میکند. مقادیر لفظی رشتهای چندخطی رد نمیشوند.
bpo-31480: ابزار IDLE - امکان موفقیت آزمونها در صورتی که افزونهی zzdummy بهطور پیشفرض غیرفعال باشد.
bpo-31421: مستندسازی نحوهی اجرای برنامههای tkinter توسط IDLE. ابزار IDLE برای اینکه تعامل و آزمایش زنده با برنامههای tkinter را بسیار آسانتر کند، بهروزرسانی tcl/tk را در پسزمینه فراخوانی میکند.
bpo-31414: ابزار IDLE -- اصلاح آزمونهای جعبهی ورودی tk با حذف کردن اولی. افزودن به یک ورودی عدد صحیح (int) با حذف و درج کردن یکسان نیست؛ زیرا عبارت
int('')با شکست مواجه خواهد شد.bpo-31051: مرتبسازی مجدد GenPage در تنظیمات گفتگوی (configdialog) ابزار IDLE به بخشهای Window، Editor و Help.
bpo-30617: ابزار IDLE - افزودن رشتههای مستند (docstrings) و آزمونها برای زیرکلاس outwin مربوط به ویرایشگر. انتقال برخی دادهها و تابعها از کلاس به سطح ماژول. وصله (patch) از Cheryl Sabella.
bpo-31287: ابزار IDLE - عدم تغییر tkinter.message در test_configdialog.
bpo-27099: تبدیل «افزونههای» توکار (built-in) ابزار IDLE به ویژگیهای معمولی. حدود ۱۰ ویژگی ابزار IDLE ظاهراً به عنوان افزونههای اختیاری پیادهسازی شده بودند. رفتار متفاوت آنها میتواند برای کاربران گیجکننده یا بدتر باشد و برای نگهداری مناسب نیست. از این رو این تبدیل انجام شد. تفاوت اصلی برای کاربران این است که کلیدهای میانبر قابل تنظیم توسط کاربر برای ویژگیهای توکار اکنون به طور یکنواخت مدیریت میشوند. اکنون، ویرایش یک کلید میانبر در یک مجموعهکلید، فقط بر مقدار آن در همان مجموعهکلید تأثیر میگذارد. تمام کلیدهای میانبر با هم در مجموعهکلیدهای پیشفرض مخصوص سیستم در config-extensions.def تعریف میشوند. تمام مجموعهکلیدهای سفارشی به صورت یکجا در config-extension.cfg ذخیره میشوند. همه به محض کلیک روی Apply یا Ok اثر میگذارند. رویدادهای تحت تأثیر عبارتند از: '<<force-open-completions>>'، '<<expand-word>>'، '<<force-open-calltip>>'، '<<flash-paren>>'، '<<format-paragraph>>'، '<<run-module>>'، '<<check-module>>' و '<<zoom-height>>'. هرگونه سفارشیسازی (سراسری) انجامشده قبل از نسخهی 3.6.3 بر سفارشیسازی مخصوص مجموعهکلید پس از نسخهی 3.6.3 تأثیری نخواهد گذاشت و بالعکس. وصلهی اولیه از Charles Wohlganger.
bpo-31206: ابزار IDLE: استخراج کلاس HighPage(Frame) از ConfigDialog. وصله (patch) از Cheryl Sabella.
bpo-31001: افزودن آزمونها برای زبانهی برجستهسازی (highlight) در configdialog. وصله (patch) از Cheryl Sabella.
bpo-31205: ابزار IDLE: استخراج کلاس KeysPage(Frame) از ConfigDialog. آزمونهای کمی تغییریافته همچنان با موفقیت اجرا میشوند. وصله (patch) از Cheryl Sabella.
bpo-31130: ابزار IDLE -- متوقف کردن نشتها در test_configdialog. وصلهی اولیه از Victor Stinner.
bpo-31002: افزودن آزمونها برای زبانهی کلیدهای configdialog. وصله (patch) از Cheryl Sabella.
bpo-19903: محیط IDLE: راهنماهای فراخوانی بهجای
inspect.getfullargspecازinspect.signatureاستفاده میکنند. این کار باعث بهبود راهنماهای فراخوانی برای توابع توکار تبدیلشده با Argument Clinic میشود. وصلهای از Louie Lu.bpo-31083: ابزار IDLE - افزودن ساختار کلی یک کلاس TabPage در configdialog. بهروزرسانی کلاسهای موجود برای تطابق با این ساختار. وصلهی اولیه از Cheryl Sabella.
bpo-31050: استخراج کلاس GenPage(Frame) از ConfigDialog. آزمونهای کمی تغییریافته همچنان با موفقیت اجرا میشوند. وصله (patch) از Cheryl Sabella.
bpo-31004: ابزار IDLE - استخراج کلاس FontPage(Frame) از ConfigDialog. آزمونهای کمی تغییریافته همچنان با موفقیت اجرا میشوند. اصلاح آزمونهای General. وصله بیشتر از Cheryl Sabella.
bpo-30781: ابزار IDLE - استفاده از ابزارکهای ttk در ConfigDialog. وصلهها (patches) از Terry Jan Reedy و Cheryl Sabella.
bpo-31060: ابزار IDLE - پایان مرتبسازی مجدد متدهای ConfigDialog. گروهبندی متدهای مربوط به هر زبانه و دکمهها به نوشتن آزمونها و بهبود زبانهها کمک میکند و امکان تقسیم گروهها به کلاسها را فراهم میسازد.
bpo-30853: ابزار IDLE -- استخراج کلاس VarTrace از ConfigDialog. ردیابهای نمونه، جفتهای متشکل از یک متغیر tk و یک تابع کالبک (callback) را مدیریت میکنند. هنگامی که ردیابی روشن است، تنظیم متغیر، تابع را فراخوانی میکند. پوشش آزمون برای کلاس جدید ۱۰۰٪ است.
bpo-31003: ابزار IDLE: افزودن آزمونهای بیشتر برای زبانهی General.
bpo-30993: ابزار IDLE - بهبود زبانهی فونت در configdialog و آزمونهای آن. در configdialog: مستندسازی مسیرهای علیّت در رشته مستند (docstring) تابع
create_font_tab. سادهسازی برخی نامهای ویژگیها. انتقال فراخوانیهایset_samplesبهvar_changed_font(ایده از Cheryl Sabella). انتقال توابع مرتبط به موقعیتهای پس از تابع ایجاد ابزارکها. در test_configdialog: اصلاحtest_font_setبهطوریکه به ترتیب وابسته نباشد. اصلاحtest_indent_scaleتغییرنامیافته بهطوریکه ابزارک را آزمایش کند. تنظیم آزمونها برای جابجایی فراخوانیset_samples. افزودن آزمونها برای توابع بارگذاری (load). قرار دادن تمام آزمونهای فونت در یک کلاس و آزمونهای تورفتگی زبانه در کلاسی دیگر. به جز دو سطر، این آزمونها توابع مرتبط را به طور کامل پوشش میدهند.bpo-30981: ابزار IDLE -- افزودن آزمونهای بیشتر برای زبانهی فونت در configdialog.
bpo-28523: بخش IDLE: جایگزینی «colour» با «color» در configdialog.
bpo-30917: افزودن آزمونها برای idlelib.config.IdleConf. افزایش پوشش از ۴۶٪ به ۹۶٪. وصله توسط Louie Lu.
bpo-30934: مستندسازی جزئیات پوشش برای آزمونهای idlelib. افزودن بخش به idlelib/idle-test/README.txt. گنجاندن بررسی اینکه شاخهها در هر دو جهت پوشش داده میشوند. مستثنی کردن کد خاص IDLE که در طول آزمونهای واحد اجرا نمیشود.
bpo-30913: بخش IDLE: مستندسازی متدها، متغیرهای tk و ابزارکهای ConfigDialog در رشتههای مستند (docstrings). این کار بهبود محاوره و تقسیم کلاس را تسهیل میکند. وصلهی اولیه توسط Cheryl Sabella.
bpo-30899: بخش IDLE: افزودن آزمونها برای زیرکلاسهای ConfigParser در config. وصله توسط Louie Lu.
bpo-30881: بخش IDLE: افزودن رشتههای مستند (docstrings) به browser.py. وصله توسط Cheryl Sabella.
bpo-30851: بخش IDLE: حذف متغیرهای استفادهنشده در configdialog. یکی تکراری است، دیگری تنظیم شده اما کاربران نمیتوانند آن را تغییر دهند. وصله توسط Cheryl Sabella.
bpo-30870: بخش IDLE: در محاورهی تنظیمات، انتخاب قلم با کلیدهای بالا و پایین و همچنین ماوس. وصلهی اولیه توسط Louie Lu.
bpo-8231: بخش IDLE: فراخوانی config.IdleConf.GetUserCfgDir فقط یک بار.
bpo-30779: بخش IDLE: جدا کردن کلاس ConfigChanges از configdialog و گذاشتن آن در config؛ آزمون. * در config، گذاشتن کد آزمون برونریزی در یک تابع؛ اجرای آن و unittest در 'if __name__ == '__main__'. * افزودن کلاس config.ConfigChanges بر اساس changes_class_v4.py در مسألهی bpo. * افزودن کلاس test_config.ChangesTest، تا حدی با استفاده از configdialog_tests_v1.py. * بازنگری configdialog برای استفاده از ConfigChanges؛ به پیام ردیاب msg297804 مراجعه کنید. * بازنگری test_configdialog برای تطبیق با تغییرات configdialog. * حذف توابع configdialog که استفاده نشدهاند یا به ConfigChanges منتقل شدهاند. Cheryl Sabella بخشهایی از وصله را مشارکت داده است.
bpo-30777: بخش IDLE: محاورهی پیکربندی (configdialog) - افزودن رشتههای مستند (docstrings) و رفع کامنتها. وصله توسط Cheryl Sabella.
bpo-30495: بخش IDLE: بهبود textview با رشتههای مستند (docstrings)، نامهای PEP8 و آزمونهای بیشتر. وصله توسط Cheryl Sabella.
bpo-30723: بخش IDLE: انجام چند بهبود در parenmatch. افزودن سبک 'parens' برای برجستهسازی همزمان آغازگر و پایانگر. تبدیل سبک 'default' (که پیشفرض نیست) به مترادفی برای 'opener'. یکسانسازی نحوهی کارکرد تاخیر زمانی با تمام سبکها. افزودن راهنما برای زبانهی افزونههای محاورهی پیکربندی، شامل راهنما برای parenmatch. افزودن آزمونهای جدید. وصلهی اولیه توسط Charles Wohlganger.
bpo-30674: بخش IDLE: افزودن رشتههای مستند (docstrings) به ماژول grep. وصله توسط Cheryl Sabella
bpo-21519: محاورهی ورود کلید سفارشی پایهی IDLE اکنون موارد تکراری را بهرانستی شناسایی میکند. وصلهی اولیه توسط Saimadhav Heblikar.
bpo-29910: IDLE دیگر پس از کامنت کردن یک ناحیه با میانبر صفحه کلید، یک کاراکتر را حذف نمیکند. افزودن
return 'break'برای این مورد و سایر تضادهای احتمالی بین IDLE و کلیدهای میانبر پیشفرض.bpo-30728: بررسی و تغییر نامهای idlelib.configdialog. کوچک کردن نامهای متد و ویژگی. جایگزینی «colour» با «color»، گسترش نامهای بیش از حد مبهم، حذف زیرخطهای غیرضروری. جایگزینی
import *با ایمپورتهای مشخص. وصلهها توسط Cheryl Sabella.bpo-6739: بخش IDLE: بررسی دنبالههای کلید واردشده توسط کاربر با تلاش برای مقید کردن آنها با tk. افزودن آزمونها برای هر ۳ تابع اعتبارسنجی. وصلهی اولیه توسط G Polo. آزمونها توسط Cheryl Sabella افزوده شدند.
bpo-15786: رفع چندین مشکل در کادر تکمیل خودکار IDLE. موارد زیر اکنون باید کار کنند: کلیک کردن روی آیتمهای کادر انتخاب؛ استفاده از نوار پیمایش؛ انتخاب یک آیتم با فشردن Return. وقفهها (Hangs) در MacOSX دیگر نباید رخ دهند. وصله توسط Louie Lu.
bpo-25514: افزودن زیربخش مستندات دربارهی شکست IDLE در شروع به کار. پیام پاپآپ عدم اتصال، کاربران را به این بخش هدایت میکند.
bpo-30642: رفع نشت ارجاع در آزمونهای IDLE. وصلهها توسط Louie Lu و Terry Jan Reedy.
bpo-30495: افزودن رشتههای مستند برای textview.py و استفاده از نامهای PEP 8. وصلهها توسط Cheryl Sabella و Terry Jan Reedy.
bpo-30290: بخش Help-about: استفاده از نامهای pep8 و افزودن آزمونها. افزایش پوشش کد به ۱۰۰٪. وصلهها توسط Louie Lu، Cheryl Sabella و Terry Jan Reedy.
bpo-30303: افزودن گزینهی _utest به textview؛ افزودن آزمونهای جدید. افزایش پوشش کد به ۱۰۰٪. وصلهها توسط Louie Lu و Terry Jan Reedy.
bpo-29071: ایدل (IDLE) پیشوندهای افاسترینگ را رنگی میکند (اما پیشوندهای نامعتبر ur را رنگی نمیکند).
bpo-28572: افزودن ۱۰٪ به پوشش آزمون آزمون test_configdialog در IDLE. بهروزرسانی و گسترش توضیحات مربوط به سیستم پیکربندی.
Tools/Demos¶
bpo-30983: دستورات یکپارچهسازی gdb (مانند py-bt و غیره) اکنون روی ساختهای مشترک بهینهسازیشده نیز کار میکنند. PEP 523 تابع _PyEval_EvalFrameDefault را معرفی کرد که PyEval_EvalFrameEx را روی ساختهای مشترک غیردیباگ به صورت درونخطی (inline) درمیآورد. این امر قابلیت استفاده از py-bt، py-up و چند یکپارچهسازی دیگر gdb مختص پایتون را مختل کرده بود. این مشکل با جستجوی فقط فریمهای _PyEval_EvalFrameDefault در python-gdb.py برطرف شد. وصلهی اصلی توسط Bruno "Polaco" Penteado.
bpo-29748: مبدل اندیس اسلایس به Argument Clinic اضافه شد.
bpo-24037: ابزار Argument Clinic اکنون بهجای
intبرای مقادیر بولی معنایی، از مبدلbool(accept={int})استفاده میکند. این کار از تکرار مقدار پیشفرض برای پایتون و C جلوگیری میکند و در آینده به تبدیل بهboolکمک خواهد کرد.bpo-29367: اسکریپت python-gdb.py اکنون از اشیای
method-wrapper(wrapperobject) نیز پشتیبانی میکند.bpo-28023: رفع مشکلی که در آن python-gdb.py از پیادهسازی جدید دیکشنری پشتیبانی نمیکرد.
bpo-15369: ریزبنچمارکهای pybench و pystone از پوشهی Tools حذف شدند. لطفاً از مجموعهی بنچمارک جدید پایتون https://github.com/python/pyperformance استفاده کنید که قابلاعتمادتر است و شامل نسخهی قابلحملی از pybench میشود که روی پایتون ۲ و پایتون ۳ کار میکند.
bpo-28102: رابط خط فرمان ماژول zipfile اکنون راهنما را در stderr چاپ میکند. اصلاحشده توسط Stephen J. Turnbull.
رابط C API¶
bpo-31338: ماکروی
Py_UNREACHABLE()برای مسیرهای کدی که انتظار نمیرود هرگز به آنها رسیده شود، اضافه شد. این ماکرو و چند ماکروی مفید دیگر اکنون در راهنمای C API مستند شدهاند.bpo-30832: پیادهسازی شخصی برای ذخیرهسازی نخمحلی حذف شد. سیپایتون پیادهسازی شخصی خود را برای ذخیرهسازی نخمحلی (TLS) در Python/thread.c فراهم کرده بود و در مواردی استفاده میشد که پلتفرمی TLS بومی ارائه نکرده باشد. با این حال، در حال حاضر تمامی پلتفرمهای پشتیبانیشده (Windows و pthreads) TLS بومی را فراهم کرده و ماکروی Py_HAVE_NATIVE_TLS را در هر صورت بهطور غیرشرطی تعریف کردهاند.
bpo-30708: تابع PyUnicode_AsWideCharString() اکنون اگر آرگومان دوم NULL باشد و رشتهی wchar_t* شامل نویسههای تهی باشد، یک ValueError بالا میآورد.
bpo-16500: تابع PyOS_AfterFork() را منسوخ کرده و PyOS_BeforeFork()، PyOS_AfterFork_Parent() و PyOS_AfterFork_Child() را اضافه کنید.
bpo-6532: نوع مقادیر PyThread_start_new_thread() و PyThread_get_thread_ident()، و پارامتر id تابع PyThreadState_SetAsyncExc() از "long" به "unsigned long" تغییر یافت.
bpo-27867: تابع PySlice_GetIndicesEx() منسوخ شده است و اگر Py_LIMITED_API تنظیم نشده باشد یا روی مقداری بین 0x03050400 و 0x03060000 (شاملنشده) یا 0x03060100 یا بالاتر تنظیم شده باشد، با یک ماکرو جایگزین میشود. توابع PySlice_Unpack() و PySlice_AdjustIndices() اضافه شدند.
bpo-29083: اعلان برخی توابع عمومی API اصلاح شد. توابع PyArg_VaParse() و PyArg_VaParseTupleAndKeywords() در API محدود در دسترس نبودند. توابع PyArg_ValidateKeywordArguments()، PyArg_UnpackTuple() و Py_BuildValue() در API محدود نسخهی < 3.3 زمانی که PY_SSIZE_T_CLEAN تعریف شده باشد، در دسترس نبودند.
bpo-28769: نتیجهی PyUnicode_AsUTF8AndSize() و PyUnicode_AsUTF8() اکنون از نوع
const char *است تاchar *.bpo-29058: تمام افزونههای API پایدار اضافه شده پس از پایتون 3.2 اکنون تنها زمانی در دسترس هستند که Py_LIMITED_API روی مقدار PY_VERSION_HEX از حداقل نسخهی پایتون که از این API پشتیبانی میکند، تنظیم شده باشد.
bpo-28822: پارامترهای اندیس start و end در تابع PyUnicode_FindChar() اکنون طوری تنظیم شدهاند که مانند
str[start:end]رفتار کنند.bpo-28808: تابع PyUnicode_CompareWithASCIIString() اکنون هرگز استثنایی بالا نمیآورد.
bpo-28761: فیلدهای name و doc در ساختارهای PyMemberDef، PyGetSetDef، PyStructSequence_Field، PyStructSequence_Desc و wrapperbase اکنون از نوع
const char *به جایchar *هستند.bpo-28748: متغیر خصوصی _Py_PackageContext اکنون از نوع
const char *به جایchar *است.bpo-19569: اخطارهای کامپایلر اکنون در صورت استفاده از اکثر توابع منسوخ صادر میشوند.
bpo-28426: توابع منسوخ مستندنشدهی PyUnicode_AsEncodedObject()، PyUnicode_AsDecodedObject()، PyUnicode_AsDecodedUnicode() و PyUnicode_AsEncodedUnicode().
نسخهی نهایی پایتون 3.6.6¶
تاریخ انتشار: ۲۰۱۸-۰۶-۲۷
هیچ تغییر جدیدی در نسخهی 3.6.6 وجود نداشت.
نامزد انتشار ۱ پایتون 3.6.6¶
تاریخ انتشار: 2018-06-11
هسته و توکارها (Core and Builtins)¶
bpo-33786: اصلاح تولیدگرهای ناهمگام برای مدیریت درست GeneratorExit در athrow()
bpo-30654: اصلاح بازنشانی هندلر SIGINT به SIG_DFL هنگام خاموش شدن مفسر حتی زمانی که قبلاً یک هندلر سفارشی تنظیم شده بود. وصله توسط فیلیپ کرلینگ (Philipp Kerling).
bpo-33622: اصلاح یک نشتی زمانی که جمعآور زباله در افزودن شیءای با متد
__del__یا ارجاعدادهشده توسط آن به فهرستgc.garbageناموفق است. اکنون میتوانPyGC_Collect()را زمانی که یک استثنا تنظیم شده است فراخوانی کرد و آن را حفظ نمود.bpo-31849: اصلاح هشدار مقایسهی علامتدار/بیعلامت در pyhash.c.
bpo-33391: اصلاح یک نشتی در set_symmetric_difference().
bpo-28055: اصلاح دسترسیهای ناهمراز در siphash24(). وصله توسط رولف ایکه بیر (Rolf Eike Beer).
bpo-33231: رفع نشت حافظهی احتمالی در
normalizestring().bpo-29922: بهبود پیامهای خطا در 'async with' زمانی که
__aenter__()یا__aexit__()یک شیء (object) غیرانتظارپذیر (non-awaitable) برمیگردانند.bpo-33199: رفع این مشکل که
ma_version_tagدر پیادهسازی dict هنگام کپیبرداری از یک dict با کلیدهای اشتراکی مقداردهی اولیه نمیشود.bpo-33041: رفع پرش هنگامی که تابع حاوی یک حلقه
async forاست.bpo-32282: رفع یک ifdef غیرضروری در واردسازی VersionHelpers.h در ماژول socket روی ویندوز.
bpo-21983: فروپاشی (crash) در
ctypes.cast()را در حالتی که آرگومان نوع داده، یک نوع دادهی ساختاریافتهی ctypes باشد، اصلاح میکند. وصلهای از Eryk Sun و Oren Milman.
کتابخانه¶
bpo-30167: جلوگیری از بروز استثنا در site.main() اگر متغیر PYTHONSTARTUP تنظیم شده باشد. وصل توسط Steve Weber.
bpo-33812: نمونهی تاریخساعت d با tzinfo غیر از None، اما با d.tzinfo.utcoffset(d) که None برمیگرداند، اکنون توسط متد astimezone() به عنوان ساده (naive) در نظر گرفته میشود.
bpo-30805: جلوگیری از شرایط رقابت (race condition) در گزارشگیری اشکالزدایی
bpo-33767: عملیات دنبالهای الحاق (
+) و تکرار (*) اکنون هنگام اجرا روی اشیایmmap.mmapبه جایSystemErrorخطایTypeErrorرا بالا میآورند. وصله توسط Zackery Spytz.bpo-32684: اصلاح gather برای انتقال دادن لغو خودش حتی در صورت وجود return_exceptions.
bpo-33674: رفع مشکل شرایط رقابت (race condition) در SSLProtocol.connection_made() متعلق به asyncio.sslproto: به جای استفاده از call_soon()، فرآیند دستدهی (handshake) را بلافاصله آغاز کنید. پیشتر، ممکن بود تابع data_received() قبل از آغاز دستدهی فراخوانی شود که باعث معلق ماندن یا شکست خوردن دستدهی میشد.
bpo-31647: رفع باگی که در آن فراخوانی write_eof() روی یک شیء _SelectorSocketTransport پس از بسته شدن آن، خطای AttributeError ایجاد میکرد.
bpo-33672: رفع خرابی Task.__repr__ با همروالهای نادرست Cython
bpo-33469: رفع خطای RuntimeError پس از بستن حلقهای که از run_in_executor استفاده میکرد
bpo-11874: استفاده از عبارت با قاعدهی (regex) بهتر هنگام شکستن بخشهای مربوط به نحوهی استفاده به قسمتهای قابلشکستن. از خطاهای ادعای نادرست ناشی از رشتههای metavar سفارشی جلوگیری میکند.
bpo-30877: یک باگ در پیادهسازی پایتونی رمزگشای JSON برطرف شد که مانع از پاکسازی نهانگاه (cache) رشتههای تحلیلشده پس از پایان رمزگشایی میشد. براساس وچی از c-fos.
bpo-33548: tempfile._candidate_tempdir_list باید مکانهای رایج TEMP را در نظر بگیرد
bpo-33542: جلوگیری از استفاده
uuid.get_nodeاز DUID به جای MAC در ویندوز. وچی از Zvi Effronbpo-26819: رفع شرایط رقابت (race condition) با
ReadTransport.resume_readingدر حلقهی رویداد proactor ویندوز.bpo-28556: اصلاحات جزئی در ماژول typing: افزودن حاشیهنویسیها به
NamedTuple.__new__، ارسال*argsو**kwdsدرGeneric.__new__. درخواستهای تغییر اصلی توسط Paulius Šarka و Chad Dombrova.bpo-20087: بهروزرسانی نگاشت نامهای مستعار با محلیهای پشتیبانیشده در glibc 2.27.
bpo-33422: رفع مشکل حذف شدن علائم نقلقول پایانی هنگام جستجوی مقادیر لفظی بایت/رشته در pydoc. اصلاحیهای از Andrés Delfino.
bpo-33197: بهروزرسانی پیام خطا هنگام ساختن inspect.Parameters نامعتبر. اصلاحیهای از Donghee Na.
bpo-33383: رفع فروپاشی در متد get() از شیء پایگاه داده
dbm.ndbmهنگامی که با یک آرگومان منفرد فراخوانی میشود.bpo-33329: رفع رگرسیون پردازش موازی (multiprocessing) روی نسخههای جدیدتر glibc.
bpo-991266: رفع نقلقولگذاری ویژگی
Commentازhttp.cookies.SimpleCookie.bpo-33131: ارتقای نسخهی بستهبندیشدهی pip به ۱۰.۰.۱.
bpo-33308: رفع فروپاشی در ماژول
parserهنگام تبدیل یک شیء ST به درختی از تاپلها یا فهرستها باline_info=Falseوcol_info=True.bpo-33263: رفع نشت توصیفگر فایل (FD) در
_SelectorSocketTransport. پچ توسط Vlad Starostin.bpo-33256: رفع نمایش فراخوانی
<module>در کدهای HTML تولیدشده توسطcgitb.html(). پچ توسط Stéphane Blondon.bpo-33203: تابع
random.Random.choice()اکنون برای دنبالههای خالی به طور سازگار خطایIndexErrorرا بالا میآورد، حتی زمانی که از زیرکلاسهایی بدون پیادهسازیgetrandbits()فراخوانی شود.bpo-33224: بهروزرسانی difflib.mdiff() برای PEP 479. تبدیل یک StopIteration صیدنشده در یک تولیدگر به یک دستور بازگشت (return-statement).
bpo-33209: پایان دادن به فریمبندی (framing) در انتهای پیادهسازی C مربوط به
pickle.Pickler.dump().bpo-32861: نمایش
__str__در ماژول urllib.robotparser اکنون شامل ورودیهای وایلدکارد (wildcard) و فیلدهای "Crawl-delay" و "Request-rate" است. وصلهی ارائهشده توسط مایکل لازار (Michael Lazar).bpo-33096: اجازه دادن به ttk.Treeview.insert برای درج iid که دارای یک مقدار بولی نادرست (false) است. توجه داشته باشید که iid=0 و iid=False یکسان خواهند بود. وصله توسط گارویت خاتری (Garvit Khatri).
bpo-33127: ماژول ssl اکنون با LibreSSL 2.7.1 کامپایل میشود.
bpo-33021: آزاد کردن GIL در طول فراخوانیهای fstat()، که از معلق ماندن تمام نخها هنگام فراخوانی mmap.mmap()، os.urandom() و random.seed() جلوگیری میکند. وصله توسط Nir Soffer.
bpo-27683: اصلاح یک رگرسیون در
ipaddressکه باعث میشود نتیجهیhosts()خالی باشد هنگامی که شبکه توسط یک تاپل شامل یک نقاب عدد صحیح و تنها ۱ بیت باقیمانده برای آدرسها ساخته شده است.bpo-32844: اصلاح هدایت نادرست یک توصیفگر پایین (۰ یا ۱) به stderr در subprocess اگر توصیفگر پایین دیگری بسته شود.
bpo-31908: رفع مشکل خروجی پروندههای پوششی برای ابزار خط فرمان ماژول
trace. پیش از این، پروندههای پوششی فقط زمانی صادر میشدند که از گزینهی--missingاستفاده میشد. وصلهی پینهدوزی توسط Michael Selik.bpo-31457: اگر از آداپتورهای لاگ تو در تو استفاده شود، متدهای درونی
process()دیگر حذف نمیشوند.bpo-16865: پشتیبانی از آرایههای بزرگتر یا مساوی ۲ گیگابایت در ماژول
ctypes. وصله توسط Segev Finer.bpo-31238: ماژول pydoc: متد stop() از کلاس خصوصی ServerThread اکنون تا زمان اتمام DocServer.serve_until_quit() منتظر میماند و سپس برای شکستن چرخه ارجاع، صراحتاً ویژگی docserver خود را برابر با None قرار میدهد.
مستندات¶
bpo-33503: اصلاح پیوند خراب pypi
bpo-33421: افزودن مستندات مفقود برای
typing.AsyncContextManager.bpo-33378: افزودن تغییردهندهی زبان کرهای برای https://docs.python.org/3/
bpo-33276: شفافسازی این موضوع که ویژگی
__path__روی ماژولها نمیتواند هر مقداری باشد.bpo-33201: مدرنسازی مستندات مربوط به نوشتن نوعهای توسعهای C.
bpo-33195: منسوخ کردن استفاده از
Py_UNICODEدر سندc-api/arg. APIهای مرتبط باPy_UNICODEاز پایتون ۳.۳ منسوخ شدهاند، اما در سند از قلم افتاده بود.bpo-33126: مستندسازی PyBuffer_ToContiguous().
bpo-27212: اصلاح مستندات دستورالعمل
islice()برای مصرف مقادیر اولیه تا اندیس شروع.bpo-28247: بهروزرسانی مستندات
zipappبرای توضیح نحوهی ساخت برنامههای مستقل (standalone).bpo-18802: تغییرات مستندات برای ipaddress. وصلهای از Jon Foster و Berker Peksag.
bpo-27428: بهروزرسانی مستندات برای شفافسازی این که
WindowsRegistryFinderرابطMetaPathFinderرا پیادهسازی میکند. (وصلهای از Himanshu Lakhara)bpo-8243: افزودن یادداشتی دربارهی رفتار استثنای curses.addch و curses.addstr هنگام نوشتن خارج از یک پنجره یا پد.
bpo-31432: شفافسازی معنای پرچمهای CERT_NONE، CERT_OPTIONAL و CERT_REQUIRED برای ssl.SSLContext.verify_mode.
آزمونها¶
ساخت¶
bpo-5755: انتقال گزینهی
-Wstrict-prototypesبهCFLAGS_NODISTازOPT. این گزینه هنگام ساخت ماژولهای توسعهای نوشتهشده با ++C هشدارهای آزاردهندهای صادر میکرد.bpo-33614: تضمین میکند که فایلهای تعریف ماژول برای ABI پایدار در ویندوز به درستی بازتولید میشوند.
bpo-33522: فعالسازی ساختهای CI در Visual Studio Team Services در https://python.visualstudio.com/cpython
bpo-33012: افزودن
-Wno-cast-function-typeبرای کامپایلر gcc 8 جهت بیصدا کردن اخطارها دربارهی تبدیلهای نوع تابع، مانند تبدیل نوع به PyCFunction در فهرستهای تعریف متد.bpo-33394: فعالسازی ساخت پرجزئیات برای ماژولهای توسعهای، زمانی که ماکروها در خط فرمان به GNU make ارسال میشوند.
Windows¶
bpo-33184: بروزرسانی برنامهی نصب ویندوز به OpenSSL 1.0.2o.
مکاواس¶
bpo-33184: بروزرسانی ساخت برنامهی نصب macOS برای استفاده از OpenSSL 1.0.2o.
IDLE¶
bpo-33656: در ویندوز، افزودن فراخوانی API مبنی بر مقیاسگذاری tk برای DPI. در ویندوز 8.1+ یا 10، در صورتی که ویژگیهای سازگاری DPI فایل دودویی پایتون تغییر نکرده باشد و وضوح مانیتور بیشتر از ۹۶ DPI باشد، این امر باید متن و خطوط را واضحتر کند. در غیر این صورت نباید تأثیری داشته باشد.
bpo-33768: کلیک کردن روی یک سطر زمینهای، آن سطر را به بالای پنجرهی ویرایشگر منتقل میکند.
bpo-33763: ابزار IDLE: به جای ابزارک برچسب، از ابزارک متن فقطخواندنی برای زمینهی کد استفاده کنید.
bpo-33664: پیمایش متن ویرایشگر IDLE بر اساس سطرها. پیشتر، چرخ ماوس و نوار لغزان متن را به میزان ثابتی از پیکسلها جابجا میکردند که منجر به نمایش سطرهای ناقص در بالای کادر ویرایشگر میشد. این تغییر همچنین برای پوستههای خروجی و پنجرههای خروجی grep اعمال میشود، اما شامل نماهای متنی فقطخواندنی نمیشود.
bpo-33679: فعالسازی پیکربندی رنگ مختص به پوسته برای زمینهی کد (Code Context). برای مشاهدهی تنظیمات پوستههای توکار یا افزودن تنظیمات به پوستههای سفارشی، از زبانهی Highlights استفاده کنید.
bpo-33642: نمایش حداکثر maxlines سطر غیرخالی برای زمینهی کد. اگر زمینهی فعلی وجود نداشته باشد، یک سطر خالی منفرد نمایش داده میشود.
bpo-33628: ابزار IDLE: پاکسازی codecontext.py و آزمون آن.
bpo-33564: زمینهی کد IDLE اکنون کلمهی کلیدی async را به عنوان آغازگر یک بلوک تشخیص میدهد.
bpo-29706: برنامهی IDLE اکنون async و await را در نسخهی ۳.۶ بهعنوان کلیدواژه رنگی میکند. آنها در نسخهی ۳.۷ به کلیدواژههای کامل تبدیل میشوند.
bpo-21474: بهروزرسانی تعریف کلمه/شناسه از ascii به یونیکد. در کادرهای متنی و ورودی، این تغییر روی انتخاب با دو بار کلیک، جابجایی به چپ/راست با کنترل-چپ/راست و حذف به چپ/راست با کنترل-BACKSPACE/DEL تأثیر میگذارد.
bpo-33204: ابزار IDLE: رنگآمیزی سازگار پیشوندهای رشتهای نامعتبر. پیشوند رشتهای 'u' نمیتواند با 'r' یا 'f' جفت شود. تا جایی از پیشوند که معتبر است، با شروع از سمت راست، بهطور سازگار رنگآمیزی شود. بازبینی و گسترش آزمون رنگپرداز (colorizer).
bpo-32831: افزودن رشتههای مستند و آزمونها برای codecontext.
Tools/Demos¶
bpo-33189: pygettext.py اکنون فقط رشتههای لفظی را به عنوان رشتههای مستند و رشتههای قابلترجمه تشخیص میدهد و مقادیر لفظی بایتی و عبارتهای افاسترینگ (f-string) را رد میکند.
bpo-31920: رفع مشکل مدیریت پوشهها به عنوان آرگومان در اسکریپت
pygettext. براساس وصلهی (patch) ارائهشده توسط Oleg Krasnikov.bpo-29673: رفع ماکروهای gdbinit به نامهای pystackv و pystack.
bpo-32885: افزودن یک پرچم
-nبرایTools/scripts/pathfix.pyجهت غیرفعال کردن ایجاد خودکار پشتیبان (پروندههایی با پسوند~).bpo-31583: ابزار 2to3 را برای استفاده با گزینهی --add-suffix و بدون گزینهی --output-dir برای مسیرهای نسبی به پروندهها در پوشهی جاری اصلاح کرد.
رابط C API¶
bpo-32374: مستندسازی شد که m_traverse برای ماژولهای مقداردهی اولیهی چندمرحلهای میتواند با m_state=NULL فراخوانی شود و یک بررسی سلامت (sanity check) اضافه شد.
پایتون ۳.۶.۵ نهایی¶
تاریخ انتشار: ۲۰۱۸-۰۳-۲۸
آزمونها¶
bpo-32872: جلوگیری از مشکل سازگاری regrtest با بستههای فضای نام (namespace packages).
ساخت¶
bpo-33163: ارتقای pip به 9.0.3 و setuptools به v39.0.1.
نسخهی نامزد انتشار ۱ پایتون ۳.۶.۵¶
تاریخ انتشار: ۲۰۱۸-۰۳-۱۳
امنیت¶
bpo-33001: رفع حداقلی برای جلوگیری از سرریز بافر در os.symlink روی ویندوز
bpo-32981: عبارتهای باقاعده در difflib و poplib در برابر بازگشت فاجعهبار آسیبپذیر بودند. این عبارتهای باقاعده بردارهای بالقوهی DOS (REDOS) را تشکیل میدادند. آنها بازسازی شدند. این مورد CVE 2018-1060 و CVE 2018-1061 را حل میکند. وصله توسط جیمی دیویس (Jamie Davis).
هسته و توکارها (Core and Builtins)¶
bpo-33026: رفع مشکل پرش از درون بلوک "with" با تنظیم کردن f_lineno.
bpo-17288: جلوگیری از پرشها از رویدادهای رد (trace) 'return' و 'exception'.
bpo-32889: بهروزرسانی فهرست حذف والگریند (Valgrind) برای در نظر گرفتن تغییر نام
Py_ADDRESS_IN_RANGبهaddress_in_range.bpo-32650: اشکالزدای Pdb و سایر اشکالزدابهایی که به bdb.py وابستهاند، بهدرستی از روی همروالهای بومی عبور میکنند (دستور next). وصله توسط پابلو گالیندو (Pablo Galindo).
bpo-32685: بهبود پیشنهاد زمانی که فرم پایتون 2 از دستور print یا روی همان سطری که سرآیند یک دستور مرکب قرار دارد دیده شود و یا به جای نویسهی خط جدید، با نقطهویرگول ختم شود. وصله توسط نิติش چاندرا (Nitish Chandra).
bpo-32583: رفع خرابی احتمالی در رمزگشایان توکار یونیکد که ناشی از خطاهای نوشتن خارج از کران (out-of-bound) هنگام استفاده از هندلرهای خطای رمزگشایی سفارشی است.
bpo-26163: بهبود هش ()frozenset برای ایجاد مقادیر هش متمایزتر هنگام مواجهه با مجموعهدادههای حاوی مقادیر مشابه زیاد.
bpo-27169: ثابت
__debug__اکنون در زمان کامپایل بهینهسازی و حذف میشود. این مورد همچنین bpo-22091 را برطرف میکند.bpo-32329: مقدار
sys.flags.hash_randomizationاکنون هنگامی که تصادفیسازی درهمسازی توسطPYTHONHASHSEED=0خاموش میشود، بهدرستی روی 0 تنظیم میشود.bpo-30416: بهینهساز اکنون در برابر صرف زمان زیاد برای انجام محاسبات پیچیده و مصرف حافظهی زیاد برای ایجاد ثابتهای بزرگ در تا کردن ثابت (constant folding) محافظت میشود.
bpo-18533: متد
repr()روی یک دیکشنری حاویvalues()یاitems()خودش دیگر خطایRecursionErrorرا پرتاب نمیکند؛ OrderedDict نیز به همین ترتیب است. به جای آن، درست مانند سایر ساختارهای بازگشتی، از...استفاده کنید. وصل توسط Ben North.bpo-32028: فاصلهی خالی پیشتاز (Leading whitespace) هنگام تولید پیشنهادها برای تبدیل دستورات print در Py2 به فرایندهای تابع print توکار Py3 اکنون به درستی نادیده گرفته میشود. وصل توسط Sanyam Khurana.
bpo-32137: نمایش repr از دیکشنریهای بسیار تودرتو اکنون به جای از کار افتادن به دلیل سرریز پشته، یک RecursionError بالا میآورد.
کتابخانه¶
bpo-33064: ماژول lib2to3 اکنون به طور صحیح از کامای پایانی پس از
*argsو**kwargsدر امضای تابع پشتیبانی میکند.bpo-31804: جلوگیری از شکست خوردن در multiprocessing.Process اگر جریانهای استاندارد در هنگام خروج بسته باشند یا None باشند.
bpo-33037: صرفنظر کردن از ارسال/دریافت داده پس از بستهشدن انتقال SSL.
bpo-30353: رفع نحوهی ارسال برحسب مقدار (pass-by-value) در ctypes برای structها در Cygwin/MinGW ۶۴ بیتی.
bpo-33009: اصلاح inspect.signature() برای متدهای جزئی تکپارامتری (single-parameter partialmethods).
bpo-32969: آشکار کردن چندین ثابت مفقود در zlib و اصلاح مستندات مربوطه.
bpo-32713: رفع نحوهی مدیریت مقادیر اعشاری خارج از کران در tarfile.itn. وصله توسط Joffrey Fuhrer.
bpo-30622: ماژول ssl اکنون پشتیبانی گمشدهی NPN را در LibreSSL شناسایی میکند.
bpo-32922: تابع dbm.open() اکنون نام پرونده را به جای کدگذاری پیشفرض، با کدگذاری سامانه فایلبندی کدگذاری میکند.
bpo-32859: در
os.dup2، در هر فراخوانی بررسی نکنید که آیا سامانهی فراخوانیdup3وجود دارد یا خیر.bpo-21060: بازنویسی پیام گیجکنندهی آپلود setup.py از "No dist file created in earlier command" به پیام مفیدتر "Must create and upload files in one command".
bpo-32857: در
tkinter، تابعafter_cancel(None)اکنون به جای لغو کردن اولین تابع زمانبندیشده، یکValueErrorایجاد میکند. وصله توسط Cheryl Sabella.bpo-32852: مطمئن شوید هنگام اجرای trace فهرست sys.argv دستنخورده باقی میماند.
bpo-32841: رفع مشکل
asyncio.Conditionکه پس از اطلاعرسانی و لغو یک قفل شرطی، لغو شدن را به سکوت نادیده میگرفت. وصله توسط Bar Harel.bpo-31787: رفع نشت حافظه (refleaks) متدهای
__init__()در ماژولهای مختلف. (مشارکت از Oren Milman)bpo-30157: رفع حدسزدن نقلقول و جداکننده در csv.Sniffer.sniff() هنگامی که فقط آخرین فیلد داخل نقلقول قرار دارد. وصله (Patch) از Jake Davis.
bpo-32394: socket: حذف پرچمهای TCP_FASTOPEN و TCP_KEEPCNT در نسخههای قدیمیتر ویندوز در زمان اجرا.
bpo-32777: رفع یک بنبست کمیاب اما بالقوه در فرایند فرزند قبل از اجرا (pre-exec) در ماژول subprocess روی سیستمهای POSIX هنگام علامتگذاری توصیفگرهای پرونده به عنوان قابل به ارث بردن هنگام اجرا در فرایند فرزند. این باگ ظاهراً در نسخهی 3.4 معرفی شده است.
bpo-32647: ماژول ctypes پیش از این برای dlopen به پیونددهی غیرمستقیم وابسته بود. افزونهی اشتراکی اکنون بهطور صریح به libdl روی پلتفرمهای دارای dl پیوند داده میشود.
bpo-32734: رفع مسئلهی ایمنی
asyncio.Lock()که به دست آوردن و قفل کردن مکرر همان قفل را بدون آزاد شدن آن امکانپذیر میکرد. وصله از Bar Harel.bpo-32727: فیلد نام را در پاکت (envelope) SMTP از آدرس حذف نکنید. وصله از Stéphane Wirtel
bpo-27931: رفع خطای تجزیهی سرآیند آدرس ایمیل هنگامی که نام کاربری یک رشتهی نقلقولشدهی خالی است. وصل توسط Xiang Zhang.
bpo-32304: دستور upload در distutils دیگر پروندههای tar که با یک بایت CR تمام میشوند را خراب نمیکند، و دیگر تلاش نمیکند تا CR را در هیچیک از فیلدهای متنی upload به CRLF تبدیل کند.
bpo-32502: اگر با یک آدرس سختافزاری ۶۴ بیتی مواجه شود، تابع uuid.uuid1 دیگر استثنایی ایجاد نمیکند.
bpo-31848: رفع مدیریت خطا در Aifc_read.initfp() هنگامی که قطعهی SSND یافت نمیشود. وصله از Zackery Spytz.
bpo-32555: در سیستمعاملهای FreeBSD و Solaris، تابع os.strerror() اکنون همیشه رشتهی بایت را از کدگذاری locale فعلی رمزگشایی میکند، و در برخی موارد از ASCII/surrogateescape استفاده نمیکند.
bpo-32521: ماژول nis اکنون با libnsl جدید و محل سرآیندها سازگار است.
bpo-32473: بهبود خوانایی خروجی ABCMeta._dump_registry()
bpo-32521: کتابخانهی glibc ساختار Sun RPC را حذف کرده است. در ماژول nis از سرآیندها و کتابخانهی جایگزین libtirpc استفاده کنید.
bpo-32228: اطمینان حاصل کنید که
truncate()پس از نوشتنهای طولانیتر از اندازهی بافر، موقعیت پرونده (همانطور که توسطtell()گزارش میشود) را حفظ میکند.bpo-26133: سیگنالها را در حلقهی رویداد UNIX کتابخانهی asyncio هنگام خاموش شدن مفسر لغو اشتراک نکنید.
bpo-32185: ماژول SSL دیگر آدرسهای IP را در برنامهی افزودنی SNI TLS در پلتفرمهای دارای OpenSSL 1.0.2+ یا inet_pton ارسال نمیکند.
bpo-32323: تابع
urllib.parse.urlsplit()اکنون شناسهی محدوده (zone-id) را برای آدرسهای IPv6 محدودشده در نامهای میزبان به حروف کوچک تبدیل نمیکند.bpo-32302: رفع مشکل bdist_wininst در distutils برای CRT v142: این ابزار با CRT v140 سازگار است.
bpo-32255: یک فیلد خالی واحد اکنون هنگام نوشته شدن در یک پروندهی CSV همیشه در داخل نقلقول قرار میگیرد. این امر امکان تمایز بین یک ردیف خالی و ردیفی متشکل از یک فیلد خالی واحد را فراهم میکند. وصلهی ارائه شده توسط Licht Takeuchi.
bpo-32277: در پلتفرمهایی که از
chmod(..., follow_symlinks=False)پشتیبانی نمیکنند، بهجایSystemErrorاستثنایNotImplementedErrorبالا آورده شود. وصلهی ارائه شده توسط Anthony Sottile.bpo-32199: متد دریافتکنندهی ip یعنی getnode() اکنون به جای 'ip link list' از 'ip link' استفاده میکند.
bpo-27456: اطمینان حاصل کنید که TCP_NODELAY روی لینوکس تنظیم شده است. آزمونها توسط Victor Stinner.
bpo-31900: تابع
locale.localeconv()اکنون به طور موقت locale مربوط بهLC_CTYPEرا روی locale مربوط بهLC_NUMERICتنظیم میکند تا رشتههای بایتیdecimal_pointوthousands_sepرا رمزگشایی کند، در صورتی که آنها غیر ASCII یا طولانیتر از ۱ بایت باشند و locale مربوط بهLC_NUMERICبا locale مربوط بهLC_CTYPEمتفاوت باشد. این تغییر موقت روی سایر نخها تأثیر میگذارد. تغییر مشابهی برای متدstr.format()هنگام قالببندی یک عدد (int،float،floatو زیرکلاسها) با نوعn(مثال:'{:n}'.format(1234)) اعمال میشود.bpo-31802: ایمپورت کردن ماژولهای مسیر بومی (
posixpath،ntpath) اکنون حتی اگر ماژولosهنوز ایمپورت نشده باشد نیز کار میکند.
مستندات¶
bpo-17232: شفافسازی مستندات برای -O و -OO. وصلهای از Terry Reedy.
bpo-32800: بهروزرسانی پیوند به مستندات w3c برای فضاهای نام پیشفرض xml.
bpo-8722: مستندسازی رفتار
__getattr__()هنگامی که متدget()ویژگی خطایAttributeErrorرا بالا میآورد.bpo-32614: تغییر مثالهای عبارت باقاعده در مستندات برای استفاده از رشتههای خام جهت جلوگیری از
DeprecationWarningو افزودن متن به راهنمای عملی REGEX برای برجسته کردن منسوخ شدن.bpo-31972: بهبود رشتههای مستند برای زیرکلاسهای
pathlib.PurePath.bpo-17799: توضیح رفتار واقعی sys.settrace و sys.setprofile و همتایان C-API آنها در خصوص اینکه چه نوع رویدادهایی در هر تابع دریافت میشوند. وصله توسط Pablo Galindo Salgado.
آزمونها¶
bpo-32517: رفع خطای
test_asyncioروی macOS 10.12.2 به بالا به دلیل بسته نشدن انتقالِ حلقهِKqueueSelector.bpo-32721: رفع تست test_hashlib به طوری که اگر ماژول _md5 ساخته نشده باشد، با خطا مواجه نشود.
bpo-32252: رفع مشکل faulthandler_suppress_crash_report() که برای جلوگیری از ایجاد پروندههای برونریزی حافظه (core dump) هنگام آزمایش خرابیها استفاده میشد. تابع getrlimit() در صورت موفقیت صفر برمیگرداند.
bpo-31518: توزیع Debian Unstable پروتکلهای TLS 1.0 و 1.1 را برای SSLv23_METHOD() غیرفعال کرده است. پروتکل TLS/SSL برخی آزمونها را به PROTOCOL_TLS یا PROTOCOL_TLSv1_2 تغییر دهید تا در دبیان با موفقیت اجرا شوند.
ساخت¶
bpo-32635: رفع خطای حافظه (segfault) در ماژول crypt هنگامی که به جای libcrypt در سیستم، libxcrypt فراهم شده باشد.
Windows¶
bpo-33016: برطرفسازی استفادهی احتمالی از حافظهی مقداردهینشده در nt._getfinalpathname
bpo-32903: رفع یک نشت حافظه در os.chdir() روی ویندوز اگر پوشهی فعلی روی یک مسیر UNC تنظیم شده باشد.
bpo-31966: رفع WindowsConsoleIO.write() برای نوشتن دادههای خالی.
bpo-32409: تضمین میکند که activate.bat میتواند محتوای یونیکد را مدیریت کند.
bpo-32457: مدیریت مسیر اجراییِ عادینشده را هنگام راهاندازی پایتون بهبود میبخشد.
bpo-32370: استفاده از کدگذاری صحیح برای خروجی ipconfig در ماژول uuid. وصله توسط Segev Finer.
bpo-29248: رفع
os.readlink()روی ویندوز که به اشتباه فیلدPrintNameOffsetاز بافر دادهی تجزیه (reparse) را به عنوان تعداد نویسهها بهجای بایتها در نظر میگرفت. وصله توسط Craig Holmquist و SSE4.bpo-32588: ایجاد ماژول مستقل _distutils_findvs.
مکاواس¶
bpo-32726: ارائهی یک گزینهی اضافی و مدرنتر برای برنامهی نصب macOS که فقط از سیستمهای macOS 10.9 به بالا در حالت ۶۴ بیتی پشتیبانی میکند. ارتقای کتابخانههای شخص ثالث ارائهشده به OpenSSL 1.0.2n، XZ 5.2.3 و SQLite 3.22.0. برنامهی نصب نسخهی 10.9 به بالا اکنون به Tcl/Tk 8.6.8 لینک شده و نسخهی خودش را از آن فراهم میکند.
IDLE¶
bpo-32984: هنگام اجرای یک پروندهی راهاندازی، متغیر
__file__را تنظیم کنید. ایدل (IDLE) مانند پایتون بهطور اختیاری یک پروندهی راهاندازی را پیش از ارائهی نخستین اعلان ورودی تعاملی در پنجرهی پوسته (Shell) اجرا میکند. برای ایدل،-sپروندهای را که در متغیر محیطیIDLESTARTUPیاPYTHONSTARTUPنامگذاری شده است اجرا میکند؛-r fileپروندهیfileرا اجرا میکند. پایتون__file__را پیش از اجرای پرونده روی نام پروندهی راهاندازی تنظیم میکند و پیش از نخستین اعلان آن را پاک میکند. ایدل اکنون هنگام اجرای عادی، بدون گزینهی-n، همین کار را انجام میدهد.bpo-32940: سادهسازی و تغییر نام StringTranslatePseudoMapping در pyparse.
bpo-32916: تغییر
strبهcodeدر pyparse.bpo-32905: حذف کد استفادهنشده در ماژول pyparse.
bpo-32874: افزودن آزمونها برای pyparse.
bpo-32837: استفاده از کدگذاری پیشفرض سیستم و وابسته به مکان برای open() ایدهی بدی برای پروندههای مستقل از مکان و سیستم ایدل است.
bpo-32826: افزودن «encoding=utf-8» به open() در test_help_about ایدل. آزمون گرافیکی test_file_buttons() فقط سطرهای اولیهی فقط-اسکی (ascii-only) را بررسی میکند، اما روی سیستمهایی که open() بهطور پیشفرض از «ascii» استفاده میکند با خطا مواجه شد؛ زیرا readline() بهطور داخلی به اندازهی کافی جلو میخواند و رمزگشایی میکند تا به یک نویسهی غیراسکی در CREDITS.txt برخورد کند.
bpo-32765: بهروزرسانی رشتهی مستند زبانهی عمومی (General) در configdialog برای افزودن ابزارکهای جدید به فهرست ابزارکها.
Tools/Demos¶
bpo-24960: ابزارهای 2to3 و lib2to3 اکنون میتوانند به جای بررسی سامانه فایلبندی، پروندههای دستور زبان پیکلشده را با استفاده از pkgutil.get_data() بخوانند. این امکان باعث میشود 2to3 و lib2to3 هنگام اجرا از داخل یک پرونده فشردهی zip نیز کار کنند.
bpo-32222: رفع مشکل استخراج نشدن رشتههای مستند توسط pygettext برای توابعی که آرگومانهای دارای نوعگذاری دارند. وصله (patch) از Toby Harradine.
رابط C API¶
bpo-29084: API زبان C مستندنشده برای OrderedDict از API محدود C حذف شد. این مورد به اشتباه اضافه شده بود و در واقع هرگز در API محدود C کار نکرده بود.
پایتون ۳.۶.۴ نهایی¶
تاریخ انتشار: ۲۰۱۷-۱۲-۱۸
هیچ تغییر کد جدیدی در نسخهی ۳.۶.۴ از زمان v3.6.4rc1 وجود نداشته است.
نسخهی نامزد انتشار ۱ پایتون ۳.۶.۴¶
تاریخ انتشار: ۲۰۱۷-۱۲-۰۵
هسته و توکارها (Core and Builtins)¶
bpo-32176: ویژگی co_flags.CO_NOFREE اکنون همیشه بهدرستی توسط سازندهی شیء کد بر اساس freevars و cellvars تنظیم میشود، و نیازی نیست که توسط فراخواننده بهدرستی تنظیم شود. این کار تضمین میکند که وقتی ارجاعهای سلولی اضافی به یک شیء کد و تابع اصلاحشده تزریق میشوند، این مقدار بهطور خودکار پاکسازی خواهد شد.
bpo-31949: چند مسئله در چاپ ردگیریها (PyTraceBack_Print()) اصلاح شد. تنظیم sys.tracebacklimit روی صفر یا کمتر اکنون چاپ ردگیریها را متوقف میکند. تنظیم sys.tracebacklimit روی None اکنون باعث استفاده از حد پیشفرض میشود. تنظیم sys.tracebacklimit روی یک عدد صحیح بزرگتر از LONG_MAX اکنون به معنای استفاده از حد LONG_MAX به جای حد پیشفرض است. سرریزهای عدد صحیح در صورت وجود بیش از
2**31آیتم ردگیری در ویندوز اصلاح شد. مدیریت خطاهای خروجی اصلاح شد.bpo-30696: رفع مشکل حلقهی بینهایت مفسر تعاملی در صورت عدم وجود حافظه.
bpo-20047: متدهای بایتآرایه partition() و rpartition() همانطور که مستند شده است، اکنون فقط اشیاء شبهبایت را به عنوان جداکننده میپذیرند. به ویژه، آنها اکنون به جای بازگرداندن یک نتیجه نادرست هنگام ارسال یک عدد صحیح به عنوان جداکننده، TypeError بالا میآورند.
bpo-31852: رفع یک خطای قطعهبندی (segmentation fault) که توسط ترکیبی از کلیدواژهی (keyword) ناهمگام (async) و سطرهای ادامهیافته ایجاد شده بود.
bpo-21720: زمانی که آرگومان fromlist تابع
__import__()یا ویژگی__all__ماژول حاوی نمونههای بایت باشد، دیگر هشدار BytesWarning صادر نمیشود.bpo-31825: رفع خطای OverflowError در کُدک 'unicode-escape' و در codecs.escape_decode() هنگام رمزگشایی یک بایت گریزیافتهی غیر اسکی.
bpo-28603: چاپ زنجیرهی کامل زمینه/علت استثناها در خروج از مفسر، حتی اگر یک استثنا در زنجیره هشناپذیر باشد یا با موارد بعدی برابر مقایسه شود. پچ توسط زین بیتر (Zane Bitter).
bpo-31786: اصلاح گرد کردن مهلت زمانی در ماژول select بهطوریکه مهلتهای زمانی منفی بین -1.0 و 0.0 را بهدرستی گرد کند. توابع اکنون همانطور که انتظار میرود برای رویدادها مسدود میشوند. پیشتر، فراخوانی بهاشتباه غیرمسدودکننده بود. وصلهای از Pablo Galindo.
bpo-31642: بازیابی مسدودسازی دستور "from package import module" با تنظیم کردن sys.modules["package.module"] روی None.
bpo-31626: یک باگ در تخصیصدهندهی حافظهی اشکالزدایی برطرف شد. پس از کوچکسازی یک بلوک حافظه، نوشتنی روی حافظهی آزادشده انجام میشد.
bpo-31619: رفع یک خطای ValueError هنگام تبدیل یک رشته با تعداد زیادی زیرخط به عدد صحیح با پایهی دودویی.
bpo-31592: رفع یک خطای عدم برقراری شرط (assertion) در پارسر پایتون در صورت بروز نقص در
unicodedata.normalize(). وصلهای از Oren Milman.bpo-31588: در صورت شکست ایجاد کلاس به دلیل وجود یک فراکلاس با متد نامعتبر
__prepare__()، یک خطایTypeErrorهمراه با پیام راهنمایی صادر کنید. وصلهای از Oren Milman.bpo-31566: رفع یک خطای عدم برقراری شرط (assertion) در
_warnings.warn()در صورت وجود متغیر سراسری نامعتبر__name__. وصلهای از Oren Milman.bpo-31505: رفع یک خطای عدم برقراری شرط (assertion) در
json، در حالتی که_json.make_encoder()یک آرگومانencoder()نامعتبر دریافت کند. وصلهای از Oren Milman.bpo-31492: رفع خطاهای عدم برقراری شرط (assertion) در صورت شکست در ایمپورت از یک ماژول دارای ویژگی
__name__نامعتبر، و همچنین در صورت شکست در دسترسی به ویژگی چنین ماژولی. وصلهای از Oren Milman.bpo-31490: رفع خطای ادعا در تعریف کلاس
ctypes، در صورتی که کلاس دارای ویژگیای باشد که نام آن در_anonymous_مشخص شده اما در_fields_نباشد. پچ از اورن میلمن (Oren Milman).bpo-31478: رفع یک خطای عدم برقراری شرط (assertion) در
_random.Random.seed()در صورتی که آرگومان دارای متد__abs__()نامعتبر باشد. وصلهای از Oren Milman.bpo-31315: رفع یک خطای عدم برقراری شرط (assertion) در imp.create_dynamic()، هنگامی که spec.name یک رشته نباشد. وصلهای از Oren Milman.
bpo-31311: رفع خرابی (crash) در متد
__setstate__()ازctypes._CData، در صورت وجود یک__dict__نامعتبر. وصلهای از Oren Milman.bpo-31293: رفع خرابیها در تقسیم حقیقی و ضرب یک شیء timedelta در یک عدد اعشاری با متد نامعتبر as_integer_ratio(). وصلهای از Oren Milman.
bpo-31285: رفع یک خطای عدم برقراری شرط (assertion failure) در
warnings.warn_explicit، هنگامی که مقدار بازگشتی متدget_source()در بارگذار دریافتی دارای متد نامعتبرsplitlines()باشد. اصلاح از Oren Milman.bpo-30817: تابع
PyErr_PrintEx()اکنون استثنای نادیدهگرفتهشدهای را که ممکن است توسط_PySys_SetObjectId()(مثلاً هنگام کمبود حافظه) بالا برده شود، پاک میکند.
کتابخانه¶
bpo-28556: دو اصلاح جزئی برای ماژول
typing: اجازه دادن به کپی سطحی نمونههای کلاسهای عام، بهبود تعامل__init_subclass__با انواع عام. درخواستهای پول اصلی از Ivan Levkivskyi.bpo-27240: الگوریتم تا کردن سرآیند برای سیاستهای ایمیل جدید بازنویسی شده است که این امر bpo-30788، bpo-31831 و bpo-32182 را نیز برطرف میکند. بهویژه، تا کردن بر اساس RFC2231 اکنون بهدرستی انجام میشود.
bpo-32186: توابع io.FileIO.readall() و io.FileIO.read() اکنون هنگام دریافت اندازهی پرونده، GIL را آزاد میکنند. مشکل متوقف شدن همهی نخها با سرور NFS غیرقابلدسترس برطرف شد. وصلهای از Nir Soffer.
bpo-12239: کاری کنید که متد
msilib.SummaryInformation.GetProperty()زمانی که مقدار ویژگیVT_EMPTYاست، مقدارNoneرا برگرداند. وصلهی اولیه از Mark Mc Mahon.bpo-31325: رفع استفادهی نادرست از تابع
collections.namedtuple()در متدRobotFileParser.parse(). وصلهی اولیه از Robin Wellner.bpo-12382: تابع
msilib.OpenDatabase()اکنون زمانی که نمیتواند یک پروندهی MSI را باز کند یا بسازد، پیام استثنای بهتری را بالا میبرد. وصلهی اولیه از William Tisäter.bpo-32110: تابع
codecs.StreamReader.read(n)اکنون برای n نامنفی، حداکثر n نویسه/بایت برمیگرداند. این تغییر باعث سازگاری آن با متدهایread()سایر اشیاء شبهپرونده میشود.bpo-32072: رفع مشکلات مربوط به ساختارهای دادهی دودویی plist: رفع مشکل ذخیرهسازی bytearrayها. اشیاء یکسان فقط یک بار ذخیره خواهند شد. ارجاعهای برابر به عنوان اشیای یکسان بارگذاری خواهند شد. پشتیبانی از ذخیرهسازی و بارگذاری ساختارهای دادهی بازگشتی اضافه شد.
bpo-32034: امکان پیکلکردن asyncio.IncompleteReadError و LimitOverrunError فراهم شد.
bpo-32015: حلقهی asyncio در صورت اتصال مجدد سوکت هنگام انتظار برای خواندن/نوشتن ناهمگام از/به سوکت اصلاح شد.
bpo-32011: پشتیبانی از بارگذاری پروندههای marshal با کد TYPE_INT64 بازیابی شد. این پروندهها میتوانند در پایتون ۲.۷ تولید شده باشند.
bpo-31970: کاهش بار سربار عملکرد حالت عیبیابی asyncio.
bpo-9678: اصلاح تعیین آدرس MAC در ماژول uuid: استفاده از ifconfig در NetBSD و OpenBSD. استفاده از arp در Linux، FreeBSD، NetBSD و OpenBSD. بر اساس وصلهای از Takayuki Shimizukawa.
bpo-30057: رفع سیگنال ازدسترفتهی احتمالی در signal.signal().
bpo-31933: رفع پارامترهای leaf_size و node_offset مربوط به Blake2 روی سکوهای بزرگاندیان (big endian). وصله از Jack O'Connor.
bpo-31927: رفع مشکل کامپایل ماژول socket روی NetBSD 8. رفع خطای ادعا (assertion) یا خواندن دادهی دلخواه هنگام تجزیهی یک آدرس AF_BLUETOOTH روی NetBSD و DragonFly BSD.
bpo-27666: رفع خرابی پشته در curses.box() و curses.ungetmouse() هنگامی که اندازهی انواع دادهی chtype یا mmask_t کمتر از اندازهی C long است. تابع curses.box() اکنون کاراکترها را به عنوان آرگومان میپذیرد. بر اساس وصلهای از Steve Fink.
bpo-31897: ماژول plistlib اکنون هنگام خواندن فایلهای plist دودویی خطاهای بیشتری را صید کرده و بهجای استثناهای غیرمنتظره، InvalidFileException را بالا میآورد (raise).
bpo-25720: رفع متد بررسی وضعیت pad در WINDOW مربوط به curses. وصله از Masayuki Yamamoto.
bpo-31893: رفع ساختار طرحبندی (layout) ساختار دادهی kqueue_event روی OpenBSD و NetBSD. رفع مقایسهی اشیای kqueue_event.
bpo-31891: رفع ساخت (building) ماژول curses روی NetBSD.
bpo-28416: نمونههای زیرکلاس pickle.Pickler با متد persistent_id() و زیرکلاس pickle.Unpickler با متد persistent_load() دیگر چرخههای ارجاع ایجاد نمیکنند.
bpo-28326: رفع مشکل multiprocessing.Process هنگامی که stdout و/یا stderr بسته شده یا None است.
bpo-31457: اگر از آداپتورهای لاگ تو در تو استفاده شود، متدهای درونی
process()دیگر حذف نمیشوند.bpo-31457: ویژگی
managerروی اشیای LoggerAdapter اکنون بهدرستی قابل تنظیم است.bpo-31806: رفع گرد کردن مهلت زمانی در time.sleep()، threading.Lock.acquire() و socket.socket.settimeout() برای گرد کردن درست مهلتهای زمانی منفی بین 1.0- و 0.0. توابع اکنون همانطور که انتظار میرود برای رویدادها مسدود میشوند. پیشتر، فراخوانی بهطور نادرست غیرمسدودکننده بود. وصله توسط Pablo Galindo.
bpo-28603: ردگیری (traceback): رفع خطای TypeError که هنگام چاپ ردگیریهای استثنا رخ میداد، زمانی که یا استثنای فعلی و یا استثنایی در زنجیرهی زمینه/علت آن هشناپذیر باشد. وصله توسط Zane Bitter.
bpo-30058: رفع سرریز بافر (buffer overflow) در select.kqueue.control().
bpo-31770: جلوگیری از فروپاشی هنگام فراخوانی متد
__init__()از یک شیءsqlite3.Cursorبیش از یک بار. اصلاحیه از Oren Milman.bpo-31672: بخش
idpatternدرstring.Templateبا برخی نویسههای غیر اسکی (non-ASCII) مطابقت داشت. اکنون از پرچم محلی (local flag) عبارت باقاعده-iبرای جلوگیری از نویسههای غیر اسکی استفاده میکند.bpo-31764: جلوگیری از فروپاشی در
sqlite3.Cursor.close()در صورتی که شیءCursorمقداردهی اولیه نشده باشد. اصلاحیه از Oren Milman.bpo-31752: رفع فروپاشی احتمالی در سازندهی timedelta که با اعداد صحیح سفارشی فراخوانی میشود.
bpo-31701: در ویندوز، faulthandler.enable() اکنون استثناهای MSC و COM را نادیده میگیرد.
bpo-31728: جلوگیری از فروپاشیها در
_elementtreeبه دلیل پاکسازی ناامنElement.textوElement.tail. اصلاح از Oren Milman.bpo-31620: یک asyncio.Queue خالی اکنون هنگامی که مهلت زمانی پولرهای queue.get به پایان میرسد، نشت حافظه ندارد
bpo-31632: رفع متد set_protocol() از کلاس _SSLProtocolTransport در ماژول asyncio. این متد پیشتر در حال اصلاح یک ارجاع نادرست به پروتکل بود.
bpo-31675: رفع نشت حافظه در متدهای splitlist() و split() در Tkinter هنگام ارسال رشتهای بزرگتر از ۲ گیگابایت.
bpo-31673: رفع خطای تایپی در نام متد adderrorinfo() در Tkinter.
bpo-30806: رفع نمایش رشتهای یک شیء netrc.
bpo-15037: افزودن یک راهکار موقت برای getkey() در curses برای ncurses نسخهی ۵.۷ و پیش از آن.
bpo-25351: جلوگیری از خرابیهای فعالسازی venv با متغیرهای تعریفنشده
bpo-25532: تابع inspect.unwrap() اکنون تنها به تعداد sys.getrecursionlimit() بار تلاش میکند تا یک شیء را باز کند (unwrap)، تا در برابر اشیایی که در هر دسترسی به ویژگی، شیء جدیدی ایجاد میکنند، محافظت شود.
bpo-30347: جلوگیری از فروپاشیها هنگام پیمایش همزمان روی پیمایشگرهای itertools.groupby().
bpo-31516: عبارت
threading.current_thread()نباید هنگام خاموش شدن یک نخ ساختگی برگرداند.bpo-31351: اگر فرآیند بوتاسترپینگ pip با شکست مواجه شود، دستور python -m ensurepip اکنون با کد خروج غیرصفر خارج میشود.
bpo-31482:
random.seed()اکنون با بایتها در version=1 کار میکندbpo-31334: رفع
poll.poll([timeout])در ماژولselectبرای مهلتهای زمانی منفی دلخواه در تمام سیستمعاملهایی که فقط میتوانند یک عدد صحیح غیرمنفی یا ۱- باشند. اصلاحیه از Riccardo Coccioli.bpo-31310: ردیاب سمافور multiprocessing در صورت فروپاشی باید دوباره راهاندازی شود.
bpo-31308: فرایند forkserver ماژول multiprocessing را در برابر کلید Ctrl-C و سایر وقفههای کاربری مصون کنید. اگر دچار فروپاشی شد، در صورت لزوم آن را دوباره راهاندازی کنید.
مستندات¶
bpo-32105: افزودن نشانگر versionadded به asyncio.BaseEventLoop.connect_accepted_socket.
bpo-31537: اصلاح استفادهی نادرست از
get_history_lengthدر مثال کد مستندات readline. پچ توسط Brad Smith.bpo-30085: توابع عملگری بدون زیرخطهای دوتایی برای خوانایی بیشتر ترجیح داده میشوند. توابع دارای زیرخط فقط برای سازگاری عقببر (back-compatibility) حفظ شدهاند.
آزمونها¶
bpo-31380: رد کردن test_httpservers test_undecodable_file روی سیستمعامل macOS: روی APFS با شکست مواجه میشود.
bpo-31705: رد کردن آزمون test_socket.test_sha256() روی هستهی لینوکس قدیمیتر از ۴.۵. این آزمون با خطای ENOKEY روی هستهی ۳.۱۰ (روی ppc64le) با شکست مواجه میشود. یک اصلاحیه در هستهی ۴.۵ ادغام شد.
bpo-31174: رفع آزمون test_tools.test_unparse: اکنون DirectoryTestCase نمونهی نامها را ذخیره میکند تا همیشه همان پروندهها را آزمایش کند. این کار از هشدارهای کاذب هنگام بررسی نشتهای ارجاع جلوگیری میکند.
bpo-30695: توابع
set_nomemory(start, stop)وremove_mem_hooks()را به ماژول_testcapiاضافه کنید.
ساخت¶
bpo-32059: تابع
detect_modules()درsetup.pyاکنون هنگام کامپایل متقاطع (cross-compiling)، مسیرهای sysroot را نیز جستوجو میکند.bpo-31957: رفع تشخیص نسخهی SDK ویندوز هنگام ساخت برای ویندوز.
bpo-31609: رفع نقلقولها در PCbuild/clean.bat
bpo-31934: هنگام ساخت در خارج از یک درخت سورس پاک، عملیات ساخت (build) را متوقف کنید.
bpo-31926: رفع مشکلی در Argument Clinic که گاهی اوقات هنگام وجود بیش از یک تابع و/یا متد با نامی یکسان در یک پروندهی c. باعث بروز خطاهای کامپایل میشد.
bpo-28791: بهروزرسانی ساختهای ویندوز برای استفاده از SQLite 3.21.0.
bpo-28791: بهروزرسانی برنامهی نصب OS X برای استفاده از SQLite 3.21.0.
bpo-22140: جلوگیری از جایگزینی مضاعف پیشوند در python-config.sh.
bpo-31536: جلوگیری از ساخت مجدد کامل (wholesale rebuild) پس از دستور
make regen-allدر صورتی که هیچ تغییری رخ نداده باشد.
Windows¶
مکاواس¶
bpo-31392: بهروزرسانی برنامهی نصب macOS برای استفاده از OpenSSL 1.0.2m
IDLE¶
bpo-32207: بهبود ردگیری استثناهای رویداد tk در IDLE. هنگامی که مدیریت رویداد tk توسط حلقهی اجرای IDLE هدایت میشود، دیگر یک زمینهی ردگیری گیجکننده و مزاحم queue.EMPTY به ردگیری استثناهای رویداد tk اضافه نمیشود. اکنون ردگیری مانند زمانی است که مدیریت رویداد توسط کد کاربر هدایت میشود. این وصله بر اساس پیشنهادی از Serhiy Storchaka است.
bpo-32164: حذف پروندهی استفادهنشده idlelib/tabbedpages.py. استفاده از TabbedPageSet در configdialog با ttk.Notebook جایگزین شد.
bpo-32100: محیط IDLE: رفع باگهای قدیمی و جدید در pathbrowser؛ بهبود آزمونها. وصله عمدتاً توسط Cheryl Sabella.
bpo-31858: محیط IDLE -- محدود کردن دستکاری اعلان پوسته به خودِ پوسته. پنجرههای ویرایشگر و خروجی فقط یک سطر اعلان خالیِ آخر را میبینند. این کار کد را ساده میکند و یک باگ جزئی هنگام درج نویسهی خط جدید را برطرف میکند. مقدار Sys.ps1، در صورت وجود، هنگام راهاندازی پوسته خوانده میشود، اما تنظیم یا تغییر داده نمیشود.
bpo-31860: نمونهی قلم در محاورهی پیکربندی IDLE اکنون قابل ویرایش است. تغییرات تا زمانی که IDLE باز بماند باقی میمانند.
bpo-31836: آزمون test_code_module اکنون اگر پس از test_idle (که ps1 را تنظیم میکند) اجرا شود، با موفقیت گذر میکند. این ماژول کد از sys.ps1 در صورت وجود استفاده میکند یا اگر موجود نباشد آن را روی '>>> ' تنظیم میکند. ماژول test_code_module اکنون هر دو رفتار را بهران درست میآزماید. همین موضوع برای ps2 نیز صادق است.
bpo-28603: رفع یک خطای TypeError که هنگام چاپ کردن یک ردگیری شامل یک استثنای هشناپذیر، باعث راهاندازی مجدد پوسته میشد. وصله از Zane Bitter.
bpo-13802: استفاده از نویسههای غیرلاتین در نمونهی تنظیمات قلم (Font) در IDLE. حتی اگر کاربری قلمی را انتخاب کند که زیرمجموعهی محدودی از صفحهی چندزبانی پایهی یونیکد را تعریف میکند، tcl/tk از قلمهای دیگری که نویسهای را تعریف میکنند استفاده خواهد کرد. نمونهی گسترشیافته به کاربران نویسههای غیرلاتین ایدهی بهتری از آنچه ممکن است در پوسته (shell) و ویرایشگرهای IDLE ببینند، میدهد. برای ایجاد فضا جهت نمونهی گسترشیافته، قابها (frames) در زبانهی Font مجدداً مرتب شدهاند. راهنمای Font/Tabs توضیح کوتاهی دربارهی این اضافات ارائه میدهد.
bpo-31460: سادهسازی API مرورگر ماژول IDLE. ارسال یک ابزارک بهجای یک flist با یک ابزارک ریشه، امکان ایجاد یک قاب مرورگر را فراهم میکند که تنها بخشی از یک پنجره است. ارسال یک نام پروندهی کامل بهجای بخشهایی که فرض میشود از یک پروندهی py. آمدهاند، امکان مرور پروندههای پایتونی را فراهم میکند که با py. تمام نمیشوند.
bpo-31649: بخش IDLE - پارامترهای _htest و _utest را منحصراً به صورت کلیدواژهای (keyword only) درآورد.
bpo-31559: حذف وابستگی به ترتیب آزمون در idle_test.test_browser.
bpo-31459: تغییر نام مرورگر ماژول IDLE از Class Browser به Module Browser. مرورگر کلاس و متد در سطح ماژول اصلی، سالها پیش با افزوده شدن توابع در سطح ماژول به یک مرورگر ماژول تبدیل شد. کلاسها و توابع تو در تو روز گذشته اضافه شدند. برای سازگاری عقببر، رویداد مجازی <<open-class-browser>> که در زبانهی Keys در کادر محاورهای Settings ظاهر میشود، تغییر نکرده است. پچ توسط Cheryl Sabella.
bpo-31500: قلمهای پیشفرض اکنون در نمایشگرهای HiDPI مقیاسبندی میشوند.
bpo-1612262: مرورگر ماژول IDLE اکنون کلاسها و توابع تو در تو را نشان میدهد. پچهای اصلی برای کد و آزمونها به ترتیب از گیلفرم پولو (Guilherme Polo) و چریل سابلا (Cheryl Sabella) است.
Tools/Demos¶
bpo-30722: سازگاری redemo با پایتون ۳.۶ و نسخههای جدیدتر. همچنین، گزینهی
LOCALEرا حذف کنید زیرا با الگوهای رشتهای در پایتون ۳ کار نمیکند. وصله از Christoph Sarnowski.
رابط C API¶
bpo-20891: رفع خطای PyGILState_Ensure(). هنگامی که PyGILState_Ensure() در یک نخِ غیرپایتونی پیش از PyEval_InitThreads() فراخوانی میشود، برای رفع یک خرابی، تنها پس از فراخوانی PyThreadState_New() اقدام به فراخوانی PyEval_InitThreads() کنید.
bpo-31532: رفع خرابی حافظه به دلیل ترکیب تخصیصدهنده در getpath.c بین Py_GetPath() و Py_SetPath()
bpo-30697: تکنمونهی
PyExc_RecursionErrorInstحذف شد وPyErr_NormalizeException()دیگر از آن استفاده نمیکند. این تکنمونه پایا است و پاک نشدن اعضای آن ممکن است باعث ایجاد خطای حافظه (segfault) در هنگام نهاییسازی مفسر شود. همچنین نگاه کنید به bpo-22898.
پایتون ۳.۶.۳ نهایی¶
Release date: 2017-10-03
کتابخانه¶
bpo-31641: اجازه دادن مجدد به پیمایشپذیرهای (iterables) دلخواه در
concurrent.futures.as_completed(). رفع رگرسیون در نسخهی 3.6.3rc1.
ساخت¶
نامزد انتشار ۱ پایتون ۳.۶.۳¶
Release date: 2017-09-18
امنیت¶
هسته و توکارها (Core and Builtins)¶
bpo-31471: رفع خطای ادعا در
subprocess.Popen()روی ویندوز، در صورتی که آرگومان env دارای متدkeys()نامناسبی باشد. پچ از اورن میلمن (Oren Milman).bpo-31418: رفع خطای ادعا در
PyErr_WriteUnraisable()در صورت بروز یک استثنا با ویژگی__module__نامناسب. پچ از اورن میلمن (Oren Milman).bpo-31416: رفع خطاهای ادعا در صورت وجود warnings.filters یا warnings.defaultaction نامناسب. پچ از اورن میلمن (Oren Milman).
bpo-31411: در صورتی که warnings.onceregistry یک دیکشنری نباشد، به جای SystemError یک TypeError بالا بیاورید. وصله توسط Oren Milman.
bpo-31373: چند نمونه احتمالی از رفتار تعریفنشده به دلیل تنزلهای ممیز شناور را اصلاح کنید.
bpo-30465: اطلاعات مکانی (
linenoوcol_offset) در افاسترینگها اکنون (عمدتاً) درست است. این کار ابزارهایی مانند flake8 را از نشان دادن هشدارها در سطر اشتباه (معمولاً سطر اول پرونده) اصلاح میکند.bpo-31343: برای major()، minor() و makedev() پرونده sys/sysmacros.h را اضافه کنید. کتابخانهی C گنو قصد دارد این توابع را از sys/types.h حذف کند.
bpo-31291: یک خطای ادعا در
zipimport.zipimporter.get_dataروی ویندوز، هنگامی که مقدار بازگشتیpathname.replace('/','\\')یک رشته نباشد، اصلاح کنید. وصله توسط Oren Milman.bpo-31271: یک خطای ادعا در متد
write()ازio.TextIOWrapper، هنگامی که کدگذار یک شیء bytes برنمیگرداند، اصلاح کنید. وصله توسط Oren Milman.bpo-31243: یک خرابی در برخی از متدهای
io.TextIOWrapper، هنگامی که وضعیت کدگشا نامعتبر است، اصلاح کنید. وصله توسط Oren Milman.bpo-30721:
printاکنون راهنمایی استفادهی صحیح برای استفاده از نحو هدایت مجدد پایتون ۲ را نمایش میدهد. وصله توسط Sanyam Khurana.bpo-31070: یک شرایط رقابت در importlib _get_module_lock() را اصلاح کنید.
bpo-31095: خرابی احتمالی در طول GC ناشی از
tp_deallocکهPyObject_GC_UnTrack()را فراخوانی نمیکند، اصلاح کنید.bpo-31071: از پوشاندن TypeError اصلی در فراخوانی با بازکردن بسته * هنگامی که آرگومانهای دیگر ارسال میشوند، خودداری کنید.
bpo-30978: str.format_map() اکنون استثناهای جستجوی کلید را عبور میدهد. پیش از این هر استثنایی با یک استثنای KeyError جایگزین میشد.
bpo-30808: از API مربوط به _Py_atomic برای وضعیت سیگنال حساس به همگامسازی استفاده کنید.
bpo-30876: ایمپورت نسبی از بستهی بارگذارینشده اکنون به جای شکست با SystemError، بسته را مجدداً ایمپورت میکند. ایمپورت نسبی از غیربسته اکنون به جای SystemError با ImportError شکست میخورد.
bpo-30703: تحویل سیگنال را بهبود ببخشید. از استفادهی Py_AddPendingCall از هندلر سیگنال خودداری کنید تا از فراخوانی توابع ناامن برای سیگنال جلوگیری شود. آزمونهایی که من در اینجا اضافه میکنم بدون بقیهی وصله، روی لینوکس و OS X شکست میخورند. این بدان معناست که منطق تحویل سیگنال ما دارای نقصهایی بود (برخی سیگنالها ممکن است گم شوند).
bpo-30765: هنگام درخواست عدم مسدودسازی از PyThread_acquire_lock()، از مسدود شدن در pthread_mutex_lock() جلوگیری کنید.
bpo-31161: مطمئن شوید که پیام خطای نحوی «Missing parentheses» فقط برای SyntaxError اعمال میشود، نه برای زیرکلاسها. نوشتهشده توسط Martijn Pieters.
bpo-30814: رفع یک حالت رقابت (race condition) هنگام ایمپورت کردن یک زیرماژول از یک بسته.
bpo-30597: دستور
printاکنون هنگام استفاده به عنوان یک دستور (statement) در پایتون ۲، ورودی مورد انتظار را در پیام خطای سفارشی نشان میدهد. نوشتهشده توسط Sanyam Khurana.
کتابخانه¶
bpo-31499: xml.etree: برطرفسازی خرابی (crash) هنگامی که یک تجزیهکننده (parser) بخشی از یک چرخه ارجاع است.
bpo-28556: تابع typing.get_type_hints اکنون بهطور پیشفرض globalns مناسب را برای کلاسها و ماژولها پیدا میکند (هنگامی که هیچ
globalnsای از سوی فراخواننده مشخص نشده باشد).bpo-28556: بهبودهای سرعت در ماژول
typing. درخواستهای پول (PR) اصلی توسط Ivan Levkivskyi و Mitar.bpo-31544: ماژول شتابدهندهی C در ElementTree استثناهای پرتابشده هنگام جستجوی متدهای هدف TreeBuilder در XMLParser() را نادیده میگرفت.
bpo-31234: تابع socket.create_connection() اکنون یک چرخهی ارجاع را بهصورت دستی اصلاح میکند: متغیر ذخیرهکنندهی آخرین استثنا را پس از موفقیت پاک میکند.
bpo-31457: اشیاء LoggerAdapter اکنون میتوانند تو در تو قرار گیرند.
bpo-31400: مدیریت خطای SSL را بهبود میبخشد تا از دست دادن شمارههای خطا جلوگیری شود.
bpo-28958: کتابخانهی ssl.SSLContext() اکنون زمانی که یک زمینه نمیتواند نمونهسازی شود، از اطلاعات خطای OpenSSL استفاده میکند.
bpo-27340: تابع SSLSocket.sendall() اکنون از memoryview برای ایجاد اسلایسهای داده استفاده میکند. این کار پشتیبانی از تمام اشیاء شبهبایت را اصلاح میکند. همچنین کارآمدتر است و از کپیهای پرهزینه جلوگیری میکند.
bpo-31178: رفع باگ الحاق رشته در مسیر خطای نادر در ماژول subprocess
bpo-31350: ریزبهینهسازی
asyncio._get_running_loop()برای اینکه تا ۱۰ درصد سریعتر شود.bpo-31170: expat: بهروزرسانی libexpat از نسخهی 2.2.3 به 2.2.4. رفع کپیکردن نویسههای جزئی برای ورودی UTF-8 (باگ libexpat شمارهی ۱۱۵): https://github.com/libexpat/libexpat/issues/115
bpo-29136: افزودن مجموعههای رمز (cipher suites) مربوط به TLS 1.3 و OP_NO_TLSv1_3.
bpo-29212: اصلاح رشتههای concurrent.futures.thread.ThreadPoolExecutor بهگونهای که بهطور پیشفرض، زمانی که هیچ thread_name_prefix ارائه نشده باشد، دارای نام رشتهی مبتنی بر repr() نباشند. آنها اکنون خود را به عنوان "ThreadPoolExecutor-y_n" شناسایی خواهند کرد.
bpo-9146: رفع خطای قطعهبندی (segmentation fault) در _hashopenssl هنگامی که توابع هش استاندارد مانند md5 در کتابخانهی لینکشدهی OpenSSL در دسترس نیستند. مانند برخی از محیطهای ساخت (build) خاص FIPS-140.
bpo-27144: پیمایشگرهای
map()وas_completed()درconcurrent.futuresاکنون از نگهداری ارجاع به شیءهای تولیدشده جلوگیری میکنند.bpo-10746: رفع مشکلی که در آن ctypes کدهای نوع PEP 3118 نادرستی برای انواع عدد صحیح تولید میکرد.
bpo-22536: ماژول subprocess اکنون زمانی که خطای FileNotFoundError در سیستمهای POSIX به دلیل پیدا نشدن فایل اجرایی یا cwd رخ میدهد، نام فایل را تنظیم میکند.
bpo-31249: ماژول concurrent.futures: کلاس WorkItem.run() که توسط ThreadPoolExecutor استفاده میشود، اکنون چرخه ارجاع بین یک شیء استثنا و شیء WorkItem را میشکند.
bpo-31247: ماژول xmlrpc.server اکنون هنگام استفاده از sys.exc_info() در کد مدیریت استثناها، چرخههای ارجاع را بهطور صریح میشکند.
bpo-30102: ماژولهای ssl و hashlib اکنون در نسخههای OpenSSL < 1.1.0 تابع OPENSSL_add_all_algorithms_noconf() را فراخوانی میکنند. این تابع ویژگیهای پردازنده را شناسایی کرده و بهینهسازیها را روی برخی معماریهای پردازنده مانند POWER8 فعال میکند. این پچ بر اساس پژوهشهای Gustavo Serra Scalet است.
bpo-31185: رفع خطاهای متفرقه در ماژول شتابدهی asyncio.
bpo-31135: بستهی ttk: اصلاح متد destroy() در کلاسهای LabeledScale و OptionMenu. حتی اگر ویژگی مورد استفاده وجود نداشته باشد، متد destroy() والد را فراخوانی کنید. متد LabeledScale.destroy() همچنین اکنون بهطور صریح ویژگیهای label و scale را پاکسازی میکند تا به زبالهروب کمک کند همهی ابزارکها را نابود کند.
bpo-31107: اصلاح محاسبهی ویژگی مخدوششدهی
copyreg._slotnames()برای کلاسهایی که نامشان با یک زیرخط شروع میشود. پچ توسط Shane Harvey.bpo-31061: رفع یک فروپاشی هنگام استفاده از asyncio و نخها.
bpo-30502: اصلاح مدیریت شناسه شیءهای (oid) طولانی در ssl. براساس پچ نوشتهشده توسط Christian Heimes.
bpo-30119: تابع ftplib.FTP.putline() اکنون روی دستوراتی که شامل CR یا LF باشند، ValueError پرتاب میکند. وصله از Donghee Na.
bpo-30595: متد multiprocessing.Queue.get() همراه با مهلت زمانی (timeout)، اگر موفق به بهدست آوردن قفل شود اما این کار بیشتر از مهلت زمانی طول بکشد، اکنون خوانندهی خود را در حالت غیرمسدودکننده پایش (poll) میکند.
bpo-29403: اصلاح autospec ماژول
unittest.mockبه طوری که روی توابع توکار متصلبهمتد شکست نخورد. پچ توسط Aaron Gallagher.bpo-30961: اصلاح کاهش دادن یک ارجاع امانتی در tracemalloc.
bpo-25684: تغییر دکمههای رادیویی
ttk.OptionMenuبه طوری که در میان نمونههایOptionMenuیکتا باشند.bpo-30886: اصلاح multiprocessing.Queue.join_thread(): این متد اکنون تا زمانی که نخ کامل شود صبر میکند، حتی اگر نخ توسط همان فرایندی آغاز شده باشد که صف را ایجاد کرده است.
bpo-29854: اصلاح خطای segmentation fault در readline هنگام استفاده از گزینهی history-size در readline. پچ توسط Nir Soffer.
bpo-30319: تابع socket.close() اکنون خطای ECONNRESET را نادیده میگیرد.
bpo-30828: اصلاح نوشتن خارج از کران (out of bounds write) در تابع
asyncio.CFuture.remove_done_callback().bpo-30807: تابع signal.setitimer() ممکن است هنگام دریافت مقادیر بسیار کوچک، تایمر را غیرفعال کند. مقادیر کوچک (مانند 1e-6) مقادیر معتبر غیرصفر برای setitimer() هستند، که تعیین شده است بازههایی با دقت میکروثانیه را بپذیرد. با این حال، روی برخی از پلتفرمها، روال تبدیل ما میتواند 1e-6 را به بازهای صفر تبدیل کند و در نتیجه به جای زمانبندی مجدد (re-scheduling)، تایمر را غیرفعال کند.
bpo-30441: رفع باگ هنگام تغییر دادن os.environ در حین پیمایش روی آن
bpo-30532: رفع حذف شدن فاصلههای سفید تاشو (folding white space) در برخی موارد توسط پارسر مقادیر سرآیند ایمیل.
bpo-30879: توابع os.listdir() و os.scandir() اکنون هنگام فراخوانی با آرگومان شبیه به بایت (bytes-like)، نامهای بایت منتشر میکنند.
bpo-30746: ممنوعیت نویسهی '=' در نامهای متغیر محیطی در
os.putenv()وos.spawn*().bpo-29755: اصلاح خانوادهی توابع lgettext() در ماژول gettext. آنها اکنون همیشه بایتها را برمیگردانند.
مستندات¶
آزمونها¶
bpo-31320: بیصدا کردن ردگیری در test_ssl
bpo-25674: حذف آزمون ssl مربوط به sha256.tbs-internet.com
bpo-30715: رسیدگی به تغییرات فراخوانی بازگشتی ALPN برای OpenSSL 1.1.0f. آخرین نسخه مانند OpenSSL 1.0.2 عمل میکند و دیگر دستدهی را متوقف نمیکند.
bpo-30822: ابزار regrtest: حذف tzdata از regrtest --all. هنگام اجرای مجموعهآزمون با استفاده از --use=all / -u all، دادههای tzdata را مستثنا کنید زیرا باعث کند شدن بیش از حد test_datetime میشود (۱۵ تا ۲۰ دقیقه روی برخی از سامانههای ساخت) که در نتیجه روی برخی از سامانههای ساخت باعث انقضای زمان (timeout) میشود. همچنین تحلیلگر خط فرمان regrtest را اصلاح کنید تا امکان ارسال -u extralargefile برای اجرای test_zipfile64 فراهم شود.
ساخت¶
bpo-30854: رفع خطای کامپایل هنگام کامپایل کردن با --without-threads. وصله توسط Masayuki Yamamoto.
Windows¶
bpo-30389: افزودن قابلیت تشخیص Visual Studio 2017 به distutils روی ویندوز.
bpo-31340: تغییر فرآیند ساخت به استفاده از MSVC نسخه v141 (همراه با Visual Studio 2017)
bpo-30581: تابع os.cpu_count() اکنون هنگامی که تعداد پردازندههای منطقی بیشتر از ۶۴ است، تعداد صحیح پردازندهها را روی ویندوز برمیگرداند.
bpo-30731: افزودن یک xmlns گمشده به python.manifest بهطوریکه با طرحواره (schema) مطابقت داشته باشد.
IDLE¶
bpo-31493: زمینهی کد IDLE -- اصلاح بهروزرسانی کد و تایمرهای بهروزرسانی فونت. لغو تایمرها از بروز پیام هشدار هنگام اتمام test_idle جلوگیری میکند.
bpo-31488: ابزار IDLE - بهروزرسانی گزینههای غیرکلیدی در کلاسهای افزونهی سابق. هنگام اعمال تغییرات configdialog، تابع .reload را برای هر کلاس قابلیت فراخوانی کنید. ParenMatch را تغییر دهید تا گزینههای بهروزرسانیشده روی نمونههای موجود متصل به پنجرههای ویرایشگر موجود تأثیر بگذارند.
bpo-31477: ابزار IDLE - بهبود ورودی rstrip در مستندات. حذف فضای خالی انتهایی، بیش از فضاهای خالی را حذف میکند. مقادیر لفظی رشتهای چندخطی رد نمیشوند.
bpo-31480: ابزار IDLE - امکان موفقیت آزمونها در صورتی که افزونهی zzdummy بهطور پیشفرض غیرفعال باشد.
bpo-31421: مستندسازی نحوهی اجرای برنامههای tkinter توسط IDLE. ابزار IDLE برای اینکه تعامل و آزمایش زنده با برنامههای tkinter را بسیار آسانتر کند، بهروزرسانی tcl/tk را در پسزمینه فراخوانی میکند.
bpo-31414: ابزار IDLE -- اصلاح آزمونهای جعبهی ورودی tk با حذف کردن اولی. افزودن به یک ورودی عدد صحیح (int) با حذف و درج کردن یکسان نیست؛ زیرا عبارت
int('')با شکست مواجه خواهد شد.bpo-31051: مرتبسازی مجدد GenPage در تنظیمات گفتگوی (configdialog) ابزار IDLE به بخشهای Window، Editor و Help.
bpo-30617: ابزار IDLE - افزودن رشتههای مستند (docstrings) و آزمونها برای زیرکلاس outwin مربوط به ویرایشگر. انتقال برخی دادهها و تابعها از کلاس به سطح ماژول. وصله (patch) از Cheryl Sabella.
bpo-31287: ابزار IDLE - عدم تغییر tkinter.message در test_configdialog.
bpo-27099: تبدیل «افزونههای» توکار (built-in) ابزار IDLE به ویژگیهای معمولی. حدود ۱۰ ویژگی ابزار IDLE ظاهراً به عنوان افزونههای اختیاری پیادهسازی شده بودند. رفتار متفاوت آنها میتواند برای کاربران گیجکننده یا بدتر باشد و برای نگهداری مناسب نیست. از این رو این تبدیل انجام شد. تفاوت اصلی برای کاربران این است که کلیدهای میانبر قابل تنظیم توسط کاربر برای ویژگیهای توکار اکنون به طور یکنواخت مدیریت میشوند. اکنون، ویرایش یک کلید میانبر در یک مجموعهکلید، فقط بر مقدار آن در همان مجموعهکلید تأثیر میگذارد. تمام کلیدهای میانبر با هم در مجموعهکلیدهای پیشفرض مخصوص سیستم در config-extensions.def تعریف میشوند. تمام مجموعهکلیدهای سفارشی به صورت یکجا در config-extension.cfg ذخیره میشوند. همه به محض کلیک روی Apply یا Ok اثر میگذارند. رویدادهای تحت تأثیر عبارتند از: '<<force-open-completions>>'، '<<expand-word>>'، '<<force-open-calltip>>'، '<<flash-paren>>'، '<<format-paragraph>>'، '<<run-module>>'، '<<check-module>>' و '<<zoom-height>>'. هرگونه سفارشیسازی (سراسری) انجامشده قبل از نسخهی 3.6.3 بر سفارشیسازی مخصوص مجموعهکلید پس از نسخهی 3.6.3 تأثیری نخواهد گذاشت و بالعکس. وصلهی اولیه از Charles Wohlganger.
bpo-31206: ابزار IDLE: استخراج کلاس HighPage(Frame) از ConfigDialog. وصله (patch) از Cheryl Sabella.
bpo-31001: افزودن آزمونها برای زبانهی برجستهسازی (highlight) در configdialog. وصله (patch) از Cheryl Sabella.
bpo-31205: ابزار IDLE: استخراج کلاس KeysPage(Frame) از ConfigDialog. آزمونهای کمی تغییریافته همچنان با موفقیت اجرا میشوند. وصله (patch) از Cheryl Sabella.
bpo-31130: ابزار IDLE -- متوقف کردن نشتها در test_configdialog. وصلهی اولیه از Victor Stinner.
bpo-31002: افزودن آزمونها برای زبانهی کلیدهای configdialog. وصله (patch) از Cheryl Sabella.
bpo-19903: محیط IDLE: راهنماهای فراخوانی بهجای
inspect.getfullargspecازinspect.signatureاستفاده میکنند. این کار باعث بهبود راهنماهای فراخوانی برای توابع توکار تبدیلشده با Argument Clinic میشود. وصلهای از Louie Lu.bpo-31083: ابزار IDLE - افزودن ساختار کلی یک کلاس TabPage در configdialog. بهروزرسانی کلاسهای موجود برای تطابق با این ساختار. وصلهی اولیه از Cheryl Sabella.
bpo-31050: استخراج کلاس GenPage(Frame) از ConfigDialog. آزمونهای کمی تغییریافته همچنان با موفقیت اجرا میشوند. وصله (patch) از Cheryl Sabella.
bpo-31004: ابزار IDLE - استخراج کلاس FontPage(Frame) از ConfigDialog. آزمونهای کمی تغییریافته همچنان با موفقیت اجرا میشوند. اصلاح آزمونهای General. وصله بیشتر از Cheryl Sabella.
bpo-30781: ابزار IDLE - استفاده از ابزارکهای ttk در ConfigDialog. وصلهها (patches) از Terry Jan Reedy و Cheryl Sabella.
bpo-31060: ابزار IDLE - پایان مرتبسازی مجدد متدهای ConfigDialog. گروهبندی متدهای مربوط به هر زبانه و دکمهها به نوشتن آزمونها و بهبود زبانهها کمک میکند و امکان تقسیم گروهها به کلاسها را فراهم میسازد.
bpo-30853: ابزار IDLE -- استخراج کلاس VarTrace از ConfigDialog. ردیابهای نمونه، جفتهای متشکل از یک متغیر tk و یک تابع کالبک (callback) را مدیریت میکنند. هنگامی که ردیابی روشن است، تنظیم متغیر، تابع را فراخوانی میکند. پوشش آزمون برای کلاس جدید ۱۰۰٪ است.
bpo-31003: ابزار IDLE: افزودن آزمونهای بیشتر برای زبانهی General.
bpo-30993: ابزار IDLE - بهبود زبانهی فونت در configdialog و آزمونهای آن. در configdialog: مستندسازی مسیرهای علیّت در رشته مستند (docstring) تابع
create_font_tab. سادهسازی برخی نامهای ویژگیها. انتقال فراخوانیهایset_samplesبهvar_changed_font(ایده از Cheryl Sabella). انتقال توابع مرتبط به موقعیتهای پس از تابع ایجاد ابزارکها. در test_configdialog: اصلاحtest_font_setبهطوریکه به ترتیب وابسته نباشد. اصلاحtest_indent_scaleتغییرنامیافته بهطوریکه ابزارک را آزمایش کند. تنظیم آزمونها برای جابجایی فراخوانیset_samples. افزودن آزمونها برای توابع بارگذاری (load). قرار دادن تمام آزمونهای فونت در یک کلاس و آزمونهای تورفتگی زبانه در کلاسی دیگر. به جز دو سطر، این آزمونها توابع مرتبط را به طور کامل پوشش میدهند.bpo-30981: ابزار IDLE -- افزودن آزمونهای بیشتر برای زبانهی فونت در configdialog.
bpo-28523: بخش IDLE: جایگزینی «colour» با «color» در configdialog.
bpo-30917: افزودن آزمونها برای idlelib.config.IdleConf. افزایش پوشش از ۴۶٪ به ۹۶٪. وصله توسط Louie Lu.
bpo-30934: مستندسازی جزئیات پوشش برای آزمونهای idlelib. افزودن بخش به idlelib/idle-test/README.txt. گنجاندن بررسی اینکه شاخهها در هر دو جهت پوشش داده میشوند. مستثنی کردن کد خاص IDLE که در طول آزمونهای واحد اجرا نمیشود.
bpo-30913: بخش IDLE: مستندسازی متدها، متغیرهای tk و ابزارکهای ConfigDialog در رشتههای مستند (docstrings). این کار بهبود محاوره و تقسیم کلاس را تسهیل میکند. وصلهی اولیه توسط Cheryl Sabella.
bpo-30899: بخش IDLE: افزودن آزمونها برای زیرکلاسهای ConfigParser در config. وصله توسط Louie Lu.
bpo-30881: بخش IDLE: افزودن رشتههای مستند (docstrings) به browser.py. وصله توسط Cheryl Sabella.
bpo-30851: بخش IDLE: حذف متغیرهای استفادهنشده در configdialog. یکی تکراری است، دیگری تنظیم شده اما کاربران نمیتوانند آن را تغییر دهند. وصله توسط Cheryl Sabella.
bpo-30870: بخش IDLE: در محاورهی تنظیمات، انتخاب قلم با کلیدهای بالا و پایین و همچنین ماوس. وصلهی اولیه توسط Louie Lu.
bpo-8231: بخش IDLE: فراخوانی config.IdleConf.GetUserCfgDir فقط یک بار.
bpo-30779: بخش IDLE: جدا کردن کلاس ConfigChanges از configdialog و گذاشتن آن در config؛ آزمون. * در config، گذاشتن کد آزمون برونریزی در یک تابع؛ اجرای آن و unittest در 'if __name__ == '__main__'. * افزودن کلاس config.ConfigChanges بر اساس changes_class_v4.py در مسألهی bpo. * افزودن کلاس test_config.ChangesTest، تا حدی با استفاده از configdialog_tests_v1.py. * بازنگری configdialog برای استفاده از ConfigChanges؛ به پیام ردیاب msg297804 مراجعه کنید. * بازنگری test_configdialog برای تطبیق با تغییرات configdialog. * حذف توابع configdialog که استفاده نشدهاند یا به ConfigChanges منتقل شدهاند. Cheryl Sabella بخشهایی از وصله را مشارکت داده است.
bpo-30777: بخش IDLE: محاورهی پیکربندی (configdialog) - افزودن رشتههای مستند (docstrings) و رفع کامنتها. وصله توسط Cheryl Sabella.
bpo-30495: بخش IDLE: بهبود textview با رشتههای مستند (docstrings)، نامهای PEP8 و آزمونهای بیشتر. وصله توسط Cheryl Sabella.
bpo-30723: بخش IDLE: انجام چند بهبود در parenmatch. افزودن سبک 'parens' برای برجستهسازی همزمان آغازگر و پایانگر. تبدیل سبک 'default' (که پیشفرض نیست) به مترادفی برای 'opener'. یکسانسازی نحوهی کارکرد تاخیر زمانی با تمام سبکها. افزودن راهنما برای زبانهی افزونههای محاورهی پیکربندی، شامل راهنما برای parenmatch. افزودن آزمونهای جدید. وصلهی اولیه توسط Charles Wohlganger.
bpo-30674: بخش IDLE: افزودن رشتههای مستند (docstrings) به ماژول grep. وصله توسط Cheryl Sabella
bpo-21519: محاورهی ورود کلید سفارشی پایهی IDLE اکنون موارد تکراری را بهرانستی شناسایی میکند. وصلهی اولیه توسط Saimadhav Heblikar.
bpo-29910: IDLE دیگر پس از کامنت کردن یک ناحیه با میانبر صفحه کلید، یک کاراکتر را حذف نمیکند. افزودن
return 'break'برای این مورد و سایر تضادهای احتمالی بین IDLE و کلیدهای میانبر پیشفرض.bpo-30728: بررسی و تغییر نامهای idlelib.configdialog. کوچک کردن نامهای متد و ویژگی. جایگزینی «colour» با «color»، گسترش نامهای بیش از حد مبهم، حذف زیرخطهای غیرضروری. جایگزینی
import *با ایمپورتهای مشخص. وصلهها توسط Cheryl Sabella.bpo-6739: بخش IDLE: بررسی دنبالههای کلید واردشده توسط کاربر با تلاش برای مقید کردن آنها با tk. افزودن آزمونها برای هر ۳ تابع اعتبارسنجی. وصلهی اولیه توسط G Polo. آزمونها توسط Cheryl Sabella افزوده شدند.
Tools/Demos¶
bpo-30983: دستورات یکپارچهسازی gdb (مانند py-bt و غیره) اکنون روی ساختهای مشترک بهینهسازیشده نیز کار میکنند. PEP 523 تابع _PyEval_EvalFrameDefault را معرفی کرد که PyEval_EvalFrameEx را روی ساختهای مشترک غیردیباگ به صورت درونخطی (inline) درمیآورد. این امر قابلیت استفاده از py-bt، py-up و چند یکپارچهسازی دیگر gdb مختص پایتون را مختل کرده بود. این مشکل با جستجوی فقط فریمهای _PyEval_EvalFrameDefault در python-gdb.py برطرف شد. وصلهی اصلی توسط Bruno "Polaco" Penteado.
پایتون ۳.۶.۲ نهایی¶
Release date: 2017-07-17
بدون تغییر نسبت به نامزد انتشار ۲
نامزد انتشار ۲ پایتون ۳.۶.۲¶
Release date: 2017-07-07
امنیت¶
bpo-30730: جلوگیری از تزریق متغیرهای محیطی در subprocess در ویندوز. جلوگیری از ارسال سایر متغیرهای محیطی و آرگومانهای دستور.
bpo-30694: ارتقای نسخهی expat از 2.2.0 به 2.2.1 جهت دریافت اصلاحات مربوط به آسیبپذیریهای امنیتی متعدد از جمله: CVE 2017-9233 (حلقه بیپهایت موجودیت خارجی DoS)، CVE 2016-9063 (سرریز عدد صحیح، اصلاح مجدد)، CVE 2016-0718 (رفع اشکالات رگرسیون از اصلاحیهی 2.2.0 برای CVE 2016-0718) و CVE 2012-0876 (مقابله با طغیان هش با SipHash). نکته: مورد CVE 2016-5300 (استفاده از منابع انتروپی خاص سیستمعامل مانند getrandom) روی پایتون تأثیری ندارد، زیرا پایتون از قبل انتروپی را از سیستمعامل دریافت میکند تا راز expat را با استفاده از
XML_SetHashSalt()تنظیم کند.bpo-30500: رفع مشکل urllib.parse.splithost() برای تجزیه صحیح بخشها. برای نمونه،
splithost('//127.0.0.1#@evil.com/')اکنون بهجای در نظر گرفتن@evil.comبه عنوان میزبان در یک احراز هویت (login@host)، میزبان127.0.0.1را به درستی برمیگرداند.
نامزد انتشار ۱ پایتون ۳.۶.۲¶
Release date: 2017-06-17
امنیت¶
bpo-29591: بهروزرسانی نسخهی expat از 2.1.1 به 2.2.0 برای دریافت اصلاحات CVE 2016-0718 و CVE 2016-4472. برای اطلاعات بیشتر به https://sourceforge.net/p/expat/bugs/537/ مراجعه کنید.
هسته و توکارها (Core and Builtins)¶
bpo-30682: حذف یک شرط (assertion) بیشازحد سختگیرانه که برای برخی افاسترینگها مانند eval("f'\n'") و eval("f'\r'") با شکست مواجه میشد.
bpo-30604: انتقال co_extra_freefuncs از حالتی که به ازای هر نخ (per-thread) بود برای جلوگیری از فروپاشیها
bpo-29104: رفع تجزیهی بکاسلشها در افاسترینگها.
bpo-27945: رفع اشکالات مختلف segfault در دیکشنری هنگامی که مجموعههای ورودی در حین جستجو، درج یا مقایسه تغییر (mutation) پیدا میکنند. بر اساس وصلههایی از Duane Griffin و Tim Mitchell.
bpo-25794: رفع اشکال type.__setattr__() و type.__delattr__() برای نامهای ویژگی غیردرونیسازیشده. بر اساس وصلهای از Eryk Sun.
bpo-30039: اگر رویداد KeyboardInterrupt زمانی رخ دهد که مفسر در حال ازسرگیری زنجیرهای از فراخوانیهای تو در توی 'yield from' یا 'await' باشد، اکنون به درستی به درونیترین فریم تحویل داده میشود.
bpo-12414: تابع sys.getsizeof() روی یک شیء کد (code object) اکنون اندازههایی را برمیگرداند که شامل ساختار (struct) کد و اندازههای اشیایی است که به آنها ارجاع میدهد. نوشتهشده توسط Donghee Na.
bpo-29949: رفع رگرسیون مصرف حافظه در شیءهای set و frozenset.
bpo-29935: اصلاح پیامهای خطا در متد index() مربوط به tuple، list و deque هنگام ارسال اندیسهایی با نوع نامعتبر.
bpo-29859: نمایش پیامهای خطای صحیح هنگامی که هر یک از فراخوانیهای pthread_* در thread_pthread.h با خطا مواجه میشوند.
bpo-28876: عبارت
bool(range)حتی اگرlen(range)خطایOverflowErrorرا ایجاد کند، کار میکند.bpo-29600: رفع مشکل بازگرداندن مقادیر همروال (coroutine) در StopIteration.
bpo-28856: رفع یک غفلت که در آن قالب %b برای bytes باید از شیءهای پیرو پروتکل بافر پشتیبانی میکرد.
bpo-29714: رفع رگرسیونی که ممکن است قالب bytes هنگام داشتن بایتهای صفر در داخل خود با خطا مواجه شود.
bpo-29478: اگر هنگام استفاده از خطمشی Compat32 مقدار max_line_length=None مشخص شود، دیگر نادیده گرفته نمیشود. وصله از Mircea Cosbuc.
کتابخانه¶
bpo-30616: API تابعی enum امکان ایجاد enumهای خالی را فراهم میکند. وصلهشده توسط Donghee Na
bpo-30038: رفع شرایط رقابت (race condition) بین ارسال سیگنال و توصیفگر پروندهی بیدارباش. وصله از Nathaniel Smith.
bpo-23894: کتابخانهی lib2to3 اکنون رشتههای
rb'...'وf'...'را تشخیص میدهد.bpo-23890: متد unittest.TestCase.assertRaises() اکنون بهطور دستی یک چرخه ارجاع را میشکند تا اشیاء را بیش از حد انتظار زنده نگه ندارد.
bpo-30149: تابع inspect.signature() اکنون از موارد فراخوانیپذیر با پارامترهای با تعداد آرگومان متغیر که با partialmethod پوشانده شدهاند پشتیبانی میکند. توسط Donghee Na.
bpo-30645: رفع محاسبهی مسیره در imp.load_package()، و اصلاح آن برای مواردی که یک بسته (package) فقط با بایتکدها (bytecodes) ارسال میشود. وصله (patch) توسط Alexandru Ardelean.
bpo-29931: رفع بررسی مقایسه برای اشیاء ipaddress.ip_interface. وصله توسط Sanjay Sundaresan.
bpo-30605: تابع re.compile() هنگام کامپایل کردن یک نمونه از نوع bytes با اصلاحکنندهی خطی (inline modifier) جابهجا شده، دیگر خطای BytesWarning بالا نمیآورد. اصلاحیه از Roy Williams.
bpo-24484: جلوگیری از شرایط رقابت (race condition) در پاکسازی multiprocessing (#2159)
bpo-28994: ردگیری (traceback) دیگر برای SystemExit که در یک کالبک ثبتشده توسط atexit بالا آورده شده است، نمایش داده نمیشود.
bpo-30508: اگر متد "cancel()" برای Task یا Future فراخوانی شده باشد، استثناها را ثبت (log) نکنید.
bpo-28556: بهروزرسانیهای ماژول typing: افزودن AsyncContextManager عام، افزودن پشتیبانی از ContextManager در تمام نسخهها. درخواستهای پول (PR) اصلی توسط Jelle Zijlstra و Ivan Levkivskyi
bpo-29870: رفع نشت سوکتهای ssl هنگامی که اتصال در پیادهسازی asyncio/ssl متوقف میشود. اصلاحیه از Michaël Sghaïer.
bpo-29743: بستن انتقال (transport) در طی فرایند دستدهی (handshake) باعث نشت سوکت باز میشود. اصلاحیه از Nikolay Kim
bpo-27585: رفع لغو لغتپرداز (waiter) در asyncio.Lock. اصلاحیه از Mathieu Sornay.
bpo-30418: در ویندوز، تابع subprocess.Popen.communicate() اکنون اگر فرایند فرزند همچنان در حال اجرا باشد اما پایپ را بسته باشد، خطای EINVAL را روی stdin.write() نادیده میگیرد.
bpo-29822: تابع inspect.isabstract() اکنون در طول __init_subclass__ کار میکند. وصله توسط Nate Soares.
bpo-29581: متد ABCMeta.__new__ اکنون
**kwargsرا میپذیرد که به کلاسهای پایه انتزاعی اجازه میدهد از پارامترهای کلیدواژهای در __init_subclass__ استفاده کنند. وصله از Nate Soares.bpo-30557: ماژول faulthandler اکنون کدهای استثنا را در ویندوز به طور صحیح فیلتر و نمایش میدهد.
bpo-30378: برطرف کردن مشکلی که در آن logging.handlers.SysLogHandler نمیتواند آدرسهای IPv6 را پردازش کند.
bpo-29960: حفظ وضعیت تولیدگر هنگامی که تابع _random.Random.setstate() یک استثنا پرتاب میکند. وصله توسط Bryan Olson.
bpo-30414: نخ در حال اجرای پسزمینهی multiprocessing.Queue._feed هنگام بروز استثنا از حلقهی اصلی خارج نمیشود.
bpo-30003: برطرف کردن نحوهی دستهبندی نویسههای گریز در کُدک HZ. براساس وصلهی Ma Lin.
bpo-30301: برطرف کردن خطای AttributeError هنگام استفاده از SimpleQueue.empty() در متدهای راهاندازی spawn و forkserver.
bpo-30329: ماژولهای imaplib و poplib اکنون خطای socket مربوط به ویندوز یعنی WSAEINVAL (کد 10022) را روی shutdown(SHUT_RDWR) صید میکنند: عملیات نامعتبری تلاش شد. این خطا گاهی اوقات روی اتصالهای SSL رخ میدهد.
bpo-30375: هشدارهایی که هنگام کامپایل یک عبارت باقاعده صادر میشوند، اکنون همیشه به سطری در کد کاربر اشاره میکنند. پیش از این، اگر از درون گروهها یا شرطها صادر میشدند، ممکن بود به بخشهای درونی ماژول re اشاره کنند.
bpo-30048: برطرف شد: هنگامی که وظیفه در حال اجرای همروال است و همروال بدون هیچ
awaitدیگری بازمیگردد، میتوان ازTask.cancel()چشمپوشی کرد.bpo-30266: کلاس contextlib.AbstractContextManager اکنون با تعیین __enter__ = None یا __exit__ = None، به پیروی از الگوی معرفیشده در bpo-25958 از ثبتنشزی (anti-registration) پشتیبانی میکند. توسط Jelle Zijlstra.
bpo-30298: ضعیف کردن شرط هشدارهای منسوخسازی برای اصلاحگرهای درونخطی. اکنون چندین اصلاحگر درونخطی متوالی در ابتدای الگو مجاز است (مثلاً
'(?i)(?s)...'). در حالت پرجزئیات، فاصلهها و کامنتها اکنون قبل و بین اصلاحگرهای درونخطی مجاز هستند (مثلاً'(?x) (?i) (?s)...').bpo-29990: برطرف کردن بررسی محدوده در رمزگشای GB18030. وصلهی اصلی از Ma Lin.
bpo-26293: تغییر به دلیل خرابی zipfile ایجاد شد. (همچنین ببینید: bpo-29094)
bpo-30243: متدهای __init__ مربوط به اسکنر و کدگذار ماژول _json حذف شدند. سوءاستفاده از آنها میتوانست باعث نشت حافظه یا فروپاشی شود. اکنون اشیاء اسکنر و کدگذار بهطور کامل در متدهای __new__ مقداردهی اولیه میشوند.
bpo-30185: جلوگیری از رخداد ردگیریهای KeyboardInterrupt در فرایند کمکی forkserver هنگام دریافت کلید Ctrl-C.
bpo-28556: بهروزرسانیهای مختلف در ماژول typing: افزودن نوع typing.NoReturn، استفاده از WrapperDescriptorType و رفع باگهای جزئی. درخواستهای پول اصل (PR) توسط Jim Fasarakis-Hilliard و Ivan Levkivskyi.
bpo-30205: رفع تابع getsockname() برای سوکتهای بدون اتصَال AF_UNIX در لینوکس.
bpo-30070: رفع نشت حافظه و فروپاشیها در مدیریت خطاها در ماژول parser.
bpo-30061: رفع فروپاشیها در متدهای IOBase یعنی __next__() و readlines() به ترتیب زمانی که readline() یا __next__() شیء با اندازهی نامشخص برمیگردانند. رفع خطاهای احتمالی دیگر ناشی از عدم بررسی نتایج PyObject_Size()، PySequence_Size() یا PyMapping_Size().
bpo-30017: امکان فراخوانی چندین بارهی متد close() شیء نویسندهی ورودی zip فراهم شد. نوشتن روی یک نویسندهی بستهشده اکنون همیشه یک ValueError تولید میکند.
bpo-30068: تابع _io._IOBase.readlines هنگامی که hint وجود دارد، ابتدا بررسی میکند که آیا بسته است یا خیر.
bpo-29694: رفع شرایط مسابقه (race condition) در ایجاد پوشه با pathlib برای پرچم parents=True. وصله توسط Armin Rigo.
bpo-29692: رفع قطع زنجیرهی دلخواه استثناهای RuntimeError در contextlib.contextmanager. وصله توسط Siddharth Velankar.
bpo-29998: عملیات Pickling و کپی کردن ImportError اکنون ویژگیها (attributes)ی نام و مسیر را حفظ میکند.
bpo-29953: رفع نشت حافظه در متد replace() از اشیاء datetime و time هنگام ارسال آرگومان fold خارج از کران.
bpo-29942: رفع یک فروپاشی در itertools.chain.from_iterable هنگام مواجهه با تعداد زیادی از پیمایشپذیرهای خالی.
bpo-27863: رفع چندین فروپاشی در ElementTree که ناشی از شرایط مسابقه (race conditions) و انواع نادرست بودند.
bpo-28699: رفع یک باگ در استخرهای multiprocessing.pool که در آن ایجاد یک استثنا در همان ابتدای یک پیمایشپذیر ممکن بود استثنا را ببلعد یا باعث معلق ماندن برنامه شود. وصله توسط Davin Potts و Xiang Zhang.
bpo-25803: جلوگیری از خطاهای نادرستی که توسط Path.mkdir(exist_ok=True) ایجاد میشوند، هنگامی که سیستمعامل به خطاهایی مانند EACCES نسبت به EEXIST اولویت میدهد.
bpo-29861: آزادسازی ارجاعات به وظایف، آرگومانهای آنها و نتایج آنها به محض اتمام در multiprocessing.Pool.
bpo-29884: ماژول faulthandler: بازیابی sigaltstack قدیمی در طول فرایند آزادسازی. این وصله توسط Christophe Zeitouny تهیه شده است.
bpo-25455: برطرفسازی فروپاشیها در متد repr از اشیاء شبهپروندهی بافرشدهی بازگشتی.
bpo-29800: برطرفسازی فروپاشیها در partial.__repr__ اگر کلیدهای partial.keywords رشته نباشند. این وصله توسط Michael Seifert تهیه شده است.
bpo-29742: متد get_extra_info() در صورت فراخوانی روی یک انتقال (transport) بستهشدهی ssl استثنا پرتاب میکند. توسط Nikolay Kim.
bpo-8256: برطرفسازی احتمال شکست یا فروپاشی در تابع input() در صورتی که ویژگیهای «encoding» یا «errors» در sys.stdin یا sys.stdout تنظیم نشده باشند یا رشته نباشند.
bpo-28298: رفع باگی که مانع از پذیرش اعداد صحیح بزرگ (اشیاء دارای
__int__) به عنوان عناصر توسط آرایههای 'Q'، 'L' و 'I' میشد. وصله توسط Oren Milman.bpo-28231: ماژول zipfile اکنون اشیاء شبهمسیر را برای مسیرهای خارجی میپذیرد.
bpo-26915: متدهای index() و count() در collections.abc.Sequence اکنون پیش از بررسی برابری، هویت را هنگام مقایسهها بررسی میکنند.
bpo-29615: کلاس SimpleXMLRPCDispatcher دیگر خطای KeyError (یا هر استثنای دیگری) را به استثنا(های) ایجادشده در متدهای دیسپچشده زنجیر نمیکند. این وصله توسط Petr Motejlek تهیه شده است.
bpo-30177: متد path.resolve(strict=False) دیگر مسیر را پس از نخستین عنصری که در سامانه فایلبندی وجود ندارد، کوتاه نمیکند. وصله توسط Antoine Pietri.
IDLE¶
bpo-15786: رفع چندین مشکل در کادر تکمیل خودکار IDLE. موارد زیر اکنون باید کار کنند: کلیک کردن روی آیتمهای کادر انتخاب؛ استفاده از نوار پیمایش؛ انتخاب یک آیتم با فشردن Return. وقفهها (Hangs) در MacOSX دیگر نباید رخ دهند. وصله توسط Louie Lu.
bpo-25514: افزودن زیربخش مستندات دربارهی شکست IDLE در شروع به کار. پیام پاپآپ عدم اتصال، کاربران را به این بخش هدایت میکند.
bpo-30642: رفع نشت ارجاع در آزمونهای IDLE. وصلهها توسط Louie Lu و Terry Jan Reedy.
bpo-30495: افزودن رشتههای مستند برای textview.py و استفاده از نامهای PEP 8. وصلهها توسط Cheryl Sabella و Terry Jan Reedy.
bpo-30290: بخش Help-about: استفاده از نامهای pep8 و افزودن آزمونها. افزایش پوشش کد به ۱۰۰٪. وصلهها توسط Louie Lu، Cheryl Sabella و Terry Jan Reedy.
bpo-30303: افزودن گزینهی _utest به textview؛ افزودن آزمونهای جدید. افزایش پوشش کد به ۱۰۰٪. وصلهها توسط Louie Lu و Terry Jan Reedy.
رابط C API¶
bpo-27867: اگر
Py_LIMITED_APIتنظیم نشده باشد، تابع PySlice_GetIndicesEx() دیگر با یک ماکرو جایگزین نمیشود.
ساخت¶
bpo-29941: افزودن پرچم پیکربندی
--with-assertionsبرای فعالسازی صریح بررسیهایassert()در زبان C. حالت پیشفرض غیرفعال است. گزینهی--with-pydebugبه معنای استفاده از--with-assertionsاست.bpo-28787: رفع مشکل ساختهای خارج از درخت (out-of-tree) پایتون هنگامی که با
--with--dtraceپیکربندی شده است.bpo-29243: جلوگیری از ساخت مجدد غیرضروری پایتون در هنگام اجرای دستورات
make test،make installو برخی هدفهای دیگر make زمانی که با--enable-optimizationsپیکربندی شده است.bpo-23404: دیگر پروندههای تولیدشده بر اساس زمان تغییر پرونده بازتولید نمیشوند: این کنش اکنون به صورت صریح انجام میشود. جایگزینی
make touchباmake regen-all.bpo-29643: رفع مشکلی که در آن
--enable-optimizationکار نمیکرد.
مستندات¶
bpo-30176: افزودن ثابتهای مرتبط با ویژگیهای مفقود در مستندات curses.
bpo-30052: هدفهای پیوند برای
bytes()وbytearray()اکنون تعاریف نوع مربوط به خودشان هستند، نه ورودیهای تابع توکار متناظر. از bytes و bytearray برای ارجاع به موارد دوم استفاده کنید. بهمنظور اطمینان از اعمال خودکار این بهروزرسانیهای ارجاع متقابل و موارد آینده، ساخت روزانهی مستندات اکنون ویژگیهای پیشفرض کش خروجی را در Sphinx غیرفعال میکند.bpo-26985: افزودن اطلاعات مفقود شیء کد در مستندات inspect.
Tools/Demos¶
bpo-29367: اسکریپت python-gdb.py اکنون از اشیای
method-wrapper(wrapperobject) نیز پشتیبانی میکند.
آزمونها¶
bpo-30357: بخش test_thread: تابع setUp() اکنون از support.threading_setup() و support.threading_cleanup() استفاده میکند تا برای جلوگیری از اثرات جانبی تصادفی روی آزمونهای بعدی، تا زمان تکمیل نخها صبر کند. وصلهی اولیه توسط Grzegorz Grzywacz نوشته شده است.
bpo-30197: توابع بهبودیافتهی swap_attr() و swap_item() در ماژول test.support. آنها اکنون زمانی که صفت یا آیتم جایگزینشده را در داخل دستور with حذف میکنید، کار میکنند. مقدار قبلی صفت یا آیتم (یا None اگر وجود نداشته باشد) اکنون به هدف بند "as" (در صورت وجود) اختصاص داده خواهد شد.
Windows¶
bpo-30687: پیدا کردن msbuild.exe در ویندوز هنگام ساخت به جای استفاده از vcvarsall.bat
bpo-30450: فرایند ساخت در ویندوز دیگر به Subversion وابستگی ندارد و در عوض کدهای خارجی را از طریق یک اسکریپت پایتون از GitHub دریافت میکند. اگر پایتون ۳.۶ روی سیستم پیدا نشود (از طریق
py -3.6)، از NuGet برای دانلود نسخهای از پایتون ۳۲ بیتی استفاده میشود.
پایتون ۳.۶.۱ نهایی¶
تاریخ انتشار: 2017-03-21
هسته و توکارها (Core and Builtins)¶
bpo-29723: تغییر مقداردهی اولیهی
sys.path[0]برای bpo-29139 با آشکار کردن ناسازگاری در نحوهی مقداردهی اولیهی sys.path هنگام اجرای__main__از یک پروندهی فشرده (zipfile)، پوشه یا سایر مکانهای ایمپورت، باعث ایجاد یک رگرسیون شد. مفسر اکنون به طور مداوم از افزودن پوشهی والد مکان ایمپورت بهsys.pathجلوگیری میکند و مطمئن میشود که هنگام درج مکان ایمپورت مشخصشده در خط فرمان، هیچ ورودی دیگری درsys.pathبه طور ناخواسته تغییر نکند.
ساخت¶
bpo-27593: اصلاح قالب اطلاعات git استفاده شده در sys.version
رفع کامنت ناسازگار در python.h
پایتون ۳.۶.۱ نامزد انتشار ۱¶
تاریخ انتشار: 2017-03-04
هسته و توکارها (Core and Builtins)¶
bpo-28893: تنظیم __cause__ صحیح برای خطاهای مربوط به اشیاء انتظارپذیر نامعتبر (invalid awaitables) برگرداندهشده از __aiter__ و __anext__.
bpo-29683: اصلاحات تخصیص حافظه در _PyCode_SetExtra. وصله توسط برایان کولمن (Brian Coleman).
bpo-29684: رفع رگرسیون جزئی PyEval_CallObjectWithKeywords. این تابع باید هنگامی که kwargs یک دیکشنری نیست، TypeError ایجاد کند. اما ممکن است وقتی args=NULL و kwargs دیکشنری نیست، باعث خطای segv شود.
bpo-28598: پشتیبانی از __rmod__ برای زیرکلاسهای str که قبل از str.__mod__ فراخوانی میشوند. وصله توسط مارتین پیترز (Martijn Pieters).
bpo-29607: اصلاح محاسبهی stack_effect برای CALL_FUNCTION_EX. وصله توسط ماتیو دارتیایه (Matthieu Dartiailh).
bpo-29602: اصلاح مدیریت نادرست صفرهای علامتدار در سازندهی complex برای زیرکلاسهای complex و ورودیهایی که دارای متد __complex__ هستند. وصله از Serhiy Storchaka.
bpo-29347: رفع امکان واگرهارجاعی (dereferencing) به اشارهگرهای تعریفنشده هنگام ایجاد شیءهای weakref.
bpo-29438: رفع مشکل استفاده پس از آزادسازی (use-after-free) در دیکشنری اشتراکگذاری کلید.
bpo-29319: جلوگیری از بازنویسی sys.path[0] توسط RunMainFromImporter.
bpo-29337: رفع خطای احتمالی BytesWarning هنگام مقایسهی شیءهای کد. هشدارها ممکن است در زمان کامپایل صادر شوند.
bpo-29327: رفع فروپاشی هنگام ارسال آرگومان کلیدواژهای پیمایشپذیر به ()sorted.
bpo-29034: رفع نشت حافظه و مشکل استفاده پس از آزادسازی در ماژول os (path_converter).
bpo-29159: رفع رگرسیون در bytes(x) هنگامی که x.__index__() یک استثنا ایجاد میکند.
bpo-28932: اگر پروندهی <sys/random.h> وجود ندارد، آن را درج نکنید.
bpo-25677: اصلاح مکاننمایی نشانک خطای نحو برای بلوکهای دارای تورفتگی. بر اساس وصله از Michael Layzell.
bpo-29000: رفع قالببندی بایت اعداد مبنای هشت با پُرکنندهی صفر در شکل جایگزین.
bpo-26919: در اندروید، دادههای سیستمعامل اکنون همیشه به/از UTF-8 رمزگذاری/رمزگشایی میشوند، و جایگزین کدگذاری locale (کدگذاری محلی) شدهاند تا از ناسازگاری با os.fsencode() و os.fsdecode() که از قبل از UTF-8 استفاده میکنند، جلوگیری شود.
bpo-28991: تابع functools.lru_cache() در برابر یک باگ بازورودپذیری نامفهوم که توسط یک تابع len() مانکیپچشده ایجاد میشد، آسیبپذیر بود.
bpo-28739: عبارتهای افاسترینگ دیگر به عنوان رشته مستند و توسط ast.literal_eval() پذیرفته نمیشوند، حتی اگر شامل هیچ عبارتی نباشند.
bpo-28512: تنظیم ویژگی آفست SyntaxError توسط PyErr_SyntaxLocationEx() و PyErr_SyntaxLocationObject() اصلاح شد.
bpo-28918: کامپایل متقابل xxlimited هنگامی که پایتون با Py_DEBUG تعریفشده ساخته شده است، اصلاح شد.
bpo-28731: بهینهسازی _PyDict_NewPresized() برای ایجاد دیکشنری با اندازه صحیح. بهبود سرعت ساختار لفظی دیکشنری با کلیدهای ثابت تا ۳۰ درصد.
کتابخانه¶
bpo-29169: بهروزرسانی zlib به نسخهی 1.2.11.
bpo-29623: اجازه دادن به استفاده از شیء شبهمسیر به عنوان یک آرگومان منفرد در ConfigParser.read(). این وصله توسط David Ellis تهیه شده است.
bpo-28963: برطرفسازی پیمایش خارج از کران در asyncio.Future.remove_done_callback که در زبان C پیادهسازی شده است.
bpo-29704: کلاس asyncio.subprocess.SubprocessStreamProtocol دیگر پیش از بستهشدن تمامی پایپها بسته نمیشود.
bpo-29271: برطرفسازی Task.current_task و Task.all_tasks که در C پیادهسازی شدهاند تا آرگومان None را همانند پیادهسازی خالص پایتونی خود بپذیرند.
bpo-29703: برطرفسازی ماژول asyncio برای پشتیبانی از نمونهسازی حلقههای رویداد جدید در فرایندهای فرزند.
bpo-29376: رفع خطای ادعا (assertion error) در threading._DummyThread.is_alive().
bpo-28624: افزودن آزمونی که بررسی میکند آیا پارامتر cwd از Popen() اشیاء PathLike را میپذیرد یا خیر. توسط Sayan Chowdhury.
bpo-28518: شروع ضمنی تراکنش پیش از یک دستور DML. توسط Aviv Palivoda.
bpo-29532: تغییر دادن دیکشنری آرگومانهای کلیدواژهای (kwarg) که به functools.partial() پاس داده شده است، دیگر روی یک شیء partial پس از ایجاد تأثیری نمیگذارد.
bpo-29110: رفع نشت شیء پرونده در aifc.open() هنگامی که پرونده به صورت یک مسیر سیستمعامل ارائه میشود و در قالب معتبر AIFF نیست. توسط Anthony Zhang.
bpo-28556: بهروزرسانیهای مختلف در ماژول typing: شامل typing.Counter، typing.ChainMap، بهبود کشسازی کلاسهای پایه انتزاعی (ABC) و غیره. درخواستهای پول (PR) اصلی توسط Jelle Zijlstra، Ivan Levkivskyi، Manuel Krebber و Łukasz Langa.
bpo-29100: رفع رگرسیون datetime.fromtimestamp() که در پایتون 3.6.0introduced معرفی شده بود: بررسی سالهای حداقل و حداکثر.
bpo-29519: رفع انتشار استثناهای weakref در هنگام خاموش شدن مفسر وقتی که با ترکیب بازی از پردازش چندگانه (multiprocessing) و کُدکهای سفارشی استفاده میشود.
bpo-29416: جلوگیری از حلقهی بینهایت در pathlib.Path.mkdir
bpo-29444: رفع دسترسی به بافر خارج از کران (out-of-bounds) در متد group() از شیء تطابق (match). بر اساس وصله (patch) ارائه شده توسط WGH.
bpo-29335: رفع مشکل subprocess.Popen.wait() هنگامی که فرایند فرزند بهجای حالت پایانیافته، به یک حالت متوقفشده خارج شده است (مثلاً هنگام استفاده از ptrace).
bpo-29290: رفع یک رگرسیون در argparse که پیامهای راهنما در فضاهای خالی غیرشکننده شکسته میشدند.
bpo-28735: رفع مقایسهی mock.MagickMock با mock.ANY.
bpo-29316: بازیابی وضعیت موقت ماژول typing، و افزودن یادداشت مربوطه به مستندات. وصله توسط Ivan L.
bpo-29219: رفع بازگشتی بینهایت در repr نمونههای مقداردهینشدهی ctypes.CDLL.
bpo-29011: رفع یک جاافتادگی مهم با افزودن Deque به ماژول typing.
bpo-28969: رفع شرایط رقابت در پیادهسازی C مربوط به functools.lru_cache. خطای KeyError ممکن بود هنگام فراخوانی همزمان تابع نهانگاهگذاریشده با نهانگاه پر از نخهای مختلف و آرگومانهای یکسانِ نهانگاهگذارینشده رخ دهد.
bpo-29142: در urllib.request، پسوندها در متغیر محیطی no_proxy با نقطههای پیشتاز میتوانند دوباره با نام میزبانهای مرتبط مطابقت پیدا کنند (مثلاً b.c. با a.b.c مطابقت دارد). وصله توسط Milan Oberkirch.
bpo-28961: رفع کمکی unittest.mock._Call: دیگر پارامتر name را نادیده نگیرید. وصله نوشتهشده توسط Jiajun Huang.
bpo-29203: تابع functools.lru_cache() اکنون به PEP 468 احترام میگذارد و ترتیب آرگومانهای کلیدواژهای را حفظ میکند. فراخوانی f(a=1, b=2) اکنون به طور جداگانه از f(b=2, a=1) کش میشود، زیرا هر دو فراخوانی به طور بالقوه میتوانند نتایج متفاوتی بدهند.
bpo-15812: تابع inspect.getframeinfo() اکنون سطر اول یک زمینه را به درستی نمایش میدهد. وصله توسط Sam Breese.
bpo-29094: آفستها در یک پرونده ZIP ایجاد شده با شیء پرونده خارجی و حالتهای «w» و «x» اکنون نسبت به شروع پرونده هستند.
bpo-29085: اجازه دادن به random.Random.seed() تا به جای شناسه فرآیند (pid) و زمان، از تصادفیبودن با کیفیت بالای سیستمعامل استفاده کند.
bpo-29061: رفع باگ در secrets.randbelow() که هنگام دریافت ورودی منفی متوقف (hang) میشد. وصله توسط Brendan Donegan.
bpo-29079: جلوگیری از حلقهی بینهایت در pathlib.resolve() روی ویندوز
bpo-13051: رفع خطاهای بازگشتی در curses.textpad.Textbox بزرگ یا تغییر اندازه یافته. بر اساس وصلهای از Tycho Andersen.
bpo-29119: رفع weakrefها در نسخهی پایتون خالص متد move_to_end() در collections.OrderedDict. مشارکت توسط Andra Bogildea.
bpo-9770: محمولهای curses.ascii اکنون با اعداد صحیح منفی به درستی کار میکنند.
bpo-28427: کلیدهای قدیمی نباید مقادیر جدید را هنگام جمعآوری از نخی دیگر از WeakValueDictionary حذف کنند.
bpo-28923: حذف آثار ویرایشگر از Tix.py.
bpo-29055: تمیزکاری خطای جمعیت خالی در random.choice() با سرکوب کردن استثنای بالادستی.
bpo-28871: رفع یک فروپاشی هنگام زدایش (deallocate) عمیق ElementTree.
bpo-19542: رفع باگهای WeakValueDictionary.setdefault() و WeakValueDictionary.pop() هنگامی که یک جمعآوری زباله در نخی دیگر اتفاق میافتد.
bpo-20191: رفع یک فروپاشی در resource.prlimit() هنگام ارسال یک دنباله که عناصر خود را به عنوان محدودیت مالک نیست.
bpo-28779: تابع multiprocessing.set_forkserver_preload() فرایند forkserver را دچار فروپاشی میکرد اگر یک ماژول ازپیشبارگذاریشده برخی از اشیای چندپردازشی مانند قفلها را نمونهسازی میکرد.
bpo-28847: ماژول dbm.dumb اکنون از خواندن پروندههای فقطخواندنی پشتیبانی میکند و وقتی پرونده تغییر نکرده باشد، پروندهی اندیس را بازنویسی نمیکند.
bpo-26937: متد chown() از کلاس tarfile.TarFile اکنون زمانی که ماژول grp نتواند وارد شود (به عنوان مثال روی پلتفرمهای اندروید) با خطا مواجه نمیشود.
IDLE¶
Windows¶
bpo-29579: حذف readme.txt از نصبکننده
bpo-29326: نادیدهگرفتن سطرهای خالی در پروندههای ._pth (ارائهی وصله توسط Alexey Izbyshev)
bpo-28164: مدیریت درست نامپروندههای ویژهی کنسول (ارائهی وصله توسط Eryk Sun)
bpo-29409: پیادهسازی PEP 529 برای io.FileIO (ارائهی وصله توسط Eryk Sun)
bpo-29392: جلوگیری از فروپاشی هنگام ارسال آرگومانهای نامعتبر به ماژول msvcrt.
bpo-25778: ماژول winreg رشته را به شکل صحیح کوتاه نمیکند (ارائهی وصل توسط Eryk Sun)
bpo-28896: منسوخ کردن WindowsRegistryFinder و غیرفعالسازی پیشفرض آن.
رابط C API¶
bpo-27867: تابع PySlice_GetIndicesEx() با یک ماکرو جایگزین میشود اگر Py_LIMITED_API تنظیم نشده باشد یا مقداری بین 0x03050400 و 0x03060000 (شاملنشده) یا 0x03060100 یا بالاتر داشته باشد.
bpo-29083: اعلان برخی توابع عمومی API اصلاح شد. توابع PyArg_VaParse() و PyArg_VaParseTupleAndKeywords() در API محدود در دسترس نبودند. توابع PyArg_ValidateKeywordArguments()، PyArg_UnpackTuple() و Py_BuildValue() در API محدود نسخهی < 3.3 زمانی که PY_SSIZE_T_CLEAN تعریف شده باشد، در دسترس نبودند.
bpo-29058: تمام افزونههای API پایدار اضافه شده پس از پایتون 3.2 اکنون تنها زمانی در دسترس هستند که Py_LIMITED_API روی مقدار PY_VERSION_HEX از حداقل نسخهی پایتون که از این API پشتیبانی میکند، تنظیم شده باشد.
مستندات¶
bpo-28929: پیوند دادن مستندات به پروندهی منبع آن در GitHub.
bpo-25008: مستندسازی smtpd.py به عنوان عملاً منسوخ و افزودن یک اشارهگر به aiosmtpd، یک جایگزین شخص ثالث مبتنی بر asyncio.
bpo-26355: افزودن پیوند سرآیند کانونیکال در هر صفحه به نسخهی اصلی متناظر از مستندات. وصله توسط Matthias Bussonnier.
bpo-29349: اصلاح نحو پایتون ۲ در کد مربوط به ساخت مستندات.
آزمونها¶
bpo-28087: نادیدهگرفتن خطاهای پایش test_asyncore و test_eintr در macOS. نادیدهگرفتن برخی از آزمونهای select.poll هنگام اجرا روی macOS به دلیل مسائل حلنشده با تابع پایش سیستم زیرین در برخی از نسخههای macOS.
bpo-29571: برای تطابق با رفتار پرچم
re.LOCALE، آزمون test_re.test_locale_flag اکنون ازlocale.getpreferredencoding(False)برای تعیین کدگذاری نامزد برای عبارت منظم آزمون استفاده میکند (که به آن اجازه میدهد بهدرستی آزمون را نادیده بگیرد زمانی که کدگذاری محلی پیشفرض یک کدگذاری چندبایتی است)bpo-28950: عدم اجازه برای ترکیب -j0 با -T/-l در آرگومانهای خط فرمان regrtest.
bpo-28683: اصلاح آزمونهایی که یک سوکت unix را bind() میکنند و خطای PermissionError را در اندروید برای یک کاربر غیر root ایجاد میکنند.
bpo-26939: افزودن تابع support.setswitchinterval() برای رفع مشکل معلق ماندن test_functools در شبیهساز qemu اندروید با معماری armv7.
ساخت¶
bpo-27593: ماژولهای sys.version و platform و توابع python_build()، python_branch() و python_revision() اکنون هنگام ساخت از یک مخزن، به جای hg از اطلاعات git استفاده میکنند.
bpo-29572: بهروزرسانی ساخت ویندوز و نصبکنندههای OS X برای استفاده از OpenSSL 1.0.2k.
bpo-26851: تنظیم پرچمهای کامپایل و پیوند اندروید.
bpo-28768: رفع اعلان ضمنی تابع _setmode. وصله توسط Masayuki Yamamoto
bpo-29080: حذف وابستگی سخت به hg.exe از PCBuild/build.bat
bpo-23903: افزودن نامهای جاافتاده به PC/python3.def.
bpo-28762: تابع lockf() در سطح API شماره 24 اندروید در دسترس است، اما ماکرو F_LOCK در android-ndk-r13 تعریف نشده است.
bpo-28538: رفع خطای کامپایلی که به این دلیل رخ میدهد که تابع if_nameindex() در سطح API شماره 24 اندروید در دسترس است، اما ساختار if_nameindex تعریف نشده است.
bpo-20211: پوشهی مربوط به نصب پروندههای سرآیند C و پوشهی مربوط به نصب کتابخانههای کد شیء را به مسیرهای جستجوی کامپایل متقاطع (cross compilation) اضافه نکنید. وصلهی اصلی توسط Thomas Petazzoni.
bpo-28849: عدم تعریف sys.implementation._multiarch روی اندروید.
نسخهی نهایی Python 3.6.0¶
تاریخ انتشار: ۲۰۱۶-۱۲-۲۳
بدون تغییر نسبت به نامزد انتشار ۲
نسخهی نامزد انتشار ۲ Python 3.6.0¶
تاریخ انتشار: ۲۰۱۶-۱۲-۱۶
هسته و توکارها (Core and Builtins)¶
Tools/Demos¶
bpo-28770: رفع python-gdb.py برای فراخوانیهای سریع.
Windows¶
bpo-28896: منسوخ کردن WindowsRegistryFinder.
ساخت¶
bpo-28898: جلوگیری از خطاهای ساخت gdb به دلیل بازتعریف HAVE_LONG_LONG.
نسخهی نامزد انتشار ۱ Python 3.6.0¶
تاریخ انتشار: ۲۰۱۶-۱۲-۰۶
هسته و توکارها (Core and Builtins)¶
bpo-23722: به جای تولید بیصدا کلاسی که از آرگومان صفر
super()در متدها پشتیبانی نمیکند، عدم انتقال ورودی جدید فضای نام__classcell__بهtype.__new__اکنون منجر به یکDeprecationWarningو کلاسی میشود که از آرگومان صفرsuper()پشتیبانی میکند.bpo-28797: اصلاح __dict__ کلاس در داخل متد __set_name__ یک توصیفگر که در داخل آن کلاس استفاده میشود، دیگر مانع از فراخوانی متد __set_name__ سایر توصیفگرها نمیشود.
bpo-28782: یک باگ در پیادهسازی
yield fromهنگام بررسی اینکه آیا دستور بعدی YIELD_FROM است، رفع شد. رگرسیون ایجادشده توسط WORDCODE (bpo-26647).
کتابخانه¶
bpo-27030: کاراکترهای گریز ناشناخته در الگوی جایگزینی re.sub() دوباره مجاز شدند. اما همچنان منسوخ هستند و در نسخهی ۳.۷ غیرفعال خواهند شد.
bpo-28835: رفع یک رگرسیون ایجادشده در warnings.catch_warnings(): فراخوانی warnings.showwarning() اگر درون مدیر زمینه بازنشناسی (overridden) شده باشد.
bpo-27172: برای کمک به ارتقا از نسخهی ۲.۷، منسوخشدگی مستندشدهی قبلی تابع
inspect.getfullargspec()معکوس شده است. این تصمیم ممکن است پس از اینکه شاخهی پایتون ۲.۷ دیگر به طور رسمی پشتیبانی نشود، دوباره بررسی شود.bpo-26273: افزودن ثابتهای جدید
socket.TCP_CONGESTION(لینوکس ۲.۶.۱۳) وsocket.TCP_USER_TIMEOUT(لینوکس ۲.۶.۳۷). وصله نوشتهشده توسط عمر ساندووال (Omar Sandoval).bpo-24142: خواندن یک پروندهی تنظیمات آسیبدیده، configparser را در وضعیت نامعتبری باقی میگذاشت. وصلهی اصلی از Florian Höch.
bpo-28843: رفع وظیفهی C در asyncio برای مدیریت استثناهای __traceback__.
رابط C API¶
bpo-28808: تابع PyUnicode_CompareWithASCIIString() اکنون هرگز استثنایی بالا نمیآورد.
مستندات¶
Tools/Demos¶
bpo-28023: رفع مشکلی که در آن python-gdb.py از پیادهسازی جدید دیکشنری پشتیبانی نمیکرد.
Python 3.6.0 بتا ۴¶
تاریخ انتشار: 2016-11-21
هسته و توکارها (Core and Builtins)¶
bpo-28532: هنگام دو بار استفاده از گزینهی -V، مقدار sys.version نمایش داده شود.
bpo-27100: دستور with اکنون پیش از بررسی __enter__، وجود __exit__ را بررسی میکند. این کار هنگام مفقود بودن هر دو متد، پیامهای خطای کمتری ایجاد میکند که گیجکننده نیستند. وصله توسط Jonathan Ellington.
bpo-28746: متد توصیفگر پروندهی set_inheritable() در پلتفرمهایی که دستورات ioctl به نامهای FIOCLEX و FIONCLEX را ندارند، اصلاح شد.
bpo-26920: رفع مشکل دریافت نکردن مجموعه نویسههای locale هنگام مقداردهی اولیه مفسر، در پلتفرمهایی که langinfo را ندارند.
bpo-28648: رفع فروپاشی در Py_DecodeLocale() در ساخت دیباگ روی مکاواسایکس هنگام رمزگشایی نویسههای ستارهای (astral). وصله توسط Xiang Zhang.
bpo-19398: در صورت خالی بودن اجزای PYTHONPATH در زمان کامپایل، اسلش اضافی دیگر به اجزای sys.path اضافه نمیشود.
bpo-28665: بهبود ۴۰ درصدی سرعت آپکد STORE_DEREF.
bpo-28583: تابع PyDict_SetDefault در صورت نیاز، جدول تقسیمشده را ترکیب نمیکرد. این وصله توسط Xiang Zhang تهیه شده است.
bpo-27243: تغییر PendingDeprecationWarning به DeprecationWarning. همانطور که در این مسئله توافق شد، بازگرداندن یک شیء انتظارپذیر توسط __aiter__ باید در نسخهی ۳.۵ منجر به PendingDeprecationWarning و در نسخهی ۳.۶ منجر به DeprecationWarning شود.
bpo-26182: رفع یک نشت ارجاع (refleak) در کدی که DeprecationWarning ایجاد میکند.
bpo-28721: اصلاح تولیدگرهای ناهمگام aclose() و athrow() برای مدیریت صحیح انتشار StopAsyncIteration.
کتابخانه¶
bpo-28752: بازیابی متدهای __reduce__() از اشیای تاریخوساعت (datetime).
bpo-28727: الگوهای عبارت باقاعده، شیءهای _sre.SRE_Pattern ایجادشده توسط re.compile()، قابل مقایسه میشوند (فقط عملگرهای x==y و x!=y). این تغییر باید bpo-18383 را اصلاح کند: هنگام بارگذاری مجدد ماژول warnings، فیلترهای هشدار را تکثیر نکنید (کاری که معمولاً فقط در آزمونهای واحد انجام میشود).
bpo-20572: پارامتر endtime که در متد subprocess.Popen.wait مستند نشده بود، اکنون یک DeprecationWarning بالا میآورد.
bpo-25659: در ctypes، از بروز فروپاشی هنگام فراخوانی متدهای from_buffer() و from_buffer_copy() روی کلاسهای انتزاعی مانند Array جلوگیری کنید.
bpo-19717: موفقیتآمیز ساختن Path.resolve() روی مسیردهایی که وجود ندارند. وصله از Vajrasky Kok
bpo-28563: رفع احتمال حملهی DoS و اجرای کد دلخواه هنگام مدیریت انتخابهای شکل جمع در ماژول gettext. پارسر عبارت اکنون سینتکس دقیقی را که توسط GNU gettext پشتیبانی میشود، پشتیبانی میکند.
bpo-28387: رفع فروپاشی احتمالی در تابع تخریبکنندهی _io.TextIOWrapper هنگامی که جمعآوریکنندهی زباله در نخ دیگری فراخوانی میشود. براساس وصلهی Sebastian Cufre.
bpo-28600: بهینهسازی loop.call_soon.
bpo-28613: رفع مشکل get_event_loop() که اگر از همروالها یا کالبکها فراخوانی شود، حلقهی فعلی را برمیگرداند.
bpo-28634: رفع مشکل asyncio.isfuture() برای پشتیبانی از unittest.Mock.
bpo-26081: رفع نشت حافظه (refleak) در _asyncio.Future.__iter__().throw.
bpo-28639: رفع مشکل inspect.isawaitable برای اینکه همیشه مقدار bool برگرداند. وصله توسط Justin Mayfield.
bpo-28652: وادار کردن متدهای حلقه به رد کردن انواعی از سوکت که پشتیبانی نمیکنند.
bpo-28653: رفع یک نشت حافظه (refleak) در functools.lru_cache.
bpo-28703: رفع مشکل asyncio.iscoroutinefunction برای مدیریت اشیاء Mock.
bpo-28704: رفع مشکل create_unix_server برای پشتیبانی از اشیاء شبهمسیر (PEP 519).
bpo-28720: افزودن collections.abc.AsyncGenerator.
مستندات¶
bpo-28513: مستندسازی رابط خط فرمان zipfile.
آزمونها¶
ساخت¶
Python 3.6.0 بتا ۳¶
تاریخ انتشار: 2016-10-31
هسته و توکارها (Core and Builtins)¶
bpo-28128: اخطار منسوخسازی برای دنبالههای گریز (escape) نامعتبر در رشتهها و بایتها اکنون اطلاعات بهتری دربارهی محل وقوع خطا چاپ میکند. این وصله توسط Serhiy Storchaka و Eric Smith تهیه شده است.
bpo-28509: متد dict.update() دیگر حافظهی غیرضروری بزرگی را تخصیص نمیدهد.
bpo-28426: فروپاشی احتمالی در تابع PyUnicode_AsDecodedObject() در نسخهی ساخت اشکالزدایی (debug build) برطرف شد.
bpo-28517: خطای اندازهگیری یکیکمیابیش (of-by-one) در بهینهساز سوراخسویی (peephole optimizer) که باعث نگهداری کد دستنیافتنی میشد، برطرف شد.
bpo-28214: گزارشدهی استثنا برای ویژگیهای مسئلهدار __set_name__ بهبود یافت.
bpo-23782: نشتی حافظهی احتمالی در _PyTraceback_Add() و از دست رفتن استثنا در PyTraceBack_Here() برطرف شد.
bpo-28471: رفع خطای منجر به فروپاشی «تخصیصدهندهی حافظهی پایتون بدون نگهداشتن GIL فراخوانی شد» در socket.setblocking.
کتابخانه¶
bpo-27517: فشردهساز و واگشای LZMA اگر دو بار دادهی خالی دریافت کنند دیگر استثنایی بالا نمیآورند. وصله توسط Benjamin Fogle.
bpo-28549: رفع خطای قطعی حافظه (segfault) در تابع addch() کتابخانهی curses به همراه ncurses6.
bpo-28449: تابع tarfile.open() با حالت "r" یا "r:" اکنون پیش از تلاش برای باز کردن پروندهی tar بدون فشردهسازی، تلاش میکند آن را با فشردهسازی باز کند. در غیر این صورت، احتمال ۵۰ درصد با خطای ignore_zeros=True مواجه میشد.
bpo-23262: ماژول webbrowser اکنون از فایرفاکس ۳۶ به بالا و مرورگرهای مشتقشده از آن پشتیبانی میکند. براساس وصلهی Oleg Broytman.
bpo-27939: رفع باگهای موجود در tkinter.ttk.LabeledScale و tkinter.Scale که به دلیل نمایش مقیاس به عنوان عدد اعشاری درونی در Tk ایجاد شده بودند. تابع tkinter.IntVar اکنون اگر مقدار عدد اعشاری به متغیر زیربنایی Tk اختصاص یابد، به درستی کار میکند.
bpo-18844: روشهای مختلف مشخص کردن وزنها برای random.choices() اکنون دنبالههای نتیجهی یکسانی تولید میکنند.
bpo-28255: متد calendar.TextCalendar().prmonth() دیگر پس از چاپ تقویم یک ماه، یک فاصله در ابتدای سطر جدید چاپ نمیکند. وصله توسط Xiang Zhang.
bpo-20491: کلاس textwrap.TextWrapper اکنون به فاصلههای غیرشکستنی احترام میگذارد. براساس وصلهای از Kaarle Ritvanen.
bpo-28353: تابع os.fwalk() دیگر روی پیوندهای خراب دچار خطا نمیشود.
bpo-28430: اصلاح این مشکل که پیمایشگر (iterator) نوع asyncio.Future پیادهسازیشده در C، مقداری (value) غیر از None را که به متد ()send. ارسال میشود، نمیپذیرد.
bpo-27025: نامهای تولیدشده برای ابزارکهای Tkinter اکنون برای خوانایی بهتر با پیشوند "!" شروع میشوند.
bpo-25464: رفع تابع HList.header_exists() در ماژول tkinter.tix با افزودن یک راهحل موقتی برای باگ کتابخانهی Tix.
bpo-28488: تابع shutil.make_archive() دیگر ورودی "./" را به آرشیو ZIP اضافه نمیکند.
bpo-25953: تابع re.sub() اکنون برای ارجاع عددی نامعتبر به گروه در قالب جایگزینی، حتی اگر الگو در رشته پیدا نشود، یک خطا ایجاد میکند. پیام خطا برای ارجاع نامعتبر گروه اکنون شامل اندیس گروه و موقعیت ارجاع است. براساس وصلهی SilentGhost.
bpo-18219: بهینهسازی csv.DictWriter برای تعداد زیادی از ستونها. وصله توسط Mariatta Wijaya.
bpo-28448: رفع این مشکل که asyncio.Future پیادهسازیشده با C روی ویندوز کار نمیکرد.
bpo-28480: رفع خطای ساخت ماژول socket هنگامی که چندنخی (multithreading) غیرفعال است.
bpo-24452: افزودن پشتیبانی از کروم در Mac OS X به ماژول webbrowser.
bpo-20766: رفع ارجاعات نشتیافته توسط pdb در مدیریت هندلرهای SIGINT.
bpo-28492: اصلاح نحوهی بالا بردن استثنای StopIteration در _asyncio.Future.
bpo-28500: اصلاح کتابخانهی asyncio برای مدیریت جمعآوری زبالهی (GC) مولدهای ناهمگام از یک نخ دیگر.
bpo-26923: اصلاح asyncio.Gather بهمنظور امتناع از لغو شدن هنگامی که تمام فرزندان به پایان رسیدهاند. بستهی الحاقی از Johannes Ebke.
bpo-26796: عدم پیکربندی تعداد کارگران برای اجراکنندهی پیشفرض استخر نخ. بستهی الحاقی اولیه از Hans Lawrenz.
bpo-28544: پیادهسازی asyncio.Task به زبان C.
Windows¶
bpo-28522: اصلاح تخصیص مجدد بافر که به درستی مدیریت نشده بود در getpathp.c
ساخت¶
آزمونها¶
نسخهی ۳.۶.۰ بتای ۲ پایتون¶
تاریخ انتشار: ۲۰۱۶-۱۰-۱۰
هسته و توکارها (Core and Builtins)¶
bpo-28183: پیمایش دیکشنری بهینهسازی و پاکسازی شد.
bpo-26081: پیادهسازی C برای asyncio.Future اضافه شد. وصلهی اصلی توسط Yury Selivanov تهیه شده است.
bpo-28379: بررسیهای سلامت (sanity checks) و آزمونها برای PyUnicode_CopyCharacters() اضافه شدند. این وصله توسط Xiang Zhang تهیه شده است.
bpo-28376: نوع (type) پیمایشگر بازهی طولانی (long range iterator) اکنون به عنوان Iterator ثبت میشود. این وصله توسط Oren Milman تهیه شده است.
bpo-28376: ایجاد نمونههای range_iterator با فراخوانی نوع range_iterator اکنون منسوخ شده است. بستهی الحاقی از Oren Milman.
bpo-28376: سازندهی range_iterator اکنون بررسی میکند که مقدار step برابر با ۰ نباشد. بستهی الحاقی از Oren Milman.
bpo-26906: حل کردن متدهای ویژهی یک نوع مقداردهینشده (uninitialized)، اکنون به جای شکست، باعث مقداردهی اولیهی ضمنی آن نوع میشود.
bpo-18287: تابع PyType_Ready() اکنون بررسی میکند که tp_name مقدار NULL نباشد. وصلهی اصلی توسط Niklas Koep تهیه شده است.
bpo-24098: فروپاشی احتمالی هنگام تغییر درخت نحوی انتزاعی (AST) در فرایند کامپایل آن برطرف شد.
bpo-28201: دیکشنری امکان وقوع دومین تداخل را در جدول درهمسازی (hash table) هنگامی که درهمسازها بیتهای پایینی یکسانی دارند، کاهش میدهد.
bpo-28350: ثابتهای رشتهای دارای نویسهی پوچ (null character) دیگر درونیسازی نمیشوند.
bpo-26617: رفع فروپاشی هنگام اجرای جمعآور زباله (GC) در طول فراخوانیهای بازگشتی (callbacks) مرجع ضعیف.
bpo-27942: ثابتهای رشتهای اکنون بهصورت بازگشتی در تاپلها و مجموعههای فریزشده (frozensets) درونیسازیشده (interned) میشوند.
bpo-21578: برطرفسازی پیام خطای گمراهکننده هنگام فراخوانی ImportError با آرگومانهای کلیدواژهای نامعتبر.
bpo-28203: رفع نوع دادهی نادرست در پیام خطای complex(1.0, {2:3}). وصلهای از Soumya Sharma.
bpo-28086: آرگومان تکجایگاهی با زیرنوع تاپل، دستنخورده به تابع تعریفشده با C ارسال میشد. اکنون به تاپل دقیق تبدیل میشود.
bpo-28214: اکنون __set_name__ بهجای نمونه (instance)، روی کلاس جستجو میشود.
bpo-27955: در صورت بروز خطای EPERM در سیستمعامل هنگام فراخوانی سیستمی getrandom() (برای مثال وقتی توسط SECCOMP مسدود شده است)، خواندن از دستگاه /dev/urandom بهعنوان جایگزین استفاده شود.
bpo-28192: readline را در حالت (mode) ایزوله ایمپورت نکنید.
ارتقای پایگاهدادههای داخلی یونیکد به نسخهی ۹.۰.۰ یونیکد.
bpo-28131: برطرفسازی یک رگرسیون در compile_source() در ماژول zipimport. ماژول zipimport باید از همان سطح بهینهسازی مفسر استفاده کند.
bpo-28126: جایگزینی Py_MEMCPY با memcpy(). ویژوال استودیو میتواند memcpy() را بهدرستی بهینهسازی کند.
bpo-28120: برطرفسازی dict.pop() برای دیکشنریهای تقسیمشده هنگام تلاش برای حذف یک «کلید معلق» (هنوز در جدول تقسیمشده درج نشده است). وصلهای از Xiang Zhang.
bpo-26182: هنگامی که کلیدواژههای async و await به عنوان نام متغیر/ویژگی/کلاس/تابع استفاده میشوند، DeprecationWarning صادر کنید.
کتابخانه¶
bpo-27998: رفع پشتیبانی از مسیر بایتها (bytes path) در تابع os.scandir() روی سیستمعامل ویندوز. وصله از Eryk Sun.
bpo-28317: واساز (disassembler) اکنون آرگومان FORMAT_VALUE را رمزگشایی میکند.
bpo-26293: اصلاح نوشتن پروندههای ZIP که از ابتدای پرونده شروع نمیشوند. آفستها در پروندهی ZIP اکنون مطابق با مشخصات، نسبت به ابتدای آرشیو سنجیده میشوند.
bpo-28380: توابع autospec در ماک unittest.mock اکنون به درستی از assert_called، assert_not_called و assert_called_once پشتیبانی میکنند.
bpo-27181: حذف statistics.geometric_mean و به تعویق انداختن آن تا نسخهی ۳.۷.
bpo-28229: ماژول lzma اکنون از pathlib پشتیبانی میکند.
bpo-28321: رفع مشکل نوشتن نویسههای غیر BMP با قالب دودویی در plistlib.
bpo-28225: ماژول bz2 اکنون از pathlib پشتیبانی میکند. وصلهی اولیه از Ethan Furman.
bpo-28227: ماژول gzip اکنون از pathlib پشتیبانی میکند. وصله از Ethan Furman.
bpo-27358: بهینهسازی ادغام آرگومانهای کلیدواژهای متغیر (var-keyword) و بهبود پیام خطا هنگام ارسال یک شیء غیرنگاشت به عنوان آرگومان کلیدواژهای متغیر.
bpo-28257: بهبود پیام خطا هنگام ارسال یک شیء پیمایشپذیر (iterable) به عنوان آرگومان جایگاهی متغیر (var-positional). آپکد BUILD_TUPLE_UNPACK_WITH_CALL اضافه شد.
bpo-28322: رفع خرابیهای احتمالی هنگام پیکلگشایی (unpickle) اشیای itertools از دادههای پیکل نادرست. بر اساس وصلهای از John Leitch.
bpo-28228: ماژول imghdr اکنون از pathlib پشتیبانی میکند.
bpo-28226: ماژول compileall اکنون از pathlib پشتیبانی میکند.
bpo-28314: اصلاح اعلان تابع (پرچمهای C) برای متد getiterator() در xml.etree.ElementTree.Element.
bpo-28148: توقف استفاده از localtime() و gmtime() در ماژول time. افزودن API مستقل از پلتفرم _PyTime_localtime که مشابه POSIX localtime_r است، اما روی تمام پلتفرمها در دسترس است. وصله از Ed Schouten.
bpo-28253: اصلاح توابع گاهشماری برای ماههای حدی: 0001-01 و 9999-12. متدهای itermonthdays() و itermonthdays2() بازنویسی شدهاند تا itermonthdates() را فراخوانی نکنند؛ زیرا این امر میتواند باعث سرریز/کمریز در datetime.date شود.
bpo-28275: اصلاح احتمال استفاده پس از آزادسازی حافظه در متدهای decompress() مربوط به کلاسهای LZMADecompressor و BZ2Decompressor. وصلهی اولیه از John Leitch.
bpo-27897: اصلاح احتمال فروپاشی در sqlite3.Connection.create_collation() در صورتی که شیء رشتهمانند نامعتبری به عنوان نام ارسال شود. وصله از Xiang Zhang.
bpo-18844: تابع random.choices() اکنون آرگومان k را به صورت فقط-کلیدواژه میپذیرد تا خوانایی موارد رایج بهبود یابد و با امضای استفادهشده در سایر زبانها هماهنگ شود.
bpo-18893: اصلاح مدیریت نامعتبر استثنا در Lib/ctypes/macholib/dyld.py. وصله از Madison May.
bpo-27611: اصلاح پشتیبانی از پنجرهی ریشه پیشفرض در ماژول tkinter.tix. افزودن پارامتر master در سازندهی DisplayStyle.
bpo-27348: در ماژول traceback، قالببندی پیامهای استثنا مانند "Exception: None" بازیابی شد. این کار یک رگرسیون معرفیشده در 3.5a2 را اصلاح میکند.
bpo-25651: امکان استفاده از مقادیر نادرست برای پارامتر msg در subTest() فراهم شد.
bpo-27778: اصلاح نشت حافظه در os.getrandom() هنگامی که اجرای getrandom() توسط یک سیگنال متوقف میشود و یک هندلر سیگنال، یک استثنای پایتون را بالا میآورد.
bpo-28200: اصلاح نشت حافظه روی ویندوز در ماژول os (اصلاح تابع path_converter()).
bpo-25400: کلاس RobotFileParser اکنون مقادیر پیشفرض را برای crawl_delay و request_rate به درستی برمیگرداند. وصلهی اولیه از Peter Wirtz.
bpo-27932: جلوگیری از نشت حافظه در win32_ver().
اصلاح خطای UnboundLocalError در socket._sendfile_use_sendfile.
bpo-28075: بررسی وجود ERROR_ACCESS_DENIED در پیادهسازی ویندوزی os.stat(). وصله از Eryk Sun.
bpo-22493: پیام هشدار صادرشده با استفاده از پرچمهای درونخطی در وسط عبارت باقاعده اکنون حاوی یک الگوی عبارت باقاعده (کوتاهشده) است. وصله از Tim Graham.
bpo-25270: جلوگیری از ایجاد SystemError توسط codecs.escape_encode() هنگامی که یک بایترشتهی خالی ارسال میشود.
bpo-28181: دریافت antigravity روی HTTPS. وصله از Kaartic Sivaraam.
bpo-25895: فعالسازی طرحوارههای URL در urllib.parse.urljoin. وصله توسط Gergely Imreh و Markus Holtermann.
bpo-28114: رفع یک فروپاشی در parse_envlist() هنگامی که متغیرهای محیطی شامل رشتههای بایتی هستند. وصله توسط Eryk Sun.
bpo-27599: رفع سرریز بافر در binascii.b2a_qp() و binascii.a2b_qp().
bpo-27906: رفع تمام شدن ظرفیت پذیرش سوکت در جریان ترافیک بالای TCP. وصله توسط Kevin Conway.
bpo-28174: مدیریت زمانی که SO_REUSEPORT بهدرستی پشتیبانی نمیشود. وصله توسط Seth Michael Larson.
bpo-26654: بازرسی functools.partial در asyncio.Handle.__repr__. وصله توسط iceboy.
bpo-26909: رفع کندی ورودی/خروجی پایپها در asyncio. وصله توسط INADA Naoki.
bpo-28176: رفع وضعیت رقابتی فراخوانیهای بازگشتی در asyncio.SelectorLoop.sock_connect.
bpo-27759: رفع نگهداری نادرست توصیفگرهای پروندهی نامعتبر توسط selectorها. وصله توسط Mark Williams.
bpo-28368: اگر ناظر فرزند هیچ حلقهای متصل نداشته باشد، پایش فرایندها رد میشود. وصله از Vincent Michel.
bpo-28369: هنگامی که از FD ترابرد با add_reader، add_writer و غیره استفاده میشود، خطای RuntimeError را بالا بیاورید.
bpo-28370: افزایش سرعت asyncio.StreamReader.readexactly. وصله از Коренберг Марк.
bpo-28371: منسوخ کردن ارسال asyncio.Handles به run_in_executor.
bpo-28372: اصلاح asyncio برای پشتیبانی از قالببندی همروالهای غیرپایتونی.
bpo-28399: حذف سوکت UNIX از FS قبل از اتصال (binding). وصله از Коренберг Марк.
bpo-27972: ممنوع کردن انتظار (await) وظایف روی خودشان.
Windows¶
bpo-28402: افزودن پروندههای کاتالوگ امضاشده برای کتابخانه استاندارد در ویندوز.
bpo-28333: فعالسازی یونیکد برای اعلانات ps1/ps2 و input(). (ارائهی وصل توسط Eryk Sun)
bpo-28251: بهبود راهنماهای کمکی در ویندوز.
bpo-28110: پروندهی launcher.msi کدهای محصول متفاوتی بین نسخههای ۳۲ بیتی و ۶۴ بیتی دارد
bpo-28161: باز کردن CON برای دسترسی نوشتن با شکست مواجه میشود
bpo-28162: تابع readall() در WindowsConsoleIO اگر با سطر اول با Ctrl+Z شروع شود با شکست مواجه میشود
bpo-28163: تابع fileno() در WindowsConsoleIO پرچمهای اشتباهی را به _open_osfhandle ارسال میکند
bpo-28164: تابع _PyIO_get_console_type برای مسیرهای مختلف با شکست مواجه میشود
bpo-28137: تغییر نام پروندهی مسیر ویندوز به ._pth
bpo-28138: پروندهی ._pth در ویندوز باید اجازهی ایمپورت site را بدهد
رابط C API¶
bpo-28426: توابع منسوخ مستندنشدهی PyUnicode_AsEncodedObject()، PyUnicode_AsDecodedObject()، PyUnicode_AsDecodedUnicode() و PyUnicode_AsEncodedUnicode().
ساخت¶
bpo-28258: رفع مشکل ساخت با locale استونیایی (هدفهای python-config و distclean در Makefile). وصلهای از Arfrever Frehtes Taifersar Arahesis.
bpo-26661: ماژول setup.py اکنون libffi سیستمی را با پوشش multiarch شناسایی میکند.
bpo-15819: حذف گزینهی پوشهی جستجوی شامل (include) تکراری برای ساخت در خارج از درخت منبع.
آزمونها¶
bpo-28217: افزودن ماژول _testconsole برای آزمون ورودی کنسول.
نسخهی ۳.۶.۰ بتای ۱ پایتون¶
تاریخ انتشار: ۲۰۱۶-۰۹-۱۲
هسته و توکارها (Core and Builtins)¶
bpo-23722: سلول __class__ استفادهشده توسط تابع بدون آرگومان super() اکنون به جای __build_class__ از type.__new__ مقداردهی اولیه میشود، بنابراین متدهای کلاسی که به آن اتکا دارند اکنون هنگام فراخوانی از متدهای فراکلاس در طول ایجاد کلاس به درستی کار خواهند کرد. بستهی الحاقی از Martin Teichmann.
bpo-25221: اصلاح نتیجهی مخدوش از PyLong_FromLong(0) زمانی که پایتون با NSMALLPOSINTS = 0 کامپایلشده است.
bpo-27080: پیادهسازی پشتیبانی از قالببندی برای PEP 515. بستهی الحاقی اولیه از Chris Angelico.
bpo-27199: در ماژول tarfile، برای بهبود پهنای باند، اندازهی بافر copyfileobj را در معرض دید قرار دهید. بستهی الحاقی از Jason Fried.
bpo-27948: در افاسترینگها، استفاده از بکاسلشها را فقط درون آکولادها (جایی که عبارتها قرار دارند) مجاز کنید. این یک تغییر ناسازگار نسبت به نسخههای آلفای ۳.۶ است که در آنها استفاده از بکاسلش در هر جای افاسترینگ مجاز بود. همچنین، الزام کنید که عبارتهای درون افاسترینگها در داخل آکولادهای لفظی قرار گیرند، نه کاراکترهای گریز مانند
f'\x7b"hi"\x7d'.bpo-28046: حذف دایرکتوریهای مختص به پلتفرم از sys.path.
bpo-28071: افزودن شرط خروج زودهنگام برای تفاضلگیری از یک مجموعه خالی.
bpo-25758: جلوگیری از کدگذاری غیرضروری نام پرونده توسط zipimport (وصله توسط Eryk Sun)
bpo-25856: ویژگی __module__ در کلاسها و توابع اکستنشن اکنون درونیسازیشده (interned) است. این امر منجر به دادههای فشردهتر در pickle با پروتکل (protocol) شماره ۴ میشود.
bpo-27213: بازطراحی آپکدهای CALL_FUNCTION* برای تولید بایتکد کوتاهتر و کارآمدتر. وصله توسط Demur Rumed، طراحی توسط Serhiy Storchaka، بازبینیشده توسط Serhiy Storchaka و Victor Stinner.
bpo-26331: پیادهسازی پشتیبانی توکنسازی برای PEP 515. وصله توسط Georg Brandl.
bpo-27999: تبدیل خطای «سراسری پس از استفاده» (global after use) به یک SyntaxError و همین طور برای nonlocal. وصله توسط Ivan Levkivskyi.
bpo-28003: پیادهسازی PEP 525 -- تولیدگرهای ناهمگام (Asynchronous Generators).
bpo-27985: پیادهسازی PEP 526 -- نحو برای حاشیهنویسیهای متغیر. وصله توسط Ivan Levkivskyi.
bpo-26058: افزودن یک نسخهی خصوصی جدید به نوع دیکشنری توکار، که در هر ایجاد دیکشنری و هر تغییر دیکشنری افزایش مییابد. پیادهسازی PEP 509.
bpo-27364: جفت نویسهی بکاسلشی که یک دنبالهی گریز معتبر نباشد، اکنون یک DeprecationWarning تولید میکند. وصله توسط Emanuel Barry.
bpo-27350: پیادهسازی
dictمشابه PyPy تغییر کرده است. این پیادهسازی فشردهتر است و ترتیب درج را حفظ میکند. (ایده توسط Raymond Hettinger و وصله توسط Inada Naoki توسعه یافته است.)bpo-27911: حذف بررسیهای خطای غیرضروری در
exec_builtin_or_dynamic().bpo-27078: افزودن آپکد BUILD_STRING. بهینهسازی ارزیابی افاسترینگها.
bpo-17884: پایتون اکنون به سیستمهایی با inttypes.h و stdint.h نیاز دارد
bpo-27961: الزام پلتفرمها به پشتیبانی از
long long. پایتون سالهاست بدونlong longکامپایل نمیشود، بنابراین این مورد اساساً یک تشریفات است.bpo-27355: پشتیبانی از Windows CE حذف شد. این قابلیت هرگز تکمیل نشد و Windows CE دیگر یک پلتفرم مرتبط برای پایتون نیست.
پیادهسازی PEP 523.
bpo-27870: شیفت به چپ صفر توسط یک عدد صحیح بزرگ دیگر سعی نمیکند مقادیر زیادی از حافظه را تخصیص دهد.
bpo-25402: در تبدیل عدد صحیح به رشتهی دهدهی، برآورد حافظهی میانی مورد نیاز را بهبود ببخشید و یک بررسی سرریز بیشازحد سختگیرانه را حذف کنید. وصله توسط Serhiy Storchaka.
bpo-27214: در long_invert، در تغییر شیء بازگرداندهشده توسط long_add احتیاط بیشتری به خرج دهید و یک بررسی غیرضروری برای اعداد صحیح کوچک (longs) را حذف کنید. با تشکر از Oren Milman برای تحلیل و وصله.
bpo-27506: پشتیبانی از ارسال آرگومان «delete» در تابع bytes/bytearray.translate() به صورت کلیدواژه.
bpo-27812: پاکسازی صحیح بازارجاع قاب (frame) تولیدگر به خودِ تولیدگر برای جلوگیری از فروپاشیها در frame.clear().
bpo-27811: رفع یک فروپاشی هنگامی که یک همروال که منتظر آن مانده نشده است (awaited) با فعال بودن هشدارها به عنوان خطا نهایی (finalized) میشود.
bpo-27587: رفع مشکل دیگری که توسط PVS-Studio پیدا شد: بررسی اشارهگر تهی (Null pointer) پس از استفاده از 'def' در تابع _PyState_AddModule(). وصله توسط Christian Heimes.
bpo-27792: عملیات باقیمانده (modulo) اعمالشده روی
boolو سایر زیرکلاسهایintاکنون همیشه یکintبرمیگرداند. پیش از این نوع برگشتی به مقادیر ورودی بستگی داشت. وصله توسط Xiang Zhang.bpo-26984: تابع int() اکنون همیشه یک نمونه از نوع دقیق int برمیگرداند.
bpo-25604: رفع یک باگ جزئی در تقسیم صحیح (true division) عدد صحیح؛ این باگ به طور بالقوه میتوانست نتایج دارای اختلاف یک واحد در آخرین رقم (ulp) را روی پلتفرمهایی با پیادهسازیهای غیرقابل اعتماد ldexp ایجاد کند.
bpo-24254: مرتبسازی پیشفرض فضای نام تعریف کلاس.
bpo-27662: رفع بررسی سرریز در
List_New: کد اصلی به جای کران بالایی صحیحPy_SSIZE_T_MAX، آن را در برابرPy_SIZE_MAXبررسی میکرد. وصله توسط Xiang Zhang.bpo-27782: ایمپورت ماژول توسعهای چندمرحلهای اکنون به درستی اجازه میدهد از فیلد
m_methodsبرای افزودن توابع سطح ماژول به نمونههای انواع غیرماژولی برگرداندهشده ازPy_create_modاستفاده شود. وصله توسط Xiang Zhang.bpo-27936: تابع round() آرگومان دوم None را برای برخی انواع میپذیرفت اما برای برخی دیگر نمیپذیرفت. این ناسازگاری با پذیرش None برای تمام انواع عددی برطرف شد.
bpo-27487: اگر آرگومان زیرماژول برای «python -m» یا runpy.run_module() پس از ایمپورت شدن بستههای والد، اما پیش از اجرا شدن زیرماژول، در sys.modules پیدا شود، هشدار صادر کن.
bpo-27157: فقط به خود تابع type() اجازه دهید شکل تکآرگومانی را بپذیرد. وصله توسط Eryk Sun و Emanuel Barry.
bpo-27558: رفع یک SystemError در پیادهسازی دستور «raise». در یک نخ کاملاً تازه، از آنجا که هیچ استثنای فعالی برای بازایجاد (reraise) وجود ندارد، یک RuntimeError ایجاد کنید. وصله نوشتهشده توسط Xiang Zhang.
bpo-28008: پیادهسازی PEP 530 -- درکهای ناهمگام (asynchronous comprehensions).
bpo-27942: رفع نشت حافظه در codeobject.c
کتابخانه¶
bpo-28732: رفع فروپاشی در os.spawnv() هنگامی که هیچ عنصری در args وجود ندارد
bpo-28485: همیشه برای پارامتر منفی compileall.compile_dir(workers=...) خطای ValueError ایجاد کنید، حتی زمانی که قابلیت چندنخی (multithreading) در دسترس نیست.
bpo-28037: استفاده از sqlite3_get_autocommit() به جای تنظیم دستی Connection->inTransaction.
bpo-25283: ویژگیهای tm_gmtoff و tm_zone اکنون در تمام پلتفرمها در مقادیر برگشتی time.localtime() و time.gmtime() در دسترس هستند.
bpo-24454: گروههای شیء تطبیق عبارت باقاعده اکنون با استفاده از __getitem__ قابل دسترسی هستند. عبارت "mo[x]" معادل "mo.group(x)" است.
bpo-10740: کتابخانهی sqlite3 دیگر تراکنش باز را پیش از دستورات DDL به طور ضمنی ثبت نهایی نمیکند.
bpo-17941: افزودن یک پارامتر module به collections.namedtuple().
bpo-22493: پرچمهای درونخطی اکنون باید فقط در ابتدای عبارت باقاعده استفاده شوند. اگر از آنها در وسط عبارت باقاعده استفاده شود، هشدار منسوخسازی صادر میشود.
bpo-26885: ماژول xmlrpc اکنون از مارشالزدایی دادههای اضافی مورد استفاده توسط پیادهسازی XML-RPC آپاچی برای مقادیر عددی و None پشتیبانی میکند.
bpo-28070: رفع خطای تحلیل پرچم پرجزئیات درونخطی در عبارات باقاعده.
bpo-19500: افزودن قابلیت ازسرگیری نشست SSL سمت کلاینت به ماژول ssl.
bpo-28022: منسوخ کردن آرگومانهای مرتبط با ssl به نفع SSLContext. این منسوخسازی شامل ایجاد دستی SSLSocket و certfile/keyfile (یا موارد مشابه) در کتابخانههای ftplib، httplib، imaplib، smtplib، poplib و urllib است.
bpo-28043: کلاس SSLContext تنظیمات پیشفرض بهبودیافتهای دارد: OP_NO_SSLv2، OP_NO_SSLv3، OP_NO_COMPRESSION، OP_CIPHER_SERVER_PREFERENCE، OP_SINGLE_DH_USE، OP_SINGLE_ECDH_USE و رمزهای HIGH بدون MD5.
bpo-24693: تغییر برخی از خطاهای RuntimeError در ماژول zipfile به انواع مناسبتر. بهبود برخی از پیامهای خطا و خروجی اشکالزدایی.
bpo-17909: توابع
json.loadوjson.loadsاکنون از ورودی دودویی کدگذاریشده به صورت UTF-8، UTF-16 یا UTF-32 پشتیبانی میکنند. وصله توسط Serhiy Storchaka.bpo-27137: پیادهسازی جایگزین خالص پایتونی
functools.partialاکنون با رفتار همتای C شتابیافتهی خود برای مقاصد زیرکلاسی، ترشیسازی (pickling) و بازنمایی متنی مطابقت دارد. وصله توسط Emanuel Barry و Serhiy Storchaka.رفع سرریزهای عددی احتمالی و فروپاشیها در ماژول mmap با الگوهای استفادهی غیرعادی.
bpo-1703178: رفع قابلیت ارسال گزینهی --link-objects به دستور build_ext در distutils.
bpo-28019: تابع itertools.count() دیگر گام غیرصحیح را در بازهی بین ۱.۰ و ۲.۰ به ۱ گرد نمیکند.
bpo-18401: ابزار Pdb اکنون از آرگومان کلیدواژهای 'readrc' برای کنترل خوانده شدن یا نشدن پروندههای .pdbrc پشتیبانی میکند. وصله توسط Martin Matusiak و Sam Kimbrel.
bpo-25969: بهروزرسانی دستور زبان lib2to3 برای مدیریت تعمیمهای بازکردن بسته که در نسخهی ۳.۵ اضافه شدهاند.
bpo-14977: ماژول mailcap اکنون همانطور که RFC 1542 الزام میکند، ترتیب سطرها را در پروندههای mailcap رعایت میکند («اولین تطابق»). وصله توسط Michael Lazar.
bpo-28082: تبدیل ثابتهای پرچم re به IntFlag.
bpo-28025: تبدیل تمام ثابتهای ماژول ssl به IntEnum و IntFlags. ویژگیهای SSLContext اکنون پرچمها و انامها را برمیگردانند.
bpo-23591: افزودن Flag، IntFlag و auto() به ماژول enum.
bpo-433028: افزودن پشتیبانی از بازههای اصلاحگر در عبارتهای باقاعده.
bpo-24594: اعتبارسنجی پارامتر persist هنگام گشودن پایگاه دادهی MSI
bpo-17582: ماژول xml.etree.ElementTree اکنون فاصلههای سفید را در ویژگیها حفظ میکند. (وصله توسط Duane Griffin. بازبینی و تأیید توسط Stefan Behnel.)
bpo-28047: رفع محاسبهی طول سطر مورد استفاده برای کدگذاری انتقال محتوا (CTE) در سیاستهای ایمیل جدید.
bpo-27576: رفع ترتیب فراخوانی در OrderedDict.__init__()و.
کلاس email.generator.DecodedGenerator اکنون از کلیدواژهی policy پشتیبانی میکند.
bpo-28027: حذف ماژولهای مستندنشده از
Lib/plat-*: شامل IN، CDROM، DLFCN، TYPES، CDIO و STROPTS.bpo-27445: از ارسال str(_charset) به MIMEText.set_payload() خودداری کنید. وصله توسط Claude Paroz.
bpo-24277: رابط برنامهنویسی کاربردی (API) جدید ایمیل دیگر موقتی نیست و مستندات برای تأکید بر API جدید بازسازی و بازنویسی شدهاند.
bpo-22450: ماژول urllib اکنون یک سرآیند
Accept: */*را در میان سرآیندهای پیشفرض قرار میدهد. این کار نتایج درخواستهای REST API را سازگارتر و قابلپیشبینیتر میکند، بهویژه هنگامی که سرورهای پراکسی درگیر هستند.توابع lib2to3.pgen3.driver.load_grammar() اکنون با توجه به ورودی یکسان Grammar.txt، بدون در نظر گرفتن تنظیمات تصادفیسازی هش، یک پروندهی نهانگاه پایدار بین اجراها ایجاد میکنند.
bpo-28005: اجازه دادن به انتشار ImportErrors در پیادهسازی کدگذاری.
bpo-26667: پشتیبانی از اشیاء شبهمسیر در importlib.util.
bpo-27570: جلوگیری از فراخوانیهای memcpy() و غیره با طول صفر و با اشارهگرهای مبدأ تهی در ماژولهای ctypes و array.
bpo-22233: شکستن خطوط سرآیند ایمیل فقط در کاراکترهای CR و LF مشخصشدهی RFC، و نه در شکست0های خط یونیکد دلخواه. این کار همچنین یک باگ را در تجزیهی سرآیند HTTP برطرف میکند.
bpo-27331: کلاسهای email.mime اکنون همگی یک کلیدواژهی اختیاری policy را میپذیرند.
bpo-27988: رفع تغییر شکل نادرست فهرست بار در تابع iter_attachments ایمیل.
bpo-16113: افزودن پشتیبانی از SHA-3 و SHAKE به ماژول hashlib.
حذف یک هشدار tautological-pointer-compare در _scproxy.c.
bpo-27776: تابع
os.urandom()اکنون روی لینوکس نسخهی ۳.۱۷ و جدیدتر تا زمان مقداردهی اولیهی استخر انتروپی urandom سیستم مسدود (block) میشود تا امنیت افزایش یابد. این تغییر بخشی از PEP 524 است.bpo-27778: ارائه دادن سیستمی
getrandom()لینوکس در قالب یک تابع جدیدos.getrandom(). این تغییر بخشی از PEP 524 است.bpo-27691: رفع تجزیهی فیلدهای نام جایگزین موضوع GEN_RID در گواهیهای X.509 توسط ماژول ssl.
bpo-18844: افزودن random.choices().
bpo-25761: بهبود گزارشدهی خطا دربارهی دادههای پیکل ناقص در پیادهسازی C مربوط به unpickler. استثنای UnpicklingError اکنون به جای AttributeError و ValueError در برخی موارد بالا آورده (raise) میشود.
bpo-26798: افزودن BLAKE2 (blake2b و blake2s) به hashlib.
bpo-26032: بهینهسازی globbing در pathlib با استفاده از os.scandir()؛ که اکنون حدود ۱.۵ الی ۴ برابر سریعتر است.
bpo-25596: بهینهسازی توابع glob() و iglob() در ماژول glob؛ که اکنون حدود ۳ الی ۶ برابر سریعتر هستند.
bpo-27928: افزودن scrypt (تابع مشتقسازی کلید مبتنی بر رمز عبور) به ماژول hashlib (نیازمند OpenSSL نسخهی ۱.۱.۰).
bpo-27850: حذف 3DES از فهرست رمزهای پیشفرض ماژول ssl برای مقابله با حملهی sweet32 (CVE 2016-2183).
bpo-27766: افزودن ChaCha20 Poly1305 به فهرست رمزهای پیشفرض ماژول ssl. (نیازمند OpenSSL نسخهی ۱.۱.۰ یا LibreSSL).
bpo-25387: بررسی مقدار بازگشتی winsound.MessageBeep.
bpo-27866: افزودن متد SSLContext.get_ciphers() برای دریافت فهرستی از تمام رمزهای فعال.
bpo-27744: افزودن AF_ALG (رمزنگاری هستهی لینوکس) به ماژول socket.
bpo-26470: پورت کردن ماژولهای ssl و hashlib به OpenSSL نسخهی ۱.۱.۰.
bpo-11620: رفع پشتیبانی از SND_MEMORY در winsound.PlaySound. براساس یک وصله (patch) از Tim Lesher.
bpo-11734: افزودن پشتیبانی از اعداد اعشاری با دقت نیمه در استاندارد IEEE 754 به ماژول struct. براساس یک وصله (patch) از Eli Stevens.
bpo-27919: منسوخ کردن گزینهی توزیع
extra_pathدر بستهبندی distutils.bpo-23229: افزودن ثابتهای جدید
cmath:cmath.infوcmath.nanبرای مطابقت باmath.infوmath.nan، و همچنینcmath.infjوcmath.nanjبرای مطابقت با قالب استفادهشده توسط repr اعداد مختلط.bpo-27842: ماژول csv.DictReader اکنون ردیفهایی از نوع OrderedDict برمیگرداند. (مشارکت از Steve Holden.)
حذف پشتیبانی از ارسال توصیفگر پرونده (file descriptor) به os.access. این کار هرگز کار نمیکرد اما قبلاً خطا ایجاد نمیکرد.
bpo-12885: رفع خطا زمانی که distutils با پیوند نمادین (symlink) مواجه میشود.
bpo-27881: رفع باگهای احتمالی هنگام تنظیم sqlite3.Connection.isolation_level. بر اساس وصلهای از Xiang Zhang.
bpo-27861: رفع فروپاشی (crash) در sqlite3.Connection.cursor() هنگامی که یک کارخانه (factory) نشانگر (cursor) ایجاد نمیکند. وصله از Xiang Zhang.
bpo-19884: جلوگیری از خروجیهای اضافی در سیستمعامل OS X با Gnu Readline.
bpo-27706: بازیابی رفتار قطعی (deterministic) تابع random.Random().seed() برای بذرهای (seed) رشتهای با استفاده از نسخهی بذرگذاری ۱. به دنبالههای فراخوانیهای random() اجازه میدهد تا دقیقاً با موارد بهدستآمده در پایتون ۲ مطابقت داشته باشند. وصله از Nofar Schnider.
bpo-10513: رفع یک رگرسیون در Connection.commit(). دستورات نباید پس از یک ثبت نهایی (commit) بازنشانی شوند.
bpo-12319: پشتیبانی از کدگذاری انتقال بخشبندیشده (chunked transfer encoding) به درخواستهای http.client.HTTPConnection اضافه شد. کلاس urllib.request.AbstractHTTPHandler دیگر سرآیند Content-Length را الزامی نمیکند. اگر یک درخواست HTTP دارای بدنهی پرونده یا پیمایشپذیر (iterable) باشد، اما سرآیند Content-Length را نداشته باشد، کتابخانه اکنون برای استفاده از کدگذاری انتقال بخشبندیشده به حالت عقبنشینی (fallback) عمل میکند.
نسخهی جدیدی از typing.py از https://github.com/python/typing: - Collection (فقط برای نسخهی 3.6) (bpo-27598) - افزودن FrozenSet به __all__ (آپاستریم #261) - رفع فروپاشی (crash) در _get_type_vars() (آپاستریم #259) - حذف محدودیت دیکشنری در ForwardRef._eval_type (آپاستریم #252)
bpo-27832: پارامتر
_normalizeرا در سازندهیFractionبه صورت فقط-کلیدواژه (keyword-only) درآوردید، به طوری کهFraction(2, 3, 4)اکنون خطایTypeErrorرا ایجاد میکند.bpo-27539: رفع نتیجهی نرمالسازینشدهی
Fraction.__pow__در مورد توان منفی و پایهی منفی.bpo-21718: ویژگی cursor.description اکنون برای پرسوجوهایی که از CTEها استفاده میکنند در دسترس است.
bpo-27819: در توزیعهای (sdist) مربوط به distutils، به سادگی توزیعهای «gztar» (فرمت tar فشردهشده با gzip) را روی تمام پلتفرمها تولید کنید مگر اینکه «formats» ارائه شود.
bpo-2466: تابع posixpath.ismount اکنون نقاط اتصال (mount points) را که کاربر اجازهی دسترسی به آنها را ندارد، به درستی تشخیص میدهد.
bpo-9998: در لینوکس، ctypes.util.find_library اکنون برای کتابخانههای مشترک (shared libraries) در LD_LIBRARY_PATH جستجو میکند.
bpo-27573: پیام خروج برای code.interact اکنون قابل پیکربندی است.
bpo-27930: بهبود رفتار logging.handlers.QueueListener. با تشکر از Paulo Andrade و Petr Viktorin برای تحلیل و وصله.
bpo-6766: شمارش ارجاع توزیعشده (distributed reference counting) به multiprocessing اضافه شد تا از تو در تو قرار گرفتن مقادیر مشترک / اشیاء پراکسی پشتیبانی کند.
bpo-21201: خوانایی پیام خطای multiprocessing را بهبود میبخشد. با تشکر از Wojciech Walczak برای وصله.
asyncio: افزودن set_protocol / get_protocol به Transports.
bpo-27456: ماژول asyncio: تنظیم پیشفرض TCP_NODELAY.
IDLE¶
bpo-15308: افزودن دستور «متوقف کردن اجرا» (^C) به منوی پوسته (Shell). وصله توسط Roger Serwy، بهروزرسانی توسط Bayard Randel.
bpo-27922: جلوگیری از «چشمک زدن» ابزارکهای گرافیکی آزمونهای IDLE روی صفحه.
bpo-27891: گروهبندی و مرتبسازی سازگار ایمپورتها در ماژولهای idlelib.
bpo-17642: افزودن اندازههای قلم بزرگتر برای پروژکشن در کلاس درس.
افزودن نسخه به عنوان پنجرهی راهنمای IDLE.
bpo-25564: در بخش مربوط به تفاوتهای کنسول IDLE، ذکر کنید که استفاده از exec به این معناست که __builtins__ برای هر دستور تعریف میشود.
bpo-27821: رفع رگرسیون 3.6.0a3 که مانع از انتخاب مجموعههای کلید سفارشی میشد هنگامی که هیچ پوستهی سفارشی تعریف نشده بود.
رابط C API¶
آزمونها¶
bpo-27427: آزمونهای اضافی برای ماژول ریاضی (math). وصله توسط Francisco Couzo.
bpo-27953: رد کردن آزمونهای math و cmath که روی سیستمعامل OS X 10.4 به دلیل پیادهسازی ضعیف تابع tan در libm با شکست مواجه میشوند.
bpo-26040: بهبود پوشش و دقت test_math و test_cmath. وصله توسط Jeff Allen.
bpo-27787: فراخوانی gc.collect() پیش از بررسی هر آزمون از نظر وجود «رشتههای معلق» (dangling threads)، از آنجا که این رشتههای معلق ارجاع ضعیف هستند.
ساخت¶
bpo-27566: رفع هدف clean در فایل ساخت (makefile) مربوط به freeze (وصله توسط Lisa Roach)
bpo-27705: بهروزرسانی پیام در validate_ucrtbase.py
bpo-27976: منسوخ کردن ساخت _ctypes با نسخهی بستهبندیشدهی libffi در پلتفرمهای غیر از OSX UNIX.
bpo-27983: هنگام فعال بودن
--with-optimizations، باعث شوید که نبود ابزار llvm-profdata به جای زمان make، در زمان پیکربندی (configure) به عنوان خطا شناخته شود. همچنین بهبود توانایی ما در یافتن ابزار llvm-profdata روی سیستمعاملهای MacOS و برخی نسخههای لینوکس.bpo-21590: پشتیبانی از کاوشگرهای DTrace و SystemTap.
bpo-26307: ساخت profile-opt اکنون PGO را روی ماژولهای درونساخته اعمال میکند.
bpo-26359: اضافهکردن پرچم --with-optimizations برای فعالسازی پشتیبانی از ساخت LTO و PGO در صورت دسترسی.
bpo-27917: تنظیم سهتاییهای سکو (platform triplets) برای ساختهای اندروید.
bpo-25825: بهروزرسانی ارجاعها به مسیر نصب $(LIBPL) روی AIX. این مسیر در نسخهی 3.2a4 تغییر کرده بود.
بهروزرسانی نصبکنندهی OS X برای استفاده از SQLite 3.14.1 و XZ 5.2.2.
bpo-21122: رفع مشکلات ساخت LTO روی OS X.
bpo-17128: ساخت نصبکنندهی OS X با یک نسخهی خصوصی از OpenSSL. همچنین ارائهی یک اسکریپت نمونهی دستور Install Certificates برای نصب مجموعهای از گواهیهای ریشه از ماژول شخص ثالث certifi.
Tools/Demos¶
bpo-27952: سازگار کردن Tools/scripts/fixcid.py با پایتون ۳ و ماژول فعلی "re"، جلوگیری از کاراکترهای گریز (backslash escape) نامعتبر در پایتون، و رفع یک باگ در تجزیه کردن علامتهای نقلقول C که کاراکتر گریز دارند.
Windows¶
bpo-28065: بهروزرسانی وابستگی xz به نسخهی 5.2.2 و ساخت آن از روی سورس.
bpo-25144: تضمین میکند که TargetDir پیش از ادامهی نصب سفارشی تنظیم شده باشد.
bpo-1602: کنسول ویندوز یونیکد را ورودی نمیگیرد یا چاپ نمیکند (PEP 528)
bpo-27781: تغییر کدگذاری سیستم پرونده در ویندوز به UTF-8 (PEP 529)
bpo-27731: انصراف از محدودیت MAX_PATH روی ویندوز 10
bpo-6135: افزودن پارامترهای encoding و errors به ماژول subprocess.
bpo-27959: افزودن کدگذاری oem، نام مستعار ansi برای mbcs، و انتقال aliasmbcs به بخش جستجوی کُدک.
bpo-27982: توابع ماژول winsound اکنون آرگومانهای کلیدواژهای را میپذیرند.
bpo-20366: تعبیهی پشتیبانی از جستجوی متن کامل در SQLite روی ویندوز.
bpo-27756: افزودن آیکونهای جدید برای پروندهها و فرایندهای پایتون در ویندوز. طراحیشده توسط Cherry Wang.
bpo-27883: بهروزرسانی sqlite به نسخهی 3.14.1.0 روی ویندوز.
پایتون 3.6.0 آلفا 4¶
تاریخ انتشار: ۲۰۱۶-۰۸-۱۵
هسته و توکارها (Core and Builtins)¶
bpo-27704: بهینهسازی ایجاد شیءهای bytes و bytearray از شیءهای شبهبایت و پیمایشپذیرها (iterables). افزایش سرعت تا ۳ برابر برای شیءهای کوچک. وصله اصلی از نائوکی اینادا (Naoki Inada).
bpo-26823: بخشهای بزرگ از سطرهای تکرارشده در ردگیریها (tracebacks) اکنون توسط رندر پیشفرض ردگیری به صورت "[Previous line repeated {count} more times]" خلاصه میشوند. وصله توسط امانوئل بری (Emanuel Barry).
bpo-27574: کاهش سربار تجزیهی آرگومانهای کلیدواژهای (keyword arguments) در توابع پیادهسازیشده با استفاده از ابزار Argument Clinic.
bpo-22557: اکنون ایمپورت کردن ماژولهایی که پیش از این ایمپورت شدهاند تا ۲.۵ برابر سریعتر است.
bpo-17596: گنجاندن <wincrypt.h> برای کمک به ساخت با Min GW.
bpo-17599: در ویندوز، تغییر نام ساختار REPARSE_DATA_BUFFER که بهصورت خصوصی تعریف شده است برای جلوگیری از تداخل با تعریف Min GW.
bpo-27507: بررسی سرریز عدد صحیح را در bytearray.extend() اضافه کنید. وصله توسط Xiang Zhang.
bpo-27581: عدم اتکا به بازپیچی (wrapping) برای بررسی سرریز در PySequence_Tuple(). وصله از Xiang Zhang.
bpo-1621: از سرریز عدد صحیح علامتدار در عملیات فهرست و تاپل جلوگیری کنید. وصله توسط Xiang Zhang.
bpo-27419: تابع استاندارد __import__() دیگر به دنبال کلیدواژهی "__import__" در متغیرهای سراسری، عمومی یا builtins برای ایمپورت کردن زیرماژولها یا ساختار "from import" نمیگردد. در صورت بروز خطا در هشدار مربوط به ناتوانی در حل کردن بسته از روی __spec__ یا __package__، از فروپاشی جلوگیری شد.
bpo-27083: رعایت متغیر محیطی PYTHONCASEOK در ویندوز.
bpo-27514: تبدیل داشتن تعداد زیادی بلوک تو در تو با استاتیک به SyntaxError به جای SystemError.
bpo-27366: استاندارد PEP 487 (سفارشیسازی سادهتر ایجاد کلاس) پیادهسازی شد. هنگام زیرکلاسسازی، متد کلاس __init_subclass__ روی کلاس پایه فراخوانی میشود. توصیفگرها پس از ایجاد کلاس با __set_name__ مقداردهی اولیه میشوند.
کتابخانه¶
bpo-26027: افزودن پشتیبانی PEP 519/__fspath__() به ماژولهای os و os.path. شامل کدی از Jelle Zijlstra. (همچنین ببینید: bpo-27524)
bpo-27598: افزودن Collections به collections.abc. وصله از Ivan Levkivskyi، مستندات از Neil Girdhar.
bpo-25958: پشتیبانی از «ضدثبتنام» متدهای ویژه از ABCهای مختلف، مانند __hash__، __iter__ یا __len__. همهی این موارد (و چندین مورد دیگر) را میتوان در یک کلاس پیادهسازی روی None تنظیم کرد و رفتار به گونهای خواهد بود که انگار متد اصلاً تعریف نشده است. (پیشتر، این مکانیزم فقط برای __hash__ وجود داشت تا کلاسهای تغییرپذیر هشناپذیر شوند.) کدی که توسط Andrew Barnert و Ivan Levkivskyi مشارکت داده شده است.
bpo-16764: پشتیبانی از آرگومانهای کلیدواژهای برای zlib.decompress(). وصله از Xiang Zhang.
bpo-27736: جلوگیری از خطای حافظه (segfault) پس از راهاندازی مجدد مفسر به دلیل مشکل شمارش ارجاع که در کد مربوط به bpo-27038 در نسخهی 3.6.0a3 ایجاد شده بود. وصله از Xiang Zhang.
bpo-25628: پارامترهای verbose و rename برای collections.namedtuple اکنون فقطکلیدواژهای (keyword-only) هستند.
bpo-12345: افزودن ثابت ریاضی tau به math و cmath. همچنین ببینید PEP 628.
bpo-26823: متد traceback.StackSummary.format اکنون بخشهای بزرگی از سطرهای تکرارشده را به شکل "[Previous line repeated {count} more times]" خلاصه میکند (این تغییر سپس سایر عملیاتهای نمایش ردگیری در ماژول را نیز تحت تأثیر قرار میدهد). وصله از Emanuel Barry.
bpo-27664: قابلیت تعیین پیشوند نام نخ را به concurrent.futures.thread.ThreadPoolExecutor() اضافه کنید.
bpo-27181: توابع geometric_mean و harmonic_mean را به ماژول statistics اضافه کنید.
bpo-27573: تابع code.interact اکنون هنگام خروج پیامی را چاپ میکند.
bpo-6422: متد autorange را به شیءهای timeit.Timer اضافه کنید.
bpo-27773: اصلاح برخی خطاهای مدیریت حافظه server_hostname در تابع _ssl.wrap_socket().
bpo-26750: تابع unittest.mock.create_autospec() اکنون به درستی برای زیرکلاسهای property() و سایر توصیفگرهای داده کار میکند. تاپل unittest.mock.DescriptorTypes که هرگز به صورت عمومی استفاده نشده و مستند نشده بود، حذف شد.
bpo-26754: پشتیبانی مستندنشده از شیءهای شبهبایت عمومی به عنوان مسیر در تابع compile() و توابع مشابه اکنون منسوخ شده است.
bpo-26800: پشتیبانی مستندنشده از شیءهای شبهبایت عمومی به عنوان مسیرها در توابع os اکنون منسوخ شده است.
bpo-26981: سازگاری _order_ shim را برای enum.Enum جهت استفاده در پایگاههای کد پایتون ۲/۳ اضافه کنید.
bpo-27661: آرگومان کلیدواژهای tzinfo به datetime.combine اضافه شد.
در ماژول curses، اگر مقداری منفی به window.getstr() یا window.instr() ارسال شود، خطایی ایجاد کنید.
bpo-27783: رفع احتمال استفاده از حافظهی مقداردهینشده در operator.methodcaller.
bpo-27774: رفع احتمال Py_DECREF روی شیء مالکیتنداشته در _sre.
bpo-27760: رفع احتمال سرریز عدد صحیح در binascii.b2a_qp.
bpo-27758: رفع احتمال سرریز عدد صحیح در ماژول _csv برای طولهای رکورد بزرگ.
bpo-27568: جلوگیری از حملهی HTTPoxy (CVE 2016-1000110). نادیدهگرفتن متغیر HTTP_PROXY هنگامی که متغیر محیطی REQUEST_METHOD تنظیم شده است، که نشان میدهد اسکریپت در حالت CGI قرار دارد.
bpo-7063: کدهای مرده از بخش مدیریت اسلایس در ماژول "array" حذف شدند. وصله از Chuck.
bpo-27656: فرض نکنید که sched.h ثابتی از نوع SCHED_* تعریف میکند.
bpo-27130: در ماژول "zlib"، نحوهی پردازش بافرهای بزرگ (معمولاً ۴ گیگابایت) هنگام فشردهسازی و واگشایی اصلاح شد. پیش از این، ورودیها به ۴ گیگابایت محدود بودند و عملیات فشردهسازی و واگشایی نتایج ۴ گیگابایتی را به درستی پردازش نمیکردند.
نمایش ثابت EPOLLEXCLUSIVE (هنگامی که تعریف شده است) در ماژول select.
bpo-27567: نمایش ثابتهای EPOLLRDHUP و POLLRDHUP در ماژول select.
bpo-1621: جلوگیری از سرریز منفی عدد صحیح علامتدار در ماژول «audioop».
bpo-27533: آزادسازی GIL در nt._isdir
bpo-17711: رفع مشکل بازسازی شیء (unpickling) توسط شناسهی پایا با پروتکل ۰. وصلهی اصلی توسط Alexandre Vassalotti.
bpo-27522: جلوگیری از چرخهی ارجاع ناخواسته در email.feedparser.
bpo-27512: رفع خطای حافظه (segfault) هنگام فراخوانی متد __fspath__() توسط os.fspath() که یک استثنا ایجاد میکند. وصله از Xiang Zhang.
IDLE¶
bpo-27714: توابع text_textview و test_autocomplete اکنون هنگام اجرای مجدد در همان فرایند با موفقیت رد میشوند. این مشکل زمانی رخ میدهد که test_idle هنگام اجرا با گزینهی -w و بدون -jn با شکست مواجه شود. رفع هشدار از test_config.
bpo-27621: قرار دادن پیامهای خطای اعتبارسنجی پاسخ پرسوجو در داخل خود کادر پرسوجو به جای یک کادر پیام جداگانه. بازبینی آزمونها برای تطابق با آن. افزودن بهبودهای Mac OSX. وصلهی اصلی از Mark Roseman.
bpo-27620: کلید Escape اکنون کادر پرسوجو را به عنوان لغو شده میبندد.
bpo-27609: بخش IDLE: زدن کلید Tab پس از فضای خالی اولیه باید کار تب را انجام دهد، نه تکمیل خودکار. این کار مشکل نوشتن رشتههای مستند با حداقل دو سطح فرورفتگی را برطرف میکند.
bpo-27609: زمانی که مقادیر بازگشتی غیر از None نیز وجود دارند، مقدار None را به صراحت برگردانید. در چند مورد، یک شرط را معکوس کرده و دستور بازگشت را حذف کنید.
bpo-25507: برنامهی IDLE دیگر به دلیل ایمپورتهای tkinter خود کدهای دارای باگ را اجرا نمیکند. کاربران باید همان ایمپورتهای مورد نیاز برای اجرای مستقیم در پایتون را شامل شوند.
bpo-27173: افزودن «IDLE Modern Unix» به مجموعهکلیدهای درونی. تنظیم مجموعهکلید پیشفرض وابسته به پلتفرم. افزودن آزمونها برای تغییرات اعمالشده روی ماژول config.
bpo-27452: افزودن شمارندهی سطر و crc به برونریزی آزمون configHandler در IDLE.
آزمونها¶
bpo-25805: رد کردن یک آزمون در test_pkgutil در صورت نیاز، که وقتی
__name__ == __main__باشد کار نمیکند. وصله از SilentGhost.bpo-27472: افزودن test.support.unix_shell به عنوان مسیر پوستهی پیشفرض.
bpo-27369: در test_pyexpat، از آزمودن جزئیات پیام خطایی که در Expat 2.2.0 تغییر یافته است، خودداری کنید.
bpo-27594: جلوگیری از خطای ادعا هنگام اجرای test_ast با فعال بودن پوشش کد: اطمینان حاصل کنید که شیء کد دارای شماره سطر اول معتبری است. وصله پیشنهادی از Ivan Levkivskyi.
Windows¶
ساخت¶
bpo-27713: جلوگیری از هشدارهای ساخت (build) اضافی هنگام بهروزرسانی پروندههای راهاندازی importlib. وصله (patch) از Xiang Zhang
bpo-25825: تصحیح ارجاعها به Modules/python.exp که در AIX مورد نیاز است. این ارجاعها بهطور تصادفی در نسخهی 3.5.0a1 تغییر کرده بودند.
bpo-27453: فراخوانی CPP در configure باید از CPPFLAGS استفاده کند. وصله (patch) از Chi Hsuan Yen.
bpo-27641: اسکریپت configure اکنون کامنتهایی را در makefile درج میکند تا از کامپایل متقابل (cross-compile) فایلهای اجرایی pgen و _freeze_importlib جلوگیری شود.
bpo-26662: تنظیم PYTHON_FOR_GEN در configure به عنوان برنامهی پایتونی که برای تولید پرونده در طول ساخت (build) استفاده میشود.
bpo-10910: جلوگیری از خطاهای کامپایل C++ در FreeBSD و OS X. همچنین بهروزرسانی بررسیهای نسخهی FreeBSD برای راهحل جایگزین اصلی ctype با UTF-8.
پایتون 3.6.0 آلفا 3¶
تاریخ انتشار: ۲۰۱۶-۰۷-۱۱
امنیت¶
bpo-27278: رفع پیادهسازی os.urandom() با استفاده از getrandom() در لینوکس. کوچک کردن اندازهی (truncate) آن به INT_MAX و تکرار در حلقه (loop) تا زمانی که بایتهای تصادفی کافی جمعآوری شوند، به جای تبدیل مستقیم یک Py_ssize_t به int.
bpo-22636: جلوگیری از مشکلات تزریق پوسته (shell injection) با ctypes.util.find_library().
هسته و توکارها (Core and Builtins)¶
bpo-27473: رفع سرریز عدد صحیح (integer overflow) احتمالی در الحاقهای bytes و bytearray. وصله (patch) از Xiang Zhang.
bpo-23034: خروجی یک ساخت (build) خاص از پایتون با ماکروهای تعریفشدهی COUNT_ALLOCS، SHOW_ALLOC_COUNT یا SHOW_TRACK_COUNT اکنون بهطور پیشفرض غیرفعال است. میتوان آن را با استفاده از گزینهی "-X showalloccount" دوباره فعال کرد. خروجی اکنون به جای stdout به stderr هدایت میشود.
bpo-27443: متد __length_hint__() از پیمایشگرهای bytearray دیگر برای یک bytearray تغییراندازهدادهشده یک عدد صحیح منفی برنمیگرداند.
bpo-27007: متدهای کلاس fromhex() از زیرکلاسهای bytes و bytearray اکنون یک نمونه از زیرکلاس متناظر را برمیگردانند.
کتابخانه¶
bpo-26844: اصلاح پیام خطا برای imp.find_module() به طوری که به جای 'name' به 'path' اشاره کند. وصله (patch) از Lev Maximov.
bpo-23804: رفع فراخوانیهای recv() با طول صفر در SSL به طوری که مسدود نشوند و خطایی دربارهی EOF نامعتبر ایجاد نکنند.
bpo-27466: تغییر فرمت زمان بازگردانده شده توسط http.cookie.time2netscape، جهت تطبیق با فرمت کوکی netscape و هماهنگسازی آن با مستندات.
bpo-21708: منسوخ کردن رفتار dbm.dumb که با رفتار رایج dbm تفاوت دارد: ایجاد پایگاه داده در حالتهای 'r' و 'w' و تغییر پایگاه داده در حالت 'r'.
bpo-26721: تغییر ویژگی socketserver.StreamRequestHandler.wfile برای پیادهسازی BufferedIOBase. بهویژه، متد write() دیگر نوشتنهای جزئی (partial writes) انجام نمیدهد.
bpo-22115: اضافه شدن متدهای trace_add، trace_remove و trace_info به کلاس tkinter.Variable. این متدها جایگزین متدهای قدیمی trace_variable، trace، trace_vdelete و trace_vinfo میشوند که از دستورات منسوخ Tcl استفاده میکنند و ممکن است در نسخههای آیندهی Tcl کار نکنند. رفع مشکل متدهای ردیابی قدیمی: متد trace_vdelete() با حالت نادرست دیگر ردیابی را متوقف نمیکند، trace_vinfo() اکنون همیشه فهرستی از جفترشتهها را برمیگرداند، و ردیابی در حالت "u" اکنون به درستی کار میکند.
bpo-26243: اکنون فقط آرگومان level در تابع zlib.compress() یک آرگومان کلیدواژهای است. آرگومان اول صرفاً جایگاهی است.
bpo-27038: ارائهی نوع DirEntry به عنوان os.DirEntry. اصلاحیه کد توسط Jelle Zijlstra.
bpo-27186: بهروزرسانی os.fspath()/PyOS_FSPath() برای بررسی اینکه مقدار بازگشتی تابع __fspath__() از نوع str یا bytes باشد.
bpo-18726: تمام پارامترهای اختیاری توابع dump()، dumps()، load() و loads() و سازندههای کلاسهای JSONEncoder و JSONDecoder در ماژول json اکنون فقط کلیدواژهای هستند.
bpo-27319: متدهای selection_set()، selection_add()، selection_remove() و selection_toggle() از ttk.TreeView اکنون به جای پاس دادن آیتمها به صورت تاپل، امکان پاس دادن چندین آیتم را به عنوان آرگومانهای مجزا فراهم میکنند. قابلیت مستندنشدهی فراخوانی متد selection() با آرگومانها منسوخ شد.
bpo-27079: رفع توابع curses.ascii یعنی isblank()، iscntrl() و ispunct().
bpo-27294: وضعیت عددی در نمایشی (repr) اشیای رویداد Tkinter اکنون به صورت ترکیبی از پرچمهای شناختهشده نمایش داده میشود.
bpo-27177: اشیای Match در ماژول re اکنون از اشیای شبیه به اندیس به عنوان اندیسهای گروه پشتیبانی میکنند. بر اساس اصلاحیههایی از Jeroen Demeyer و Xiang Zhang.
bpo-26754: برخی از توابع (مانند compile()) آرگومان نام پرونده را که به صورت یک شیء پیمایشپذیر از اعداد صحیح کدگذاری شده بود، میپذیرفتند. اکنون فقط رشتهها و اشیای شبیه به بایت پذیرفته میشوند.
bpo-26536: تابع socket.ioctl اکنون از SIO_LOOPBACK_FAST_PATH پشتیبانی میکند. اصلاحیه توسط Daniel Stokes.
bpo-27048: جلوگیری از شکست خوردن distutils در ویندوز هنگامی که متغیرهای محیطی حاوی نویسههای غیر اسکی هستند.
bpo-27330: رفع نشتهای احتمالی در ماژول ctypes.
bpo-27238: خلاص شدن از شر exceptهای خالی (bare excepts) در ماژول turtle. اصلاحیهی اولیه توسط Jelle Zijlstra.
bpo-27122: هنگامی که استثنایی درون زمینهای که توسط یک contextlib.ExitStack() مدیریت میشود رخ دهد و یکی از مولدهای پشتهی خروج آن را بگیرد و به صورت زنجیرهای بالا بیاورد، هنگام خروج، استثنای اصلی مجدداً بالا آورده نمیشود و اجازه داده میشود استثنای زنجیرهای جدید عبور کند. این کار از باگ PEP 479 که در issue25782 توصیف شده است جلوگیری میکند.
bpo-16864: ویژگی sqlite3.Cursor.lastrowid اکنون از دستور REPLACE پشتیبانی میکند. اصلاحیهی اولیه توسط Alex LordThorsen.
bpo-26386: رفع عملیات انتخاب در ttk.TreeView برای شناسههای آیتم حاوی فاصله.
bpo-8637: اعمال صفحهبندیکنندهای که توسط متغیر محیطی MANPAGER تعیین شده است (به اولویت یکی که توسط متغیر محیطی PAGER تعیین شده است).
bpo-16182: رفع چندین تابع مختلف در ماژول "readline" برای استفاده از کدگذاری locale و اصلاح get_begidx() و get_endidx() بهمنظور بازگرداندن اندیسهای نقطهکد.
bpo-27392: افزودن loop.connect_accepted_socket(). وصله توسط Jim Fulton.
IDLE¶
bpo-27477: محاورههای جستجوی IDLE اکنون از ابزارکهای ttk استفاده میکنند.
bpo-27173: افزودن «IDLE Modern Unix» به مجموعهکلیدهای درونی. تنظیم مجموعهکلید پیشفرض وابسته به پلتفرم. افزودن آزمونها برای تغییرات اعمالشده روی ماژول config.
bpo-27452: امکانپذیر کردن اجرای دستور خط فرمان "idle-test> python test_help.py". هنگامی که پایتون در پوشهی پرونده اجرا شود، مقدار __file__ نسبی است.
bpo-27452: افزودن شمارندهی سطر و crc به برونریزی آزمون configHandler در IDLE.
bpo-27380: بخش IDLE: افزودن query.py با محاورهی پایهی Query و ابزارکهای ttk. این ماژول دارای زیرکلاسهای SectionName و ModuleName و HelpSource است که برای دریافت اطلاعات از کاربران توسط محاورهی پیکربندی و پرونده => بارگذاری ماژول (file =>Load Module) استفاده میشوند. هر زیرکلاس بررسیهای اعتبارسنجی خاص خود را دارد. استفاده از ModuleName به کاربران اجازه میدهد بهجای شروع مجدد، نامهای ماژول نادرست را ویرایش کنند. افزودن آزمونها و حذف دو پروندهای که با یکدیگر ترکیب شده و پروندهی جدید را تشکیل دادند.
bpo-27372: آزمون test_idle دیگر locale را تغییر نمیدهد.
bpo-27365: اجازهی استفاده از نویسههای غیر ascii در NEWS.txt ابزار IDLE برای اسامی مشارکتکنندگان.
bpo-27245: بخش IDLE: حذف تمهای سفارشی و کلیدهای میانبر بهطور کامل. پیشتر، زمانی که IDLE از طریق کنسول یا ایمپورت راهاندازی میشد، مجموعهای از هشدارها صادر میشد. وصله توسط Serhiy Storchaka.
bpo-24137: اجرای IDLE، test_idle و htest با غیرفعال بودن ریشهی پیشفرض tkinter. رفع کدها و آزمونهایی که با این محدودیت با خطا مواجه میشوند. اصلاح htestها به طوری که ریشه و حلقهی اصلی دوم و اضافی ایجاد نکنند.
bpo-27310: رفع خطای راهاندازی IDLE.app روی سیستمعامل OS X به دلیل ایمپورت باقیمانده.
رابط C API¶
bpo-26754: تابع PyUnicode_FSDecoder() یک آرگومان نام پرونده را که به صورت یک شیء پیمایشپذیر از اعداد صحیح کدگذاری شده بود میپذیرفت. اکنون فقط رشتهها و اشیاء بایتمانند پذیرفته میشوند.
ساخت¶
bpo-28066: رفع منطق جستجوی پوشههای ساخت برای پروندههای شامل (include) تولیدشده هنگام ساخت در خارج از شاخهی منبع.
bpo-27442: قرار دادن سطح API اندروید که پایتون در برابر آن ساخته شده است، در sysconfig.get_config_vars() به عنوان 'ANDROID_API_LEVEL'.
bpo-27434: مفسری که ساخت متقابل را اجرا میکند و در PATH یافت میشود، اکنون باید همنسخهی ویژگی (مثلاً ۳.۶) منبعی باشد که در حال ساخت است.
bpo-26930: بهروزرسانی ساختهای ویندوز برای استفاده از OpenSSL 1.0.2h.
bpo-23968: تغییر نام پوشهی پلتفرم از plat-$(MACHDEP) به plat-$(PLATFORM_TRIPLET). تغییر نام پوشهی پیکربندی (LIBPL) از config-$(LDVERSION) به config-$(LDVERSION)-$(PLATFORM_TRIPLET). نصب ماژول مختص پلتفرم _sysconfigdata در پوشهی پلتفرم و تغییر نام آن برای شامل شدن ABIFLAGS.
برای GNU/Hurd از پشتیبانی پروندههای بزرگ (largefile) استفاده نکنید.
Tools/Demos¶
مستندات¶
آزمونها¶
bpo-27027: متغیر test.support.is_android اضافه شد که وقتی ساخت اندروید است، مقدار آن True میشود.
پایتون ۳.۶.۰ آلفا ۲¶
تاریخ انتشار: ۲۰۱۶-۰۶-۱۳
امنیت¶
bpo-26556: بهروزرسانی expat به نسخهی 2.1.1، رفع CVE 2015-1283.
رفع آسیبپذیری حذف TLS در smtplib، CVE 2016-0772. گزارششده توسط Team Oststrom.
bpo-26839: در لینوکس، تابع
os.urandom()اکنونgetrandom()را باGRND_NONBLOCKفراخوانی میکند تا اگر استخر انتروپی urandom هنوز مقداردهی اولیه نشده باشد، به خواندن/dev/urandomبازگردد. وصله نوشتهشده توسط Colm Buckley.
هسته و توکارها (Core and Builtins)¶
bpo-27095: دستورالعملهای MAKE_FUNCTION سادهسازی شده و دستورالعملهای MAKE_CLOSURE حذف شدند. وصله توسط Demur Rumed.
bpo-27190: اگر نسخهی sqlite3 قدیمیتر از 3.3.1 باشد، خطای NotSupportedError بالا آورده میشود. وصله توسط Dave Sawyer.
bpo-27286: کامپایل کردن آپکد BUILD_MAP_UNPACK_WITH_CALL رفع شد. فراخوانی تابع با بازکردن بستهی عمومی (PEP 448) و نامهای کلیدواژهی متناقض میتواند باعث رفتار تعریفنشده شود.
bpo-27140: آپکد BUILD_CONST_KEY_MAP اضافه شد.
bpo-27186: پشتیبانی از اشیای os.PathLike به open() اضافه شد (بخشی از PEP 519).
bpo-27066: خطای SystemError در صورتی که یک بازکنندهی سفارشی (برای open()) بدون تنظیم یک استثنا، عدد منفی برگرداند، رفع شد.
bpo-26983: تابع float() اکنون همیشه نمونهای از عدد اعشاری دقیق برمیگرداند. اگر __float__ نمونهای از زیرکلاس سختگیرانهی float برگرداند، هشدار منسوخ شدن صادر میشود. در نسخههای آیندهی پایتون این میتواند یک خطا باشد.
bpo-27097: مفسر پایتون اکنون به دلیل رمزگشایی بهینهسازیشدهی دستورالعملها، حدود ۷ درصد سریعتر شده است. بر اساس وصلهی Demur Rumed.
bpo-26647: مفسر پایتون اکنون به جای بایتکد از کلمهی دستوری (wordcode) ۱۶ بیتی استفاده میکند. وصله توسط Demur Rumed.
bpo-23275: امکان انتساب به یک فهرست هدف خالی در داخل پرانتز فراهم شد: () = iterable.
bpo-27243: بهروزرسانی پروتکل (protocol) __aiter__ : بهجای بازگرداندن یک انتظارپذیر (awaitable) که به یک پیمایشگر ناهمگام (asynchronous iterator) حل میشود، اکنون خود پیمایشگر ناهمگام باید مستقیماً بازگردانده شود. انجام روش اول باعث ایجاد یک اخطار PendingDeprecationWarning خواهد شد.
کتابخانه¶
ثابتهای socket (SO_REUSEPORT) و posix (O_SHLOCK، O_EXLOCK) که در API ارائه شدهاند و روی GNU/Hurd پیادهسازی نشدهاند، کامنتگذاری شدند. آنها به هر حال در زمان اجرا کار نمیکردند.
bpo-27025: نامهای تولیدشده برای ابزارکهای Tkinter اکنون معنیدارتر و قابلتشخیصتر هستند.
bpo-25455: رفع خرابیها در repr مربوط به اشیای بازگشتی ElementTree.Element و functools.partial.
bpo-27294: بهبود repr برای اشیای رویداد Tkinter.
bpo-20508: بهبود پیام استثنای IPv{4,6}Network.__getitem__. وصلهای از Gareth Rees.
bpo-21386: پیادهسازی ویژگی مفقود IPv4Address.is_global. این ویژگی از زمان 07a5610bae9d مستند شده بود. وصلهی اولیه از Roger Luethi.
bpo-27029: حذف پشتیبانی منسوخ حالت سطرهای جدید همگانی از ZipFile.open().
bpo-27030: نویسههای گریز ناشناخته متشکل از
'\'و یک حرف اسکی در عبارتهای باقاعده اکنون خطا محسوب میشوند. پرچم re.LOCALE اکنون فقط میتواند با الگوهای بایت استفاده شود.bpo-27186: افزودن پشتیبانی os.PathLike به DirEntry (بخشی از PEP 519). وصلهی اولیه از Jelle Zijlstra.
bpo-20900: دستور ثبت distutils اکنون پاسخهای HTTP را بهدرستی رمزگشایی میکند. وصلهی اولیه از ingrid.
bpo-27186: افزودن پشتیبانی os.PathLike به pathlib و حذف وضعیت آزمایشی آن (بخشی از PEP 519). وصلهی اولیه از Dusty Phillips.
bpo-27186: افزودن پشتیبانی از اشیای os.PathLike به os.fsencode() و os.fsdecode() (بخشی از PEP 519).
bpo-27186: معرفی os.PathLike و os.fspath() (بخشی از PEP 519).
نسخهی جدید typing.py چندین کلاس و ویژگی جدید ارائه میدهد: @overload بیرون از stubها، Reversible، DefaultDict، Text، ContextManager، Type[]، NewType()، TYPE_CHECKING، و اصلاح خطاهای پرتعداد (توجه داشته باشید که برخی از ویژگیهای جدید هنوز در mypy یا سایر تحلیلگرهای ایستا پیادهسازی نشدهاند). همچنین کلاسهایی برای PEP 492 (Awaitable، AsyncIterable، AsyncIterator) اضافه شدهاند (در واقع آنها در 3.5.1 قرار گرفتند اما هرگز به آنها اشاره نشد).
bpo-25738: جلوگیری از ارسال بدنهی پیام برای 205 Reset Content توسط http.server.BaseHTTPRequestHandler.send_error(). همچنین، فیلدهای سرآیند Content را در پاسخهایی که بدنه ندارند ارسال نکنید. وصلهای از Susumu Koshiba.
bpo-21313: اصلاح ماژول «platform» برای تحمل مواردی که sys.version حاوی اطلاعات ساخت ناقص است.
bpo-23883: افزودن APIهای مفقود به __all__ جهت مطابقت با APIهای مستندشده برای ماژولهای زیر: cgi، mailbox، mimetypes، plistlib و smtpd. وصلهها از Jacek Kołodziej.
bpo-27164: در ماژول zlib، امکان خارج کردن جریانهای Deflate خام از حالت فشرده با یک zdict ازپیشتعریفشده فراهم شد. بر اساس وصلهای از Xiang Zhang.
bpo-24291: اصلاح wsgiref.simple_server.WSGIRequestHandler برای نوشتن کامل دادهها در کلاینت. پیش از این ممکن بود نوشتنها بهصورت جزئی انجام شود و دادهها ناقص بمانند. همچنین، wsgiref.handler.ServerHandler اکنون میتواند نوشتنهای جزئی stdout را مدیریت کند، اما این کار منسوخ شده است.
bpo-21272: استفاده از _sysconfigdata.py برای مقداردهی اولیهی distutils.sysconfig.
bpo-19611: ماژول
inspectاکنون پارامترهای ضمنی.0تولیدشده توسط کامپایلر برای محدودههای عبارت درک مطلب و عبارت تولیدگر را طوری گزارش میکند که گویی پارامترهای فقط-جایگاهی به نامimplicit0هستند. وصلهای از Jelle Zijlstra.bpo-26809: افزودن
__all__بهstring. وصله توسط Emanuel Barry.bpo-26373: تابع subprocess.Popen.communicate اکنون در بیشتر/تمامی شرایط، خطای BrokenPipeError را هنگامی که فرایند فرزند پیش از فراخوانی .communicate() از بین میرود، به درستی نادیده میگیرد.
جستجوی نام ثابتهای IntEnum در ماژولهای signal، socket و ssl اکنون نام ثسانی برای مقادیر دارای چند نام برمیگرداند. مثال: مقدار signal.Signals(6) اکنون بهجای جابهجایی بین آن و signal.SIGIOT بر اساس بذر تصادفیسازی هش مفسر، خودش را به عنوان signal.SIGALRM معرفی میکند.
bpo-27167: شفافسازی متن پیام خطای subprocess.CalledProcessError زمانی که فرایند فرزند به دلیل یک سیگنال از بین رفته است.
bpo-25931: نامهای socketserver.Forking* را روی پلتفرمهایی مانند Windows که از os.fork() پشتیبانی نمیکنند، تعریف نکنید.
bpo-21776: ماژول distutils.upload اکنون خطای HTTPError را به درستی مدیریت میکند. وصلهی اولیه از Claudiu Popa.
bpo-26526: جایگزینی اعتبارسنجی درخت تجزیه سفارشی در ماژول parser با یک اعتبارسنج سادهی DFA.
bpo-27114: رفع مشکل شکست خوردن SSLContext._load_windows_store_certs همراه با PermissionError
bpo-18383: جلوگیری از ایجاد فیلترهای تکراری هنگام استفاده از filterwarnings و simplefilter. بر اساس وصلهای از Alex Shkop.
bpo-23026: تابع winreg.QueryValueEx() اکنون یک عدد صحیح برای نوع REG_QWORD برمیگرداند.
bpo-26741: مخرب subprocess.Popen اکنون اگر فرایند فرزند همچنان در حال اجرا باشد، یک هشدار ResourceWarning صادر میکند.
bpo-27056: بهینهسازی pickle.load() و pickle.loads()، تا ۱۰ درصد سریعتر برای سریالزدایی کردن تعداد زیادی از اشیاء کوچک.
bpo-21271: پارامترهای جدید فقط-کلیدواژه در فراخوانی reset_mock.
IDLE¶
bpo-5124: جایگذاری متن انتخابشده اکنون باعث جایگزینی انتخاب در X11 میشود. این رفتار با نحوهی کارکرد جایگذاری در Windows، Mac، اکثر برنامههای مدرن لینوکس و ابزارکهای ttk مطابقت دارد. وصلهی اصلی از Serhiy Storchaka.
bpo-24750: تغییر تمامی نوار پیمایشها در IDLE به نسخههای ttk. در صورت نیاز، آزمونهای حداقلی برای پوشش تغییرات اضافه شدهاند.
bpo-24759: برنامهی IDLE به tk 8.5 و دسترسپذیری ابزارکهای ttk نیاز دارد. آزمونهای نسخهی tk و کدهای مربوط به نسخههای قدیمیتر که دیگر نیازی به آنها نیست، حذف شدند. اضافه کردن آزمون برای رنگآمیزی سینتکس IDLE.
bpo-27239: توابع idlelib.macosx.isXyzTk در صورت نیاز مقداردهی اولیه میشوند.
bpo-27262: انتقال کدهای لغو اتصال Aqua که منوهای زمینهای را فعال میکنند، به macosx.
bpo-24759: روشن ساختن این موضوع در idlelib.idle_test.__init__ که پوشه یک پیادهسازی خصوصی از test.test_idle و ابزاری برای نگهدارندگان است.
bpo-27196: متوقف کردن هشدارهای 'ThemeChanged' هنگام اجرای آزمونهای IDLE. این هشدارها پس از سرکوب سایر هشدارها در #20567 همچنان باقی مانده بودند. اعمال راهحل update_idletasks ارائهشده توسط Serhiy Storchaka روی چهار پروندهی آزمون. ثبت این راهنمایی اضافی در idle_test/README.txt
bpo-20567: بازنگری پروندهی idle_test/README.txt همراه با توصیههایی دربارهی جلوگیری از پیامهای هشدار tk در آزمونها. اعمال این توصیهها به چند آزمون IDLE.
bpo-24225: بهروزرسانی پروندهی idlelib/README.txt با نامهای جدید پروندهها و هندلرهای رویداد.
bpo-27156: حذف کدهای منسوخشدهای که توسط IDLE استفاده نمیشوند.
bpo-27117: سازگار کردن htest و turtledemo رنگبند با تمهای تیره. انتقال کد مربوط به پیکربندی رنگهای ابزارک متنی به یک تابع جدید.
bpo-24225: تغییر نام بسیاری از پروندههای
idlelib/*.pyوidle_test/test_*.py. ویرایش پروندهها برای جایگزینی نامهای قدیمی با نامهای جدید در مواردی که نام قدیمی به ماژول اشاره داشت تا کلاسی که در خود نگه داشته است. برای اطلاعات بیشتر، بخش issue و IDLE را در «چه چیزی در نسخهی ۳.۶ جدید است» ببینید.bpo-26673: هنگامی که tk اندازهی فونت را 0 گزارش میکند، آن را به اندازهی 10 تغییر دهید. چنین فونتهایی در لینوکس مانع از باز شدن محاورهی پیکربندی میشدند.
bpo-21939: افزودن آزمون برای percolator در IDLE. وصلهی اصلی توسط Saimadhav Heblikar.
bpo-21676: افزودن آزمون برای محاورهی جایگزینی در IDLE. وصلهی اصلی توسط Saimadhav Heblikar.
bpo-18410: افزودن آزمون برای محاورهی جستجو در IDLE. وصلهی اصلی توسط Westley Martínez.
bpo-21703: افزودن آزمون برای تفویضکنندهی لغو (undo delegator). وصله عمدتاً توسط Saimadhav Heblikar.
bpo-27044: افزودن ConfigDialog.remove_var_callbacks برای متوقف کردن نشتیهای حافظه.
bpo-23977: افزودن بررسیهای (assert) بیشتر به test_delegator.
مستندات¶
bpo-16484: تغییر URL پیشفرض PYTHONDOCS به «https:» و اصلاح پیوندهای حاصل برای استفاده از حروف کوچک. وصله توسط Sean Rodman، آزمون توسط Kaushik Nadikuditi.
bpo-24136: مستندسازی نحو (syntax) جدید بازکردن بسته PEP 448 در نسخهی ۳.۵.
bpo-22558: افزودن پیوندهای مستندات باقیمانده به کد منبع برای ماژولهای پایتونی. وصله توسط Yoni Lavi.
آزمونها¶
bpo-25285: ابزار regrtest اکنون هنگام استفاده از گزینهی خط فرمان -j1 از فرایندهای فرعی استفاده میکند: هر پروندهی آزمون در یک فرایند فرزند تازه اجرا میشود. پیش از این، گزینهی -j1 نادیده گرفته میشد.
bpo-25285: اسکریپت Tools/buildbot/test.bat اکنون بهطور پیشفرض از -j1 استفاده میکند تا هر پروندهی آزمون در یک فرایند فرزند تازه اجرا شود.
Windows¶
bpo-27064: راهانداز py.exe اکنون بهطور پیشفرض از پایتون ۳ استفاده میکند. راهانداز ویندوز
py.exeدیگر هنگام استفادهی تعاملی، ترجیح نمیدهد بهطور پیشفرض نسخهی نصبشدهی پایتون ۲ را بر پایتون ۳ ترجیح دهد.bpo-17500: حذف آیکونهای استفادهنشده و منسوخ. (همچنین ببینید: https://github.com/python/pythondotorg/issues/945)
ساخت¶
رابط C API¶
Tools/Demos¶
bpo-26282: ابزار Argument Clinic اکنون از پارامترهای فقط-جایگاهی و کلیدواژهای در یک تابع پشتیبانی میکند.
پایتون ۳.۶.۰ آلفا ۱¶
تاریخ انتشار: ۲۰۱۶-۰۵-۱۶
امنیت¶
bpo-26657: رفع آسیبپذیری پیمایش پوشه با http.server روی ویندوز. این کار یک رگرسیون را که در نسخههای ۳.۳.۴rc1 و ۳.۴.۰rc1 ایجاد شده بود، رفع میکند. بر اساس وصلهی Philipp Hagemeister.
bpo-26313: اگر انبار گواهی ویندوز خالی باشد، ssl.py _load_windows_store_certs دچار خطا میشود. وصله از Baji.
bpo-25939: روی ویندوز، انبار گواهی را در ssl.enum_certificates به صورت فقطخواندنی باز کنید.
هسته و توکارها (Core and Builtins)¶
bpo-20041: رفع خطای TypeError هنگامی که frame.f_trace روی None تنظیم میشود. وصله از Xavier de Gaye.
bpo-26168: رفع نشت حافظهی احتمالی در شکست Py_BuildValue() با واحد قالب "N".
bpo-26991: رفع نشت حافظهی احتمالی هنگام ایجاد یک تابع با حاشیهنویسیها.
bpo-27039: رفع تابع bytearray.remove() برای مقادیر بزرگتر از ۱۲۷. بر اساس وصلهی Joe Jevnik.
bpo-23640: تابع int.from_bytes() دیگر سازندهها را برای زیرکلاسها دور نمیزند.
bpo-27005: بهینهسازی متد کلاس float.fromhex() برای اعداد اعشاری دقیق. اکنون ۲ برابر سریعتر است.
bpo-18531: آرگومان تکستارهی کلیدواژهای از زیرنوع dict بدون تغییر به تابع تعریفشده با C ارسال میشد. اکنون به یک dict دقیق تبدیل میشود.
bpo-26811: تابع gc.get_objects() دیگر حاوی یک تاپل خراب با اشارهگر NULL نیست.
bpo-20120: استفاده از RawConfigParser برای تجزیه کردن .pypirc، و حذف پشتیبانی از درونیابی که ناخواسته با انتقال به پایتون ۳ اضافه شده بود. رفتار این پروندهها دیگر هیچگونه درونیابی در پروندههای .pypirc انجام نمیدهد، که با رفتار پایتون ۲.۷ و Setuptools 19.0 مطابقت دارد.
bpo-26249: توابع حافظهی دامنهی
PyMem_Malloc()(مدارPYMEM_DOMAIN_MEM) اکنون به جایmalloc()سیستمی، از تخصیصدهندهی pymalloc استفاده میکنند. برنامههایی کهPyMem_Malloc()را بدون نگهداشتن GIL فراخوانی میکنند اکنون ممکن است دچار فروپاشی شوند: از متغیر محیطیPYTHONMALLOC=debugبرای اعتبارسنچی نحوهی استفاده از تخصیصدهندگان حافظه در برنامهی خود استفاده کنید.bpo-26802: بهینهسازی فراخوانیهای تابع که فقط از بازکردن بسته مانند
func(*tuple)استفاده میکنند (بدون هیچ آرگومان جایگاهی دیگر، بدون کلیدواژه): از کپی کردن تاپل جلوگیری کنید. وصله نوشتهشده توسط Joe Jevnik.bpo-26659: نوع slice توکار را وادار کنید تا از جمعآوری چرخهای (cycle collection) پشتیبانی کند.
bpo-26718: تابع super.__init__ دیگر در صورت فراخوانی چندینباره باعث نشتی حافظه نمیشود. نکته: فراخوانی مستقیم تابع super.__init__ تأیید نمیشود!
bpo-27138: کامنت مستندات برای FileFinder.find_spec() را اصلاح کنید.
bpo-25339: متغیر PYTHONIOENCODING اکنون در تنظیم هندلر خطا برای ورودی استاندارد (stdin) و خروجی استاندارد (stdout) نسبت به locale اولویت دارد.
bpo-26494: فروپاشی هنگام پیمایش پیمایشگرهای کاملاً پیمایششده (exhausting iterators) برطرف شد. کلاسهای تحت تأثیر عبارتند از: پیمایشگرهای دنبالهی عام، پیمایشگرهای str، bytes، bytearray، list، tuple، set، frozenset، dict، OrderedDict، نماهای مربوطه و پیمایشگر os.scandir().
bpo-26574: بهینهسازی
bytes.replace(b'', b'.')وbytearray.replace(b'', b'.'). وصله نوشتهشده توسط Josh Snider.bpo-26581: اگر کوکی کدگذاری (coding cookie) چندین بار در یک سطر از پروندهی کد منبع پایتون مشخص شود، فقط اولین مورد در نظر گرفته میشود.
bpo-19711: افزودن آزمونها برای بازبارگذاری بستههای فضای نام (namespace packages).
bpo-21099: تغییر آزمونهای قابلاجرای importlib برای استفاده از API مربوط به PEP 451.
bpo-26563: قلابهای اشکالزدایی روی تخصیصدهندههای حافظهی پایتون اکنون اگر توابع خانوادهی
PyMem_Malloc()بدون نگه داشتن GIL فراخوانی شوند، یک خطای مهلک ایجاد میکنند.bpo-26564: هنگام بروز خطا، قلابهای اشکالزدایی روی تخصیصدهندههای حافظهی پایتون اکنون از ماژول
tracemallocبرای دریافت ردگیری (traceback) محل تخصیص بلوک حافظه استفاده میکنند.bpo-26558: قلابهای اشکالزدایی روی تخصیصدهندهی حافظهی پایتون
PyObject_Malloc()اکنون زمانی که توابع بدون نگه داشتن GIL فراخوانی شوند، آن را شناسایی میکنند.bpo-26516: افزودن متغیر محیطی
PYTHONMALLOCبرای تنظیم تخصیصدهندههای حافظهی پایتون و/یا نصب قلابهای اشکالزدایی.bpo-26516: تابع
PyMem_SetupDebugHooks()اکنون میتواند روی پایتون کامپایلشده در حالت انتشار (release mode) نیز استفاده شود.bpo-26516: متغیر محیطی
PYTHONMALLOCSTATSاکنون میتواند روی پایتون کامپایلشده در حالت انتشار نیز استفاده شود. این متغیر اکنون اگر روی یک رشتهی خالی تنظیم شود، هیچ تأثیری ندارد.bpo-26516: در حالت اشکالزدایی، زمانی که پایتون بدون pymalloc پیکربندی شده باشد نیز قلابهای اشکالزدایی روی تخصیصدهندههای حافظهی پایتون نصب میشوند.
bpo-26464: اصلاح str.translate() هنگامی که رشته اسکی (ASCII) است و اولین جایگزینی نویسهای را حذف میکند، اما جایگزینی بعدی از یک نویسهی غیر اسکی یا رشتهای بلندتر از ۱ نویسه استفاده میکند. رگرسیون ایجادشده در پایتون 3.5.0.
bpo-22836: اطمینان حاصل کنید که گزارشهای استثنا از PyErr_Display() و PyErr_WriteUnraisable() حتی زمانی که قالببندی آنها خطاهای ثانویهای ایجاد میکند، معقول هستند. این امر روی گزارشهای تولیدشده توسط sys.__excepthook__() و زمانی که ()__del__ یک استثنا ایجاد میکند، تأثیر میگذارد.
bpo-26302: اصلاح رفتار برای رد کردن کاما به عنوان یک نویسهی مجاز برای نامهای کوکی.
bpo-26136: ارتقای اخطار زمانی که یک تولیدگر StopIteration را از PendingDeprecationWarning به DeprecationWarning بالا میآورد. وصله توسط Anish Shah.
bpo-26204: کامپایلر اکنون تمام دستورهای ثابت را نادیده میگیرد: bytes، str، int، float، complex، ثابتهای نام (None، False، True)، Ellipsis و ast.Constant؛ و نه فقط str و int. برای مثال،
1.0اکنون درdef f(): 1.0نادیده گرفته میشود.bpo-4806: جلوگیری از پوشانده شدن استثنای (exception) اصلی TypeError هنگام استفاده از بازکردن بسته (unpacking) ستاره (
*) در فراخوانیهای تابع. بر اساس وصله (patch) از Hagen Fürstenau و Daniel Urban.bpo-26146: نوع جدیدی از گره درخت نحوی انتزاعی (AST) اضافه شد:
ast.Constant. این گره میتواند توسط بهینهسازهای خارجی درخت نحوی انتزاعی (AST) استفاده شود، اما کامپایلر مستقیماً چنین گرهای را صادر نمیکند.bpo-23601: تسریع تخصیص حافظه برای اشیای کلید dict با استفاده از تخصیصدهندهی شیء کوچک پایتون. (مشارکتی از Julian Taylor.)
bpo-18018: ایمپورت (import)، در صورتی که ایمپورت نسبی بدون بستهی والد شناختهشدهای تلاش شود، به جای SystemError خطای ImportError را بالا میآورد (raise میکند).
bpo-25843: هنگام کامپایل کد، اگر ثابتها برابر باشند اما نوعهای (type) متفاوتی داشته باشند، آنها را ادغام نکنید. برای مثال،
f1, f2 = lambda: 1, lambda: 1.0اکنون به درستی به دو تابع مختلف کامپایل میشود:f1()مقدار1(int) را برمیگرداند وf2()مقدار1.0(float) را برمیگرداند، حتی اگر1و1.0برابر باشند.bpo-26107: قالب ویژگی (attribute)
co_lnotabاز اشیای کد تغییر میکند تا از دلتای منفی شماره سطر پشتیبانی کند.bpo-26154: افزودن تابع خصوصی جدید _PyThreadState_UncheckedGet() برای دریافت وضعیت نخ فعلی پایتون، اما اگر برابر با NULL باشد خطای مهلک صادر نمیکند. این تابع جدید باید به جای دسترسی مستقیم به متغیر _PyThreadState_Current استفاده شود. این متغیر از پایتون نسخهی ۳.۵.۱ به بعد دیگر افشا نمیشود تا پیادهسازی دقیق انواع C اتمی پنهان بماند و از مشکلات کامپایلر جلوگیری شود.
bpo-25791: اگر __package__ != __spec__.parent باشد یا اگر هیچکدام از __package__ یا __spec__ تعریف نشده باشند، ImportWarning بالا آورده میشود (raise میشود).
bpo-22995: [بهروزرسانی] به دلیل رگرسیونهای (regression) مشاهدهشده در پروژههای مبتنی بر Cython، یکی از آزمونهای قابلیت پیکلپذیر بودن (pickleability) در _PyObject_GetState() کامنت شد.
bpo-25961: نویسههای تهی (null) در نام نوع (type name) مجاز نیستند.
bpo-25973: رفع خطای segfault هنگامی که یک دستور nonlocal نامعتبر، نامی را که با دو زیرخط شروع میشود مقید (bind) میکند.
bpo-22995: نمونههای (instance) نوعهای توسعهای (extension types) با وضعیتی که زیرکلاس list یا dict نیستند و هیچیک از متدهای مربوط به picle را پیادهسازی نکردهاند (__reduce__، __reduce_ex__، __getnewargs__، __getnewargs_ex__ یا __getstate__)، دیگر نمیتوانند پیکل (pickle) شوند. این شامل memoryview نیز میشود.
bpo-20440: جایگزینی گستردهی کد تنظیم ویژگی (attribute) ناامن با ماکروی ویژهی Py_SETREF.
bpo-25766: متد ویژهی __bytes__() اکنون در زیرکلاسهای str کار میکند.
bpo-25421: متدهای __sizeof__ از نوعهای توکار (builtin types) اکنون از اندازهی پایهی پویا استفاده میکنند. این امر به sys.getsize() اجازه میدهد تا با زیرکلاسهای آنها که دارای __slots__ تعریفشده هستند، به درستی کار کند.
bpo-25709: مشکل الحاق رشتهی درونجایی (in-place string concatenation) و نهانگاه (cache) utf-8 برطرف شد.
bpo-5319: رابط برنامهنویسی کاربردی (API) جدید Py_FinalizeEx() به پایتون اجازه میدهد هنگام شکست در تخلیه (flush) جریانهای بافر شده، وضعیت خروج ۱۲۰ را تنظیم کند.
bpo-25485: کلاس telnetlib.Telnet اکنون یک مدیر زمینه (context manager) است.
bpo-24097: رفع فروپاشی در شیء ()object.__reduce__ اگر نام جایگاه درون __getattr__ آزاد شود.
bpo-24731: رفع فروپاشی هنگام تبدیل کردن شیءهایی با متدهای ویژه __bytes__، __trunc__ و __float__ که نمونههایی از زیرکلاسهای bytes، int و float را برمیگردانند، به زیرکلاسهای متناظر bytes، int و float.
bpo-25630: رفع یک خطای احتمالی segfault هنگام تحلیل آرگومان در توابعی که مسیرهای سامانه فایلبندی را میپذیرند.
bpo-23564: یک بررسی صحت تا حدی آسیبدیده در بخشهای داخلی _posixsubprocess در رابطه با نحوهی ارسال fds_to_pass به فرزند برطرف شد. این باگ هیچ تأثیر واقعی نداشت زیرا subprocess.py از قبل از آن جلوگیری کرده بود.
bpo-25388: رفع فروپاشی توکنساز هنگام پردازش کد منبع غیرقابلرمزگشایی دارای یک بایت تهی (null byte).
bpo-25462: هش کلید اکنون فقط یک بار در بیشتر عملیاتها در پیادهسازی C از OrderedDict محاسبه میشود.
bpo-22995: پیادهسازی پیشفرض __reduce__ و __reduce_ex__ اکنون انواعی از پیشساخته را که دارای __new__ تعریفنشده هستند، رد میکند.
bpo-24802: جلوگیری از سرریز بافر هنگام ارسال شیءهای شبهبایت به ()int، ()float، ()compile، ()exec و ()eval. این شیءها لزوماً با یک بایت تهی پایان نمییابند، اما توابع فرض کرده بودند که چنین است.
bpo-25555: اصلاح پارسر و درخت نحوی انتزاعی (AST): پر کردن lineno و col_offset گره "arg" هنگام کامپایل درخت نحوی انتزاعی (AST) از شیءهای پایتون.
bpo-24726: رفع فروپاشی و نشت NULL در ()repr از OrderedDict که توسط فراخوانیهای مستقیم متدهای dict تغییر یافته بود.
bpo-25449: پیمایش OrderedDict با کلیدهای دارای هش ناپایدار اکنون خطای KeyError را هم در پیادهسازی C و هم در پیادهسازی پایتون بالا میآورد.
bpo-25395: رفع فروپاشی هنگام جمعآوری زباله (garbage collection) از ساختارهای تو در تو و عمیق OrderedDict.
bpo-25401: بهینهسازی ()bytes.fromhex و ()bytearray.fromhex: اکنون بین ۲x و ۳.۵x سریعتر هستند.
bpo-25399: بهینهسازی bytearray % args با استفاده از رابط برنامهنویسی کاربردی (API) جدید و خصوصی _PyBytesWriter. قالببندی اکنون بین ۲.۵ تا ۵ برابر سریعتر است.
bpo-25274: تابع ()sys.setrecursionlimit اکنون بسته به عمق بازگشتی فعلی، اگر حد بازگشتی جدید خیلی کم باشد، یک RecursionError ایجاد میکند. همچنین فرمول «نشانگر سطح پایین» (lower-water mark) را برای یکنواخت کردن آن تغییر دهید. این نشانگر برای تصمیمگیری دربارهی زمان بازنشانی پرچم سرریز وضعیت نخ استفاده میشود.
bpo-24402: اصلاح ()input برای نمایش اعلان به خروجی استاندارد (stdout) تغییرمسیریافته هنگامی که ()sys.stdout.fileno با شکست مواجه میشود.
bpo-25349: بهینهسازی bytes % args با استفاده از رابط برنامهنویسی کاربردی (API) جدید و خصوصی _PyBytesWriter. قالببندی اکنون تا ۲ برابر سریعتر است.
bpo-24806: جلوگیری از ارثبری چندگانه برای انواعی از پیشساخته که مجاز به داشتن زیرکلاس نیستند.
bpo-25301: رمزگشای UTF-8 اکنون برای هندلرهای خطا یعنی
ignore،replaceوsurrogateescapeتا ۱۵ برابر سریعتر شده است.bpo-24848: رفع تعدادی از باگها در کدگشایی UTF-7 دادههای ناقصفرم.
bpo-25267: کدگذار UTF-8 اکنون برای هندلرهای خطا تا ۷۵ برابر سریعتر شده است:
ignore،replace،surrogateescape،surrogatepass. وصله توسط Serhiy Storchaka نوشته شده است.bpo-25280: پیامهای رد ایمپورت که در حالت پرجزئیات (-v) صادر میشوند، دیگر دو بار قالببندی نمیشوند.
bpo-25227: بهینهسازی کدگذارهای اسکی و latin1 با هندرلر خطای
surrogateescape: کدگذارها اکنون تا ۳ برابر سریعتر شدهاند. وصلهی اولیه توسط Serhiy Storchaka نوشته شده است.bpo-25003: روی سیستمعامل Solaris 11.3 یا جدیدتر، تابع os.urandom() اکنون بهجای تابع getentropy() از تابع getrandom() استفاده میکند. تابع getentropy() برای تولید آنتروپی باکیفیت بسیار بالا مسدود کننده است، در حالی که os.urandom() به چنین آنتروپی باکیفیت بالایی نیاز ندارد.
bpo-9232: دستور زبان پایتون را تغییر دهید تا کامای پایانی در فهرست آرگومانهای تعریف تابع مجاز باشد. برای مثال، عبارت "def f(*, a = 3,): pass" اکنون قانونی است. وصله از Mark Dickinson.
bpo-24965: پیادهسازی PEP 498 «درونیابی رشتهی لفظی». این ویژگی به شما اجازه میدهد عبارتها را درون افاسترینگها تعبیه کنید که در زمان اجرا به رشتههای معمولی تبدیل میشوند. با فرض x=3، آنگاه عبارت f'value={x}' == 'value=3' برقرار است. وصله توسط Eric V. Smith.
bpo-26478: رفع باگهای معنایی هنگام استفاده از عملگرهای دودویی با نماهای دیکشنری و تاپلها.
bpo-26171: رفع سرریز عدد صحیح و خرابی احتمالی هیپ در zipimporter.get_data().
bpo-25660: رفع رفتار کلید TAB در REPL با readline.
bpo-26288: بهینهسازی PyLong_AsDouble.
bpo-26289: بهینهسازی تقسیم کف و باقیمانده برای اعداد صحیح بلند تکرقمی. ریزسنجشها (Microbenchmarks) بهبودی ۲ تا ۲.۵ برابری را نشان میدهند. تابع توکار 'divmod' نیز اکنون حدود ۱۰٪ سریعتر شده است. (همچنین نگاه کنید به: bpo-26315)
bpo-25887: هنگامی که یک شیء همروال بیش از یک بار await شود، یک RuntimeError بالا بیاورید.
کتابخانه¶
bpo-27057: رفع تابع os.set_inheritable() در اندروید؛ تابع ioctl() توسط SELinux مسدود شده و با EACCESS شکست میخورد. این تابع اکنون به fcntl() بازمیگردد. وصله نوشتهشده توسط Michał Bednarski.
bpo-27014: رفع بازگشت بینهایت با استفاده از typing.py. با تشکر از Kalle Tuure!
bpo-27031: حذف متدهای ساختگی در کلاسهای ابزارک Tkinter: tk_menuBar() و tk_bindForTraversal().
bpo-14132: رفع نحوهی هندل کردن تغییر مسیر (redirect) در urllib.request وقتی هدف فقط دارای یک رشتهی پرسوجو است. رفع باگ اصلی توسط Ján Janech.
bpo-17214: ماژول "urllib.request" اکنون بایتهای غیر اسکی موجود در URLهای هدف تغییر مسیر را درصد-کدگذاری میکند. برخی از سرورها فیلدهای سرآیند Location را با بایتهای غیر اسکی ارسال میکنند، اما "http.client" نیازمند این است که هدف درخواست قابلیت کدگذاری به اسکی را داشته باشد، در غیر این صورت یک UnicodeEncodeError بالا میرود. بر اساس وصلهی Christian Heimes.
bpo-27033: مقدار پیشفرض پارامتر decode_data برای سازندههای smtpd.SMTPChannel و smtpd.SMTPServer به False تغییر یافت.
bpo-27034: حذف کلاس منسوخشدهی asynchat.fifo.
bpo-26870: افزودن تابع readline.set_auto_history() که میتواند مانع از افزودن خودکار ورودیها به فهرست تاریخچه شود. بر اساس وصلهی Tyler Crompton.
bpo-26039: اکنون میتوان از zipfile.ZipFile.open() برای نوشتن دادهها در یک پروندهی ZIP و همچنین استخراج دادهها استفاده کرد. وصله توسط Thomas Kluyver.
bpo-26892: رعایت پرچم debuglevel در urllib.request.HTTPHandler. وصلهی ارائهشده توسط Chi Hsuan Yen.
bpo-22274: در ماژول subprocess، به stderr اجازه دهید به stdout هدایت شود، حتی زمانی که stdout هدایت نشده است. وصله توسط Akira Li.
bpo-26807: تابع mock_open برای «files» دیگر در انتهای پرونده خطای readline نمیدهد. وصله از Yolanda Robla.
bpo-25745: نشتی یک userptr در مخرب پنلهای curses برطرف شد.
bpo-26977: فراخوانی غیرضروری و نادیدهگرفتهشده به کمکی مجموع مربعات در statistics.pvariance حذف شد.
bpo-26002: به جای جستجوی خطی، از bisect در statistics.median استفاده کنید. وصله توسط Upendra Kuma.
bpo-25974: استفاده از متد جدید Decimal.as_integer_ratio() در ماژول statistics. وصله توسط Stefan Krah.
bpo-26996: افزودن ماژول secrets همانطور که در PEP 506 توصیف شده است.
bpo-26881: ماژول modulefinder اکنون از آرگومانهای آپکد توسعهیافته پشتیبانی میکند.
bpo-23815: خرابیهای مربوط به نمونههای ایجادشدهی مستقیم از نوعها در ماژولهای _tkinter و curses.panel برطرف شد.
bpo-17765: تابع weakref.ref() دیگر آرگومانهای کلیدواژهای را بهطور بیصدا نادیده نمیگیرد. وصله توسط Georg Brandl.
bpo-26873: ماژول xmlrpc اکنون روی برچسبهای نوع پشتیبانینشده به جای بازگرداندن بیصدای نتیجهی نادرست، خطای ResponseError را بالا میآورد.
bpo-26915: متدهای __contains__ در ABCهای collections اکنون پیش از بررسی تساوی، هویت را بررسی میکنند. این کار رفتار کلاسهای ملموس را بهتر تطبیق میدهد، امکان مدیریت معقول NaNها را فراهم میکند و استدلال دربارهی ناورداهای ظرف را آسانتر میسازد.
bpo-26711: مقایسهی plistlib.Data با سایر نوعها اصلاح شد.
bpo-24114: رفع یک متغیر مقداردهینشده در
ctypes.util. این باگ فقط در SunOS هنگام جستجوی پیادهسازی ctypes برای برنامهیcrleرخ میدهد. وصله توسط Xiang Zhang. تستشده روی SunOS توسط Kees Bos.bpo-26864: در urllib.request، بررسی میزبان دور زدن پراکسی در برابر no_proxy را به حالت نسبت به بزرگی و کوچکی حروف بیتفاوت تغییر دهید و طوری تنظیم کنید که با نامهای میزبان نامرتبطی که تصادفاً یک نام میزبان دورزدهشده را به عنوان پسوند دارند، مطابقت نداشته باشد. وصله توسط Xiang Zhang.
bpo-24902: چاپ نشانیوب سرور هنگام راهاندازی http.server. وصلهی اولیه توسط Felix Kaiser.
bpo-25788: تابع fileinput.hook_encoded() اکنون از آرگومان «errors» برای ارسال به open پشتیبانی میکند. وصلهی اصلی توسط Joseph Hackman.
bpo-26634: تابع recursive_repr() اکنون ویژگی __qualname__ شیء پوششی را تنظیم میکند. وصله توسط Xiang Zhang.
bpo-26804: ماژول urllib.request متغیرهای محیطی پراکسی با حروف کوچک (lower_case) را به متغیرهای با حروف بزرگ (UPPER_CASE) یا ترکیبی (Mixed_Case) ترجیح خواهد داد. وصلهی ارائهشده توسط Hans-Peter Jansen.
bpo-26837: تابع assertSequenceEqual() اکنون آیتمهای متفاوتی را که به رشته تبدیل نشدهاند (مانند بایتها در حالت -b) به درستی خروجی میدهد. این تغییر روی assertListEqual() و assertTupleEqual() نیز تأثیر میگذارد.
bpo-26041: عبارت "will be removed in Python 3.7" را از پیامهای منسوخسازی (deprecation) توابع platform.dist() و platform.linux_distribution() حذف کنید. وصله توسط Kumaripaba Miyurusara Athukorala.
bpo-26822: اشیاء itemgetter، attrgetter و methodcaller دیگر آرگومانهای کلیدواژهای را به سکوت نادیده نمیگیرند.
bpo-26733: واسازی کردن (disassembling) یک کلاس اکنون متدهای کلاس و متد ایستا را نیز واسازی میکند. وصله توسط Xiang Zhang.
bpo-26801: رفع مدیریت خطا در
shutil.get_terminal_size()، و گرفتن استثنایAttributeErrorبه جایNameError. وصلهی نوشتهشده توسط Emanuel Barry.bpo-24838: قالبهای ustar و gnu در ماژول tarfile اکنون محدودیتهای فیلد نام و پیوند را برای کدگذاریهای نویسهی چندبایتی مانند utf-8 به درستی محاسبه میکنند.
bpo-26717: متوقف کردن کدگذاری مسیرهای WSGI تبدیلشده به Latin-1 با استفاده از UTF-8. وصله توسط Anthony Sottile.
bpo-26782: افزودن STARTUPINFO به subprocess.__all__ در سیستمعامل ویندوز.
bpo-26404: افزودن مدیر زمینه به socketserver. وصله توسط Aviv Palivoda.
bpo-26735: رفع تابع
os.urandom()در سولاریس ۱۱.۳ و جدیدتر هنگام خواندن بیش از ۱٬۰۲۴ بایت: تابعgetrandom()را چندین بار با محدودیت ۱۰۰۰ و ۲۴ بایت در هر فراخوانی صدا بزنید.bpo-26585: حذف تابع http.server._quote_html() و استفاده از html.escape(quote=False). وصله توسط Xiang Zhang.
bpo-26685: اگر بستن یک سوکت با خطا مواجه شود، خطای OSError را بالا بیاورید.
bpo-16329: افزودن .webm به mimetypes.types_map. وصله توسط Giampaolo Rodola'.
bpo-13952: افزودن .csv به mimetypes.types_map. وصله توسط Geoff Wilson.
bpo-26587: ماژول site اکنون به پروندههای .pth اجازه میدهد پروندههایی را مشخص کنند که به sys.path اضافه شوند (مانند پروندههای zip).
bpo-25609: معرفی contextlib.AbstractContextManager و typing.ContextManager.
bpo-26709: رفع مشکل Y2038 در بارگذاری پروندههای PList دودویی.
bpo-23735: مدیریت تغییر اندازهی ترمینال با Readline 6.3+ از طریق نصب هندلر SIGWINCH اختصاصی خودمان. وصله توسط Eric Price.
bpo-25951: تغییر متد SSLSocket.sendall() برای بازگرداندن مقدار None، همانطور که به طور صریح برای اشیاء سوکت ساده مستند شده است. وصله توسط Aviv Palivoda.
bpo-26586: در ماژول http.server، اگر تعداد سرآیندهای (header) برای تجزیه بیش از حد زیاد باشد، به جای قطع کردن اتصال و بالا آوردن یک استثنای (exception) مدیریتنشده، با پیام «413 Request header fields too large» پاسخ دهید. وصله (patch) توسط Xiang Zhang.
bpo-26676: کلاس گمشدهی XMLPullParser به ElementTree.__all__ اضافه شد.
bpo-22854: متدهای BufferedReader.writable() و BufferedWriter.readable() تغییر کردند تا همیشه False را برگردانند.
bpo-26492: پیمایشگر (iterator) مصرفشدهی array.array اکنون با رفتار پیمایشگرهای سایر دنبالههای (sequences) تغییرپذیر (mutable) مطابقت دارد: حتی اگر آرایهی پیمایششده گسترش یابد، همچنان مصرفشده باقی میماند.
bpo-26641: توابع doctest.DocFileTest و doctest.testfile() اکنون از بستهها (ماژول تقسیمشده به چندین پوشه) برای پارامتر package پشتیبانی میکنند.
bpo-25195: برطرف کردن یک رگرسیون در mock.MagicMock. کلاس _Call زیرکلاسی از tuple است (تغییرات changeset 3603bae63c13 فقط برای کلاسها کار میکند)؛ بنابراین لازم است __ne__ را خودمان پیادهسازی کنیم. وصله توسط Andrew Plummer.
bpo-26644: هنگامی که طول منفی به SSLSocket.recv() یا read() ارسال میشود، به جای SystemError خطای ValueError را بالا بیاورید.
bpo-23804: متدهای SSL recv(0) و read(0) اصلاح شدند تا به جای حداکثر ۱۰۲۴ بایت، صفر بایت برگردانند.
bpo-26616: یک باگ در متد datetime.astimezone() برطرف شد.
bpo-26637: ماژول
importlibاکنون اگر تابع__import__()در طول فرایند خاموش شدن پایتون امتحان شود اما متغیرsys.pathاز قبل پاک شده باشد (رویNoneتنظیم شده باشد)، به جایTypeErrorیکImportErrorصادر میکند.bpo-21925: تابع
warnings.formatwarning()اکنون هنگام فراخوانیlinecache.getline()وtracemalloc.get_object_traceback()استثناها را میگیرد تا بتواند هشدارResourceWarningرا که در اواخر فرایند خاموش شدن پایتون صادر میشود، ثبت (log) کند.bpo-23848: روی سیستمعامل ویندوز، تابع faulthandler.enable() اکنون علاوه بر سیگنالهای یونیکس (SIGSEGV، SIGFPE، SIGABRT)، یک هندلر استثنا نیز برای برونریزی ردگیری تمام نخهای پایتون در صورت بروز هرگونه استثنای ویندوزی نصب میکند.
bpo-26530: توابع C به نامهای
_PyTraceMalloc_Track()و_PyTraceMalloc_Untrack()را اضافه کنید تا ردیابی بلوکهای حافظه با استفاده از ماژولtracemallocانجام شود. تابع_PyTraceMalloc_GetTraceback()را برای دریافت ردگیری یک شیء اضافه کنید.bpo-26588: ماژول _tracemalloc اکنون از ردیابی تخصیصهای حافظهی چندین فضای آدرس (دامنه) پشتیبانی میکند.
bpo-24266: کلید میانبر Ctrl+C در حین جستجوی تاریخچهی Readline، اکنون هنگام کامپایل شدن با Readline نسخه ۷، حالت جستجو را لغو میکند.
bpo-26590: یک نهاییساز (finalizer) امن برای نوع _socket.socket پیادهسازی کنید. این نوع اکنون برای بستن سوکت، GIL را آزاد میکند.
bpo-18787: تابع spwd.getspnam() اکنون اگر کاربر دسترسیهای لازم را نداشته باشد، یک PermissionError بالا میآورد.
bpo-26560: جلوگیری از خطای احتمالی ValueError در BaseHandler.start_response. وصلهی اولیه توسط Peter Inglesby.
bpo-26567: یک تابع جدید به نام
PyErr_ResourceWarning()برای ارسال شیء نابودشده اضافه کنید. یک صفت source بهwarnings.WarningMessageاضافه کنید. تابع warnings._showwarnmsg() را اضافه کنید که از tracemalloc برای دریافت ردگیریِ محل تخصیص شیء منبع استفاده میکند.bpo-26569: توابع
pyclbr.readmodule()وpyclbr.readmodule_ex()را طوری اصلاح کنید که از ایمپورت کردن بستهها پشتیبانی کنند.bpo-26499: در نظر گرفتن Content-Length باقیمانده در متدهای HTTPResponse.readline() و read1(). بر اساس وصلهی ارائه شده توسط Silent Ghost. همچنین مستندسازی این موضوع که HTTPResponse اکنون از این متدها پشتیبانی میکند.
bpo-25320: مدیریت سوکتها در پوشههایی که جستوجوی unittest در حال اسکن آنها است. وصله از Victor van den Elzen.
bpo-16181: تابع cookiejar.http2time() اکنون اگر سال بزرگتر از datetime.MAXYEAR باشد، None را برمیگرداند.
bpo-26513: رفع مشکل تشخیص ماژول platform برای ویندوز سرور
bpo-23718: رفع مشکل تجزیهی زمان در هفتهی صفرم پیش از ۱ ژانویه. وصلهی اصلی از Tamás Bence Gedai.
bpo-26323: افزودن متدهای Mock.assert_called() و Mock.assert_called_once() به ماژول unittest.mock. وصله نوشته شده توسط Amit Saha.
bpo-20589: فراخوانی Path.owner() و Path.group() روی ویندوز اکنون به جای ImportError استثنای NotImplementedError را بالا میآورد.
bpo-26177: رفع مشکل متد keys() برای ابزارکهای Canvas و Scrollbar.
bpo-15068: خلاص شدن از بافر کردن بیش از حد در fileinput. پارامتر bufsize اکنون منسوخ شده و نادیده گرفته میشود.
bpo-19475: افزودن آرگومان اختیاری timespec به متد isoformat() از datetime برای انتخاب دقت جزء زمان.
bpo-2202: رفع خطای UnboundLocalError در AbstractDigestAuthHandler.get_algorithm_impls. وصلهی اولیه از Mathieu Dupuy.
bpo-26167: به حداقل رساندن سربار در copy.copy() و copy.deepcopy(). بهینهسازی کپی کردن و عمیقاً کپی کردن شیءهای bytearrays، NotImplemented، اسلایسها، فهرستهای کوتاه، تاپلها، دیکشنریها و مجموعهها.
bpo-25718: رفع مشکل بستهبندی (pickling) و کپی کردن پیمایشگر (iterator) accumulate() زمانی که total برابر با None است.
bpo-26475: رفع خروجی اشکالزدایی برای عبارتهای باقاعده با پرچم (?x).
bpo-26482: امکان pickling برای صفهای بازگشتی فراهم شد.
bpo-26335: وادار کردن mmap.write() به بازگرداندن تعداد بایتهای نوشته شده مانند سایر متدهای write. وصله از Jakub Stasiak.
bpo-26457: رفع مشکل متدهای subnets() در کلاسهای شبکهی IP برای حالتی که طول پیشوند حاصل برابر با بیشترین طول پیشوند است. بر اساس وصلهی ارائه شده توسط Xiang Zhang.
bpo-26385: اگر فراخوانی داخلی open() در NamedTemporaryFile() با خطا مواجه شد، پرونده را حذف کنید. وصله از Silent Ghost.
bpo-26402: اصلاح کلاینت XML-RPC برای تلاش مجدد هنگامی که سرور یک اتصال پایا را میبندد. این یک رگرسیون مربوط به استثنای جدید http.client.RemoteDisconnected در نسخهی 3.5.0a4 بود.
bpo-25913: وجود کاراکترهای پیشفرض
<~اکنون در base64.a85decode() با مقدار adobe=True اختیاری است. وصله از Swati Jaiswal.bpo-26186: برداشتن یک بررسی نوع نامعتبر در importlib.util.LazyLoader.
bpo-26367: تابع importlib.__import__() دقیقاً مانند builtins.__import__() هنگامی که
levelمشخص شده باشد اما بستهی همراه آن مشخص نشده باشد، خطای ImportError را بالا میآورد (raise میکند).bpo-26309: در ماژول "socketserver"، وقتی تابع verify_request() مقدار false برمیگرداند، درخواست را متوقف کنید (سوکت متصلشده را ببندید). وصله توسط Aviv Palivoda.
bpo-23430: تغییر ماژول socketserver بهگونهای که فقط استثناهای ناشی از هندلر درخواست را که از نوع Exception مشتق شدهاند (بهجای BaseException) بگیرد. بنابراین، SystemExit و KeyboardInterrupt دیگر متد handle_error() را فعال نمیکنند و اکنون باعث توقف یک سرور تکرشتهای خواهند شد.
bpo-25995: تابع os.walk() دیگر از توصیفگرهای پرونده (FD) متناسب با عمق درخت استفاده نمیکند.
bpo-25994: متد close() و پشتیبانی از پروتکل مدیر زمینه به پیمایشگر os.scandir() اضافه شد.
bpo-23992: ماژول multiprocessing: کاری کرد که MapResult هنگام بروز استثنا سریعاً شکست نخورد.
bpo-26243: پشتیبانی از آرگومانهای کلیدواژهای در zlib.compress(). پچ توسط Aviv Palivoda.
bpo-26117: پیمایشگر os.scandir() اکنون توصیفگر پرونده را نه تنها هنگام اتمام پیمایش، بلکه هنگامی که با خطا مواجه میشود نیز میبندد.
bpo-25949: ویژگی __dict__ برای یک نمونهی OrderedDict اکنون فقط در صورت نیاز ایجاد میشود.
bpo-25911: بازیابی پشتیبانی از مسیرهای bytes در تابع os.walk() روی سیستمعامل ویندوز.
bpo-26045: افزودن پیشنهاد UTF-8 به پیغام خطا هنگام ارسال یک رشتهی غیر Latin-1 با http.client.
bpo-26039: توابع zipfile.ZipInfo.from_file() و zipinfo.ZipInfo.is_dir() اضافه شدند. وصله توسط Thomas Kluyver.
bpo-12923: بازنشانی شمارندهی تغییر مسیر FancyURLopener حتی در صورت بروز استثنا. بر اساس وصلههایی از Brian Brazil و Daniel Rocco.
bpo-25945: رفع یک فروپاشی هنگام پیکلگشایی شیء functools.partial با وضعیت نادرست. رفع یک نشتی در سازندهی خراب functools.partial. ویژگیهای "args" و "keywords" از functools.partial اکنون همیشه بهترتیب از انواع tuple و dict هستند.
bpo-26202: تابع copy.deepcopy() اکنون اشیاء range() را که دارای ویژگیهای غیراتمی هستند بهدرستی کپی میکند.
bpo-23076: متد Path.glob() اکنون اگر با یک الگوی نامعتبر فراخوانی شود، یک ValueError بالا میآورد. وصله توسط Thomas Nyberg.
bpo-19883: رفع سرریزهای احتمالی عدد صحیح در ماژول zipimport.
bpo-26227: در ویندوز، توابع getnameinfo()، gethostbyaddr() و gethostbyname_ex() در ماژول socket اکنون نام میزبان (hostname) را بهجای UTF-8 از کدپیج ANSI رمزگشایی میکنند.
bpo-26099: ماژول site اکنون اگر ماژول sitecustomize قابل درونریزی (import) باشد اما اجرای آن خطای ImportError ایجاد کند، خطایی را در stderr مینویسد. همین تغییر برای usercustomize نیز اعمال شد.
bpo-26147: کتابخانهی xmlrpc اکنون با رشتههایی که با کدگذاری غیر UTF-8 استفادهشده قابل کدگذاری نیستند، کار میکند.
bpo-25935: جمعآوریکنندهی زباله اکنون حلقههای ارجاع را با OrderedDict میشکند.
bpo-16620: خطای AttributeError در msilib.Directory.glob() برطرف شد.
bpo-26013: سازگاری با پیکلهای پروتکل ۲ آسیبدیده ایجادشده در نسخههای قدیمی پایتون ۳ (۳.۴.۳ و پایینتر) اضافه شد.
bpo-26129: پذیرش اعداد غیرصحیح در grp.getgrgid() منسوخ شد.
bpo-25850: استفاده از کامپایل متقاطع بهطور پیشفرض برای ویندوز ۶۴ بیتی.
bpo-25822: اضافه کردن رشتههای مستند به فیلدهای نتایج urllib.parse. وصله توسط Swati Jaiswal ارائه شده است.
bpo-22642: تبدیل مکانیزم تجزیهی گزینههای ماژول trace به argparse. وصله توسط SilentGhost ارائه شده است.
bpo-24705: رفع مشکل sysconfig._parse_makefile که متغیرهای ${} ظاهرشده قبل از متغیرهای $() را گسترش نمیداد.
bpo-26069: حذف رابطهای برنامهنویسی کاربردی (API) منسوخ در ماژول trace.
bpo-22138: رفع رفتار mock.patch هنگام اعمال وصله روی توصیفگرها. بازیابی مقادیر اصلی پس از اعمال وصله. وصله توسط Sean McCully ارائه شده است.
bpo-25672: در ماژول ssl، اگر انجام آن ایمن باشد، گزینهی حالت SSL_MODE_RELEASE_BUFFERS را فعال کنید.
bpo-26012: برای الگوی
**در pathlib.Path.[r]glob() وارد پیوندهای نمادین نشوید.bpo-24120: نادیده گرفتن PermissionError هنگام پیمایش یک درخت با pathlib.Path.[r]glob(). وصله توسط Ulrich Petri.
bpo-21815: پذیرش نویسههای ] در بخش دادهی پاسخهای imap، به منظور مدیریت پرچمهای دارای براکت مربع که توسط سرورهایی مانند جیمیل پذیرفته و تولید میشوند.
bpo-25447: ماژول fileinput اکنون در صورتی که ویژگی بافر نداشته باشد، sys.stdin را همانطور که هست استفاده میکند (سازگاری عقبگرد را بازیابی میکند).
bpo-25971: بهینهسازی ایجاد Fractions از اعداد اعشاری به میزان ۲ برابر و از Decimals به میزان ۳ برابر.
bpo-25802: مستندسازی پیادهسازیهای باقیمانده از importlib.abc.Loader.load_module() به عنوان منسوخ.
bpo-25928: اضافه کردن Decimal.as_integer_ratio().
bpo-25447: کپی کردن شیء دربرگیرندهی lru_cache() اکنون همیشه کار میکند، صرفنظر از نوع شیء دربرگرفتهشده (با بازگرداندن شیء اصلی بدون تغییر).
bpo-25768: توابع موجود در compileall بهجای اعداد صحیح، مقادیر بولی برگردانند و مستندات و آزمونهای مناسبی برای مقادیر بازگشتی اضافه شود.
bpo-24103: رفع احتمال استفاده پس از آزادسازی (use after free) در ElementTree.XMLPullParser.
bpo-25860: تابع os.fwalk() دیگر با بروز خطا، دایرکتوریهای باقیمانده را رد نمیکند. وصلهی اصلی توسط سامسون لی (Samson Lee).
bpo-25914: اصلاح و سادهسازی OrderedDict.__sizeof__سیستم.
bpo-25869: بهینهسازی کپی عمیق (deepcopy) در ElementTree؛ این کار اکنون ۲۰ برابر سریعتر است.
bpo-25873: بهینهسازی پیمایش ElementTree. پیمایش المانها با Element.iter() اکنون ۴۰ درصد سریعتر شده و پیمایش متن با Element.itertext() تا ۲.۵ برابر سریعتر شده است.
bpo-25902: رفع مشکلات مختلف شمارش ارجاع در پیمایش ElementTree.
bpo-22227: پیمایشگر TarFile با استفاده از تولیدگر بازنویسی شد. این پیادهسازی سادهتر از استفاده از کلاس است.
bpo-25638: بهینهسازی ElementTree.iterparse()؛ اکنون ۲ برابر سریعتر است. بهینهسازی تجزیه (parsing) در ElementTree؛ اکنون ۱۰ درصد سریعتر است.
bpo-25761: بهبود تشخیص خطا در دادههای آسیبدیدهی پیکل (pickle).
bpo-25717: رفتار قبلی چشمپوشی از بیشتر خطاهای fstat() هنگام باز کردن پروندهها بازگردانده شد. این یک رگرسیون در نسخهی 3.5a1 بود و مانع از کار کردن پروندههای موقت ناشناس در موارد خاص شده بود.
bpo-24903: رفع رگرسیون در تعداد آرگومانهایی که compileall هنگام مشخص شدن 'd-' میپذیرد. بررسی تعداد آرگومانها به طور کامل حذف شد زیرا به هر حال هرگز به طور صحیح کار نمیکرد.
bpo-25764: در ماژول subprocess، هرگونه استثنای ناشی از شکست fork() هنگام استفاده از preexec_fn حفظ میشود.
bpo-25771: اصلاح پیام استثنا برای importlib.util.resolve_name() هنگامی که 'package' مشخص نشده اما ضروری است.
bpo-6478: نهانگاه عبارات باقاعده (regexp cache) در _strptime اکنون پس از تغییر منطقهی زمانی با time.tzset() بازنشانی میشود.
bpo-14285: هنگام اجرای یک بسته با گزینهی «python -m package»، و در صورت شکست مقداردهی اولیهی بسته، یک ردگیری مناسب اکنون گزارش میشود. ماژول «runpy» اکنون اجازه میدهد استثناهای ناشی از مقداردهی اولیهی بسته به جای بالا بردن ImportError، به فراخواننده بازگردند.
bpo-19771: همچنین در runpy و گزینهی "-m"، اگر بسته حتی نتواند مقداردهی اولیه شود (مثلاً به دلیل وجود یک پروندهی معیوب
*.pyc)، پیام نامربوط ". . . is a package and cannot be directly executed" را حذف کنید.bpo-25177: رفع مشکل مربوط به میانگین اعداد بسیار کوچک و بسیار بزرگ. به عنوان اثر جانبی، statistics.mean و statistics.variance باید بهطور چشمگیری سریعتر باشند.
bpo-25718: رفع مشکل کپی کردن شیء همراه با وضعیت زمانی که مقدار بولی نادرست (false) است.
bpo-10131: رفع کپی عمیق اسناد minidom. بر اساس وصله ارائهشده توسط ماریان گانیسین (Marian Ganisin).
bpo-7990: متد dir() روی ElementTree.Element اکنون ویژگیهای "tag"، "text"، "tail" و "attrib" را فهرست میکند. وصله توسط Santoso Wijaya.
bpo-25725: رفع یک نشت ارجاع در pickle.loads() هنگام بارگذاری دادههای نامعتبر شامل دستورات تاپل.
bpo-25663: در تکمیلکنندهی Readline، از فهرست کردن نامهای سراسری تکراری جلوگیری کنید و پیش از جستجو در توابع توکار، فضای نام سراسری را جستجو کنید.
bpo-25688: رفع نشت پرونده در ElementTree.iterparse() که باعث ایجاد یک خطا میشود.
bpo-23914: رفع SystemError ایجادشده توسط پیکلساز روی دادههای پیکل خراب.
bpo-25691: رفع فروپاشی هنگام حذف ویژگیهای ElementTree.Element.
bpo-25624: اکنون ZipFile همیشه یک سرآیند ZIP_STORED برای ورودیهای پوشه مینویسد. وصله توسط Dingyuan Wang.
bpo-25626: تغییر سه تابع zlib به گونهای که اندازههایی را بپذیرند که در Py_ssize_t جا میشوند، اما به صورت داخلی آن اندازهها را به UINT_MAX محدود میکنند. این کار یک رگرسیون را در نسخهی ۳.۵ حل میکند که در آن GzipFile.read() در خواندن قطعات بزرگتر از ۲ یا ۴ گیگابایت شکست میخورد. این تغییر روی پارامتر max_length از تابع zlib.Decompress.decompress()، پارامتر bufsize از تابع zlib.decompress() و پارامتر length از تابع zlib.Decompress.flush() تأثیر میگذارد.
bpo-25583: جلوگیری از خطاهای نادرست ایجادشده توسط os.makedirs(exist_ok=True) هنگامی که سیستمعامل به خطاهایی مانند EACCES نسبت به EEXIST اولویت میدهد.
bpo-25593: تغییر معناشناسی EventLoop.stop() در asyncio.
bpo-6973: وقتی میدانیم که یک فرایند subprocess.Popen مرده است، به متدهای send_signal()، terminate() یا kill() اجازه ندهید کاری انجام دهند؛ زیرا ممکن است به طور بالقوه به یک فرایند دیگر سیگنال ارسال کنند.
bpo-23883: افزودن APIهای گمشده به __all__ برای تطبیق با APIهای مستندشده برای ماژولهای زیر: calendar، csv، enum، fileinput، ftplib، logging، optparse، tarfile، threading و wave. همچنین افزودن یک تابع کمکی test.support.check__all__(). وصلهها از Jacek Kołodziej، Mauro S. M. Rodrigues و Joel Taddei.
bpo-25590: در تکمیلکنندهی Readline، متد getattr() را فقط یک بار به ازای هر ویژگی فراخوانی کنید. همچنین نام ویژگیهایی مانند ویژگیها (properties) و جایگاهها (slots) را که توسط dir() فهرست شدهاند اما هنوز روی یک نمونه ایجاد نشدهاند، تکمیل کنید.
bpo-25498: رفع فروپاشی هنگام جمعآوری زبالهی اشیاء ctypes که با پوشش دادن یک memoryview ایجاد شدهاند. این یک رگرسیون ایجادشده در نسخهی ۳.۵a1 بود. بر اساس وصلهای از Eryksun.
bpo-25584: افزودن "escape" به فهرست __all__ در ماژول glob.
bpo-25584: رفع عملکرد بازگشتی glob() با الگوهایی که با
**شروع میشوند.bpo-25446: رفع رگرسیون در پشتیبانی AUTH LOGIN ماژول smtplib.
bpo-18010: رفع تابع جستجوی ماژول وبسرور pydoc برای مدیریت استثناهای ناشی از ایمپورت کردن بستهها.
bpo-25554: خلاص شدن از شر ارجاعات دایرهای در تجزیه عبارات باقاعده.
bpo-18973: رابط خط فرمان ماژول calendar اکنون به جای optparse از argparse استفاده میکند.
bpo-25510: تابع fileinput.FileInput.readline() اکنون اگر FileInput با حالت (mode) دودویی (binary) باز شده باشد، در انتهای کار بهجای '' مقدار b'' را برمیگرداند. وصله توسط Ryosuke Ito.
bpo-25503: رفع مشکل تابع inspect.getdoc() برای رشتهمستندهای ارثبریشدهی ویژگیها. وصلهی اولیهی John Mark Vandenberg.
bpo-25515: همیشه از os.urandom به عنوان منبع تولید اعداد تصادفی در uuid.uuid4 استفاده کنید.
bpo-21827: رفع مشکل تابع textwrap.dedent() برای حالتی که بزرگترین فضای خالی مشترک، زیررشتهای از کوچکترین فضای خالی پیشتاز باشد. بر اساس وصلهی Robert Li.
bpo-25447: اشیاء پوششی (wrapper) در lru_cache() اکنون میتوانند کپی و پیکل شوند (با بازگرداندن شیء اصلی بدون تغییر).
bpo-25390: بخش typing: عدم فروپاشی در Union[str, Pattern].
bpo-25441: بخش asyncio: ایجاد خطا از تابع drain() هنگامی که سوکت بسته است.
bpo-25410: پاکسازی و رفع اشکالات جزئی در پیادهسازی C از OrderedDict.
bpo-25411: بهبود پشتیبانی از یونیکد در SMTPHandler از طریق استفادهی بهتر از بستهی email. با تشکر از کاربر simon04 برای ارسال وصله.
انتقال ماژول imp از PendingDeprecationWarning به DeprecationWarning.
bpo-25407: حذف اشارهها به حذفشدن ماژول formatter در پایتون ۳.۶.
bpo-25406: رفع اشکالی در پیادهسازی C از OrderedDict.move_to_end() که پس از انتقال چند آیتم به ابتدای دیکشنری مرتبشده، باعث خطای قطعهبندی (segmentation fault) یا توقف در حین پیمایش میشد.
bpo-25382: تابع pickletools.dis() اکنون اندیس memo ضمنی را برای آپکد MEMOIZE خروجی میدهد.
bpo-25357: افزودن یک پارامتر اختیاری newline به تابع binascii.b2a_base64(). تابع base64.b64encode() از آن برای جلوگیری از کپی حافظه استفاده میکند.
bpo-24164: اشیایی که نیاز به فراخوانی
__new__با آرگومانهای کلیدواژهای دارند، اکنون میتوانند با استفاده از پروتکلهای پیکل قدیمیتر از نسخهی پروتکل ۴ پیکل شوند.bpo-25364: ماژول zipfile اکنون در نسخههایی که نخها (threads) در آنها غیرفعال شدهاند نیز کار میکند.
bpo-25328: کلاس SMTPChannel در smtpd اکنون اگر هر دو مقدار decode_data و enable_SMTPUTF8 روی true تنظیم شده باشند، به درستی یک خطای ValueError ایجاد میکند.
bpo-16099: کلاس RobotFileParser اکنون از پسوندهای Crawl-delay و Request-rate پشتیبانی میکند. وصله توسط Nikolay Bogoychev.
bpo-25316: کتابخانهی distutils هنگامی که MSVC نصب نشده باشد، بهجای DistutilsPlatformError خطای OSError ایجاد میکند.
bpo-25380: رفع پروتکل برای آپکد STACK_GLOBAL در pickletools.opcodes.
bpo-23972: بهروزرسانی متد ایجاد دیاترام asyncio بهطوری که اجازه میدهد گزینههای سوکت reuseport و reuseaddr پیش از اتصال سوکت تنظیم شوند. با الگوبرداری از متد موجود create_server در asyncio، گزینهی reuseaddr برای سوکتهای دیاترام در صورتی که سیستمعامل 'posix' باشد (مگر اینکه پلتفرم Cygwin باشد) بهطور پیشفرض روی True تنظیم میشود. وصله از Chris Laws.
bpo-25304: افزودن تابع asyncio.run_coroutine_threadsafe(). این امکان را به شما میدهد که یک همروال را از یک نخ دیگر به یک حلقه ارسال کنید و یک concurrent.futures.Future را دریافت کنید. توسّط Vincent Michel.
bpo-25232: اصلاح CGIRequestHandler برای جداسازی پرسوجو از نشانیوب در اولین علامت سوال (؟) بهجای آخرین علامت. وصله از Xiang Zhang.
bpo-24657: جلوگیری از فروپاشی اسلشها در بخش پرسوجوی نشانیوب توسط CGIRequestHandler گویی که یک مسیر است. وصله از Xiang Zhang.
bpo-25287: اگر crypt.METHOD_CRYPT پشتیبانی نمیشود، آن را به crypt.methods اضافه نکنید. بررسی کنید که آیا پشتیبانی میشود یا خیر، مثلاً ممکن است روی OpenBSD پشتیبانی نشود.
bpo-23600: پیادهسازی پیشفرض tzinfo.fromutc() در برخی موارد نتایج اشتباهی برمیگرداند.
bpo-25203: تابع ناموفق readline.set_completer_delims() دیگر ماژول را در وضعیت نامعتبری رها نمیکند.
bpo-25011: ماژول rlcompleter اکنون نام ویژگیهای خصوصی و خاص را حذف میکند مگر اینکه پیشوند با زیرخط شروع شود.
bpo-25209: ماژول rlcompleter اکنون میتواند پس از کلیدواژهی تکمیلشده، یک فاصله یا یک علامت دو نقطه اضافه کند.
bpo-22241: نام timezone.utc اکنون بهصورت سادهی 'UTC' است، نه 'UTC-00:00'.
bpo-23517: متدهای fromtimestamp() و utcfromtimestamp() از datetime.datetime اکنون میکروثانیهها را به نزدیکترین عدد گرد میکنند و در صورت وجود تساوی، به نزدیکترین عدد صحیح زوج (ROUND_HALF_EVEN) گرد میشوند، درست مانند round(float)، به جای گرد کردن به سمت منفی بینهایت (ROUND_FLOOR).
bpo-23552: ابزار Timeit اکنون هنگامی که بین بهترین و بدترین زمانها واریانس قابلتوجهی (۴ برابر) وجود داشته باشد، هشدار میدهد. وصله از Serhiy Storchaka.
bpo-24633: site-packages/README -> README.txt.
bpo-24879: توابع help() و pydoc اکنون میتوانند فیلدهای تاپل نامدار را به ترتیبی که تعریف شدهاند فهرست کنند و نه به ترتیب الفبا. ترتیب نمایش با ویژگی _fields در صورت وجود تعیین میشود.
bpo-24874: بهبود سرعت itertools.cycle() و فشردهتر کردن پیکل آن.
رفع خرابی در itertools.cycle.__setstate__() هنگامی که آرگومان اول یک فهرست نبود.
bpo-20059: ماژول urllib.parse برای تمام درگاههای نامعتبر ValueError ایجاد میکند. وصله از Martin Panter.
bpo-24360: بهبود __repr__ در argparse.Namespace() برای شناسههای نامعتبر. وصله از Matthias Bussonnier.
bpo-23426: تابع run_setup در distutils خراب شده بود. وصله از Alexander Belopolsky.
bpo-13938: ابزار 2to3 مقادیر StringTypes را به یک تاپل تبدیل میکند. وصله از Mark Hammond.
bpo-2091: تابع open() یک رشتهی حالت حاوی '+' را میپذیرد، اما 'U' فقط میتواند با 'r' استفاده شود. وصله از Jeff Balogh و John O'Connor.
bpo-8585: بهبود آزمونها برای zipimporter2. وصله از Mark Lawrence.
bpo-18622: تابع unittest.mock.mock_open().reset_mock به صورت بینهایت بازگشتی میشد. وصله از Nicola Palumbo و Laurent De Buyst.
bpo-24426: بهینهسازی جستجوی سریع در عبارتهای باقاعده اکنون برای الگوهایی که با گروههای ثبتکننده شروع میشوند کار میکند. بهینهسازی جستجوی سریع اکنون نمیتواند در زمان کامپایل غیرفعال شود.
bpo-23661: ویژگی side_effects در unittest.mock اکنون دوباره میتواند استثنا باشد. این یک رگرسیون در مقایسه با پایتون ۳.۴ بود. وصله از Ignacio Rossi
bpo-13248: حذف تابع منسوخ inspect.getmoduleinfo.
bpo-25578: رفع (یک) نشتی حافظهی دیگر در SSLSocket.getpeercer().
bpo-25530: غیرفعال کردن پروتکل آسیبپذیر SSLv3 به طور پیشفرض هنگام ایجاد ssl.SSLContext.
bpo-25569: رفع نشتی حافظه در SSLSocket.getpeercert().
bpo-25471: سوکتهای برگرداندهشده از accept() نباید به صورت مسدودنشدنی ظاهر شوند.
bpo-25319: هنگامی که threading.Event دوباره مقداردهی اولیه میشود، شرط زیرین باید به جای قفل بازگشتی از یک قفل معمولی استفاده کند.
اگر میزبان از قبل حل شده است، getaddrinfo را رد کنید. وصله توسط A. Jesse Jiryu Davis.
bpo-26050: افزودن متد asyncio.StreamReader.readuntil(). وصله توسط Марк Коренберг.
bpo-25924: اجتناب از سریالسازی غیرضروری فراخوانیهای getaddrinfo(3) در نسخههای OS X ۱۰.۵ یا بالاتر. وصلهی اصلی توسط A. Jesse Jiryu Davis.
bpo-26406: اجتناب از سریالسازی غیرضروری فراخوانیهای getaddrinfo(3) در نسخههای فعلی OpenBSD و NetBSD. وصله توسط A. Jesse Jiryu Davis.
bpo-26848: رفع asyncio/subprocess.communicate() برای مدیریت ورودی خالی. وصله توسط Jack O'Connor.
bpo-27040: افزودن متد loop.get_exception_handler
bpo-27041: کتابخانهی asyncio: افزودن متد loop.create_future
IDLE¶
bpo-20640: افزودن آزمونها برای idlelib.configHelpSourceEdit. وصله توسط Saimadhav Heblikar.
در بخش «تفاوتهای کنسول IDLE» در مستندات IDLE، روشن کنید که چگونه اجرا با IDLE روی sys.modules و جریانهای استاندارد تأثیر میگذارد.
bpo-25507: رفع تغییر نادرست در IOBinding که مانع از چاپ میشد. گسترش htest برای IOBinding جهت شامل شدن تمامی توابع اصلی IOBinding.
bpo-25905: بازگردانی تبدیل ناخواسته علامت ' به علامت ’ (علامت نقلقول تک راست) در پروندهی README.txt و باز کردن این پرونده و NEWS.txt با رمزگذاری 'ascii'. کدگذاری مجدد CREDITS.txt به utf-8 و باز کردن آن با 'utf-8'.
bpo-15348: متوقف کردن موتور اشکالزدایی (معمولاً در یک فرایند کاربر) پیش از بستن پنجرهی اشکالزدایی (که در فرایند IDLE اجرا میشود). این کار از بروز خطاهای RuntimeErrors که گرفته و نادیده گرفته میشدند، جلوگیری میکند.
bpo-24455: جلوگیری از فریز شدن IDLE در حالتهای: الف) بستن پوسته در حالی که اشکالزدایی فعال است (15347)؛ ب) بستن اشکالزدایی با دکمهی [X] (15348)؛ و ج) فعالسازی مجدد اشکالزدایی در حالی که از پیش فعال است (24455). وصل ارائه شده توسط Mark Roseman با اعمال دو تغییر این کار را انجام میدهد. ۱. متوقف و ازسرگیری متد gui.interaction با مکانیزم tcl vwait که برای همین منظور در نظر گرفته شده است (بهجای استفاده از root.mainloop و .quit). ۲. در gui.run، اجازه دهید هر تعامل موجود ابتدا پایان یابد.
تغییر «The program» به «Your program» در پیام «kill program?» در IDLE تا روشنتر شود که برنامهی مورد نظر، برنامهی در حال اجرای کاربر است، نه خود IDLE.
bpo-24750: بهبود ظاهر نوار وضعیت پنجرهی ویرایشگر IDLE. وصل توسط Mark Roseman.
bpo-25313: تغییر نحوهی مدیریت پوستههای رنگی متن توکار جدید برای رسیدگی بهتر به مشکل سازگاری ایجاد شده توسط افزودن IDLE Dark. استفادهی سازگار از idleConf.CurrentTheme بازنگریشده در همهی بخشهای idlelib.
bpo-24782: پیکربندی افزونهها اکنون بهجای یک محاورهی جداگانه، به شکل یک زبانک در محاورهی تنظیمات IDLE قرار دارد. زبانکهای پیشین اکنون به شکل یک فهرست مرتبشده درآمدهاند. وصل توسط Mark Roseman.
bpo-22726: فعالسازی مجدد دکمهی راهنمای محاورهی پیکربندی همراه با مقداری محتوا دربارهی سایر دکمهها و پوستهی جدید IDLE Dark.
bpo-24820: IDLE اکنون دارای یک پوستهی رنگی متن توکار به نام «IDLE Dark» است. این پوسته کموبیش نسخهی معکوسشدهی IDLE Classic با پسزمینهی آبی کبالت است. رشتهها، کامنتها، کلیدواژهها، ... همچنان سبز، قرمز، نارنجی، ... هستند. برای استفاده از آن در نسخههای عرضهشدهی IDLE پیش از نوامبر ۲۰۱۵، دکمهی «Save as New Custom Theme» را فشار دهید و نام جدیدی مانند «Custom Dark» را وارد کنید. پوستهی سفارشی با هر نسخهای از IDLE کار خواهد کرد و قابل ویرایش است.
bpo-25224: پروندهی README.txt اکنون یک اندیس idlelib برای توسعهدهندگان IDLE و کاربران کنجکاو است. محتوای قبلی کاربر اکنون در فصل مستندات IDLE قرار دارد. «IDLE» اکنون مخفف عبارت «Integrated Development and Learning Environment» است.
bpo-24820: کاربران اکنون میتوانند رنگهای نقطهی ایست (breakpoint) را در مسیر Settings -> Custom Highlighting تنظیم کنند. وصل اولیهی توسط Mark Roseman.
bpo-24972: پسزمینهی انتخاب غیرفعال اکنون در تمام سیستمها با پسزمینهی انتخاب فعال، همانطور که توسط کاربران پیکربندی شده است، مطابقت دارد. آیتمهای پیدا شده اکنون همیشه در ویندوز برجسته میشوند. وصل اولیه توسط Mark Roseman.
bpo-24570: Idle: کاری میکند که کادرهای راهنمای فراخوانی (calltip) و تکمیل در سیستمهای مک که تحت تأثیر یک رگرسیون tk قرار گرفتهاند، ظاهر شوند. وصل اولیه توسط Mark Roseman.
bpo-24988: منوهای زمینهی Idle ScrolledList (که در اشکالزدا استفاده میشوند) اکنون روی Mac Aqua کار میکنند. وصل توسط Mark Roseman.
bpo-24801: امکان کار کردن کلیک راست برای منوی زمینه را روی Mac Aqua فراهم میکند. وصل توسط Mark Roseman.
bpo-25173: مرتبط کردن کادرهای پیام tkinter با یک ابزارک خاص. برای سیستم عامل Mac OSX، آنها را به یک «برگه» تبدیل کنید. وصل توسط Mark Roseman.
bpo-25198: بهبود نمایشگر اولیهی html که اکنون برای راهنمای Idle استفاده میشود. تورفتگی مناسب برای متنهای با فاصله ثابت (وصل توسط Mark Roseman). دادن یک پسزمینهی آبی مایل به خاکستری روشن بسیار شبیه به Sphinx به قطعه کد. استفادهی مجدد از عرض و ارتفاع اولیه تنظیمشده توسط کاربران برای پوسته و ویرایشگر. هنگامی که منوی فهرست مطالب (TOC) استفاده میشود، سرآیند بخش را در بالای صفحه قرار دهید.
bpo-25225: خلاصهسازی و بازنویسی بخش مستندات Idle دربارهی رنگهای متن.
bpo-21995: توضیح برخی از تفاوتهای میان IDLE و پایتون کنسول.
bpo-22820: توضیح نیاز به print هنگام اجرای پرونده از ویرایشگر Idle.
bpo-25224: مستندات: افزودن به فهرست ویژگیهای Idle و بخش بدون فرایند فرزند (no-subprocess).
bpo-25219: بهروزرسانی مستندات برای گزینههای خط فرمان Idle. برخی از آنها گم شده بودند و یادداشتها درست نبودند.
bpo-24861: بیشتر ماژول idlelib خصوصی است و ممکن است تغییر کند. از idlelib.idle.* برای شروع Idle استفاده کنید. بخش idlelib.__init__.__doc__ را ببینید.
bpo-25199: ماژول Idle: افزودن کامنتهای همگامسازی برای نگهدارندگان آینده.
bpo-16893: جایگزینی help.txt با help.html برای نمایش مستندات Idle. پروندهی جدید idlelib/help.html نسخهی rstripped شدهی Doc/build/html/library/idle.html است. این پرونده ظاهر بهتری نسبت به help.txt دارد و Idle منتشرشده را بهتر مستند میکند. نمایشگر html ماژول tkinter که برای این پرونده کار میکند توسط Rose Roseman نوشته شده است. کلاس EditorWindow.HelpDialog و پروندهی help.txt که دیگر استفاده نمیشوند، منسوخ شدهاند.
bpo-24199: منسوخ کردن idlelib.idlever استفادهنشده با احتمال حذف در نسخهی 3.6.
bpo-24790: حذف کد اضافی (که باعث تداخلهای ۲ و ۳ نیز میشود).
مستندات¶
bpo-26736: در صورت امکان، از HTTPS برای پیوندهای خارجی در مستندات استفاده کنید.
bpo-6953: بازسازی مستندات ماژول Readline برای دستهبندی توابع مرتبط در کنار یکدیگر، و افزودن جزئیات بیشتر مانند اینکه به چه توابع و متغیرهای زیربنایی Readline دسترسی پیدا میشود.
bpo-23606: افزودن یادداشت به مستندات ctypes در خصوص cdll.msvcrt.
bpo-24952: شفافسازی آرگومان اندازهی پیشفرض تابع stack_size() در ماژولهای threading و _thread. وصله از Mattip.
bpo-26014: بهروزرسانی مستندات بستهبندی نسخهی 3.x: * پیوندهای «همچنین ببینید» به مستندات جدید اکنون در صفحات قدیمیتر ارائه شدهاند * پیوندها به مستندات setuptools بهروزرسانی شدهاند
آزمونها¶
bpo-21916: افزودن آزمونها برای ماژول turtle. وصله توسط ingrid، Gregory Loyse و Jelle Zijlstra.
bpo-26295: هنگام استفاده از دستور "python3 -m test --testdir=TESTDIR"، برنامهی regrtest پیشوند "test." را به نامهای ماژول آزمون اضافه نمیکند.
bpo-26523: استخر نخ (thread pool) در ماژول چندپردازشی (multiprocessing.dummy.Pool) آزموده نشده بود.
bpo-26015: افزودن آزمونهای جدید برای ترشیکردن (pickling) پیمایشگرهای دنبالههای تغییرپذیر.
bpo-26325: افزودن تابع test.support.check_no_resource_warning() برای بررسی اینکه هیچ هشدار ResourceWarning صادر نشود.
bpo-25940: تغییر test_ssl برای استفادهی بیشتر از سرور محلی داخلی آن. این کار از اتکا به svn.python.org که اخیراً گواهی ریشهی خود را تغییر داده است، جلوگیری میکند.
bpo-25616: آزمونهای OrderedDict از test_collections به پروندهی جداگانهی test_ordered_dict استخراج شدند.
bpo-25449: افزودن آزمونها برای زیرکلاسهای OrderedDict.
bpo-25188: افزودن -P/--pgo به test.regrtest برای جلوگیری از چاپ خروجیهای خطا هنگام اجرای بدنهی آزمون بهمنظور ساخت PGO. وصلهی اولیه توسط Alecsandru Patrascu.
bpo-22806: افزودن دستور
python -m test --list-testsبرای فهرست کردن آزمونها.bpo-18174: دستور
python -m test --huntrleaks ...اکنون نشت توصیفگرهای پرونده را نیز بررسی میکند. وصله نگارششده توسط Richard Oudkerk.bpo-25260: رفع مشکل
python -m test --coverageدر ویندوز. حذف فهرست دایرکتوریهای نادیدهگرفتهشده.پروندهی
PCbuild\rt.batاکنون تعداد نامحدودی آرگومان را برای ارسال به regrtest.py میپذیرد. پیشتر محدودیتی معادل ۹ آرگومان وجود داشت.bpo-26583: در صورتی که پروندههای بایتکد قابل نوشتن نباشند، test_timestamp_overflow در test_import نادیده گرفته شود.
ساخت¶
bpo-21277: تلاش برای پیوند دادن _ctypes با یک کتابخانهی ffi_convenience انجام نشود.
bpo-26884: رفع مشکل پیوند دادن ماژولهای توسعهای برای ساختهای متقابل (cross builds). وصله توسط Xavier de Gaye.
bpo-26932: رفع مشکل پشتیبانی از ثابتهای RTLD_* که به عنوان مقادیر enum تعریف شدهاند، نه از طریق ماکروها (بهویژه در اندروید). وصله توسط Chi Hsuan Yen.
bpo-22359: غیرفعال کردن قوانین مربوط به اجرای _freeze_importlib و pgen هنگام کامپایل متقابل. خروجی این برنامهها معمولاً به هر حال با سورسکد ذخیره میشود و هنگام انجام ساخت بومی (native build) همچنان بازسازی میشود. وصله توسط Xavier de Gaye.
bpo-21668: پیوند دادن ماژولهای audioop، _datetime و _ctypes_test به libm، به جز در Mac OS X. وصله نگارششده توسط Chi Hsuan Yen.
bpo-25702: گزینهی پیکربندی --with-lto اضافه شده است که بهینهسازیهای زمان پیوند را در زمان ساخت طی یک دستور make profile-opt فعال میکند. مشخص است که برخی کامپایلرها و ابزارها هنگام استفاده از LTO کد پایداری تولید نمیکنند؛ پیش از اتکا به آن، حتماً همهچیز را به دقت آزمون کنید. این گزینه میتواند نسبت به profile-opt خالی، سرعت را چند درصد افزایش دهد.
bpo-26624: افزودن اعتبارسنجی نسخهی ucrtbase[d].dll همراه با هشدار برای نسخههای قدیمی.
bpo-17603: جلوگیری از خطای مربوط به پروندهی ناموجود fileblocks.o با استفاده از بررسی سطح پایینتر برای st_blocks در struct stat.
bpo-26079: رفع پوشهی خروجی ساخت برای tix-8.4.3.6. وصله توسط Bjoern Thiel.
bpo-26465: بهروزرسانی ساختهای ویندوز برای استفاده از OpenSSL 1.0.2g.
bpo-25348: افزودن آرگومانهای
--pgoو--pgo-jobبهPCbuild\build.batبرای ساخت با بهینهسازی هدایتشده با پروفایل (Profile-Guided Optimization). اسکریپت قدیمیPCbuild\build_pgo.batحذف شده است.bpo-25827: افزودن پشتیبانی از ساخت با ICC به
configure، از جمله یک پرچم جدید--with-icc.bpo-25696: رفع مشکل نصب پایتون روی یونیکس با دستور make -j9.
bpo-24986: اکنون ساخت پایتون روی ویندوز در صورت عدم دسترسی به کتابخانههای خارجی بدون خطا امکانپذیر است.
bpo-24421: کامپایل ماژول _math.c یک بار و پیش از ساخت افزونهها انجام شود. پیشتر اگر ساختهای math و cmath همزمان انجام میشدند، ممکن بود به درستی کامپایل نشوند.
bpo-26465: بهروزرسانی نصبکنندهی فقط ۳۲ بیتی نسخههای OS X 10.5+ برای ساخت و لینک با OpenSSL 1.0.2g.
bpo-26268: بهروزرسانی ساختهای ویندوز برای استفاده از OpenSSL 1.0.2f.
bpo-25136: پشتیبانی از کتابخانههای stub مربوط به SDK متنی جدید در Apple Xcode 7.
bpo-24324: هنگامی که از gcc استفاده میکنید، هشدارهای مربوط به کدهای غیرقابلدسترس را فعال نکنید؛ زیرا این گزینه در نسخههای قدیمیتر gcc به درستی کار نمیکند و از نسخهی gcc-4.5 به بعد بیصدا حذف شده است.
Windows¶
bpo-27053: اسکریپت make_zip.py را بهروزرسانی میکند تا پروندهی ZIP کتابخانه به درستی تولید شود.
bpo-26268: بهروزرسانی اسکریپت prepare_ssl.py برای مدیریت انتشارهای OpenSSL که شامل محتویات پوشهی include نیستند (یعنی نسخههای 1.0.2e و بعد از آن).
bpo-26071: باینریهای ایجادشده توسط bdist_wininst در شروع به کار و یافتن پایتون ۳۲ بیتی دچار خطا میشوند.
bpo-26073: بهروزرسانی فهرست اعداد جادویی در راهانداز
bpo-26065: حذف venv از کتابخانه هنگام تولید توزیع قابل تعبیه (embeddable).
bpo-25022: پوشهی بسیار قدیمی PC/example_nt/ حذف شد.
Tools/Demos¶
bpo-26799: اصلاح python-gdb.py: انواع C را یکجا هنگام بارگذاری کد پایتون دریافت نکنید، بلکه انواع C را بر حسب تقاضا دریافت کنید. انواع C ممکن است تغییر کنند اگر python-gdb.py پیش از فایل اجرایی پایتون بارگذاری شود. این وصله توسط Thomas Ilsche نوشته شده است.
bpo-26271: اصلاح ابزار Freeze برای استفادهی صحیح از پرچمهای ارسالشده از طریق configure. وصله توسط Daniel Shaulov.
bpo-26489: افزودن پشتیبانی از بازکردن بستهی دیکشنری به Tools/parser/unparse.py. وصله توسط Guo Ci Teo.
bpo-26316: اصلاح خطای املایی نام متغیر در Argument Clinic.
bpo-25440: اصلاح خروجی python-config --extension-suffix.
bpo-25154: اسکریپت pyvenv منسوخ شده است و به جای آن از
python3 -m venvاستفاده کنید.
رابط C API¶
bpo-26312: اکنون در تمام باگهای برنامهنویسی مربوط به استفاده از PyArg_ParseTupleAndKeywords() خطای SystemError بالا آورده میشود. پیشتر در برخی از باگهای برنامهنویسی خطای RuntimeError بالا آورده میشد.
bpo-26198: اکنون هنگام سرریز بافر در تجزیه واحدهای قالب «es#» و «et#» به جای TypeError، خطای ValueError بالا آورده میشود. همچنین هنگام خطای برنامهنویسی در تجزیه رشتهی قالب، به جای TypeError خطای SystemError بالا آورده میشود.
پایتون ۳.۵.۵ نهایی¶
تاریخ انتشار: ۲۰۱۸-۰۲-۰۴
هیچ تغییر جدیدی در نسخهی ۳.۵.۵ وجود ندارد.
نامزد انتشار ۱ پایتون ۳.۵.۵¶
تاریخ انتشار: ۲۰۱۸-۰۱-۲۳
امنیت¶
bpo-32551: تغییر مقداردهی اولیهی
sys.path[0]برای bpo-29139 با آشکار کردن عدم تناقض در نحوهی مقداردهی اولیه به sys.path هنگام اجرای__main__از یک پروندهی فشرده (zipfile)، پوشه یا سایر مکانهای ایمپورت، باعث ایجاد یک رگرسیون شد. این مسئله یک مشکل امنیتی بالقوه در نظر گرفته میشود، زیرا ممکن است باعث شود فرایندهای دارای سطح دسترسی ویژه (privileged)، بهطور غیرمنتظرهای کد را از پوشههای تحت کنترل کاربر در مواردی که قبلاً اینطور نبوده است بارگذاری کنند. مفسر اکنون بهطور سازگار از افزودن پوشهی والد مکان ایمپورت بهsys.pathجلوگیری میکند و اطمینان حاصل میکند که هنگام درج مکان ایمپورت مشخصشده در خط فرمان، هیچ ورودی دیگری ازsys.pathبهطور ناخواسته تغییر نکند. (این مورد در ابتدا بهعنوان bpo-29723 در برابر پایتون 3.6rc1 گزارش شد، اما در آن زمان نادیده گرفته شد که نسخهی در راهِ پایتون ۳.۵.۴ نیز تحت تأثیر قرار خواهد گرفت)bpo-30657: رفع سرریز عدد صحیح احتمالی در PyBytes_DecodeEscape، CVE 2017-1000158. وصلهی اصلی توسط Jay Bosamiya؛ بازپایه شده روی پایتون ۳ توسط Miro Hrončok.
bpo-30947: ارتقای نسخهی تعبیهشدهی libexpat از نسخهی 2.2.1 به 2.2.3 برای دریافت اصلاحات امنیتی.
هسته و توکارها (Core and Builtins)¶
bpo-31095: خرابی احتمالی در طول GC ناشی از
tp_deallocکهPyObject_GC_UnTrack()را فراخوانی نمیکند، اصلاح کنید.
کتابخانه¶
bpo-32072: رفع مشکلات مربوط به ساختارهای دادهی دودویی plist: رفع مشکل ذخیرهسازی bytearrayها. اشیاء یکسان فقط یک بار ذخیره خواهند شد. ارجاعهای برابر به عنوان اشیای یکسان بارگذاری خواهند شد. پشتیبانی از ذخیرهسازی و بارگذاری ساختارهای دادهی بازگشتی اضافه شد.
bpo-31170: expat: بهروزرسانی libexpat از نسخهی 2.2.3 به 2.2.4. رفع کپیکردن نویسههای جزئی برای ورودی UTF-8 (باگ libexpat شمارهی ۱۱۵): https://github.com/libexpat/libexpat/issues/115
پایتون ۳.۵.۴ نهایی¶
تاریخ انتشار: ۲۰۱۷-۰۸-۰۷
کتابخانه¶
bpo-30119: تابع ftplib.FTP.putline() اکنون روی دستوراتی که شامل CR یا LF باشند، ValueError پرتاب میکند. وصله از Donghee Na.
نامزد انتشار ۱ پایتون ۳.۵.۴¶
تاریخ انتشار: ۲۰۱۷-۰۷-۲۳
امنیت¶
bpo-30730: جلوگیری از تزریق متغیرهای محیطی در subprocess در ویندوز. جلوگیری از ارسال سایر متغیرهای محیطی و آرگومانهای دستور.
bpo-30694: ارتقای نسخهی expat از 2.2.0 به 2.2.1 جهت دریافت اصلاحات مربوط به آسیبپذیریهای امنیتی متعدد از جمله: CVE 2017-9233 (حلقه بیپهایت موجودیت خارجی DoS)، CVE 2016-9063 (سرریز عدد صحیح، اصلاح مجدد)، CVE 2016-0718 (رفع اشکالات رگرسیون از اصلاحیهی 2.2.0 برای CVE 2016-0718) و CVE 2012-0876 (مقابله با طغیان هش با SipHash). نکته: مورد CVE 2016-5300 (استفاده از منابع انتروپی خاص سیستمعامل مانند getrandom) روی پایتون تأثیری ندارد، زیرا پایتون از قبل انتروپی را از سیستمعامل دریافت میکند تا راز expat را با استفاده از
XML_SetHashSalt()تنظیم کند.bpo-30500: رفع مشکل urllib.parse.splithost() برای تجزیه صحیح بخشها. برای نمونه،
splithost('//127.0.0.1#@evil.com/')اکنون بهجای در نظر گرفتن@evil.comبه عنوان میزبان در یک احراز هویت (login@host)، میزبان127.0.0.1را به درستی برمیگرداند.bpo-29591: بهروزرسانی نسخهی expat از 2.1.1 به 2.2.0 برای دریافت اصلاحات CVE 2016-0718 و CVE 2016-4472. برای اطلاعات بیشتر به https://sourceforge.net/p/expat/bugs/537/ مراجعه کنید.
هسته و توکارها (Core and Builtins)¶
bpo-30876: ایمپورت نسبی از بستهی بارگذارینشده اکنون به جای شکست با SystemError، بسته را مجدداً ایمپورت میکند. ایمپورت نسبی از غیربسته اکنون به جای SystemError با ImportError شکست میخورد.
bpo-30765: هنگام درخواست عدم مسدودسازی از PyThread_acquire_lock()، از مسدود شدن در pthread_mutex_lock() جلوگیری کنید.
bpo-27945: رفع اشکالات مختلف segfault در دیکشنری هنگامی که مجموعههای ورودی در حین جستجو، درج یا مقایسه تغییر (mutation) پیدا میکنند. بر اساس وصلههایی از Duane Griffin و Tim Mitchell.
bpo-25794: رفع اشکال type.__setattr__() و type.__delattr__() برای نامهای ویژگی غیردرونیسازیشده. بر اساس وصلهای از Eryk Sun.
bpo-29935: اصلاح پیامهای خطا در متد index() مربوط به tuple، list و deque هنگام ارسال اندیسهایی با نوع نامعتبر.
bpo-28876: عبارت
bool(range)حتی اگرlen(range)خطایOverflowErrorرا ایجاد کند، کار میکند.bpo-29600: رفع مشکل بازگرداندن مقادیر همروال (coroutine) در StopIteration.
bpo-29537: بازیابی سازگاری زمان اجرا (runtime) با پروندههای بایتکد تولیدشده توسط سیپایتون ۳.۵.۰ تا ۳.۵.۲، و تنظیم حلقهی ارزیابی (eval) برای جلوگیری از مشکلاتی که ممکن است توسط نوع نادرست آپکد BUILD_MAP_UNPACK_WITH_CALL که ممکن است حاوی آنها باشد ایجاد شود. وصله توسط Petr Viktorin، Serhiy Storchaka و Nick Coghlan.
bpo-28598: پشتیبانی از __rmod__ برای زیرکلاسهای str که قبل از str.__mod__ فراخوانی میشوند. وصله توسط مارتین پیترز (Martijn Pieters).
bpo-29602: اصلاح مدیریت نادرست صفرهای علامتدار در سازندهی complex برای زیرکلاسهای complex و ورودیهایی که دارای متد __complex__ هستند. وصله از Serhiy Storchaka.
bpo-29347: رفع امکان واگرهارجاعی (dereferencing) به اشارهگرهای تعریفنشده هنگام ایجاد شیءهای weakref.
bpo-29438: رفع مشکل استفاده پس از آزادسازی (use-after-free) در دیکشنری اشتراکگذاری کلید.
bpo-29319: جلوگیری از بازنویسی sys.path[0] توسط RunMainFromImporter.
bpo-29337: رفع خطای احتمالی BytesWarning هنگام مقایسهی شیءهای کد. هشدارها ممکن است در زمان کامپایل صادر شوند.
bpo-29478: اگر هنگام استفاده از خطمشی Compat32 مقدار max_line_length=None مشخص شود، دیگر نادیده گرفته نمیشود. وصله از Mircea Cosbuc.
کتابخانه¶
bpo-29403: اصلاح autospec ماژول
unittest.mockبه طوری که روی توابع توکار متصلبهمتد شکست نخورد. پچ توسط Aaron Gallagher.bpo-30961: اصلاح کاهش دادن یک ارجاع امانتی در tracemalloc.
bpo-30886: اصلاح multiprocessing.Queue.join_thread(): این متد اکنون تا زمانی که نخ کامل شود صبر میکند، حتی اگر نخ توسط همان فرایندی آغاز شده باشد که صف را ایجاد کرده است.
bpo-29854: اصلاح خطای segmentation fault در readline هنگام استفاده از گزینهی history-size در readline. پچ توسط Nir Soffer.
bpo-30807: تابع signal.setitimer() ممکن است هنگام دریافت مقادیر بسیار کوچک، تایمر را غیرفعال کند. مقادیر کوچک (مانند 1e-6) مقادیر معتبر غیرصفر برای setitimer() هستند، که تعیین شده است بازههایی با دقت میکروثانیه را بپذیرد. با این حال، روی برخی از پلتفرمها، روال تبدیل ما میتواند 1e-6 را به بازهای صفر تبدیل کند و در نتیجه به جای زمانبندی مجدد (re-scheduling)، تایمر را غیرفعال کند.
bpo-30441: رفع باگ هنگام تغییر دادن os.environ در حین پیمایش روی آن
bpo-30532: رفع حذف شدن فاصلههای سفید تاشو (folding white space) در برخی موارد توسط پارسر مقادیر سرآیند ایمیل.
bpo-29169: بهروزرسانی zlib به نسخهی 1.2.11.
bpo-30879: توابع os.listdir() و os.scandir() اکنون هنگام فراخوانی با آرگومان شبیه به بایت (bytes-like)، نامهای بایت منتشر میکنند.
bpo-30746: ممنوعیت نویسهی '=' در نامهای متغیر محیطی در
os.putenv()وos.spawn*().bpo-29755: اصلاح خانوادهی توابع lgettext() در ماژول gettext. آنها اکنون همیشه بایتها را برمیگردانند.
bpo-30645: رفع محاسبهی مسیره در imp.load_package()، و اصلاح آن برای مواردی که یک بسته (package) فقط با بایتکدها (bytecodes) ارسال میشود. وصله (patch) توسط Alexandru Ardelean.
bpo-23890: متد unittest.TestCase.assertRaises() اکنون بهطور دستی یک چرخه ارجاع را میشکند تا اشیاء را بیش از حد انتظار زنده نگه ندارد.
bpo-30149: تابع inspect.signature() اکنون از موارد فراخوانیپذیر با پارامترهای با تعداد آرگومان متغیر که با partialmethod پوشانده شدهاند پشتیبانی میکند. توسط Donghee Na.
bpo-29931: رفع بررسی مقایسه برای اشیاء ipaddress.ip_interface. وصله توسط Sanjay Sundaresan.
bpo-24484: جلوگیری از شرایط رقابت (race condition) در پاکسازی multiprocessing.
bpo-28994: ردگیری (traceback) دیگر برای SystemExit که در یک کالبک ثبتشده توسط atexit بالا آورده شده است، نمایش داده نمیشود.
bpo-30508: اگر متد "cancel()" برای Task یا Future فراخوانی شده باشد، استثناها را ثبت (log) نکنید.
bpo-28556: بهروزرسانیهای ماژول typing: افزودن AsyncContextManager عام، افزودن پشتیبانی از ContextManager در تمام نسخهها. درخواستهای پول (PR) اصلی توسط Jelle Zijlstra و Ivan Levkivskyi
bpo-29870: رفع نشت سوکتهای ssl هنگامی که اتصال در پیادهسازی asyncio/ssl متوقف میشود. اصلاحیه از Michaël Sghaïer.
bpo-29743: بستن انتقال (transport) در طی فرایند دستدهی (handshake) باعث نشت سوکت باز میشود. اصلاحیه از Nikolay Kim
bpo-27585: رفع لغو لغتپرداز (waiter) در asyncio.Lock. اصلاحیه از Mathieu Sornay.
bpo-30418: در ویندوز، تابع subprocess.Popen.communicate() اکنون اگر فرایند فرزند همچنان در حال اجرا باشد اما پایپ را بسته باشد، خطای EINVAL را روی stdin.write() نادیده میگیرد.
bpo-30378: برطرف کردن مشکلی که در آن logging.handlers.SysLogHandler نمیتواند آدرسهای IPv6 را پردازش کند.
bpo-29960: حفظ وضعیت تولیدگر هنگامی که تابع _random.Random.setstate() یک استثنا پرتاب میکند. وصله توسط Bryan Olson.
bpo-30414: نخ در حال اجرای پسزمینهی multiprocessing.Queue._feed هنگام بروز استثنا از حلقهی اصلی خارج نمیشود.
bpo-30003: برطرف کردن نحوهی دستهبندی نویسههای گریز در کُدک HZ. براساس وصلهی Ma Lin.
bpo-30301: برطرف کردن خطای AttributeError هنگام استفاده از SimpleQueue.empty() در متدهای راهاندازی spawn و forkserver.
bpo-30329: ماژولهای imaplib و poplib اکنون خطای socket مربوط به ویندوز یعنی WSAEINVAL (کد 10022) را روی shutdown(SHUT_RDWR) صید میکنند: عملیات نامعتبری تلاش شد. این خطا گاهی اوقات روی اتصالهای SSL رخ میدهد.
bpo-30375: هشدارهایی که هنگام کامپایل یک عبارت باقاعده صادر میشوند، اکنون همیشه به سطری در کد کاربر اشاره میکنند. پیش از این، اگر از درون گروهها یا شرطها صادر میشدند، ممکن بود به بخشهای درونی ماژول re اشاره کنند.
bpo-30048: برطرف شد: هنگامی که وظیفه در حال اجرای همروال است و همروال بدون هیچ
awaitدیگری بازمیگردد، میتوان ازTask.cancel()چشمپوشی کرد.bpo-29990: برطرف کردن بررسی محدوده در رمزگشای GB18030. وصلهی اصلی از Ma Lin.
bpo-26293: تغییر به دلیل خرابی zipfile ایجاد شد. (همچنین ببینید: bpo-29094)
bpo-30243: متدهای __init__ مربوط به اسکنر و کدگذار ماژول _json حذف شدند. سوءاستفاده از آنها میتوانست باعث نشت حافظه یا فروپاشی شود. اکنون اشیاء اسکنر و کدگذار بهطور کامل در متدهای __new__ مقداردهی اولیه میشوند.
bpo-30185: جلوگیری از رخداد ردگیریهای KeyboardInterrupt در فرایند کمکی forkserver هنگام دریافت کلید Ctrl-C.
bpo-28556: بهروزرسانیهای مختلف در ماژول typing: افزودن نوع typing.NoReturn، استفاده از WrapperDescriptorType و رفع باگهای جزئی. درخواستهای پول اصل (PR) توسط Jim Fasarakis-Hilliard و Ivan Levkivskyi.
bpo-30205: رفع تابع getsockname() برای سوکتهای بدون اتصَال AF_UNIX در لینوکس.
bpo-30070: رفع نشت حافظه و فروپاشیها در مدیریت خطاها در ماژول parser.
bpo-30061: رفع فروپاشیها در متدهای IOBase یعنی __next__() و readlines() به ترتیب زمانی که readline() یا __next__() شیء با اندازهی نامشخص برمیگردانند. رفع خطاهای احتمالی دیگر ناشی از عدم بررسی نتایج PyObject_Size()، PySequence_Size() یا PyMapping_Size().
bpo-30068: تابع _io._IOBase.readlines هنگامی که hint وجود دارد، ابتدا بررسی میکند که آیا بسته است یا خیر.
bpo-29694: رفع شرایط مسابقه (race condition) در ایجاد پوشه با pathlib برای پرچم parents=True. وصله توسط Armin Rigo.
bpo-29692: رفع قطع زنجیرهی دلخواه استثناهای RuntimeError در contextlib.contextmanager. وصله توسط Siddharth Velankar.
bpo-29998: عملیات Pickling و کپی کردن ImportError اکنون ویژگیها (attributes)ی نام و مسیر را حفظ میکند.
bpo-29942: رفع یک فروپاشی در itertools.chain.from_iterable هنگام مواجهه با تعداد زیادی از پیمایشپذیرهای خالی.
bpo-27863: رفع چندین فروپاشی در ElementTree که ناشی از شرایط مسابقه (race conditions) و انواع نادرست بودند.
bpo-28699: رفع یک باگ در استخرهای multiprocessing.pool که در آن ایجاد یک استثنا در همان ابتدای یک پیمایشپذیر ممکن بود استثنا را ببلعد یا باعث معلق ماندن برنامه شود. وصله توسط Davin Potts و Xiang Zhang.
bpo-25803: جلوگیری از خطاهای نادرستی که توسط Path.mkdir(exist_ok=True) ایجاد میشوند، هنگامی که سیستمعامل به خطاهایی مانند EACCES نسبت به EEXIST اولویت میدهد.
bpo-29861: آزادسازی ارجاعات به وظایف، آرگومانهای آنها و نتایج آنها به محض اتمام در multiprocessing.Pool.
bpo-29884: ماژول faulthandler: بازیابی sigaltstack قدیمی در طول فرایند آزادسازی. این وصله توسط Christophe Zeitouny تهیه شده است.
bpo-25455: برطرفسازی فروپاشیها در متد repr از اشیاء شبهپروندهی بافرشدهی بازگشتی.
bpo-29800: برطرفسازی فروپاشیها در partial.__repr__ اگر کلیدهای partial.keywords رشته نباشند. این وصله توسط Michael Seifert تهیه شده است.
bpo-29742: متد get_extra_info() در صورت فراخوانی روی یک انتقال (transport) بستهشدهی ssl استثنا پرتاب میکند. توسط Nikolay Kim.
bpo-8256: برطرفسازی احتمال شکست یا فروپاشی در تابع input() در صورتی که ویژگیهای «encoding» یا «errors» در sys.stdin یا sys.stdout تنظیم نشده باشند یا رشته نباشند.
bpo-28298: رفع باگی که مانع از پذیرش اعداد صحیح بزرگ (اشیاء دارای
__int__) به عنوان عناصر توسط آرایههای 'Q'، 'L' و 'I' میشد. وصله توسط Oren Milman.bpo-29615: کلاس SimpleXMLRPCDispatcher دیگر خطای KeyError (یا هر استثنای دیگری) را به استثنا(های) ایجادشده در متدهای دیسپچشده زنجیر نمیکند. این وصله توسط Petr Motejlek تهیه شده است.
bpo-29704: کلاس asyncio.subprocess.SubprocessStreamProtocol دیگر پیش از بستهشدن تمامی پایپها بسته نمیشود.
bpo-29703: برطرفسازی ماژول asyncio برای پشتیبانی از نمونهسازی حلقههای رویداد جدید در فرایندهای فرزند.
bpo-29376: رفع خطای ادعا (assertion error) در threading._DummyThread.is_alive().
bpo-29110: رفع نشت شیء پرونده در aifc.open() هنگامی که پرونده به صورت یک مسیر سیستمعامل ارائه میشود و در قالب معتبر AIFF نیست. توسط Anthony Zhang.
bpo-28961: رفع کمکی unittest.mock._Call: دیگر پارامتر name را نادیده نگیرید. وصله نوشتهشده توسط Jiajun Huang.
bpo-29532: تغییر دادن دیکشنری آرگومانهای کلیدواژهای (kwarg) که به functools.partial() پاس داده شده است، دیگر روی یک شیء partial پس از ایجاد تأثیری نمیگذارد.
bpo-28556: بهروزرسانیهای مختلف در ماژول typing: شامل typing.Counter، typing.ChainMap، بهبود کشسازی کلاسهای پایه انتزاعی (ABC) و غیره. درخواستهای پول (PR) اصلی توسط Jelle Zijlstra، Ivan Levkivskyi، Manuel Krebber و Łukasz Langa.
bpo-29100: رفع رگرسیون datetime.fromtimestamp() که در پایتون 3.6.0introduced معرفی شده بود: بررسی سالهای حداقل و حداکثر.
bpo-29519: رفع انتشار استثناهای weakref در هنگام خاموش شدن مفسر وقتی که با ترکیب بازی از پردازش چندگانه (multiprocessing) و کُدکهای سفارشی استفاده میشود.
bpo-29416: جلوگیری از حلقهی بینهایت در pathlib.Path.mkdir
bpo-29444: رفع دسترسی به بافر خارج از کران (out-of-bounds) در متد group() از شیء تطابق (match). بر اساس وصله (patch) ارائه شده توسط WGH.
bpo-29335: رفع مشکل subprocess.Popen.wait() هنگامی که فرایند فرزند بهجای حالت پایانیافته، به یک حالت متوقفشده خارج شده است (مثلاً هنگام استفاده از ptrace).
bpo-29290: رفع یک رگرسیون در argparse که پیامهای راهنما در فضاهای خالی غیرشکننده شکسته میشدند.
bpo-28735: رفع مقایسهی mock.MagickMock با mock.ANY.
bpo-29011: رفع یک جاافتادگی مهم با افزودن Deque به ماژول typing.
bpo-29219: رفع بازگشتی بینهایت در repr نمونههای مقداردهینشدهی ctypes.CDLL.
bpo-28969: رفع شرایط رقابت در پیادهسازی C مربوط به functools.lru_cache. خطای KeyError ممکن بود هنگام فراخوانی همزمان تابع نهانگاهگذاریشده با نهانگاه پر از نخهای مختلف و آرگومانهای یکسانِ نهانگاهگذارینشده رخ دهد.
bpo-29142: در urllib.request، پسوندها در متغیر محیطی no_proxy با نقطههای پیشتاز میتوانند دوباره با نام میزبانهای مرتبط مطابقت پیدا کنند (مثلاً b.c. با a.b.c مطابقت دارد). وصله توسط Milan Oberkirch.
مستندات¶
bpo-30176: افزودن ثابتهای مرتبط با ویژگیهای مفقود در مستندات curses.
bpo-26985: افزودن اطلاعات مفقود شیء کد در مستندات inspect.
bpo-28929: پیوند دادن مستندات به پروندهی منبع آن در GitHub.
bpo-25008: مستندسازی smtpd.py به عنوان عملاً منسوخ و افزودن یک اشارهگر به aiosmtpd، یک جایگزین شخص ثالث مبتنی بر asyncio.
bpo-26355: افزودن پیوند سرآیند کانونیکال در هر صفحه به نسخهی اصلی متناظر از مستندات. وصله توسط Matthias Bussonnier.
bpo-29349: اصلاح نحو پایتون ۲ در کد مربوط به ساخت مستندات.
آزمونها¶
bpo-30822: اصلاح تجزیهکنندهی خط فرمان regrtest برای اجازه دادن به ارسال -u extralargefile جهت اجرای آزمون test_zipfile64.
bpo-30383: regrtest: بهبود regrtest و ویژگیهای بکپورتشده از شاخهی اصلی (master). افزودن گزینهها: --coverage، --testdir، --list-tests (فهرست کردن پروندههای آزمون، عدم اجرای آنها)، --list-cases (فهرست کردن شناسههای آزمون، عدم اجرای آنها، bpo-30523)، --matchfile (بارگذاری فهرستی از فیلترهای آزمون از یک پروندهی متنی، bpo-30540)، --slowest (نام مستعار برای --slow). بهبود خروجی: افزودن زمانسنج (timestamp)، نتیجهی آزمون، آزمونهای در حال اجرا، خلاصهی "Tests result: xxx" با مدتزمان کل و غیره. رفع جستجوی نشت ارجاع در regrtest، --huntrleaks: regrtest اکنون نهانگاهها (caches) را گرم میکند، تمام تکنمونههای (singletons) داخلی را که بر اساس تقاضا ایجاد میشوند بهطور صریح ایجاد میکند تا هنگام بررسی نشت ارجاع از مثبت کاذب جلوگیری شود. (bpo-30675).
bpo-30357: بخش test_thread: تابع setUp() اکنون از support.threading_setup() و support.threading_cleanup() استفاده میکند تا برای جلوگیری از اثرات جانبی تصادفی روی آزمونهای بعدی، تا زمان تکمیل نخها صبر کند. وصلهی اولیه توسط Grzegorz Grzywacz نوشته شده است.
bpo-28087: نادیدهگرفتن خطاهای پایش test_asyncore و test_eintr در macOS. نادیدهگرفتن برخی از آزمونهای select.poll هنگام اجرا روی macOS به دلیل مسائل حلنشده با تابع پایش سیستم زیرین در برخی از نسخههای macOS.
bpo-30197: توابع بهبودیافتهی swap_attr() و swap_item() در ماژول test.support. آنها اکنون زمانی که صفت یا آیتم جایگزینشده را در داخل دستور with حذف میکنید، کار میکنند. مقدار قبلی صفت یا آیتم (یا None اگر وجود نداشته باشد) اکنون به هدف بند "as" (در صورت وجود) اختصاص داده خواهد شد.
bpo-29571: برای تطابق با رفتار پرچم
re.LOCALE، آزمون test_re.test_locale_flag اکنون ازlocale.getpreferredencoding(False)برای تعیین کدگذاری نامزد برای عبارت منظم آزمون استفاده میکند (که به آن اجازه میدهد بهدرستی آزمون را نادیده بگیرد زمانی که کدگذاری محلی پیشفرض یک کدگذاری چندبایتی است)
ساخت¶
bpo-29243: جلوگیری از ساخت مجدد غیرضروری پایتون در هنگام اجرای دستورات
make test،make installو برخی هدفهای دیگر make زمانی که با--enable-optimizationsپیکربندی شده است.bpo-23404: دیگر پروندههای تولیدشده بر اساس زمان تغییر پرونده بازتولید نمیشوند: این کنش اکنون به صورت صریح انجام میشود. جایگزینی
make touchباmake regen-all.bpo-29643: رفع مشکلی که در آن
--enable-optimizationکار نمیکرد.
Windows¶
رابط C API¶
bpo-27867: تابع PySlice_GetIndicesEx() اگر مقدار Py_LIMITED_API روی مقداری بین 0x03050400 و 0x03060000 (بدون احتساب آنها) یا 0x03060100 یا بالاتر تنظیم شود، با یک ماکرو جایگزین میشود.
bpo-29083: اعلان برخی توابع عمومی API اصلاح شد. توابع PyArg_VaParse() و PyArg_VaParseTupleAndKeywords() در API محدود در دسترس نبودند. توابع PyArg_ValidateKeywordArguments()، PyArg_UnpackTuple() و Py_BuildValue() در API محدود نسخهی < 3.3 زمانی که PY_SSIZE_T_CLEAN تعریف شده باشد، در دسترس نبودند.
پایتون ۳.۵.۳ نهایی¶
تاریخ انتشار: ۲۰۱۷-۰۱-۱۷
هیچ تغییری در کد بین نسخههای 3.5.3rc1 و 3.5.3 نهایی وجود ندارد.
نامزد انتشار ۱ پایتون ۳.۵.۳¶
تاریخ انتشار: ۲۰۱۷-۰۱-۰۲
امنیت¶
bpo-27278: رفع پیادهسازی os.urandom() با استفاده از getrandom() در لینوکس. کوچک کردن اندازهی (truncate) آن به INT_MAX و تکرار در حلقه (loop) تا زمانی که بایتهای تصادفی کافی جمعآوری شوند، به جای تبدیل مستقیم یک Py_ssize_t به int.
bpo-22636: جلوگیری از مشکلات تزریق پوسته (shell injection) با ctypes.util.find_library().
هسته و توکارها (Core and Builtins)¶
bpo-29073: قالببندی bytearray دیگر روی نخستین بایت تهی (null) بریده نمیشود.
bpo-28932: اگر پروندهی <sys/random.h> وجود ندارد، آن را درج نکنید.
bpo-28147: رفع یک نشت حافظه در دیکشنریهای جدول-شکسته (split-table): تابع setattr() نباید جدول ترکیبی را به جدول شکسته تبدیل کند.
bpo-25677: اصلاح مکاننمایی نشانک خطای نحو برای بلوکهای دارای تورفتگی. بر اساس وصله از Michael Layzell.
bpo-29000: رفع قالببندی بایت اعداد مبنای هشت با پُرکنندهی صفر در شکل جایگزین.
bpo-28512: تنظیم ویژگی آفست SyntaxError توسط PyErr_SyntaxLocationEx() و PyErr_SyntaxLocationObject() اصلاح شد.
bpo-28991: تابع functools.lru_cache() مستعد یک باگ بازورودپذیری مبهم بود که توسط یک تابع len() مانکیپچشده ایجاد شده بود.
bpo-28648: رفع فروپاشی در Py_DecodeLocale() در ساخت دیباگ روی مکاواسایکس هنگام رمزگشایی نویسههای ستارهای (astral). وصله توسط Xiang Zhang.
bpo-19398: در صورت خالی بودن اجزای PYTHONPATH در زمان کامپایل، اسلش اضافی دیگر به اجزای sys.path اضافه نمیشود.
bpo-28426: فروپاشی احتمالی در تابع PyUnicode_AsDecodedObject() در نسخهی ساخت اشکالزدایی (debug build) برطرف شد.
bpo-23782: نشتی حافظهی احتمالی در _PyTraceback_Add() و از دست رفتن استثنا در PyTraceBack_Here() برطرف شد.
bpo-28379: بررسیهای سلامت (sanity checks) و آزمونها برای PyUnicode_CopyCharacters() اضافه شدند. این وصله توسط Xiang Zhang تهیه شده است.
bpo-28376: نوع (type) پیمایشگر بازهی طولانی (long range iterator) اکنون به عنوان Iterator ثبت میشود. این وصله توسط Oren Milman تهیه شده است.
bpo-28376: سازندهی range_iterator اکنون بررسی میکند که مقدار step برابر با ۰ نباشد. بستهی الحاقی از Oren Milman.
bpo-26906: حل کردن متدهای ویژهی یک نوع مقداردهینشده (uninitialized)، اکنون به جای شکست، باعث مقداردهی اولیهی ضمنی آن نوع میشود.
bpo-18287: تابع PyType_Ready() اکنون بررسی میکند که tp_name مقدار NULL نباشد. وصلهی اصلی توسط Niklas Koep تهیه شده است.
bpo-24098: فروپاشی احتمالی هنگام تغییر درخت نحوی انتزاعی (AST) در فرایند کامپایل آن برطرف شد.
bpo-28350: ثابتهای رشتهای دارای نویسهی پوچ (null character) دیگر درونیسازی نمیشوند.
bpo-26617: رفع فروپاشی هنگام اجرای جمعآور زباله (GC) در طول فراخوانیهای بازگشتی (callbacks) مرجع ضعیف.
bpo-27942: ثابتهای رشتهای اکنون بهصورت بازگشتی در تاپلها و مجموعههای فریزشده (frozensets) درونیسازیشده (interned) میشوند.
bpo-21578: برطرفسازی پیام خطای گمراهکننده هنگام فراخوانی ImportError با آرگومانهای کلیدواژهای نامعتبر.
bpo-28203: رفع نوع دادهی نادرست در پیام خطا از
complex(1.0, {2:3}). وصله توسط Soumya Sharma.bpo-27955: در صورت بروز خطای EPERM در سیستمعامل هنگام فراخوانی سیستمی getrandom() (برای مثال وقتی توسط SECCOMP مسدود شده است)، خواندن از دستگاه /dev/urandom بهعنوان جایگزین استفاده شود.
bpo-28131: برطرفسازی یک رگرسیون در compile_source() در ماژول zipimport. ماژول zipimport باید از همان سطح بهینهسازی مفسر استفاده کند.
bpo-25221: اصلاح نتیجهی مخدوش از PyLong_FromLong(0) زمانی که پایتون با NSMALLPOSINTS = 0 کامپایلشده است.
bpo-25758: جلوگیری از کدگذاری غیرضروری نام پرونده توسط zipimport (وصله توسط Eryk Sun)
bpo-28189: تابع dictitems_contains دیگر خطاهای مقایسه را نادیده نمیگیرد. (وصله توسط Xiang Zhang)
bpo-27812: پاکسازی صحیح بازارجاع قاب (frame) تولیدگر به خودِ تولیدگر برای جلوگیری از فروپاشیها در frame.clear().
bpo-27811: رفع یک فروپاشی هنگامی که یک همروال که منتظر آن مانده نشده است (awaited) با فعال بودن هشدارها به عنوان خطا نهایی (finalized) میشود.
bpo-27587: رفع مشکل دیگری که توسط PVS-Studio پیدا شد: بررسی اشارهگر تهی (Null pointer) پس از استفاده از 'def' در تابع _PyState_AddModule(). وصله توسط Christian Heimes.
bpo-26020: ترتیب ارزیابی مجموعه (set) لفظی با رفتار مستندشده مطابقت نداشت.
bpo-27782: ایمپورت ماژول توسعهای چندمرحلهای اکنون به درستی اجازه میدهد از فیلد
m_methodsبرای افزودن توابع سطح ماژول به نمونههای انواع غیرماژولی برگرداندهشده ازPy_create_modاستفاده شود. وصله توسط Xiang Zhang.bpo-27936: تابع round() آرگومان دوم None را برای برخی انواع میپذیرفت اما برای برخی دیگر نمیپذیرفت. این ناسازگاری با پذیرش None برای تمام انواع عددی برطرف شد.
bpo-27487: اگر آرگومان زیرماژول برای «python -m» یا runpy.run_module() پس از ایمپورت شدن بستههای والد، اما پیش از اجرا شدن زیرماژول، در sys.modules پیدا شود، هشدار صادر کن.
bpo-27558: رفع یک SystemError در پیادهسازی دستور «raise». در یک نخ کاملاً تازه، از آنجا که هیچ استثنای فعالی برای بازایجاد (reraise) وجود ندارد، یک RuntimeError ایجاد کنید. وصله نوشتهشده توسط Xiang Zhang.
bpo-27419: تابع استاندارد __import__() دیگر به دنبال کلیدواژهی "__import__" در متغیرهای سراسری یا内置 (builtins) برای ایمپورت کردن زیرماژولها یا "from import" نمیگردد. مدیریت خطای نام بستهی غیررشتهای رفع شد.
bpo-27083: رعایت متغیر محیطی PYTHONCASEOK در ویندوز.
bpo-27514: تبدیل داشتن تعداد زیادی بلوک تو در تو با استاتیک به SyntaxError به جای SystemError.
bpo-27473: رفع سرریز عدد صحیح (integer overflow) احتمالی در الحاقهای bytes و bytearray. وصله (patch) از Xiang Zhang.
bpo-27507: بررسی سرریز عدد صحیح را در bytearray.extend() اضافه کنید. وصله توسط Xiang Zhang.
bpo-27581: عدم اتکا به بازپیچی (wrapping) برای بررسی سرریز در PySequence_Tuple(). وصله از Xiang Zhang.
bpo-27443: متد __length_hint__() از پیمایشگرهای bytearray دیگر برای یک bytearray تغییراندازهدادهشده یک عدد صحیح منفی برنمیگرداند.
bpo-27942: رفع نشت حافظه در codeobject.c
کتابخانه¶
bpo-15812: تابع inspect.getframeinfo() اکنون سطر اول یک زمینه را به درستی نمایش میدهد. وصله توسط Sam Breese.
bpo-29094: آفستها در یک پرونده ZIP ایجاد شده با شیء پرونده خارجی و حالتهای «w» و «x» اکنون نسبت به شروع پرونده هستند.
bpo-13051: رفع خطاهای بازگشتی در curses.textpad.Textbox بزرگ یا تغییر اندازه یافته. بر اساس وصلهای از Tycho Andersen.
bpo-29119: رفع weakrefها در نسخهی پایتون خالص متد move_to_end() در collections.OrderedDict. مشارکت توسط Andra Bogildea.
bpo-9770: محمولهای curses.ascii اکنون با اعداد صحیح منفی به درستی کار میکنند.
bpo-28427: کلیدهای قدیمی نباید مقادیر جدید را هنگام جمعآوری از نخی دیگر از WeakValueDictionary حذف کنند.
bpo-28923: حذف آثار ویرایشگر از Tix.py.
bpo-28871: رفع یک فروپاشی هنگام زدایش (deallocate) عمیق ElementTree.
bpo-19542: رفع باگهای WeakValueDictionary.setdefault() و WeakValueDictionary.pop() هنگامی که یک جمعآوری زباله در نخی دیگر اتفاق میافتد.
bpo-20191: رفع یک فروپاشی در resource.prlimit() هنگامی که دنبالهای که عناصر خود را به عنوان محدودیت مالک نیست، ارسال میشود.
bpo-28779: تابع multiprocessing.set_forkserver_preload() فرایند forkserver را دچار فروپاشی میکرد اگر یک ماژول ازپیشبارگذاریشده برخی از اشیای چندپردازشی مانند قفلها را نمونهسازی میکرد.
bpo-28847: ماژول dbm.dumb اکنون از خواندن پروندههای فقطخواندنی پشتیبانی میکند و وقتی پرونده تغییر نکرده باشد، پروندهی اندیس را بازنویسی نمیکند.
bpo-25659: در ctypes، از بروز فروپاشی هنگام فراخوانی متدهای from_buffer() و from_buffer_copy() روی کلاسهای انتزاعی مانند Array جلوگیری کنید.
bpo-28732: رفع فروپاشی در os.spawnv() هنگامی که هیچ عنصری در args وجود ندارد
bpo-28485: همیشه برای پارامتر منفی compileall.compile_dir(workers=...) خطای ValueError ایجاد کنید، حتی زمانی که قابلیت چندنخی (multithreading) در دسترس نیست.
bpo-28387: رفع فروپاشی احتمالی در تابع تخریبکنندهی _io.TextIOWrapper هنگامی که جمعآوریکنندهی زباله در نخ دیگری فراخوانی میشود. براساس وصلهی Sebastian Cufre.
bpo-27517: فشردهساز و واگشای LZMA اگر دو بار دادهی خالی دریافت کنند دیگر استثنایی بالا نمیآورند. وصله توسط Benjamin Fogle.
bpo-28549: رفع خطای قطعی حافظه (segfault) در تابع addch() کتابخانهی curses به همراه ncurses6.
bpo-28449: تابع tarfile.open() با حالت "r" یا "r:" اکنون پیش از تلاش برای باز کردن پروندهی tar بدون فشردهسازی، تلاش میکند آن را با فشردهسازی باز کند. در غیر این صورت، احتمال ۵۰ درصد با خطای ignore_zeros=True مواجه میشد.
bpo-23262: ماژول webbrowser اکنون از فایرفاکس ۳۶ به بالا و مرورگرهای مشتقشده از آن پشتیبانی میکند. براساس وصلهی Oleg Broytman.
bpo-27939: رفع باگهای موجود در tkinter.ttk.LabeledScale و tkinter.Scale که به دلیل نمایش مقیاس به عنوان عدد اعشاری درونی در Tk ایجاد شده بودند. تابع tkinter.IntVar اکنون اگر مقدار عدد اعشاری به متغیر زیربنایی Tk اختصاص یابد، به درستی کار میکند.
bpo-28255: متد calendar.TextCalendar().prmonth() دیگر پس از چاپ تقویم یک ماه، یک فاصله در ابتدای سطر جدید چاپ نمیکند. وصله توسط Xiang Zhang.
bpo-20491: کلاس textwrap.TextWrapper اکنون به فاصلههای غیرشکستنی احترام میگذارد. براساس وصلهای از Kaarle Ritvanen.
bpo-28353: تابع os.fwalk() دیگر روی پیوندهای خراب دچار خطا نمیشود.
bpo-25464: رفع تابع HList.header_exists() در ماژول tkinter.tix با افزودن یک راهحل موقتی برای باگ کتابخانهی Tix.
bpo-28488: تابع shutil.make_archive() دیگر درگاه ورودی "./" را به آرشیو ZIP اضافه نمیکند.
bpo-24452: افزودن پشتیبانی از کروم در Mac OS X به ماژول webbrowser.
bpo-20766: رفع ارجاعات نشتیافته توسط pdb در مدیریت هندلرهای SIGINT.
bpo-26293: اصلاح نوشتن پروندههای ZIP که از ابتدای پرونده شروع نمیشوند. آفستها در پروندهی ZIP اکنون مطابق با مشخصات، نسبت به ابتدای آرشیو سنجیده میشوند.
bpo-28321: رفع مشکل نوشتن نویسههای غیر BMP با قالب دودویی در plistlib.
bpo-28322: رفع خرابیهای احتمالی هنگام پیکلگشایی (unpickle) اشیای itertools از دادههای پیکل نادرست. بر اساس وصلهای از John Leitch.
رفع سرریزهای عددی احتمالی و فروپاشیها در ماژول mmap با الگوهای استفادهی غیرعادی.
bpo-1703178: رفع قابلیت ارسال گزینهی --link-objects به دستور build_ext در distutils.
bpo-28253: اصلاح توابع گاهشماری برای ماههای حدی: 0001-01 و 9999-12. متدهای itermonthdays() و itermonthdays2() بازنویسی شدهاند تا itermonthdates() را فراخوانی نکنند؛ زیرا این امر میتواند باعث سرریز/کمریز در datetime.date شود.
bpo-28275: اصلاح احتمال استفاده پس از آزادسازی حافظه در متدهای decompress() مربوط به کلاسهای LZMADecompressor و BZ2Decompressor. وصلهی اولیه از John Leitch.
bpo-27897: اصلاح احتمال فروپاشی در sqlite3.Connection.create_collation() در صورتی که شیء رشتهمانند نامعتبری به عنوان نام ارسال شود. وصله از Xiang Zhang.
bpo-18893: اصلاح مدیریت نامعتبر استثنا در Lib/ctypes/macholib/dyld.py. وصله از Madison May.
bpo-27611: رفع پشتیبانی از پنجرهی ریشهی پیشفرض در ماژول tkinter.tix.
bpo-27348: در ماژول traceback، قالببندی پیامهای استثنا مانند "Exception: None" بازیابی شد. این کار یک رگرسیون معرفیشده در 3.5a2 را اصلاح میکند.
bpo-25651: امکان استفاده از مقادیر نادرست برای پارامتر msg در subTest() فراهم شد.
bpo-27932: جلوگیری از نشت حافظه در win32_ver().
اصلاح خطای UnboundLocalError در socket._sendfile_use_sendfile.
bpo-28075: بررسی وجود ERROR_ACCESS_DENIED در پیادهسازی ویندوزی os.stat(). وصله از Eryk Sun.
bpo-25270: جلوگیری از ایجاد SystemError توسط codecs.escape_encode() هنگامی که یک بایترشتهی خالی ارسال میشود.
bpo-28181: دریافت antigravity روی HTTPS. وصله از Kaartic Sivaraam.
bpo-25895: فعالسازی طرحوارههای URL در urllib.parse.urljoin. وصله توسط Gergely Imreh و Markus Holtermann.
bpo-27599: رفع سرریز بافر در binascii.b2a_qp() و binascii.a2b_qp().
bpo-19003: ماژول email.generator اکنون طبق استاندارد RFC، فقط انتهای سطرهای
\rو/یا\nرا جایگزین میکند و نه تمام انتهای سطرهای یونیکد را.bpo-28019: تابع itertools.count() دیگر گام غیرصحیح را در بازهی بین ۱.۰ و ۲.۰ به ۱ گرد نمیکند.
bpo-25969: بهروزرسانی دستور زبان lib2to3 برای مدیریت تعمیمهای بازکردن بسته که در نسخهی ۳.۵ اضافه شدهاند.
bpo-14977: ماژول mailcap اکنون همانطور که RFC 1542 الزام میکند، ترتیب سطرها را در پروندههای mailcap رعایت میکند («اولین تطابق»). وصله توسط Michael Lazar.
bpo-24594: اعتبارسنجی پارامتر persist هنگام گشودن پایگاه دادهی MSI
bpo-17582: ماژول xml.etree.ElementTree اکنون فاصلههای سفید را در ویژگیها حفظ میکند. (وصله توسط Duane Griffin. بازبینی و تأیید توسط Stefan Behnel.)
bpo-28047: رفع محاسبهی طول سطر مورد استفاده برای کدگذاری انتقال محتوا (CTE) در سیاستهای ایمیل جدید.
bpo-27445: از ارسال str(_charset) به MIMEText.set_payload() خودداری کنید. وصله توسط Claude Paroz.
bpo-22450: ماژول urllib اکنون یک سرآیند
Accept: */*را در میان سرآیندهای پیشفرض قرار میدهد. این کار نتایج درخواستهای REST API را سازگارتر و قابلپیشبینیتر میکند، بهویژه هنگامی که سرورهای پراکسی درگیر هستند.توابع lib2to3.pgen3.driver.load_grammar() اکنون با توجه به ورودی یکسان Grammar.txt، بدون در نظر گرفتن تنظیمات تصادفیسازی هش، یک پروندهی نهانگاه پایدار بین اجراها ایجاد میکنند.
bpo-27570: جلوگیری از فراخوانیهای memcpy() و غیره با طول صفر و با اشارهگرهای مبدأ تهی در ماژولهای ctypes و array.
bpo-22233: شکستن خطوط سرآیند ایمیل فقط در کاراکترهای CR و LF مشخصشدهی RFC، و نه در شکست0های خط یونیکد دلخواه. این کار همچنین یک باگ را در تجزیهی سرآیند HTTP برطرف میکند.
bpo-27988: رفع تغییر شکل نادرست فهرست بار در تابع iter_attachments ایمیل.
bpo-27691: رفع تجزیهی فیلدهای نام جایگزین موضوع GEN_RID در گواهیهای X.509 توسط ماژول ssl.
bpo-27850: حذف 3DES از فهرست رمزهای پیشفرض ماژول ssl برای مقابله با حملهی sweet32 (CVE 2016-2183).
bpo-27766: افزودن ChaCha20 Poly1305 به فهرست رمزهای پیشفرض ماژول ssl. (نیازمند OpenSSL نسخهی ۱.۱.۰ یا LibreSSL).
bpo-26470: پورت کردن ماژولهای ssl و hashlib به OpenSSL نسخهی ۱.۱.۰.
حذف پشتیبانی از ارسال توصیفگر پرونده (file descriptor) به os.access. این کار هرگز کار نمیکرد اما قبلاً خطا ایجاد نمیکرد.
bpo-12885: رفع خطا زمانی که distutils با پیوند نمادین (symlink) مواجه میشود.
bpo-27881: رفع باگهای احتمالی هنگام تنظیم sqlite3.Connection.isolation_level. بر اساس وصلهای از Xiang Zhang.
bpo-27861: رفع فروپاشی (crash) در sqlite3.Connection.cursor() هنگامی که یک کارخانه (factory) نشانگر (cursor) ایجاد نمیکند. وصله از Xiang Zhang.
bpo-19884: جلوگیری از خروجیهای اضافی در سیستمعامل OS X با Gnu Readline.
bpo-27706: بازیابی رفتار قطعی (deterministic) تابع random.Random().seed() برای بذرهای (seed) رشتهای با استفاده از نسخهی بذرگذاری ۱. به دنبالههای فراخوانیهای random() اجازه میدهد تا دقیقاً با موارد بهدستآمده در پایتون ۲ مطابقت داشته باشند. وصله از Nofar Schnider.
bpo-10513: رفع یک رگرسیون در Connection.commit(). دستورات نباید پس از یک ثبت نهایی (commit) بازنشانی شوند.
نسخهی جدیدی از typing.py از https://github.com/python/typing: Collection (فقط برای ۳.۶) (bpo-27598). افزودن FrozenSet به __all__ (بالادست #261). رفع فروپاشی در _get_type_vars() (بالادست #259). حذف محدودیت دیکشنری در ForwardRef._eval_type (بالادست #252).
bpo-27539: رفع نتیجهی نرمالسازینشدهی
Fraction.__pow__در مورد توان منفی و پایهی منفی.bpo-21718: ویژگی cursor.description اکنون برای پرسوجوهایی که از CTEها استفاده میکنند در دسترس است.
bpo-2466: تابع posixpath.ismount اکنون نقاط اتصال (mount points) را که کاربر اجازهی دسترسی به آنها را ندارد، به درستی تشخیص میدهد.
bpo-27773: اصلاح برخی خطاهای مدیریت حافظه server_hostname در تابع _ssl.wrap_socket().
bpo-26750: تابع unittest.mock.create_autospec() اکنون برای زیرکلاسهای property() و سایر توصیفگرهای داده به درستی کار میکند.
در ماژول curses، اگر مقداری منفی به window.getstr() یا window.instr() ارسال شود، خطایی ایجاد کنید.
bpo-27783: رفع احتمال استفاده از حافظهی مقداردهینشده در operator.methodcaller.
bpo-27774: رفع احتمال Py_DECREF روی شیء مالکیتنداشته در _sre.
bpo-27760: رفع احتمال سرریز عدد صحیح در binascii.b2a_qp.
bpo-27758: رفع احتمال سرریز عدد صحیح در ماژول _csv برای طولهای رکورد بزرگ.
bpo-27568: جلوگیری از حملهی HTTPoxy (CVE 2016-1000110). نادیدهگرفتن متغیر HTTP_PROXY هنگامی که متغیر محیطی REQUEST_METHOD تنظیم شده است، که نشان میدهد اسکریپت در حالت CGI قرار دارد.
bpo-27656: فرض نکنید که sched.h ثابتی از نوع SCHED_* تعریف میکند.
bpo-27130: در ماژول "zlib"، نحوهی پردازش بافرهای بزرگ (معمولاً ۴ گیگابایت) هنگام فشردهسازی و واگشایی اصلاح شد. پیش از این، ورودیها به ۴ گیگابایت محدود بودند و عملیات فشردهسازی و واگشایی نتایج ۴ گیگابایتی را به درستی پردازش نمیکردند.
bpo-27533: آزادسازی GIL در nt._isdir
bpo-17711: رفع مشکل بازسازی شیء (unpickling) توسط شناسهی پایا با پروتکل ۰. وصلهی اصلی توسط Alexandre Vassalotti.
bpo-27522: جلوگیری از چرخهی ارجاع ناخواسته در email.feedparser.
bpo-26844: اصلاح پیام خطا برای imp.find_module() به طوری که به جای 'name' به 'path' اشاره کند. وصله (patch) از Lev Maximov.
bpo-23804: رفع فراخوانیهای recv() با طول صفر در SSL به طوری که مسدود نشوند و خطایی دربارهی EOF نامعتبر ایجاد نکنند.
bpo-27466: تغییر فرمت زمان بازگردانده شده توسط http.cookie.time2netscape، جهت تطبیق با فرمت کوکی netscape و هماهنگسازی آن با مستندات.
bpo-26664: رفع پروندهی activate.fish با حذف استفادهی نادرست از
$.bpo-22115: رفع ردیابی متغیرهای Tkinter: تابع trace_vdelete() با حالت نادرست دیگر ردیابی را متوقف نمیکند، trace_vinfo() اکنون همیشه فهرستی از جفترشتهها را برمیگرداند، ردیابی در حالت "u" اکنون کار میکند.
رفع یک مشکل دامنهی دید (scoping) در importlib.util.LazyLoader که باعث ایجاد خطای UnboundLocalError هنگام بارگذاری تنبل (lazy-loading) ماژولی شد که قبلاً در sys.modules قرار داده شده بود.
bpo-27079: رفع توابع curses.ascii یعنی isblank()، iscntrl() و ispunct().
bpo-26754: برخی از توابع (مانند compile()) آرگومان نام پرونده را که به صورت یک شیء پیمایشپذیر از اعداد صحیح کدگذاری شده بود، میپذیرفتند. اکنون فقط رشتهها و اشیای شبیه به بایت پذیرفته میشوند.
bpo-27048: جلوگیری از شکست خوردن distutils در ویندوز هنگامی که متغیرهای محیطی حاوی نویسههای غیر اسکی هستند.
bpo-27330: رفع نشتهای احتمالی در ماژول ctypes.
bpo-27238: خلاص شدن از شر exceptهای خالی (bare excepts) در ماژول turtle. اصلاحیهی اولیه توسط Jelle Zijlstra.
bpo-27122: هنگامی که استثنایی درون زمینهای که توسط یک contextlib.ExitStack() مدیریت میشود رخ دهد و یکی از مولدهای پشتهی خروج آن را بگیرد و به صورت زنجیرهای بالا بیاورد، هنگام خروج، استثنای اصلی مجدداً بالا آورده نمیشود و اجازه داده میشود استثنای زنجیرهای جدید عبور کند. این کار از باگ PEP 479 که در issue25782 توصیف شده است جلوگیری میکند.
bpo-26386: رفع عملیات انتخاب در ttk.TreeView برای شناسههای آیتم حاوی فاصله.
bpo-16182: رفع چندین تابع مختلف در ماژول "readline" برای استفاده از کدگذاری locale و اصلاح get_begidx() و get_endidx() بهمنظور بازگرداندن اندیسهای نقطهکد.
bpo-27392: افزودن loop.connect_accepted_socket(). وصله توسط Jim Fulton.
bpo-27930: بهبود رفتار logging.handlers.QueueListener. با تشکر از Paulo Andrade و Petr Viktorin برای تحلیل و وصله.
bpo-21201: خوانایی پیام خطای multiprocessing را بهبود میبخشد. با تشکر از Wojciech Walczak برای وصله.
bpo-27456: ماژول asyncio: تنظیم پیشفرض TCP_NODELAY.
bpo-27906: رفع تمام شدن ظرفیت پذیرش سوکت در جریان ترافیک بالای TCP. وصله توسط Kevin Conway.
bpo-28174: مدیریت زمانی که SO_REUSEPORT بهدرستی پشتیبانی نمیشود. وصله توسط Seth Michael Larson.
bpo-26654: بازرسی functools.partial در asyncio.Handle.__repr__. وصله توسط iceboy.
bpo-26909: رفع کندی ورودی/خروجی پایپها در asyncio. وصله توسط INADA Naoki.
bpo-28176: رفع وضعیت رقابتی فراخوانیهای بازگشتی در asyncio.SelectorLoop.sock_connect.
bpo-27759: رفع نگهداری نادرست توصیفگرهای پروندهی نامعتبر توسط selectorها. وصله توسط Mark Williams.
bpo-28368: اگر ناظر فرزند هیچ حلقهای متصل نداشته باشد، پایش فرایندها رد میشود. وصله از Vincent Michel.
bpo-28369: هنگامی که از FD ترابرد با add_reader، add_writer و غیره استفاده میشود، خطای RuntimeError را بالا بیاورید.
bpo-28370: افزایش سرعت asyncio.StreamReader.readexactly. وصله از Коренберг Марк.
bpo-28371: منسوخ کردن ارسال asyncio.Handles به run_in_executor.
bpo-28372: اصلاح asyncio برای پشتیبانی از قالببندی همروالهای غیرپایتونی.
bpo-28399: حذف سوکت UNIX از FS قبل از اتصال (binding). وصله از Коренберг Марк.
bpo-27972: ممنوع کردن انتظار (await) وظایف روی خودشان.
bpo-26923: اصلاح asyncio.Gather بهمنظور امتناع از لغو شدن هنگامی که تمام فرزندان به پایان رسیدهاند. بستهی الحاقی از Johannes Ebke.
bpo-26796: عدم پیکربندی تعداد کارگران برای اجراکنندهی پیشفرض استخر نخ. بستهی الحاقی اولیه از Hans Lawrenz.
bpo-28600: بهینهسازی loop.call_soon().
bpo-28613: رفع مشکل get_event_loop() که اگر از همروالها یا کالبکها فراخوانی شود، حلقهی فعلی را برمیگرداند.
bpo-28639: رفع مشکل inspect.isawaitable برای اینکه همیشه مقدار bool برگرداند. وصله توسط Justin Mayfield.
bpo-28652: وادار کردن متدهای حلقه به رد کردن انواعی از سوکت که پشتیبانی نمیکنند.
bpo-28653: رفع یک نشت حافظه (refleak) در functools.lru_cache.
bpo-28703: رفع مشکل asyncio.iscoroutinefunction برای مدیریت اشیاء Mock.
bpo-24142: خواندن یک پروندهی تنظیمات خراب، پارسر را در وضعیتی نامعتبر رها میکرد. وصلهی اصلی توسط Florian Höch.
bpo-28990: رفع مشکل معلق ماندن (hanging) SSL اگر اتصال قبل از اتمام فرآیند دستدهی بسته شود. (وصله توسط HoHo-Ho)
IDLE¶
bpo-15308: افزودن دستور «متوقف کردن اجرا» (^C) به منوی پوسته (Shell). وصله توسط Roger Serwy، بهروزرسانی توسط Bayard Randel.
bpo-27922: جلوگیری از «چشمک زدن» ابزارکهای گرافیکی آزمونهای IDLE روی صفحه.
افزودن نسخه به عنوان پنجرهی راهنمای IDLE.
bpo-25564: در بخش مربوط به تفاوتهای کنسول IDLE، ذکر کنید که استفاده از exec به این معناست که __builtins__ برای هر دستور تعریف میشود.
bpo-27714: توابع text_textview و test_autocomplete اکنون هنگام اجرای مجدد در همان فرایند با موفقیت رد میشوند. این مشکل زمانی رخ میدهد که test_idle هنگام اجرا با گزینهی -w و بدون -jn با شکست مواجه شود. رفع هشدار از test_config.
bpo-25507: برنامهی IDLE دیگر به دلیل ایمپورتهای tkinter خود کدهای دارای باگ را اجرا نمیکند. کاربران باید همان ایمپورتهای مورد نیاز برای اجرای مستقیم در پایتون را شامل شوند.
bpo-27452: افزودن شمارندهی سطر و crc به برونریزی آزمون configHandler در IDLE.
bpo-27365: اجازهی استفاده از نویسههای غیر ascii در NEWS.txt ابزار IDLE برای اسامی مشارکتکنندگان.
bpo-27245: بخش IDLE: حذف تمهای سفارشی و کلیدهای میانبر بهطور کامل. پیشتر، زمانی که IDLE از طریق کنسول یا ایمپورت راهاندازی میشد، مجموعهای از هشدارها صادر میشد. وصله توسط Serhiy Storchaka.
رابط C API¶
مستندات¶
bpo-28513: مستندسازی رابط خط فرمان zipfile.
آزمونها¶
bpo-28950: عدم اجازه برای ترکیب کردن -j0 با -T/-l/-M در آرگومانهای خط فرمان regrtest.
bpo-28666: اکنون test.support.rmtree قادر است دایرکتوریهای غیرقابلنوشتن یا غیرقابلخواندن را حذف کند.
bpo-23839: نهانگاههای مختلف اکنون قبل از اجرای هر پروندهی آزمونی پاکسازی میشوند.
bpo-28409: ابزار regrtest: اصلاح تحلیلگر آرگومانهای خط فرمان.
bpo-27787: فراخوانی gc.collect() پیش از بررسی هر آزمون از نظر وجود «رشتههای معلق» (dangling threads)، از آنجا که این رشتههای معلق ارجاع ضعیف هستند.
bpo-27369: در test_pyexpat، از آزمودن جزئیات پیام خطایی که در Expat 2.2.0 تغییر یافته است، خودداری کنید.
Tools/Demos¶
bpo-27952: سازگار کردن Tools/scripts/fixcid.py با پایتون ۳ و ماژول فعلی "re"، جلوگیری از کاراکترهای گریز (backslash escape) نامعتبر در پایتون، و رفع یک باگ در تجزیه کردن علامتهای نقلقول C که کاراکتر گریز دارند.
bpo-27332: نوع آرگومان اول توابع همسطح ماژول که توسط Argument Clinic تولید میشوند، اصلاح شد. وصله توسط Petr Viktorin.
bpo-27418: رفع Tools/importbench/importbench.py.
Windows¶
bpo-28251: بهبود راهنماهای کمکی در ویندوز.
bpo-28110: پروندهی launcher.msi کدهای محصول متفاوتی بین نسخههای ۳۲ بیتی و ۶۴ بیتی دارد
bpo-25144: تضمین میکند که TargetDir پیش از ادامهی نصب سفارشی تنظیم شده باشد.
bpo-27469: افزودن یک افزونهی پوسته (shell extension) به برنامهی راهانداز به طوری که کشیدن و رها کردن (drag and drop) به درستی کار کند.
bpo-27309: فعالسازی سبکهای مناسب ویندوز در مانیفست python[w].exe.
ساخت¶
bpo-29080: حذف وابستگی سخت به hg.exe از PCBuild/build.bat
bpo-23903: افزودن نامهای جاافتاده به PC/python3.def.
bpo-10656: رفع ساخت خارج از درخت (out-of-tree) روی AIX. وصله توسط Tristan Carel و Michael Haubenwallner.
bpo-26359: تغییر نام --with-optimiations به --enable-optimizations.
bpo-28444: رفع ماژولهای افزونهی گمشده هنگام کامپایل متقاطع.
bpo-28248: بهروزرسانی ساخت ویندوز و نصبکنندههای OS X برای استفاده از OpenSSL نسخه 1.0.2j.
bpo-28258: رفع مشکل ساخت با locale استونیایی (هدفهای python-config و distclean در Makefile). وصلهای از Arfrever Frehtes Taifersar Arahesis.
bpo-26661: ماژول setup.py اکنون libffi سیستمی را با پوشش multiarch شناسایی میکند.
bpo-28066: رفع منطق جستجوی پوشههای ساخت برای پروندههای شامل (include) تولیدشده هنگام ساخت در خارج از شاخهی منبع.
bpo-15819: حذف گزینهی پوشهی جستجوی شامل (include) تکراری برای ساخت در خارج از درخت منبع.
bpo-27566: رفع هدف clean در فایل ساخت (makefile) مربوط به freeze (وصله توسط Lisa Roach)
bpo-27705: بهروزرسانی پیام در validate_ucrtbase.py
bpo-27983: تبدیل شدن نبود ابزار llvm-profdata هنگام استفاده از clang (که برای پیوندسازی PGO نیاز است) به یک خطای زمان پیکربندی بهجای زمان ساخت وقتی --with-optimizations فعال است. همچنین بهبود توانایی ما در یافتن ابزار llvm-profdata روی سیستمعامل macOS و برخی از توزیعهای لینوکس.
bpo-26307: ساخت profile-opt اکنون PGO را روی ماژولهای درونساخته اعمال میکند.
bpo-26359: اضافه کردن پرچم پیکربندی --with-optimizations.
bpo-27713: جلوگیری از هشدارهای ساخت (build) اضافی هنگام بهروزرسانی پروندههای راهاندازی importlib. وصله (patch) از Xiang Zhang
bpo-25825: اصلاح ارجاعها به Modules/python.exp و ld_so_aix که روی AIX مورد نیاز هستند. این کار ارجاعها به یک مسیر نصب را که در نسخهی 3.2a4 تغییر کرده بود بهروزرسانی میکند و تغییرات ارجاعشده به درخت ساخت را که در نسخهی 3.5.0a1 انجام شده بود، خنثی میکند.
bpo-27453: فراخوانی CPP در configure باید از CPPFLAGS استفاده کند. وصله (patch) از Chi Hsuan Yen.
bpo-27641: اسکریپت configure اکنون کامنتهایی را در makefile درج میکند تا از کامپایل متقابل (cross-compile) فایلهای اجرایی pgen و _freeze_importlib جلوگیری شود.
bpo-26662: تنظیم PYTHON_FOR_GEN در configure به عنوان برنامهی پایتونی که برای تولید پرونده در طول ساخت (build) استفاده میشود.
bpo-10910: جلوگیری از خطاهای کامپایل C++ در FreeBSD و OS X. همچنین بهروزرسانی بررسیهای نسخهی FreeBSD برای راهحل جایگزین اصلی ctype با UTF-8.
bpo-28676: جلوگیری از هشدار کمبود اعلام 'getentropy' روی مکاواس. وصلهای از Gareth Rees.
پایتون ۳.۵.۲ نهایی¶
تاریخ انتشار: ۲۰۱۶-۰۶-۲۶
هسته و توکارها (Core and Builtins)¶
bpo-26930: بهروزرسانی ساختهای ویندوز برای استفاده از OpenSSL 1.0.2h.
آزمونها¶
bpo-26867: گزینهی OP_NO_SSLv3 متعلق به openssl در اوبونتو بهطور پیشفرض اجباری شده است؛ اصلاح آزمون.
IDLE¶
bpo-27365: اجازه دادن به نویسههای غیر اسکی (non-ascii) در idlelib/NEWS.txt - بخش حداقلی برای ۳.۵.۲.
نامزد انتشار ۱ پایتون ۳.۵.۲¶
تاریخ انتشار: ۲۰۱۶-۰۶-۱۲
امنیت¶
bpo-26556: بهروزرسانی expat به نسخهی 2.1.1، رفع CVE 2015-1283.
رفع آسیبپذیری حذف TLS در smtplib، CVE 2016-0772. گزارششده توسط Team Oststrom.
bpo-26839: در لینوکس، تابع
os.urandom()اکنونgetrandom()را باGRND_NONBLOCKفراخوانی میکند تا اگر استخر انتروپی urandom هنوز مقداردهی اولیه نشده باشد، به خواندن/dev/urandomبازگردد. وصله نوشتهشده توسط Colm Buckley.bpo-26657: رفع آسیبپذیری پیمایش پوشه با http.server روی ویندوز. این کار یک رگرسیون را که در نسخههای ۳.۳.۴rc1 و ۳.۴.۰rc1 ایجاد شده بود، رفع میکند. بر اساس وصلهی Philipp Hagemeister.
bpo-26313: اگر انبار گواهی ویندوز خالی باشد، ssl.py _load_windows_store_certs دچار خطا میشود. وصله از Baji.
bpo-25939: روی ویندوز، انبار گواهی را در ssl.enum_certificates به صورت فقطخواندنی باز کنید.
هسته و توکارها (Core and Builtins)¶
bpo-27066: خطای SystemError در صورتی که یک بازکنندهی سفارشی (برای open()) بدون تنظیم یک استثنا، عدد منفی برگرداند، رفع شد.
bpo-20041: رفع خطای TypeError هنگامی که frame.f_trace روی None تنظیم میشود. وصله از Xavier de Gaye.
bpo-26168: رفع نشت حافظهی احتمالی در شکست Py_BuildValue() با واحد قالب "N".
bpo-26991: رفع نشت حافظهی احتمالی هنگام ایجاد یک تابع با حاشیهنویسیها.
bpo-27039: رفع مشکل bytearray.remove() برای مقادیر بزرگتر از ۱۲۷. وصله توسط جو جِونیک (Joe Jevnik).
bpo-23640: تابع int.from_bytes() دیگر سازندهها را برای زیرکلاسها دور نمیزند.
bpo-26811: تابع gc.get_objects() دیگر حاوی یک تاپل خراب با اشارهگر NULL نیست.
bpo-20120: استفاده از RawConfigParser برای تجزیه کردن .pypirc، و حذف پشتیبانی از درونیابی که ناخواسته با انتقال به پایتون ۳ اضافه شده بود. رفتار این پروندهها دیگر هیچگونه درونیابی در پروندههای .pypirc انجام نمیدهد، که با رفتار پایتون ۲.۷ و Setuptools 19.0 مطابقت دارد.
bpo-26659: نوع slice توکار را وادار کنید تا از جمعآوری چرخهای (cycle collection) پشتیبانی کند.
bpo-26718: تابع super.__init__ دیگر در صورت فراخوانی چندینباره باعث نشتی حافظه نمیشود. نکته: فراخوانی مستقیم تابع super.__init__ تأیید نمیشود!
bpo-25339: متغیر PYTHONIOENCODING اکنون در تنظیم هندلر خطا برای ورودی استاندارد (stdin) و خروجی استاندارد (stdout) نسبت به locale اولویت دارد.
bpo-26494: فروپاشی هنگام پیمایش پیمایشگرهای کاملاً پیمایششده (exhausting iterators) برطرف شد. کلاسهای تحت تأثیر عبارتند از: پیمایشگرهای دنبالهی عام، پیمایشگرهای str، bytes، bytearray، list، tuple، set، frozenset، dict، OrderedDict، نماهای مربوطه و پیمایشگر os.scandir().
bpo-26581: اگر کوکی کدگذاری (coding cookie) چندین بار در یک سطر از پروندهی کد منبع پایتون مشخص شود، فقط اولین مورد در نظر گرفته میشود.
bpo-26464: اصلاح str.translate() هنگامی که رشته اسکی (ASCII) است و اولین جایگزینی نویسهای را حذف میکند، اما جایگزینی بعدی از یک نویسهی غیر اسکی یا رشتهای بلندتر از ۱ نویسه استفاده میکند. رگرسیون ایجادشده در پایتون 3.5.0.
bpo-22836: اطمینان حاصل کنید که گزارشهای استثنا از PyErr_Display() و PyErr_WriteUnraisable() حتی زمانی که قالببندی آنها خطاهای ثانویهای ایجاد میکند، معقول هستند. این امر روی گزارشهای تولیدشده توسط sys.__excepthook__() و زمانی که ()__del__ یک استثنا ایجاد میکند، تأثیر میگذارد.
bpo-26302: اصلاح رفتار برای رد کردن کاما به عنوان یک نویسهی مجاز برای نامهای کوکی.
bpo-4806: جلوگیری از پوشانده شدن استثنای (exception) اصلی TypeError هنگام استفاده از بازکردن بسته (unpacking) ستاره (
*) در فراخوانیهای تابع. بر اساس وصله (patch) از Hagen Fürstenau و Daniel Urban.bpo-27138: کامنت مستندات برای FileFinder.find_spec() را اصلاح کنید.
bpo-26154: افزودن تابع خصوصی جدید _PyThreadState_UncheckedGet() برای دریافت وضعیت نخ فعلی پایتون، اما اگر برابر با NULL باشد خطای مهلک صادر نمیکند. این تابع جدید باید به جای دسترسی مستقیم به متغیر _PyThreadState_Current استفاده شود. این متغیر از پایتون نسخهی ۳.۵.۱ به بعد دیگر افشا نمیشود تا پیادهسازی دقیق انواع C اتمی پنهان بماند و از مشکلات کامپایلر جلوگیری شود.
bpo-26194: تابع Deque.insert() نتایج عجیبی برای صفهای دوطرفهی کراندار که به حداکثر اندازه خود رسیده بودند میداد. اکنون هنگام تلاش برای درج در یک صف دوطرفهی پر، یک IndexError بالا آورده (raise) میشود.
bpo-25843: هنگام کامپایل کردن کد، اگر ثابتها مساوی باشند اما انواع متفاوتی داشته باشند، آنها را ادغام نکنید. برای مثال،
f1, f2 = lambda: 1, lambda: 1.0اکنون به درستی به دو تابع مختلف کامپایل میشود:f1()مقدار1(int) را برمیگرداند وf2()مقدار1.0(int) را برمیگرداند، حتی اگر1و1.0با هم برابر باشند.bpo-22995: [بهروزرسانی] به دلیل رگرسیونهای (regression) مشاهدهشده در پروژههای مبتنی بر Cython، یکی از آزمونهای قابلیت پیکلپذیر بودن (pickleability) در _PyObject_GetState() کامنت شد.
bpo-25961: نویسههای تهی (null) در نام نوع (type name) مجاز نیستند.
bpo-25973: رفع خطای segfault هنگامی که یک دستور nonlocal نامعتبر، نامی را که با دو زیرخط شروع میشود مقید (bind) میکند.
bpo-22995: نمونههای (instance) نوعهای توسعهای (extension types) با وضعیتی که زیرکلاس list یا dict نیستند و هیچیک از متدهای مربوط به picle را پیادهسازی نکردهاند (__reduce__، __reduce_ex__، __getnewargs__، __getnewargs_ex__ یا __getstate__)، دیگر نمیتوانند پیکل (pickle) شوند. این شامل memoryview نیز میشود.
bpo-20440: جایگزینی گستردهی کد تنظیم ویژگی (attribute) ناامن با ماکروی ویژهی Py_SETREF.
bpo-25766: متد ویژهی __bytes__() اکنون در زیرکلاسهای str کار میکند.
bpo-25421: متدهای __sizeof__ از نوعهای توکار (builtin types) اکنون از اندازهی پایهی پویا استفاده میکنند. این امر به sys.getsize() اجازه میدهد تا با زیرکلاسهای آنها که دارای __slots__ تعریفشده هستند، به درستی کار کند.
bpo-25709: مشکل الحاق رشتهی درونجایی (in-place string concatenation) و نهانگاه (cache) utf-8 برطرف شد.
bpo-24097: رفع فروپاشی در شیء ()object.__reduce__ اگر نام جایگاه درون __getattr__ آزاد شود.
bpo-24731: رفع فروپاشی هنگام تبدیل کردن شیءهایی با متدهای ویژه __bytes__، __trunc__ و __float__ که نمونههایی از زیرکلاسهای bytes، int و float را برمیگردانند، به زیرکلاسهای متناظر bytes، int و float.
bpo-26478: رفع باگهای معنایی هنگام استفاده از عملگرهای دودویی با نماهای دیکشنری و تاپلها.
bpo-26171: رفع سرریز عدد صحیح و خرابی احتمالی هیپ در zipimporter.get_data().
bpo-25660: رفع رفتار کلید TAB در REPL با readline.
bpo-25887: هنگامی که یک شیء همروال بیش از یک بار await شود، یک RuntimeError بالا بیاورید.
bpo-27243: بهروزرسانی پروتکل (protocol) __aiter__ : بهجای بازگرداندن یک انتظارپذیر (awaitable) که به یک پیمایشگر ناهمگام (asynchronous iterator) حل میشود، اکنون خود پیمایشگر ناهمگام باید مستقیماً بازگردانده شود. انجام روش اول باعث ایجاد یک اخطار PendingDeprecationWarning خواهد شد.
کتابخانه¶
bpo-21386: پیادهسازی ویژگی مفقود IPv4Address.is_global. این ویژگی از زمان 07a5610bae9d مستند شده بود. وصلهی اولیه از Roger Luethi.
bpo-20900: دستور ثبت distutils اکنون پاسخهای HTTP را بهدرستی رمزگشایی میکند. وصلهی اولیه از ingrid.
نسخهی جدید typing.py چندین کلاس و ویژگی جدید ارائه میدهد: @overload بیرون از stubها، Reversible، DefaultDict، Text، ContextManager، Type[]، NewType()، TYPE_CHECKING، و اصلاح خطاهای پرتعداد (توجه داشته باشید که برخی از ویژگیهای جدید هنوز در mypy یا سایر تحلیلگرهای ایستا پیادهسازی نشدهاند). همچنین کلاسهایی برای PEP 492 (Awaitable، AsyncIterable، AsyncIterator) اضافه شدهاند (در واقع آنها در 3.5.1 قرار گرفتند اما هرگز به آنها اشاره نشد).
bpo-25738: جلوگیری از ارسال بدنهی پیام برای 205 Reset Content توسط http.server.BaseHTTPRequestHandler.send_error(). همچنین، فیلدهای سرآیند Content را در پاسخهایی که بدنه ندارند ارسال نکنید. وصلهای از Susumu Koshiba.
bpo-21313: اصلاح ماژول «platform» برای تحمل مواردی که sys.version حاوی اطلاعات ساخت ناقص است.
bpo-27164: در ماژول zlib، امکان خارج کردن جریانهای Deflate خام از حالت فشرده با یک zdict ازپیشتعریفشده فراهم شد. بر اساس وصلهای از Xiang Zhang.
bpo-24291: اصلاح wsgiref.simple_server.WSGIRequestHandler برای نوشتن کامل دادهها در کلاینت. پیش از این ممکن بود نوشتنها بهصورت جزئی انجام شود و دادهها ناقص بمانند. همچنین، wsgiref.handler.ServerHandler اکنون میتواند نوشتنهای جزئی stdout را مدیریت کند، اما این کار منسوخ شده است.
bpo-26809: افزودن
__all__بهstring. وصله توسط Emanuel Barry.bpo-26373: تابع subprocess.Popen.communicate اکنون در بیشتر/تمامی شرایط، خطای BrokenPipeError را هنگامی که فرایند فرزند پیش از فراخوانی .communicate() از بین میرود، به درستی نادیده میگیرد.
bpo-21776: ماژول distutils.upload اکنون خطای HTTPError را به درستی مدیریت میکند. وصلهی اولیه از Claudiu Popa.
bpo-27114: رفع مشکل شکست خوردن SSLContext._load_windows_store_certs همراه با PermissionError
bpo-18383: جلوگیری از ایجاد فیلترهای تکراری هنگام استفاده از filterwarnings و simplefilter. بر اساس وصلهای از Alex Shkop.
bpo-27057: رفع تابع os.set_inheritable() در اندروید؛ تابع ioctl() توسط SELinux مسدود شده و با EACCESS شکست میخورد. این تابع اکنون به fcntl() بازمیگردد. وصله نوشتهشده توسط Michał Bednarski.
bpo-27014: رفع بازگشت بینهایت با استفاده از typing.py. با تشکر از Kalle Tuure!
bpo-14132: رفع نحوهی هندل کردن تغییر مسیر (redirect) در urllib.request وقتی هدف فقط دارای یک رشتهی پرسوجو است. رفع باگ اصلی توسط Ján Janech.
bpo-17214: ماژول "urllib.request" اکنون بایتهای غیر اسکی موجود در URLهای هدف تغییر مسیر را درصد-کدگذاری میکند. برخی از سرورها فیلدهای سرآیند Location را با بایتهای غیر اسکی ارسال میکنند، اما "http.client" نیازمند این است که هدف درخواست قابلیت کدگذاری به اسکی را داشته باشد، در غیر این صورت یک UnicodeEncodeError بالا میرود. بر اساس وصلهی Christian Heimes.
bpo-26892: رعایت پرچم debuglevel در urllib.request.HTTPHandler. وصلهی ارائهشده توسط Chi Hsuan Yen.
bpo-22274: در ماژول subprocess، به stderr اجازه دهید به stdout هدایت شود، حتی زمانی که stdout هدایت نشده است. وصله توسط Akira Li.
bpo-26807: تابع mock_open برای «files» دیگر در انتهای پرونده خطای readline نمیدهد. وصله از Yolanda Robla.
bpo-25745: نشتی یک userptr در مخرب پنلهای curses برطرف شد.
bpo-26977: فراخوانی غیرضروری و نادیدهگرفتهشده به کمکی مجموع مربعات در statistics.pvariance حذف شد.
bpo-26881: ماژول modulefinder اکنون از آرگومانهای آپکد توسعهیافته پشتیبانی میکند.
bpo-23815: خرابیهای مربوط به نمونههای ایجادشدهی مستقیم از نوعها در ماژولهای _tkinter و curses.panel برطرف شد.
bpo-17765: تابع weakref.ref() دیگر آرگومانهای کلیدواژهای را بهطور بیصدا نادیده نمیگیرد. وصله توسط Georg Brandl.
bpo-26873: ماژول xmlrpc اکنون روی برچسبهای نوع پشتیبانینشده به جای بازگرداندن بیصدای نتیجهی نادرست، خطای ResponseError را بالا میآورد.
bpo-26711: مقایسهی plistlib.Data با سایر نوعها اصلاح شد.
bpo-24114: رفع یک متغیر مقداردهینشده در
ctypes.util. این باگ فقط در SunOS هنگام جستجوی پیادهسازی ctypes برای برنامهیcrleرخ میدهد. وصله توسط Xiang Zhang. تستشده روی SunOS توسط Kees Bos.bpo-26864: در urllib.request، بررسی میزبان دور زدن پراکسی در برابر no_proxy را به حالت نسبت به بزرگی و کوچکی حروف بیتفاوت تغییر دهید و طوری تنظیم کنید که با نامهای میزبان نامرتبطی که تصادفاً یک نام میزبان دورزدهشده را به عنوان پسوند دارند، مطابقت نداشته باشد. وصله توسط Xiang Zhang.
bpo-26634: تابع recursive_repr() اکنون ویژگی __qualname__ شیء پوششی را تنظیم میکند. وصله توسط Xiang Zhang.
bpo-26804: ماژول urllib.request متغیرهای محیطی پراکسی با حروف کوچک (lower_case) را به متغیرهای با حروف بزرگ (UPPER_CASE) یا ترکیبی (Mixed_Case) ترجیح خواهد داد. وصلهی ارائهشده توسط Hans-Peter Jansen.
bpo-26837: تابع assertSequenceEqual() اکنون آیتمهای متفاوتی را که به رشته تبدیل نشدهاند (مانند بایتها در حالت -b) به درستی خروجی میدهد. این تغییر روی assertListEqual() و assertTupleEqual() نیز تأثیر میگذارد.
bpo-26041: عبارت "will be removed in Python 3.7" را از پیامهای منسوخسازی (deprecation) توابع platform.dist() و platform.linux_distribution() حذف کنید. وصله توسط Kumaripaba Miyurusara Athukorala.
bpo-26822: اشیاء itemgetter، attrgetter و methodcaller دیگر آرگومانهای کلیدواژهای را به سکوت نادیده نمیگیرند.
bpo-26733: واسازی کردن (disassembling) یک کلاس اکنون متدهای کلاس و متد ایستا را نیز واسازی میکند. وصله توسط Xiang Zhang.
bpo-26801: رفع مدیریت خطا در
shutil.get_terminal_size()، و گرفتن استثنایAttributeErrorبه جایNameError. وصلهی نوشتهشده توسط Emanuel Barry.bpo-24838: قالبهای ustar و gnu در ماژول tarfile اکنون محدودیتهای فیلد نام و پیوند را برای کدگذاریهای نویسهی چندبایتی مانند utf-8 به درستی محاسبه میکنند.
bpo-26717: متوقف کردن کدگذاری مسیرهای WSGI تبدیلشده به Latin-1 با استفاده از UTF-8. وصله توسط Anthony Sottile.
bpo-26735: رفع تابع
os.urandom()در سولاریس ۱۱.۳ و جدیدتر هنگام خواندن بیش از ۱٬۰۲۴ بایت: تابعgetrandom()را چندین بار با محدودیت ۱۰۰۰ و ۲۴ بایت در هر فراخوانی صدا بزنید.bpo-16329: افزودن .webm به mimetypes.types_map. وصله توسط Giampaolo Rodola'.
bpo-13952: افزودن .csv به mimetypes.types_map. وصله توسط Geoff Wilson.
bpo-26709: رفع مشکل Y2038 در بارگذاری پروندههای PList دودویی.
bpo-23735: مدیریت تغییر اندازهی ترمینال با Readline 6.3+ از طریق نصب هندلر SIGWINCH اختصاصی خودمان. وصله توسط Eric Price.
bpo-26586: در ماژول http.server، اگر تعداد سرآیندهای (header) برای تجزیه بیش از حد زیاد باشد، به جای قطع کردن اتصال و بالا آوردن یک استثنای (exception) مدیریتنشده، با پیام «413 Request header fields too large» پاسخ دهید. وصله (patch) توسط Xiang Zhang.
bpo-22854: متدهای BufferedReader.writable() و BufferedWriter.readable() تغییر کردند تا همیشه False را برگردانند.
bpo-25195: برطرف کردن یک رگرسیون در mock.MagicMock. کلاس _Call زیرکلاسی از tuple است (تغییرات changeset 3603bae63c13 فقط برای کلاسها کار میکند)؛ بنابراین لازم است __ne__ را خودمان پیادهسازی کنیم. وصله توسط Andrew Plummer.
bpo-26644: هنگامی که طول منفی به SSLSocket.recv() یا read() ارسال میشود، به جای SystemError خطای ValueError را بالا بیاورید.
bpo-23804: متدهای SSL recv(0) و read(0) اصلاح شدند تا به جای حداکثر ۱۰۲۴ بایت، صفر بایت برگردانند.
bpo-26616: یک باگ در متد datetime.astimezone() برطرف شد.
bpo-21925: تابع
warnings.formatwarning()اکنون استثناها را رویlinecache.getline(...)میگیرد تا بتواندResourceWarningرا که در اواخر فرایند خاموش شدن پایتون صادر میشود، ثبت (log) کند.bpo-24266: کلید میانبر Ctrl+C در حین جستجوی تاریخچهی Readline، اکنون هنگام کامپایل شدن با Readline نسخه ۷، حالت جستجو را لغو میکند.
bpo-26560: جلوگیری از خطای احتمالی ValueError در BaseHandler.start_response. وصلهی اولیه توسط Peter Inglesby.
bpo-26569: توابع
pyclbr.readmodule()وpyclbr.readmodule_ex()را طوری اصلاح کنید که از ایمپورت کردن بستهها پشتیبانی کنند.bpo-26499: در نظر گرفتن Content-Length باقیمانده در متدهای HTTPResponse.readline() و read1(). بر اساس وصلهی ارائه شده توسط Silent Ghost. همچنین مستندسازی این موضوع که HTTPResponse اکنون از این متدها پشتیبانی میکند.
bpo-25320: مدیریت سوکتها در پوشههایی که جستوجوی unittest در حال اسکن آنها است. وصله از Victor van den Elzen.
bpo-16181: تابع cookiejar.http2time() اکنون اگر سال بزرگتر از datetime.MAXYEAR باشد، None را برمیگرداند.
bpo-26513: رفع مشکل تشخیص ماژول platform برای ویندوز سرور
bpo-23718: رفع مشکل تجزیهی زمان در هفتهی صفرم پیش از ۱ ژانویه. وصلهی اصلی از Tamás Bence Gedai.
bpo-20589: فراخوانی Path.owner() و Path.group() روی ویندوز اکنون به جای ImportError استثنای NotImplementedError را بالا میآورد.
bpo-26177: رفع مشکل متد keys() برای ابزارکهای Canvas و Scrollbar.
bpo-15068: خلاص شدن از بافرگذاری بیشازحد در ماژول fileinput. پارامتر bufsize دیگر استفاده نمیشود.
bpo-2202: رفع خطای UnboundLocalError در AbstractDigestAuthHandler.get_algorithm_impls. وصلهی اولیه از Mathieu Dupuy.
bpo-25718: رفع مشکل بستهبندی (pickling) و کپی کردن پیمایشگر (iterator) accumulate() زمانی که total برابر با None است.
bpo-26475: رفع خروجی اشکالزدایی برای عبارتهای باقاعده با پرچم (?x).
bpo-26457: رفع مشکل متدهای subnets() در کلاسهای شبکهی IP برای حالتی که طول پیشوند حاصل برابر با بیشترین طول پیشوند است. بر اساس وصلهی ارائه شده توسط Xiang Zhang.
bpo-26385: اگر فراخوانی داخلی open() در NamedTemporaryFile() با خطا مواجه شد، پرونده را حذف کنید. وصله از Silent Ghost.
bpo-26402: اصلاح کلاینت XML-RPC برای تلاش مجدد هنگامی که سرور یک اتصال پایا را میبندد. این یک رگرسیون مربوط به استثنای جدید http.client.RemoteDisconnected در نسخهی 3.5.0a4 بود.
bpo-25913: وجود کاراکترهای پیشفرض
<~اکنون در base64.a85decode() با مقدار adobe=True اختیاری است. وصله از Swati Jaiswal.bpo-26186: برداشتن یک بررسی نوع نامعتبر در importlib.util.LazyLoader.
bpo-26367: ماژول importlib.__import__() مشابه builtins.__import__() وقتی
levelمشخص شده اما بستهی همراه آن مشخص نشده باشد، خطای SystemError را بالا میآورد.bpo-26309: در ماژول "socketserver"، وقتی تابع verify_request() مقدار false برمیگرداند، درخواست را متوقف کنید (سوکت متصلشده را ببندید). وصله توسط Aviv Palivoda.
bpo-25995: تابع os.walk() دیگر از توصیفگرهای پرونده (FD) متناسب با عمق درخت استفاده نمیکند.
bpo-26117: پیمایشگر os.scandir() اکنون توصیفگر پرونده را نه تنها هنگام اتمام پیمایش، بلکه هنگامی که با خطا مواجه میشود نیز میبندد.
bpo-25911: بازیابی پشتیبانی از مسیرهای bytes در تابع os.walk() روی سیستمعامل ویندوز.
bpo-26045: افزودن پیشنهاد UTF-8 به پیغام خطا هنگام ارسال یک رشتهی غیر Latin-1 با http.client.
bpo-12923: بازنشانی شمارندهی تغییر مسیر FancyURLopener حتی در صورت بروز استثنا. بر اساس وصلههایی از Brian Brazil و Daniel Rocco.
bpo-25945: رفع یک فروپاشی هنگام پیکلگشایی شیء functools.partial با وضعیت نادرست. رفع یک نشتی در سازندهی خراب functools.partial. ویژگیهای "args" و "keywords" از functools.partial اکنون همیشه بهترتیب از انواع tuple و dict هستند.
bpo-26202: تابع copy.deepcopy() اکنون اشیاء range() را که دارای ویژگیهای غیراتمی هستند بهدرستی کپی میکند.
bpo-23076: متد Path.glob() اکنون اگر با یک الگوی نامعتبر فراخوانی شود، یک ValueError بالا میآورد. وصله توسط Thomas Nyberg.
bpo-19883: رفع سرریزهای احتمالی عدد صحیح در ماژول zipimport.
bpo-26227: در ویندوز، توابع getnameinfo()، gethostbyaddr() و gethostbyname_ex() در ماژول socket اکنون نام میزبان (hostname) را بهجای UTF-8 از کدپیج ANSI رمزگشایی میکنند.
bpo-26147: کتابخانهی xmlrpc اکنون با رشتههایی که با کدگذاری غیر UTF-8 استفادهشده قابل کدگذاری نیستند، کار میکند.
bpo-25935: جمعآوریکنندهی زباله اکنون حلقههای ارجاع را با OrderedDict میشکند.
bpo-16620: خطای AttributeError در msilib.Directory.glob() برطرف شد.
bpo-26013: سازگاری با پیکلهای پروتکل ۲ آسیبدیده ایجادشده در نسخههای قدیمی پایتون ۳ (۳.۴.۳ و پایینتر) اضافه شد.
bpo-25850: استفاده از کامپایل متقاطع بهطور پیشفرض برای ویندوز ۶۴ بیتی.
bpo-17633: بهبود پشتیبانی zipimport برای بستههای فضای نام.
bpo-24705: رفع مشکل sysconfig._parse_makefile که متغیرهای ${} ظاهرشده قبل از متغیرهای $() را گسترش نمیداد.
bpo-22138: رفع رفتار mock.patch هنگام اعمال وصله روی توصیفگرها. بازیابی مقادیر اصلی پس از اعمال وصله. وصله توسط Sean McCully ارائه شده است.
bpo-25672: در ماژول ssl، اگر انجام آن ایمن باشد، گزینهی حالت SSL_MODE_RELEASE_BUFFERS را فعال کنید.
bpo-26012: برای الگوی
**در pathlib.Path.[r]glob() وارد پیوندهای نمادین نشوید.bpo-24120: نادیده گرفتن PermissionError هنگام پیمایش یک درخت با pathlib.Path.[r]glob(). وصله توسط Ulrich Petri.
bpo-25447: ماژول fileinput اکنون در صورتی که ویژگی بافر نداشته باشد، sys.stdin را همانطور که هست استفاده میکند (سازگاری عقبگرد را بازیابی میکند).
bpo-25447: کپی کردن شیء دربرگیرندهی lru_cache() اکنون همیشه کار میکند، صرفنظر از نوع شیء دربرگرفتهشده (با بازگرداندن شیء اصلی بدون تغییر).
bpo-24103: رفع احتمال استفاده پس از آزادسازی (use after free) در ElementTree.XMLPullParser.
bpo-25860: تابع os.fwalk() دیگر با بروز خطا، دایرکتوریهای باقیمانده را رد نمیکند. وصلهی اصلی توسط سامسون لی (Samson Lee).
bpo-25914: اصلاح و سادهسازی OrderedDict.__sizeof__سیستم.
bpo-25902: رفع مشکلات مختلف شمارش ارجاع در پیمایش ElementTree.
bpo-25717: رفتار قبلی چشمپوشی از بیشتر خطاهای fstat() هنگام باز کردن پروندهها بازگردانده شد. این یک رگرسیون در نسخهی 3.5a1 بود و مانع از کار کردن پروندههای موقت ناشناس در موارد خاص شده بود.
bpo-24903: رفع رگرسیون در تعداد آرگومانهایی که compileall هنگام مشخص شدن 'd-' میپذیرد. بررسی تعداد آرگومانها به طور کامل حذف شد زیرا به هر حال هرگز به طور صحیح کار نمیکرد.
bpo-25764: در ماژول subprocess، هرگونه استثنای ناشی از شکست fork() هنگام استفاده از preexec_fn حفظ میشود.
bpo-6478: نهانگاه عبارات باقاعده (regexp cache) در _strptime اکنون پس از تغییر منطقهی زمانی با time.tzset() بازنشانی میشود.
bpo-14285: هنگام اجرای یک بسته با گزینهی «python -m package»، و در صورت شکست مقداردهی اولیهی بسته، یک ردگیری مناسب اکنون گزارش میشود. ماژول «runpy» اکنون اجازه میدهد استثناهای ناشی از مقداردهی اولیهی بسته به جای بالا بردن ImportError، به فراخواننده بازگردند.
bpo-19771: همچنین در runpy و گزینهی "-m"، اگر بسته حتی نتواند مقداردهی اولیه شود (مثلاً به دلیل وجود یک پروندهی معیوب
*.pyc)، پیام نامربوط ". . . is a package and cannot be directly executed" را حذف کنید.bpo-25177: رفع مشکل مربوط به میانگین اعداد بسیار کوچک و بسیار بزرگ. به عنوان اثر جانبی، statistics.mean و statistics.variance باید بهطور چشمگیری سریعتر باشند.
bpo-25718: رفع مشکل کپی کردن شیء همراه با وضعیت زمانی که مقدار بولی نادرست (false) است.
bpo-10131: رفع کپی عمیق اسناد minidom. بر اساس وصله ارائهشده توسط ماریان گانیسین (Marian Ganisin).
bpo-25725: رفع یک نشت ارجاع در pickle.loads() هنگام بارگذاری دادههای نامعتبر شامل دستورات تاپل.
bpo-25663: در تکمیلکنندهی Readline، از فهرست کردن نامهای سراسری تکراری جلوگیری کنید و پیش از جستجو در توابع توکار، فضای نام سراسری را جستجو کنید.
bpo-25688: رفع نشت پرونده در ElementTree.iterparse() که باعث ایجاد یک خطا میشود.
bpo-23914: رفع SystemError ایجادشده توسط پیکلساز روی دادههای پیکل خراب.
bpo-25691: رفع فروپاشی هنگام حذف ویژگیهای ElementTree.Element.
bpo-25624: اکنون ZipFile همیشه یک سرآیند ZIP_STORED برای ورودیهای پوشه مینویسد. وصله توسط Dingyuan Wang.
اگر میزبان از قبل حل شده است، getaddrinfo را رد کنید. وصله توسط A. Jesse Jiryu Davis.
bpo-26050: افزودن متد asyncio.StreamReader.readuntil(). وصله توسط Марк Коренберг.
bpo-25924: اجتناب از سریالسازی غیرضروری فراخوانیهای getaddrinfo(3) در نسخههای OS X ۱۰.۵ یا بالاتر. وصلهی اصلی توسط A. Jesse Jiryu Davis.
bpo-26406: اجتناب از سریالسازی غیرضروری فراخوانیهای getaddrinfo(3) در نسخههای فعلی OpenBSD و NetBSD. وصله توسط A. Jesse Jiryu Davis.
bpo-26848: رفع asyncio/subprocess.communicate() برای مدیریت ورودی خالی. وصله توسط Jack O'Connor.
bpo-27040: افزودن متد loop.get_exception_handler
bpo-27041: کتابخانهی asyncio: افزودن متد loop.create_future
bpo-27223: کتابخانهی asyncio: اصلاح _read_ready و _write_ready برای تبعیت از _conn_lost. وصله توسط لوکاش لانگا (Łukasz Langa).
bpo-22970: کتابخانهی asyncio: اصلاح ناسازگاری لغو کردن Condition.wait. وصله توسط دیوید کولز (David Coles).
IDLE¶
bpo-5124: جایگذاری متن انتخابشده اکنون باعث جایگزینی انتخاب در X11 میشود. این رفتار با نحوهی کارکرد جایگذاری در Windows، Mac، اکثر برنامههای مدرن لینوکس و ابزارکهای ttk مطابقت دارد. وصلهی اصلی از Serhiy Storchaka.
bpo-24759: روشن ساختن این موضوع در idlelib.idle_test.__init__ که پوشه یک پیادهسازی خصوصی از test.test_idle و ابزاری برای نگهدارندگان است.
bpo-27196: متوقف کردن هشدارهای 'ThemeChanged' هنگام اجرای آزمونهای IDLE. این هشدارها پس از سرکوب سایر هشدارها در #20567 همچنان باقی مانده بودند. اعمال راهحل update_idletasks ارائهشده توسط Serhiy Storchaka روی چهار پروندهی آزمون. ثبت این راهنمایی اضافی در idle_test/README.txt
bpo-20567: بازنگری پروندهی idle_test/README.txt همراه با توصیههایی دربارهی جلوگیری از پیامهای هشدار tk در آزمونها. اعمال این توصیهها به چند آزمون IDLE.
bpo-27117: سازگار کردن htest و turtledemo رنگبند با تمهای تیره. انتقال کد مربوط به پیکربندی رنگهای ابزارک متنی به یک تابع جدید.
bpo-26673: هنگامی که tk اندازهی فونت را 0 گزارش میکند، آن را به اندازهی 10 تغییر دهید. چنین فونتهایی در لینوکس مانع از باز شدن محاورهی پیکربندی میشدند.
bpo-21939: افزودن آزمون برای percolator در IDLE. وصلهی اصلی توسط Saimadhav Heblikar.
bpo-21676: افزودن آزمون برای محاورهی جایگزینی در IDLE. وصلهی اصلی توسط Saimadhav Heblikar.
bpo-18410: افزودن آزمون برای محاورهی جستجو در IDLE. وصلهی اصلی توسط Westley Martínez.
bpo-21703: افزودن آزمون برای تفویضکنندهی لغو (undo) در IDLE. وصلهی اولیه از Saimadhav Heblikar.
bpo-27044: افزودن ConfigDialog.remove_var_callbacks برای متوقف کردن نشتیهای حافظه.
bpo-23977: افزودن بررسیهای (assert) بیشتر به test_delegator.
bpo-20640: افزودن آزمونها برای idlelib.configHelpSourceEdit. وصله توسط Saimadhav Heblikar.
در بخش «تفاوتهای کنسول IDLE» در مستندات IDLE، روشن کنید که چگونه اجرا با IDLE روی sys.modules و جریانهای استاندارد تأثیر میگذارد.
bpo-25507: رفع تغییر نادرست در IOBinding که مانع از چاپ میشد. گسترش htest برای IOBinding جهت شامل شدن تمامی توابع اصلی IOBinding.
bpo-25905: بازگردانی تبدیل ناخواسته علامت ' به علامت ’ (علامت نقلقول تک راست) در پروندهی README.txt و باز کردن این پرونده و NEWS.txt با رمزگذاری 'ascii'. کدگذاری مجدد CREDITS.txt به utf-8 و باز کردن آن با 'utf-8'.
مستندات¶
bpo-19489: کادر جستجو از نوار کناری به سرآیند و پانویس هر صفحه منتقل شد. اصلاحیه توسط Ammar Askar.
bpo-24136: مستندسازی نحو (syntax) جدید بازکردن بسته PEP 448 در نسخهی ۳.۵.
bpo-26736: در صورت امکان، از HTTPS برای پیوندهای خارجی در مستندات استفاده کنید.
bpo-6953: بازسازی مستندات ماژول Readline برای دستهبندی توابع مرتبط در کنار یکدیگر، و افزودن جزئیات بیشتر مانند اینکه به چه توابع و متغیرهای زیربنایی Readline دسترسی پیدا میشود.
bpo-23606: افزودن یادداشت به مستندات ctypes در خصوص cdll.msvcrt.
bpo-25500: اصلاح مستندات به نحوی که ادعا نکنند __import__ در محدودهی سراسری جستجو میشود.
bpo-26014: بهروزرسانی مستندات بستهبندی نسخهی 3.x: * پیوندهای «همچنین ببینید» به مستندات جدید اکنون در صفحات قدیمیتر ارائه شدهاند * پیوندها به مستندات setuptools بهروزرسانی شدهاند
آزمونها¶
bpo-21916: افزودن آزمونها برای ماژول turtle. وصله توسط ingrid، Gregory Loyse و Jelle Zijlstra.
bpo-26523: استخر نخ (thread pool) در ماژول چندپردازشی (multiprocessing.dummy.Pool) آزموده نشده بود.
bpo-26015: افزودن آزمونهای جدید برای ترشیکردن (pickling) پیمایشگرهای دنبالههای تغییرپذیر.
bpo-26325: افزودن تابع test.support.check_no_resource_warning() برای بررسی اینکه هیچ هشدار ResourceWarning صادر نشود.
bpo-25940: تغییر test_ssl برای استفاده از self-signed.pythontest.net. این کار از اتکا به svn.python.org که اخیراً گواهی ریشهی خود را تغییر داده است، جلوگیری میکند.
bpo-25616: آزمونهای OrderedDict از test_collections به پروندهی جداگانهی test_ordered_dict استخراج شدند.
bpo-26583: در صورتی که پروندههای بایتکد قابل نوشتن نباشند، test_timestamp_overflow در test_import نادیده گرفته شود.
ساخت¶
bpo-26884: رفع مشکل پیوند دادن ماژولهای توسعهای برای ساختهای متقابل (cross builds). وصله توسط Xavier de Gaye.
bpo-22359: غیرفعال کردن قوانین مربوط به اجرای _freeze_importlib و pgen هنگام کامپایل متقابل. خروجی این برنامهها معمولاً به هر حال با سورسکد ذخیره میشود و هنگام انجام ساخت بومی (native build) همچنان بازسازی میشود. وصله توسط Xavier de Gaye.
bpo-27229: اصلاح قانون pgen برای کامپایل تقاطعی در ساختهای دروندرختی (in-tree builds). وصله توسط Xavier de Gaye.
bpo-21668: پیوند دادن ماژولهای audioop، _datetime و _ctypes_test به libm، به جز در سیستمعامل Mac OS X. وصله نوشتهشده توسط Xavier de Gaye.
bpo-25702: گزینهی پیکربندی --with-lto اضافه شده است که بهینهسازیهای زمان پیوند را در زمان ساخت طی یک دستور make profile-opt فعال میکند. مشخص است که برخی کامپایلرها و ابزارها هنگام استفاده از LTO کد پایداری تولید نمیکنند؛ پیش از اتکا به آن، حتماً همهچیز را به دقت آزمون کنید. این گزینه میتواند نسبت به profile-opt خالی، سرعت را چند درصد افزایش دهد.
bpo-26624: افزودن اعتبارسنجی نسخهی ucrtbase[d].dll همراه با هشدار برای نسخههای قدیمی.
bpo-17603: جلوگیری از خطای مربوط به پروندهی ناموجود fileblocks.o با استفاده از بررسی سطح پایینتر برای st_blocks در struct stat.
bpo-26079: رفع پوشهی خروجی ساخت برای tix-8.4.3.6. وصله توسط Bjoern Thiel.
bpo-26465: بهروزرسانی ساختهای ویندوز برای استفاده از OpenSSL 1.0.2g.
bpo-24421: کامپایل ماژول _math.c یک بار و پیش از ساخت افزونهها انجام شود. پیشتر اگر ساختهای math و cmath همزمان انجام میشدند، ممکن بود به درستی کامپایل نشوند.
bpo-25348: افزودن آرگومانهای
--pgoو--pgo-jobبهPCbuild\build.batبرای ساخت با بهینهسازی مبتنی بر پروفایل (Profile-Guided Optimization). اسکریپت قدیمیPCbuild\build_pgo.batاکنون منسوخ شده است و به سادگیPCbuild\build.bat --pgo %*را فراخوانی میکند.bpo-25827: افزودن پشتیبانی از ساخت با ICC به
configure، از جمله یک پرچم جدید--with-icc.bpo-25696: رفع مشکل نصب پایتون روی یونیکس با دستور make -j9.
bpo-26930: بهروزرسانی نصبکنندهی فقط ۳۲ بیتی OS X 10.5+ برای ساخت و پیوند با OpenSSL 1.0.2h.
bpo-26268: بهروزرسانی ساختهای ویندوز برای استفاده از OpenSSL 1.0.2f.
bpo-25136: پشتیبانی از کتابخانههای stub مربوط به SDK متنی جدید در Apple Xcode 7.
bpo-24324: هنگامی که از gcc استفاده میکنید، هشدارهای مربوط به کدهای غیرقابلدسترس را فعال نکنید؛ زیرا این گزینه در نسخههای قدیمیتر gcc به درستی کار نمیکند و از نسخهی gcc-4.5 به بعد بیصدا حذف شده است.
Windows¶
bpo-27053: اسکریپت make_zip.py را بهروزرسانی میکند تا پروندهی ZIP کتابخانه به درستی تولید شود.
bpo-26268: بهروزرسانی اسکریپت prepare_ssl.py برای مدیریت انتشارهای OpenSSL که شامل محتویات پوشهی include نیستند (یعنی نسخههای 1.0.2e و بعد از آن).
bpo-26071: باینریهای ایجادشده توسط bdist_wininst در شروع به کار و یافتن پایتون ۳۲ بیتی دچار خطا میشوند.
bpo-26073: بهروزرسانی فهرست اعداد جادویی در راهانداز
bpo-26065: حذف venv از کتابخانه هنگام تولید توزیع قابل تعبیه (embeddable).
bpo-17500: حذف آیکونهای استفادهنشده و منسوخ. (همچنین ببینید: https://github.com/python/pythondotorg/issues/945)
Tools/Demos¶
bpo-26799: اصلاح python-gdb.py: انواع C را یکجا هنگام بارگذاری کد پایتون دریافت نکنید، بلکه انواع C را بر حسب تقاضا دریافت کنید. انواع C ممکن است تغییر کنند اگر python-gdb.py پیش از فایل اجرایی پایتون بارگذاری شود. این وصله توسط Thomas Ilsche نوشته شده است.
bpo-26271: اصلاح ابزار Freeze برای استفادهی صحیح از پرچمهای ارسالشده از طریق configure. وصله توسط Daniel Shaulov.
bpo-26489: افزودن پشتیبانی از بازکردن بستهی دیکشنری به Tools/parser/unparse.py. وصله توسط Guo Ci Teo.
bpo-26316: اصلاح خطای املایی نام متغیر در Argument Clinic.
پایتون ۳.۵.۱ نهایی¶
تاریخ انتشار: ۲۰۱۵-۱۲-۰۶
هسته و توکارها (Core and Builtins)¶
bpo-25709: مشکل الحاق رشتهی درونجایی (in-place string concatenation) و نهانگاه (cache) utf-8 برطرف شد.
Windows¶
bpo-25715: نصبکنندهی پایتون ۳.۵.۱ مسیر ارتقای اشتباه و منطق نادرستی را برای شناسایی راهانداز (launcher) نشان میدهد.
نامزد انتشار ۱ پایتون ۳.۵.۱¶
تاریخ انتشار: ۲۰۱۵-۱۱-۲۲
هسته و توکارها (Core and Builtins)¶
bpo-25630: رفع یک خطای احتمالی segfault هنگام تحلیل آرگومان در توابعی که مسیرهای سامانه فایلبندی را میپذیرند.
bpo-23564: یک بررسی صحت تا حدی آسیبدیده در بخشهای داخلی _posixsubprocess در رابطه با نحوهی ارسال fds_to_pass به فرزند برطرف شد. این باگ هیچ تأثیر واقعی نداشت زیرا subprocess.py از قبل از آن جلوگیری کرده بود.
bpo-25388: رفع فروپاشی توکنساز هنگام پردازش کد منبع غیرقابلرمزگشایی دارای یک بایت تهی (null byte).
bpo-25462: هش کلید اکنون فقط یک بار در بیشتر عملیاتها در پیادهسازی C از OrderedDict محاسبه میشود.
bpo-22995: پیادهسازی پیشفرض __reduce__ و __reduce_ex__ اکنون انواعی از پیشساخته را که دارای __new__ تعریفنشده هستند، رد میکند.
bpo-25555: اصلاح پارسر و درخت نحوی انتزاعی (AST): پر کردن lineno و col_offset گره "arg" هنگام کامپایل درخت نحوی انتزاعی (AST) از شیءهای پایتون.
bpo-24802: جلوگیری از سرریز بافر هنگام ارسال شیءهای شبهبایت به ()int، ()float، ()compile، ()exec و ()eval. این شیءها لزوماً با یک بایت تهی پایان نمییابند، اما توابع فرض کرده بودند که چنین است.
bpo-24726: رفع فروپاشی و نشت NULL در ()repr از OrderedDict که توسط فراخوانیهای مستقیم متدهای dict تغییر یافته بود.
bpo-25449: پیمایش OrderedDict با کلیدهای دارای هش ناپایدار اکنون خطای KeyError را هم در پیادهسازی C و هم در پیادهسازی پایتون بالا میآورد.
bpo-25395: رفع فروپاشی هنگام جمعآوری زباله (garbage collection) از ساختارهای تو در تو و عمیق OrderedDict.
bpo-25274: تابع ()sys.setrecursionlimit اکنون بسته به عمق بازگشتی فعلی، اگر حد بازگشتی جدید خیلی کم باشد، یک RecursionError ایجاد میکند. همچنین فرمول «نشانگر سطح پایین» (lower-water mark) را برای یکنواخت کردن آن تغییر دهید. این نشانگر برای تصمیمگیری دربارهی زمان بازنشانی پرچم سرریز وضعیت نخ استفاده میشود.
bpo-24402: اصلاح ()input برای نمایش اعلان به خروجی استاندارد (stdout) تغییرمسیریافته هنگامی که ()sys.stdout.fileno با شکست مواجه میشود.
bpo-24806: جلوگیری از ارثبری چندگانه برای انواعی از پیشساخته که مجاز به داشتن زیرکلاس نیستند.
bpo-24848: رفع تعدادی از باگها در کدگشایی UTF-7 دادههای ناقصفرم.
bpo-25280: پیامهای رد ایمپورت که در حالت پرجزئیات (-v) صادر میشوند، دیگر دو بار قالببندی نمیشوند.
bpo-25003: روی سیستمعامل Solaris 11.3 یا جدیدتر، تابع os.urandom() اکنون بهجای تابع getentropy() از تابع getrandom() استفاده میکند. تابع getentropy() برای تولید آنتروپی باکیفیت بسیار بالا مسدود کننده است، در حالی که os.urandom() به چنین آنتروپی باکیفیت بالایی نیاز ندارد.
bpo-25182: ماژول stdprinter (که پیش از بارگذاری ماژول io در هنگام راهاندازی به عنوان sys.stderr استفاده میشد) اکنون از هندلر خطای backslashreplace استفاده میکند.
bpo-25131: مطابقت دادن شمارهی سطر و آفست ستون در مقادیر لفظی و درککنندههای مجموعهها/دیکشنریها با آکولاد بازکننده.
bpo-25150: پنهان کردن نمادهای خصوصی
_Py_atomic_xxxاز سرآیند عمومی Python.h برای رفع خطای کامپایل با OpenMP. تابع PyThreadState_GET() برای جلوگیری از ناسازگاریهای ABI به نام مستعاری برای PyThreadState_Get() تبدیل میشود.
کتابخانه¶
bpo-25626: تغییر سه تابع zlib به گونهای که اندازههایی را بپذیرند که در Py_ssize_t جا میشوند، اما به صورت داخلی آن اندازهها را به UINT_MAX محدود میکنند. این کار یک رگرسیون را در نسخهی ۳.۵ حل میکند که در آن GzipFile.read() در خواندن قطعات بزرگتر از ۲ یا ۴ گیگابایت شکست میخورد. این تغییر روی پارامتر max_length از تابع zlib.Decompress.decompress()، پارامتر bufsize از تابع zlib.decompress() و پارامتر length از تابع zlib.Decompress.flush() تأثیر میگذارد.
bpo-25583: جلوگیری از خطاهای نادرست ایجادشده توسط os.makedirs(exist_ok=True) هنگامی که سیستمعامل به خطاهایی مانند EACCES نسبت به EEXIST اولویت میدهد.
bpo-25593: تغییر معناشناسی EventLoop.stop() در asyncio.
bpo-6973: وقتی میدانیم که یک فرایند subprocess.Popen مرده است، به متدهای send_signal()، terminate() یا kill() اجازه ندهید کاری انجام دهند؛ زیرا ممکن است به طور بالقوه به یک فرایند دیگر سیگنال ارسال کنند.
bpo-25590: در تکمیلکنندهی Readline، تابع getattr() فقط یک بار به ازای هر صفت فراخوانی میشود.
bpo-25498: رفع فروپاشی هنگام جمعآوری زبالهی اشیاء ctypes که با پوشش دادن یک memoryview ایجاد شدهاند. این یک رگرسیون ایجادشده در نسخهی ۳.۵a1 بود. بر اساس وصلهای از Eryksun.
bpo-25584: افزودن "escape" به فهرست __all__ در ماژول glob.
bpo-25584: رفع عملکرد بازگشتی glob() با الگوهایی که با
**شروع میشوند.bpo-25446: رفع رگرسیون در پشتیبانی AUTH LOGIN ماژول smtplib.
bpo-18010: رفع تابع جستجوی ماژول وبسرور pydoc برای مدیریت استثناهای ناشی از ایمپورت کردن بستهها.
bpo-25554: خلاص شدن از شر ارجاعات دایرهای در تجزیه عبارات باقاعده.
bpo-25510: تابع fileinput.FileInput.readline() اکنون اگر FileInput با حالت (mode) دودویی (binary) باز شده باشد، در انتهای کار بهجای '' مقدار b'' را برمیگرداند. وصله توسط Ryosuke Ito.
bpo-25503: رفع مشکل تابع inspect.getdoc() برای رشتهمستندهای ارثبریشدهی ویژگیها. وصلهی اولیهی John Mark Vandenberg.
bpo-25515: همیشه از os.urandom به عنوان منبع تولید اعداد تصادفی در uuid.uuid4 استفاده کنید.
bpo-21827: رفع مشکل تابع textwrap.dedent() برای حالتی که بزرگترین فضای خالی مشترک، زیررشتهای از کوچکترین فضای خالی پیشتاز باشد. بر اساس وصلهی Robert Li.
bpo-25447: اشیاء پوششی (wrapper) در lru_cache() اکنون میتوانند کپی و پیکل شوند (با بازگرداندن شیء اصلی بدون تغییر).
bpo-25390: بخش typing: عدم فروپاشی در Union[str, Pattern].
bpo-25441: بخش asyncio: ایجاد خطا از تابع drain() هنگامی که سوکت بسته است.
bpo-25410: پاکسازی و رفع اشکالات جزئی در پیادهسازی C از OrderedDict.
bpo-25411: بهبود پشتیبانی از یونیکد در SMTPHandler از طریق استفادهی بهتر از بستهی email. با تشکر از کاربر simon04 برای ارسال وصله.
bpo-25407: حذف اشارهها به حذفشدن ماژول formatter در پایتون ۳.۶.
bpo-25406: رفع اشکالی در پیادهسازی C از OrderedDict.move_to_end() که پس از انتقال چند آیتم به ابتدای دیکشنری مرتبشده، باعث خطای قطعهبندی (segmentation fault) یا توقف در حین پیمایش میشد.
bpo-25364: ماژول zipfile اکنون در نسخههایی که نخها (threads) در آنها غیرفعال شدهاند نیز کار میکند.
bpo-25328: کلاس SMTPChannel در smtpd اکنون اگر هر دو مقدار decode_data و enable_SMTPUTF8 روی true تنظیم شده باشند، به درستی یک خطای ValueError ایجاد میکند.
bpo-25316: کتابخانهی distutils هنگامی که MSVC نصب نشده باشد، بهجای DistutilsPlatformError خطای OSError ایجاد میکند.
bpo-25380: رفع پروتکل برای آپکد STACK_GLOBAL در pickletools.opcodes.
bpo-23972: بهروزرسانی متد ایجاد دیاترام asyncio بهطوری که اجازه میدهد گزینههای سوکت reuseport و reuseaddr پیش از اتصال سوکت تنظیم شوند. با الگوبرداری از متد موجود create_server در asyncio، گزینهی reuseaddr برای سوکتهای دیاترام در صورتی که سیستمعامل 'posix' باشد (مگر اینکه پلتفرم Cygwin باشد) بهطور پیشفرض روی True تنظیم میشود. وصله از Chris Laws.
bpo-25304: افزودن تابع asyncio.run_coroutine_threadsafe(). این امکان را به شما میدهد که یک همروال را از یک نخ دیگر به یک حلقه ارسال کنید و یک concurrent.futures.Future را دریافت کنید. توسّط Vincent Michel.
bpo-25232: اصلاح CGIRequestHandler برای جداسازی پرسوجو از نشانیوب در اولین علامت سوال (؟) بهجای آخرین علامت. وصله از Xiang Zhang.
bpo-24657: جلوگیری از فروپاشی اسلشها در بخش پرسوجوی نشانیوب توسط CGIRequestHandler گویی که یک مسیر است. وصله از Xiang Zhang.
bpo-24483: پیادهسازی C از functools.lru_cache() اکنون هش کلید را فقط یک بار محاسبه میکند.
bpo-22958: سازنده و متد update در weakref.WeakValueDictionary اکنون آرگومانهای کلیدواژهای self و dict را میپذیرند.
bpo-22609: سازندهی collections.UserDict اکنون آرگومان کلیدواژهای self را میپذیرد.
bpo-25111: اصلاح مقایسهی traceback.FrameSummary.
bpo-25262: افزودن پشتیبانی از آپکد BINBYTES8 در پیادهسازی پایتون برای unpickler. ۳۲ بیت بالایی از اندازهی ۶۴ بیتی برای آپکدهای BINUNICODE8 و BINBYTES8 دیگر در پلتفرمهای ۳۲ بیتی در پیادهسازی C به طور صامت نادیده گرفته نمیشوند.
bpo-25034: رفع مشکل string.Formatter در شمارهگذاری خودکار و format_specهای تو در تو. وصله از Anthon van der Neut.
bpo-25233: بازنویسی بخشهای داخلی asyncio.Queue و asyncio.Semaphore برای قابلفهمتر و درستتر شدن.
bpo-25203: تابع ناموفق readline.set_completer_delims() دیگر ماژول را در وضعیت نامعتبری رها نمیکند.
bpo-23600: پیادهسازی پیشفرض tzinfo.fromutc() در برخی موارد نتایج اشتباهی برمیگرداند.
bpo-23329: اجازه دادن به ماژول ssl تا با نسخههای قدیمیتر LibreSSL ساخته شود.
جلوگیری از سرریز (overflow) در _Unpickler_Read.
bpo-25047: اعلان کدگذاری XML که توسط Element Tree نوشته میشود، اکنون به بزرگی و کوچکی حروف دادهشده توسط کاربر احترام میگذارد. این قابلیت نوشتن نامهای کدگذاری با حروف بزرگ مانند "UTF-8" را که در پایتون ۲ کار میکرد، بازیابی میکند.
bpo-25135: ایمنتر کردن deque_clear() با خالی کردن صف دوطرفه پیش از پاکسازی. این کار به جلوگیری از مشکلات احتمالی بازورودپذیری کمک میکند.
bpo-19143: ماژول platform اکنون نسخهی ویندوز را از kernel32.dll میخواند تا از لایههای سازگاری (shims) جلوگیری شود.
bpo-25092: رفع خطای datetime.strftime() هنگامی که errno از پیش روی EINVAL تنظیم شده بود.
bpo-23517: رفع گرد کردن در متدهای fromtimestamp() و utcfromtimestamp() از datetime.datetime: میکروثانیهها اکنون به نزدیکترین عدد گرد میشوند و در صورت تساوی، به نزدیکترین عدد زوج گرد میشوند (ROUND_HALF_EVEN)، بهجای اینکه به سمت منفی بینهایت گرد شوند (ROUND_FLOOR). مهم است که این متدها از همان حالت گرد کردنی استفاده کنند که datetime.timedelta برای حفظ این ویژگی استفاده میکند: (datetime(1970,1,1) + timedelta(seconds=t)) == datetime.utcfromtimestamp(t). این همچنین همان حالت گرد کردنی است که مثلاً توسط round(float) استفاده میشود.
bpo-25155: رفع مشکل datetime.datetime.now() و datetime.datetime.utcnow() در ویندوز برای پشتیبانی از تاریخهای پس از سال ۲۰۳۸. این یک رگرسیون بود که در پایتون ۳.۵.۰ معرفی شده بود.
bpo-25108: حذف قابهای داخلی از عملکردهای ردگیری print_stack()، format_stack() و extract_stack() که بدون آرگومان فراخوانی شدهاند.
bpo-25118: رفع یک رگرسیون در پایتون ۳.۵.۰ در os.waitpid() روی ویندوز.
bpo-24684: متد socket.socket.getaddrinfo() اکنون به جای فراخوانی متد encode() میزبان، PyUnicode_AsEncodedString() را فراخوانی میکند تا رشتههای سفارشی دارای متد encode() که رشتهی بایتی بر نمیگردانند را به درستی مدیریت کند. کدگذار کُدک IDNA اکنون مستقیماً فراخوانی میشود و دیگر متد encode() رشته فراخوانی نمیشود.
bpo-25060: محاسبهی صحیح میزان استفاده از پشته توسط آپکد BUILD_MAP.
bpo-24857: مقایسه کردن call_args با یک دنبالهی طولانی اکنون به جای بالا آوردن یک استثنا، نتیجهی بولی را به درستی برمیگرداند. توسط A Kaptur.
bpo-23144: اطمینان حاصل کنید که HTMLParser.feed() همهی دادهها را برمیگرداند، حتی زمانی که convert_charrefs مقدار True دارد.
bpo-24982: متد shutil.make_archive() با قالب "zip" اکنون ورودیهایی برای پوشهها (از جمله پوشههای خالی) در پروندهی ZIP اضافه میکند.
bpo-25019: رفع یک فروپاشی ناشی از تنظیم کلید غیررشتهای در تجزیهکنندهی expat. بر اساس وصلهی ارائهشده توسط جان لیچ (John Leitch).
bpo-16180: اگر پرونده خطای نحو داشته باشد، pdb را خارج کنید، به جای اینکه کاربر را در یک حلقهی بیپایان گرفتار کنید. وصله توسط Xavier de Gaye.
bpo-24891: رفع یک شرط رقابت در راهاندازی پایتون اگر توصیفگر پروندهی stdin (0)، stdout (1) یا stderr (2) در حالی که پایتون در حال ایجاد اشیاء sys.stdin، sys.stdout و sys.stderr است، بسته شود. این ویژگیها اکنون اگر ایجاد شیء با شکست مواجه شود، به جای بالا آوردن استثنای OSError روی None تنظیم میشوند. وصلهی اولیه توسط مارکو پائولینی (Marco Paolini) نوشته شده است.
bpo-24992: رفع خطای مدیریت و یک شرط رقابت (مربوط به زبالهروبی) در سازندهی collections.OrderedDict.
bpo-24881: رفع تنظیم حالت دودویی (binary mode) در پیادهسازی پایتونی FileIO روی ویندوز و Cygwin. وصلهای از Akira Li.
bpo-25578: رفع (یک) نشتی حافظهی دیگر در SSLSocket.getpeercer().
bpo-25530: غیرفعال کردن پروتکل آسیبپذیر SSLv3 به طور پیشفرض هنگام ایجاد ssl.SSLContext.
bpo-25569: رفع نشتی حافظه در SSLSocket.getpeercert().
bpo-25471: سوکتهای برگرداندهشده از accept() نباید به صورت مسدودنشدنی ظاهر شوند.
bpo-25319: هنگامی که threading.Event دوباره مقداردهی اولیه میشود، شرط زیرین باید به جای قفل بازگشتی از یک قفل معمولی استفاده کند.
bpo-21112: رفع رگرسیون در unittest.expectedFailure روی زیرکلاسها. وصلهای از Berker Peksag.
bpo-24764: تابع cgi.FieldStorage.read_multi() اکنون سرآیند Content-Length را در سرآیندهای بخش نادیده میگیرد. وصله نوشتهشده توسط Peter Landry و بازبینیشده توسط Pierre Quentel.
bpo-24913: رفع خطای سرریز (overrun) در deque.index(). پیدا شده توسط John Leitch و Bryce Darling.
bpo-24774: رفع رشته مستند (docstring) در http.server.test. وصلهای از Chiu-Hsiang Hsu.
bpo-21159: بهبود پیام در configparser.InterpolationMissingOptionError. وصلهای از Łukasz Langa.
bpo-20362: احترام درست به TestCase.longMessage در assertRegex. وصلهای از Ilia Kurenkov.
bpo-23572: رفع functools.singledispatch روی کلاسها با فراکلاسهای نادرست. وصله از Ethan Furman.
asyncio: تابع ensure_future() اکنون شیءهای انتظارپذیر (awaitable) را میپذیرد.
IDLE¶
bpo-15348: متوقف کردن موتور اشکالزدایی (معمولاً در یک فرایند کاربر) پیش از بستن پنجرهی اشکالزدایی (که در فرایند IDLE اجرا میشود). این کار از بروز خطاهای RuntimeErrors که گرفته و نادیده گرفته میشدند، جلوگیری میکند.
bpo-24455: جلوگیری از فریز شدن IDLE در حالتهای: الف) بستن پوسته در حالی که اشکالزدایی فعال است (15347)؛ ب) بستن اشکالزدایی با دکمهی [X] (15348)؛ و ج) فعالسازی مجدد اشکالزدایی در حالی که از پیش فعال است (24455). وصل ارائه شده توسط Mark Roseman با اعمال دو تغییر این کار را انجام میدهد. ۱. متوقف و ازسرگیری متد gui.interaction با مکانیزم tcl vwait که برای همین منظور در نظر گرفته شده است (بهجای استفاده از root.mainloop و .quit). ۲. در gui.run، اجازه دهید هر تعامل موجود ابتدا پایان یابد.
تغییر «The program» به «Your program» در پیام «kill program?» در IDLE تا روشنتر شود که برنامهی مورد نظر، برنامهی در حال اجرای کاربر است، نه خود IDLE.
bpo-24750: بهبود ظاهر نوار وضعیت پنجرهی ویرایشگر IDLE. وصل توسط Mark Roseman.
bpo-25313: تغییر نحوهی مدیریت پوستههای رنگی متن توکار جدید برای رسیدگی بهتر به مشکل سازگاری ایجاد شده توسط افزودن IDLE Dark. استفادهی سازگار از idleConf.CurrentTheme بازنگریشده در همهی بخشهای idlelib.
bpo-24782: پیکربندی افزونهها اکنون بهجای یک محاورهی جداگانه، به شکل یک زبانک در محاورهی تنظیمات IDLE قرار دارد. زبانکهای پیشین اکنون به شکل یک فهرست مرتبشده درآمدهاند. وصل توسط Mark Roseman.
bpo-22726: فعالسازی مجدد دکمهی راهنمای محاورهی پیکربندی همراه با مقداری محتوا دربارهی سایر دکمهها و پوستهی جدید IDLE Dark.
bpo-24820: IDLE اکنون دارای یک پوستهی رنگی متن توکار به نام «IDLE Dark» است. این پوسته کموبیش نسخهی معکوسشدهی IDLE Classic با پسزمینهی آبی کبالت است. رشتهها، کامنتها، کلیدواژهها، ... همچنان سبز، قرمز، نارنجی، ... هستند. برای استفاده از آن در نسخههای عرضهشدهی IDLE پیش از نوامبر ۲۰۱۵، دکمهی «Save as New Custom Theme» را فشار دهید و نام جدیدی مانند «Custom Dark» را وارد کنید. پوستهی سفارشی با هر نسخهای از IDLE کار خواهد کرد و قابل ویرایش است.
bpo-25224: پروندهی README.txt اکنون یک اندیس idlelib برای توسعهدهندگان IDLE و کاربران کنجکاو است. محتوای قبلی کاربر اکنون در فصل مستندات IDLE قرار دارد. «IDLE» اکنون مخفف عبارت «Integrated Development and Learning Environment» است.
bpo-24820: کاربران اکنون میتوانند رنگهای نقطهی ایست (breakpoint) را در مسیر Settings -> Custom Highlighting تنظیم کنند. وصل اولیهی توسط Mark Roseman.
bpo-24972: پسزمینهی انتخاب غیرفعال اکنون در تمام سیستمها با پسزمینهی انتخاب فعال، همانطور که توسط کاربران پیکربندی شده است، مطابقت دارد. آیتمهای پیدا شده اکنون همیشه در ویندوز برجسته میشوند. وصل اولیه توسط Mark Roseman.
bpo-24570: Idle: کاری میکند که کادرهای راهنمای فراخوانی (calltip) و تکمیل در سیستمهای مک که تحت تأثیر یک رگرسیون tk قرار گرفتهاند، ظاهر شوند. وصل اولیه توسط Mark Roseman.
bpo-24988: منوهای زمینهی Idle ScrolledList (که در اشکالزدا استفاده میشوند) اکنون روی Mac Aqua کار میکنند. وصل توسط Mark Roseman.
bpo-24801: امکان کار کردن کلیک راست برای منوی زمینه را روی Mac Aqua فراهم میکند. وصل توسط Mark Roseman.
bpo-25173: مرتبط کردن کادرهای پیام tkinter با یک ابزارک خاص. برای سیستم عامل Mac OSX، آنها را به یک «برگه» تبدیل کنید. وصل توسط Mark Roseman.
bpo-25198: بهبود نمایشگر اولیهی html که اکنون برای راهنمای Idle استفاده میشود. تورفتگی مناسب برای متنهای با فاصله ثابت (وصل توسط Mark Roseman). دادن یک پسزمینهی آبی مایل به خاکستری روشن بسیار شبیه به Sphinx به قطعه کد. استفادهی مجدد از عرض و ارتفاع اولیه تنظیمشده توسط کاربران برای پوسته و ویرایشگر. هنگامی که منوی فهرست مطالب (TOC) استفاده میشود، سرآیند بخش را در بالای صفحه قرار دهید.
bpo-25225: خلاصهسازی و بازنویسی بخش مستندات Idle دربارهی رنگهای متن.
bpo-21995: توضیح برخی از تفاوتهای میان IDLE و پایتون کنسول.
bpo-22820: توضیح نیاز به print هنگام اجرای پرونده از ویرایشگر Idle.
bpo-25224: مستندات: افزودن به فهرست ویژگیهای Idle و بخش بدون فرایند فرزند (no-subprocess).
bpo-25219: بهروزرسانی مستندات برای گزینههای خط فرمان Idle. برخی از آنها گم شده بودند و یادداشتها درست نبودند.
bpo-24861: بیشتر ماژول idlelib خصوصی است و ممکن است تغییر کند. از idlelib.idle.* برای شروع Idle استفاده کنید. بخش idlelib.__init__.__doc__ را ببینید.
bpo-25199: ماژول Idle: افزودن کامنتهای همگامسازی برای نگهدارندگان آینده.
bpo-16893: جایگزینی help.txt با help.html برای نمایش مستندات Idle. پروندهی جدید idlelib/help.html نسخهی پاکسازیشدهی Doc/build/html/library/idle.html است. این پرونده ظاهر بهتری نسبت به help.txt دارد و مستندسازی Idle را در زمان انتشار به شکل بهتری انجام خواهد داد. نمایشگر html متعلق به tkinter که برای این پرونده کار میکند توسط Mark Roseman نوشته شده است. کلاس EditorWindow.HelpDialog و پروندهی helt.txt که اکنون بدون استفاده هستند، منسوخ شدند.
bpo-24199: منسوخ کردن idlelib.idlever استفادهنشده با احتمال حذف در نسخهی 3.6.
bpo-24790: حذف کد اضافی (که باعث تداخلهای ۲ و ۳ نیز میشود).
مستندات¶
bpo-22558: افزودن پیوندهای مستندات باقیمانده به کد منبع برای ماژولهای پایتونی. وصله توسط Yoni Lavi.
bpo-12067: بازنویسی بخش «مقایسهها» (Comparisons) در فصل «عبارتها» (Expressions) از مرجع زبان. برخی از جزئیات مقایسهی انواع مختلف نادرست یا مبهم بود. شیء NotImplemented فقط در سطحی پایینتر از فصل عبارتها مرتبط است. جزئیات مقایسهی شیءهای range()، به همراه رفتار پیشفرض و پیشنهادهای سازگاری برای کلاسهای تعریفشده توسط کاربر اضافه شد. وصلهای از Andy Maier.
bpo-24952: شفافسازی آرگومان اندازهی پیشفرض تابع stack_size() در ماژولهای threading و _thread. وصله از Mattip.
bpo-23725: بازنگری کامل مستندات tempfile. اشاره به وضعیت منسوخ (deprecated) بودن mktemp. وصلهای از Zbigniew Jędrzejewski-Szmek.
bpo-24808: بهروزرسانی انواع (types) برخی از فیلدهای PyTypeObject. وصله توسط Joseph Weston.
bpo-22812: رفع مثالهای کشف آزمون unittest. وصلهای از Pam McA'Nulty.
آزمونها¶
bpo-25449: افزودن آزمونها برای زیرکلاسهای OrderedDict.
bpo-25099: جلوگیری از شکست خوردن test_compileall زمانی که امکان نوشتن روی یک ورودی در sys.path وجود ندارد (که معمولاً در نصبهای مدیریتی روی ویندوز دیده میشود).
bpo-23919: جلوگیری از ظاهر شدن محاورههای assert در مجموعه آزمون (test suite).
پروندهی
PCbuild\rt.batاکنون تعداد نامحدودی آرگومان را برای ارسال به regrtest.py میپذیرد. پیشتر محدودیتی معادل ۹ آرگومان وجود داشت.
ساخت¶
bpo-24915: افزودن پشتیبانی LLVM برای ساختهای PGO و استفاده از مجموعه آزمون (test suite) برای تولید دادههای پروفایل. وصلهی اولیه از Alecsandru Patrascu از شرکت Intel.
bpo-24910: بستههای MSI ویندوز اکنون دارای نامهای نمایشی یکتا هستند.
bpo-24986: اکنون ساخت پایتون روی ویندوز در صورت عدم دسترسی به کتابخانههای خارجی بدون خطا امکانپذیر است.
Windows¶
bpo-25450: بهروزرسانی میانبرها برای اجرای پایتون در پوشهی نصب.
bpo-25164: تغییر پوشهی نصب پیشفرض تمام کاربران به منظور تطابق با پوشهی مختص هر کاربر.
bpo-25143: بهبود پیامهای خطای نصبکننده برای پلتفرمهای پشتیبانینشده.
bpo-25163: نمایش پوشهی درست در نصبکننده هنگام استفاده از تنظیمات غیرپیشفرض.
bpo-25361: غیرفعالسازی استفاده از دستورالعملهای SSE2 در ساخت ۳۲ بیتی ویندوز.
bpo-25089: افزودن گزارشگیری به نصبکننده برای حالتی که راهانداز در هنگام ارتقا انتخاب نشده است.
bpo-25165: حذفنصب ویندوز نباید در صورت باقی ماندن نسخههای دیگر، راهانداز را حذف کند.
bpo-25112: آیکونها در راهانداز py.exe گم شدهاند.
bpo-25102: نصبکنندهی ویندوز پیشکامپایل را برای -O یا -OO انجام نمیدهد.
bpo-25081: باعث میشود دکمهی Back در نصبکننده هنگام ارتقا به صفحهی ارتقا بازگردد.
bpo-25091: افزایش اندازهی قلم نصبکننده.
bpo-25126: روشن ساختن این موضوع که نصبکنندهی غیروب برخی از کامپوننتها را بارگیری خواهد کرد.
bpo-25213: بازیابی requestedExecutionLevel به مانیفست برای غیرفعال کردن مجازیسازی UAC.
bpo-25022: پوشهی بسیار قدیمی PC/example_nt/ حذف شد.
Tools/Demos¶
bpo-25440: اصلاح خروجی python-config --extension-suffix.
پایتون ۳.۵.۰ نهایی¶
تاریخ انتشار: ۲۰۱۵-۰۹-۱۳
ساخت¶
bpo-25071: نصبکنندهی ویندوز نباید هنگام نصب بیصدا پارامتر TargetDir را الزام کند.
نسخهی نامزد انتشار ۴ پایتون ۳.۵.۰¶
تاریخ انتشار: ۲۰۱۵-۰۹-۰۹
کتابخانه¶
bpo-25029: رفع MemoryError در test_strptime.
ساخت¶
bpo-25027: بازگردانی گزینههای ساخت نیمهاستاتیک و افزودن vcruntime140.dll به نصب ویندوز.
نسخهی نامزد انتشار ۳ پایتون ۳.۵.۰¶
تاریخ انتشار: ۲۰۱۵-۰۹-۰۷
هسته و توکارها (Core and Builtins)¶
کتابخانه¶
bpo-24917: خوانش بیشازحد بافر در time_strftime().
bpo-24748: برای حل مشکل سازگاری پیدا شده با py2exe و pywin32، تابع imp.load_dynamic() بار دیگر ماژولهای ازپیشبارگذاریشده را نادیده میگیرد تا از ماژولهایی که خود را با ماژولهای توسعهای جایگزین میکنند، پشتیبانی کند. وصله توسط Petr Viktorin.
bpo-24635: رفع باگی در typing.py که در آن isinstance([], typing.Iterable) یک بار مقدار True و سپس در فرازهای بعدی مقدار False برمیگرداند.
bpo-24989: رفع خوانش بیشازحد بافر در BytesIO.readline() اگر موقعیتی فراتر از اندازهی مشخصشده تعیین شود. بر اساس وصلهای از John Leitch.
bpo-24913: رفع خطای سرریز (overrun) در deque.index(). پیدا شده توسط John Leitch و Bryce Darling.
نامزد انتشار ۲ پایتون ۳.۵.۰¶
تاریخ انتشار: ۲۰۱۵-۰۸-۲۵
هسته و توکارها (Core and Builtins)¶
bpo-24769: مفسر اکنون وقتی بارگذاری پویا غیرفعال است به درستی شروع به کار میکند. وصله توسط Petr Viktorin.
bpo-21167: عملیاتهای NAN اکنون زمانی که پایتون با ICC کامپایل میشود، حتی اگر -fp-model strict مشخص نشده باشد، به درستی مدیریت میشوند.
bpo-24492: یک «بسته» که صفت __name__ را ندارد هنگام تلاش برای اجرای دستور
from .. import ...به جای یک AttributeError باعث ایجاد یک ImportError میشود.
کتابخانه¶
نامزد انتشار ۱ پایتون ۳.۵.۰¶
تاریخ انتشار: ۲۰۱۵-۰۸-۰۹
هسته و توکارها (Core and Builtins)¶
bpo-24667: تغییر اندازهی odict در تمام مواردی که دیکشنری زیرین تغییر اندازه میدهد.
کتابخانه¶
bpo-24824: امضاهای codecs.encode() و codecs.decode() اکنون با pydoc سازگار هستند.
bpo-24634: ایمپورت کردن uuid نباید سعی کند libc را روی ویندوز بارگذاری کند
bpo-24798: پروندهی _msvccompiler.py به درستی از مانیفستها پشتیبانی نمیکند.
bpo-4395: تست و مستندسازی بهتر عملگرهای دودویی. وصله توسط Martin Panter.
bpo-23973: بهروزرسانی typing.py از مخزن گیتهاب.
bpo-23004: تابع mock_open() اکنون هنگامی که نوع read_data از نوع bytes باشد، دادههای دودویی را به درستی میخواند. وصلهی اولیه توسط Aaron Hill.
bpo-23888: مدیریت زمان کسری در انقضای کوکی. وصله توسط ssh.
bpo-23652: امکان کامپایل ماژول select در برابر سرآیندهای libc از Linux Standard Base که شامل برخی کلیدواژههای EPOLL نمیشوند. وصله توسط Matt Frank.
bpo-22932: رفع مناطق زمانی در email.utils.formatdate. وصله از Dmitry Shachnev.
bpo-23779: ماژول imaplib در صورتی که تأییدکننده تلاش کند متوقف شود، خطای TypeError صادر میکند. وصله از Craig Holmquist.
bpo-23319: رفع مشکل ctypes.BigEndianStructure، جابهجایی صحیح بایتها. وصله نوشتهشده توسط Matthieu Gautier.
bpo-23254: مستندسازی نحوهی بستن سوکت در حال گوش دادن TCPServer. وصله از Martin Panter.
bpo-19450: بهروزرسانی ساختهای نصبکنندهی ویندوز و OS X برای استفاده از SQLite 3.8.11.
bpo-17527: افزودن PATCH به wsgiref.validator. وصله از Luca Sbardella.
bpo-24791: رفع رگرسیون گرامری برای نحو فراخوانی: 'g(*a or b)'.
IDLE¶
bpo-23672: به ایدل (Idle) اجازه دهید پروندههایی با کاراکترهای ستارهای در نام را ویرایش و اجرا کند. وصله توسط Mohd Sanad Zaki Rizvi.
bpo-24745: قلم پیشفرض ویرایشگر Idle. تغییر از Courier به TkFixedFont وابسته به پلتفرم. این تغییر نباید روی انتخابهای قلم سفارشیسازیشدهی فعلی تأثیر بگذارد. اگر مشکلی وجود داشت، پروندهی $HOME/.idlerc/config-main.cfg را ویرایش کرده و شناسههای '
fontxxx' را از بخش [Editor Window] حذف کنید. وصله توسط Mark Roseman.bpo-21192: ویرایشگر Idle. هنگامی که پروندهای اجرا میشود، نام آن را در نوار راهاندازی مجدد قرار دهید. اعلانهای نادرست را چاپ نکنید. وصلهی اصلی از Adnan Umer.
bpo-13884: منوهای Idle. حذف خطوط پارگی (tearoff). وصله توسط Roger Serwy.
مستندات¶
bpo-24129: شفافسازی مستندات ارجاع برای حل نام. این مورد شامل حذف این فرض است که خوانندگان با طرحوارهی حل نامی که پایتون پیش از معرفی محدودسازی نواحی واژگانی (lexical scoping) برای فضاهای نام توابع استفاده میکرد، آشنا هستند. وصله توسط Ivan Levkivskyi.
bpo-20769: بهبود مستندات reload(). وصله توسط Dorian Pula.
bpo-23589: حذف جملهی تکراری از پرسشهای متداول (FAQ). وصله توسط Yongzhi Pan.
bpo-24729: اصلاح آموزش ورودی/خروجی (IO) برای تطابق پیادهسازی با پارامتر کدگذاری (encoding) در تابع open.
آزمونها¶
bpo-24751: هنگام اجرای regrtest با گزینهی خط فرمان
-w، اگر تمام آزمونها در اجرای مجدد موفق شوند، دیگر اجرای آزمون بهعنوان شکست علامتگذاری نمیشود.
پایتون ۳.۵.۰ بتا ۴¶
تاریخ انتشار: ۲۰۱۵-۰۷-۲۶
هسته و توکارها (Core and Builtins)¶
bpo-23573: بازگردانی بهینهسازی متدهای bytes.rfind() و bytearray.rfind() برای آرگومان تکبایتی در لینوکس.
bpo-24583: رفع فروپاشی هنگام تغییر دادن مجموعه (set) در حین بهروزرسانی آن.
bpo-24407: رفع فروپاشی هنگام تغییر دادن دیکشنری در حین بهروزرسانی آن.
bpo-24619: رویکرد جدید برای نشانهگذاری (tokenizing) کلمات کلیدی async/await. در نتیجه، اکنون امکان داشتن توابع تکسطری 'async def foo(): await ..' فراهم شده است.
bpo-24687: رفع نشت ارجاع (refleak) روی خطای SyntaxError در حاشیهنویسیهای پارامترهای تابع.
bpo-15944: memoryview: اجازه دادن به قالبهای دلخواه هنگام تبدیل (casting) به bytes. وصلهای از Martin Panter.
کتابخانه¶
bpo-23441: ماژول rcompleter اکنون بهجای نمایش تکمیلهای احتمالی برای یک کلمهی خالی، یک نویسهی تب (tab) چاپ میکند. وصلهی اولیه از Martin Sekera.
bpo-24683: رفع فروپاشیها در توابع _json که با آرگومانهایی از نوع نامناسب فراخوانی شدهاند.
bpo-21697: تابع shutil.copytree() اکنون پیوندهای نمادینی که به دایرکتوریها اشاره میکنند را بهدرستی مدیریت میکند. وصلهای از Eduardo Seabra و Thomas Kluyver.
bpo-14373: رفع خطای قطعهبندی (segmentation fault) هنگامی که gc.collect() در حین ساخت lru_cache (پیادهسازی C) فراخوانی میشود.
bpo-24695: رفع یک رگرسیون در traceback.print_exception(). اگر exc_traceback برابر با None باشد، نباید همانطور که در مستندات توصیف شده است، یک سرآیند ردگیری (traceback header) چاپ کنیم.
bpo-24620: تابع Random.setstate() اکنون مقدار آخرین عنصر وضعیت را اعتبارسنجی میکند.
bpo-22485: رفع مسئلهای که باعث میشد
inspect.getsourceنتایج نادرستی را روی توابع تو در تو برگرداند.bpo-22153: بهبود مستندات unittest. وصلهای از Martin Panter و evilzero.
bpo-24580: ارجاعات گروهی نمادین به گروه باز در الگوهای re اکنون بهطور صریح و مشابه ارجاعات گروهی عددی ممنوع شدهاند.
bpo-24206: متدها و
__ne__و__eq__از کلاسهای inspect اصلاح شدند.bpo-24631: رگرسیون ایجادشده در ماژول timeit با راهاندازی چندخطی برطرف شد.
bpo-18622: تابع unittest.mock.mock_open().reset_mock به صورت بینهایت بازگشتی میشد. وصله از Nicola Palumbo و Laurent De Buyst.
bpo-23661: ویژگی side_effects در unittest.mock اکنون دوباره میتواند استثنا باشد. این یک رگرسیون در مقایسه با پایتون ۳.۴ بود. وصله از Ignacio Rossi
bpo-24608: متد
chunk.Chunk.read()اکنون همیشه مقادیر bytes برمیگرداند، نه str.bpo-18684: خواندن خارج از بافر در ماژول re اصلاح شد.
bpo-24259: ماژول tarfile اکنون اگر یک آرشیو در داخل یک بخش داده قطع شود، خطای ReadError ایجاد میکند.
bpo-15014: متدهای
SMTP.auth()وSMTP.login()اکنون از آرگومان اختیاری initial-response مربوط به دستور SMTP AUTH در استاندارد RFC 4954 پشتیبانی میکنند.bpo-24669: اصلاح
inspect.getsource()برای توابع با عبارتasync def. وصله از Kai Groner.bpo-24688: متد
ast.get_docstring()برای توابع با عبارتasync def.
ساخت¶
bpo-24603: بهروزرسانی ساختهای ویندوز و برنامهی نصب OS X نسخه ۱۰.۵ برای استفاده از OpenSSL نسخه 1.0.2d.
نسخهی ۳.۵.۰ بتا ۳ پایتون¶
تاریخ انتشار: ۲۰۰۵-۰۷-۰۵
هسته و توکارها (Core and Builtins)¶
bpo-24467: احتمال سرریز خواندن بافر در bytearray برطرف شد. شیء bytearray اکنون همیشه فضایی را برای بایت تهی پایانی اختصاص میدهد و بافر آن اکنون همیشه به بایت تهی ختم میشود.
ارتقا به یونیکد نسخه 8.0.0.
bpo-24345: افزودن جایگاه Py_tp_finalize برای ABI پایدار.
bpo-24400: معرفی یک نوع مجزا برای همروالهای PEP 492؛ افزودن
types.CoroutineType،inspect.getcoroutinestate،inspect.getcoroutinelocals؛ همروالها دیگر از پرچم CO_GENERATOR استفاده نمیکنند؛sys.set_coroutine_wrapperفقط برای همروالهایasync defکار میکند؛inspect.iscoroutineدیگر ازcollections.abc.Coroutineاستفاده نمیکند، و صرفاً برای آزمایش همروالهای خالصasync defدر نظر گرفته شده است؛ افزودن آپکد جدید:GET_YIELD_FROM_ITER؛ اصلاح پوشش تولیدگرهای استفادهشده درtypes.coroutineبه شکلی که نمونهای ازcollections.abc.Generatorباشند؛collections.abc.Awaitableوcollections.abc.Coroutineدیگر نمیتوانند برای شناسایی همروالهای مبتنی بر تولیدگر استفاده شوند—بهجای آن ازinspect.isawaitableاستفاده کنید.bpo-24450: افزودن
gi_yieldfromبه تولیدگرها وcr_awaitبه همروالها. مشارکتکنندگان: Benno Leslie و Yury Selivanov.bpo-19235: افزودن استثنای جدید RecursionError. وصله از Georg Brandl.
کتابخانه¶
bpo-21750: اکنون میتوان
mock_open.read_dataرا از هر نمونه خواند، درست همانطور که در پایتون ۳.۳ امکانپذیر بود.bpo-24552: اصلاح خطای استفاده پس از آزادسازی (use after free) در یک حالت خطا در ماژول _pickle.
bpo-24514: ماژول tarfile اکنون فیلدهای عددی شامل صرفاً فضای خالی را تحمل میکند.
bpo-19176: رفع اشکالات مربوط به doctype() در پیادهسازی C از ElementTree. دیگر هشدار منسوخشدگی توسط زیرکلاس XMLParser با متد پیشفرض doctype() صادر نمیشود. فراخوانی مستقیم doctype() اکنون یک هشدار صادر میکند. اگر متد doctype() شیء هدف فراخوانی شود، متد doctype() پارسر دیگر فراخوانی نمیشود. بر اساس وصلهای از Martin Panter.
bpo-20387: بازیابی درستی رفتوبرگشت معنایی در tokenize/untokenize برای بلوکهای دارای تورفتگی با نویسهی تب.
bpo-24456: رفع سرریز احتمالی بافر در عملکردهای adpcm2lin() و lin2adpcm() از ماژول audioop.
bpo-24336: دکوراتور contextmanager اکنون با توابعی که آرگومانهای کلیدواژهای با نامهای "func" و "self" دارند به درست کار میکند. وصلهای از Martin Panter.
bpo-24522: رفع سرریز عدد صحیح احتمالی در ماژول شتابدهندهی json.
bpo-24489: اطمینان از اینکه مقدار errno در C که از قبل تنظیم شده است، cmath.polar() را مختل نکند.
bpo-24408: رفع خطای AttributeError در متدهای measure() و metrics() از tkinter.Font.
bpo-14373: پیادهسازی C از functools.lru_cache() اکنون میتواند با متدها استفاده شود.
bpo-24347: اگر تابع PyDict_GetItemWithError مقدار NULL برگرداند، خطای KeyError را تنظیم کنید.
bpo-24348: حذف incref/decref اضافی.
bpo-24359: بررسی تغییر اندازه OrderedDict در طول پیمایش.
bpo-24368: پشتیبانی از آرگومانهای کلیدواژهای در متدهای OrderedDict.
bpo-24362: سادهسازی منطق تغییر اندازهی گرههای سریع OrderedDict در C.
bpo-24377: رفع نشتی ارجاع در OrderedDict.__repr__.
bpo-24369: محافظت در برابر تغییرات کلید در حین پیمایش.
آزمونها¶
مستندات¶
ساخت¶
bpo-24432: بهروزرسانی ساختهای ویندوز و نصبکنندهی OS X 10.5 برای استفاده از OpenSSL 1.0.2c.
پایتون ۳.۵.۰ بتا ۲¶
Release date: 2015-05-31
هسته و توکارها (Core and Builtins)¶
bpo-24284: متدهای
startswithوendswithاز کلاسstrهنگام یافتن رشتهی خالی و زمانی که اندیسها کاملاً خارج از محدوده باشند، دیگر مقدار True را برنمیگردانند.bpo-24115: بهروزرسانی استفاده از PyObject_IsTrue()، PyObject_Not()، PyObject_IsInstance()، PyObject_RichCompareBool() و _PyDict_Contains() برای بررسی و مدیریت درست خطاها.
bpo-24328: رفع مشکل ایمپورت کردن ماژولهای توسعهای تکنویسهای.
bpo-11205: در نمایشهای دیکشنری، کلید پیش از مقدار ارزیابی شود.
bpo-24285: رفع رگرسیونی که مانع ایمپورت کردن ماژولهای توسعهای از داخل بستهها میشد. وصله توسط Petr Viktorin.
کتابخانه¶
bpo-23247: رفع یک فروپاشی در StreamWriter.reset() مربوط به کُدکهای CJK.
bpo-24270: افزودن توابع math.isclose() و cmath.isclose() مطابق با PEP 485. مشارکت توسط Chris Barker و Tal Einat.
bpo-5633: رفع مشکل timeit زمانی که عبارت (statement) یک رشته است و بخش راهاندازی (setup) رشته نیست.
bpo-24326: رفع مشکل audioop.ratecv() با آرگومان weightB غیرپیشفرض. وصلهی اصلی توسط David Moore.
bpo-16991: افزودن پیادهسازی C برای OrderedDict.
bpo-23934: رفع مشکل inspect.signature برای شکست خوردن صحیح در انواع داخلی فاقد اطلاعات امضا. وصلهی اولیه توسط James Powell.
Python 3.5.0 beta 1¶
Release date: 2015-05-24
هسته و توکارها (Core and Builtins)¶
bpo-24276: رفع بهینهسازی تابع getter توصیفگر ویژگی.
bpo-24268: PEP 489: مقداردهی اولیه چندمرحلهای ماژول توسعهای. وصله توسط Petr Viktorin.
bpo-23955: افزودن گزینهی pyvenv.cfg برای سرکوب جستجوی رجیستری/محیط جهت تولید sys.path در ویندوز.
bpo-24257: رفع خطای سیستم در مقایسهی types.SimpleNamespace جعلی.
bpo-22939: رفع سرریز عدد صحیح در شیء پیمایشگر. پچ توسط Clement Rouault.
bpo-23985: رفع سرریز احتمالی بافر هنگام حذف یک اسلایس از ابتدای یک bytearray و سپس الحاق مقداری دادهی بایت دیگر.
bpo-24102: بررسی نوع استثنا در هندلرهای خطای استاندارد اصلاح شد.
bpo-15027: کدگذار UTF-32 اکنون بین ۳ تا ۷ برابر سریعتر شده است.
bpo-23290: بهینهسازی تابع set_merge() برای مواردی که مقصد خالی است. (مشارکت از Serhiy Storchaka.)
bpo-2292: PEP 448: کلیسازیهای اضافی بازکردن بسته.
bpo-24096: تابع warnings.warn_explicit را در برابر تغییرات فهرست warnings.filters مقاومتر کنید.
bpo-23996: جلوگیری از فروپاشی زمانی که یک تولیدگر تفویضشده یک استثنای StopIteration نرمالنشده را بالا میآورد. پچ از Stefan Behnel.
bpo-23910: بهینهسازی فراخوانیهای getter مربوط به property(). پچ از Joe Jevnik.
bpo-23911: انتقال کد راهاندازی importlib مبتنی بر مسیر به یک ماژول فریزشدهی جداگانه.
bpo-24192: اصلاح ایمپورتهای بستهی فضای نام.
bpo-24022: اصلاح فروپاشی توکنساز هنگام پردازش کد منبع غیرقابلرمزگشایی.
bpo-9951: اضافه شدن متد hex() به bytes، bytearray و memoryview.
bpo-22906: PEP 479: تغییر نحوهی مدیریت StopIteration در داخل تولیدگرها.
bpo-24017: PEP 492: همروالها با سینتکس async و await.
کتابخانه¶
bpo-14373: پیادهسازی C برای functools.lru_cache() اضافه شد. بر اساس پچهای Matt Joiner و Alexey Kachayev.
bpo-24230: ماژول tempfile اکنون بایتها را برای پارامترهای prefix، suffix و dir میپذیرد و در چنین مواردی بایتها را برمیگرداند (مطابق با APIهای ماژول os).
bpo-22189: بخش collections.UserString اکنون از روشهای __getnewargs__()، __rmod__()، casefold()، format_map()، isprintable() و maketrans() پشتیبانی میکند. پچ از Joe Jevnik.
bpo-24244: جلوگیری از خاتمهی برنامه هنگامی که یک رشتهی قالب نامعتبر در ویندوز در تابع strftime برخورد میکند.
bpo-23973: PEP 484: اضافه کردن ماژول typing.
bpo-23086: کلاس پایه انتزاعی collections.abc.Sequence() پارامترهای start و stop را به index() mixin اضافه کرد. پچ از Devin Jeanpierre.
bpo-20035: جایگزینی ماژول
tkinter._fixکه برای راهاندازی محیط Tcl/Tk در ویندوز استفاده میشد، با یک تابع خصوصی در ماژول_tkinterکه هیچ تغییر دائمی در محیط ایجاد نمیکند.bpo-24257: خطای خطای قطعهبندی (segmentation fault) در سازندهی sqlite3.Row با نوع دادهی تقلبی نشانگر (cursor) برطرف شد.
bpo-15836: توابع assertions مربوط به assertRaises()، assertRaisesRegex()، assertWarns() و assertWarnsRegex() اکنون نوع دادهی آرگومان اول را بررسی میکنند تا از خطاهای احتمالی کاربر جلوگیری شود. بر اساس وصلهی Daniel Wagner-Hall.
bpo-9858: افزودن stubهای متد گمشده به _io.RawIOBase. وصلهای از Laura Rupprecht.
bpo-22955: اشیاء attrgetter، itemgetter و methodcaller در ماژول operator اکنون از pickling پشتیبانی میکنند. نمایش (repr) خوانا و قابل ارزیابی برای این اشیاء اضافه شد. بر اساس وصلهی Josh Rosenberg.
bpo-22107: توابع tempfile.gettempdir() و tempfile.mkdtemp() اکنون روی سیستمعاملهای ویندوز و یونیکس، زمانی که پوشهای با نام انتخابشده از پیش وجود داشته باشد، دوباره تلاش میکنند. تابع tempfile.mkstemp() اکنون روی ویندوز اگر پوشه والد نامعتبر باشد (وجود نداشته باشد یا یک پرونده باشد) زودتر دچار شکست میشود.
bpo-23780: بهبود پیام خطا در os.path.join() با یک آرگومان.
bpo-6598: افزایش دقت زمان و بازهی اعداد تصادفی در email.utils.make_msgid() برای تقویت منحصربهفرد بودن شناسهی پیام.
bpo-24091: رفع فروپاشیهای مختلف در موارد خاص (corner cases) در پیادهسازی C درخت ElementTree.
bpo-21931: ماژول msilib.FCICreate() اکنون در صورت داشتن آرگومان نامعتبر، به جای خطای ValueError با شماره خطای ساختگی FCI، یک خطای TypeError بالا میآورد. وصلهای از Jeffrey Armstrong.
bpo-13866: آرگومان quote_via به urllib.parse.urlencode اضافه شد.
bpo-20098: گزینهی سیاست جدید mangle_from برای email، به طور پیشفرض برای compat32 برابر با True است، اما برای سایر سیاستها False است.
bpo-24211: کتابخانهی email اکنون از RFC 6532 پشتیبانی میکند: این کتابخانه میتواند به جای کلمات کدگذاریشده، سرآیندها را با استفاده از utf-8 تولید کند.
bpo-16314: پشتیبانی از فشردهسازی LZMA در distutils اضافه شد.
bpo-21804: ماژول poplib اکنون از RFC 6856 (UTF8) پشتیبانی میکند.
bpo-18682: بهینهسازی توابع pprint برای انواع دادهی اسکالر داخلی.
bpo-22027: ماژول smtplib اکنون از RFC 6531 (SMTPUTF8) پشتیبانی میکند.
bpo-23488: اشیاء تولیدگر تصادفی (Random generator) اکنون در معماری ۶۴ بیتی حافظهی کمتری (دو برابر کمتر) مصرف میکنند.
bpo-1322: توابع platform.dist() و platform.linux_distribution() اکنون منسوخ شدهاند. وصلهی اولیه از Vajrasky Kok.
bpo-22486: تابع math.gcd() اضافه شد. تابع fractions.gcd() اکنون منسوخ شده است. بر اساس وصلهی Mark Dickinson.
bpo-24064: رشتههای مستند (docstrings) مربوط به Property() اکنون قابل نوشتن هستند. (وصلهای از Berker Peksag.)
bpo-22681: پشتیبانی از کدگذاری koi8_t اضافه شد.
bpo-22682: پشتیبانی از کدگذاری kz1048 اضافه شد.
bpo-23796: متدهای peek و read1 از BufferedReader اکنون اگر روی یک شیء بسته فراخوانی شوند، ValueError بالا میآورند. وصله توسط جان هرگنرودر (John Hergenroeder).
bpo-21795: ماژول smtpd اکنون هر زمان که آرگومان جدید سازندهی decode_data روی False تنظیم شود، از افزونهی 8BITMIME پشتیبانی میکند.
bpo-24155: بهینهسازی تابع heapq.heapify() برای عملکرد بهتر نهانگاه هنگام ایجاد پشته (heap) از فهرستهای بزرگ.
bpo-21800: ماژول imaplib اکنون از RFC 5161 (enable) و RFC 6855 (ایمیل utf8/بینالمللیشده) پشتیبانی میکند و نامهای کاربری و رمزهای عبور غیر اسکی را بهطور خودکار به UTF8 کدگذاری میکند.
bpo-20274: هنگام فراخوانی یک _sqlite.Connection، اگر هرگونه آرگومان کلیدواژهای به آن ارسال شود، اکنون خطا میدهد. پیشتر این آرگومانها بهصورت بیصدا نادیده گرفته میشدند.
bpo-20274: پارامترهای نادیدهگرفتهشده و خطایاب «kwargs» از سه متد METH_VARARGS روی _sqlite.Connection حذف شدند.
bpo-24134: بررسیهای assertRaises()، assertRaisesRegex()، assertWarns() و assertWarnsRegex() اکنون هنگامی که فراخوانیپذیر برابر با None باشد یا آرگومانهای کلیدواژهای بهجز msg در حالت مدیر زمینه ارسال شوند، هشدار منسوخشدن صادر میکنند.
bpo-24018: افزودن یک کلاس پایه انتزاعی collections.abc.Generator. مشارکتکننده: استفان بهنل (Stefan Behnel).
bpo-23880: متدهای getint() و getdouble() در Tkinter اکنون از Tcl_Obj پشتیبانی میکنند. متد getdouble() در Tkinter اکنون از هرگونه اعدادی (بهویژه int) پشتیبانی میکند.
bpo-22619: پشتیبانی از حد منفی (negative limit) در ماژول ردگیری اضافه شد. بر اساس وصلهای از دیمیتری کازاکوف (Dmitry Kazakov).
bpo-24094: رفع خرابی احتمالی در json.encode با زیرکلاسهای dict که رفتار نامناسبی دارند.
bpo-9246: روی سیستمعاملهای POSIX، تابع os.getcwd() اکنون از مسیرهای طولانیتر از ۱۰۲۵ بایت پشتیبانی میکند. وصله نوشتهشده توسط ویلیام اور (William Orr).
bpo-17445: افزودن difflib.diff_bytes() برای پشتیبانی از مقایسهی رشتههای بایتی (رفع یک رگرسیون از نسخهی ۲ پایتون).
bpo-23917: بازگشت به کامپایل ترتیبی وقتی ProcessPoolExecutor وجود ندارد. وصله توسط کلودیوس پوپا (Claudiu Popa).
bpo-23008: رفع مشکل حل کردن ویژگیهایی که مقدار بولی آنها False است در pydoc.
رفع مشکل شمارهی ۲۳۵ در asyncio: متد put در LifoQueue و PriorityQueue وظایف تمامنشده را افزایش نمیداد (این باگ زمانی ایجاد شد که JoinableQueue با Queue ادغام شد).
bpo-23908: توابع os در ویندوز اکنون بهجای قطع کردن بیصدای مسیرها، مسیرهای دارای نویسهی تهی تعبیهشده را رد میکنند.
bpo-23728: تابع binascii.crc_hqx() ممکن بود برای دادههای خالی، یک عدد صحیح خارج از محدودهی 0-0xffff برگرداند.
bpo-23887: ماژول urllib.error.HTTPError اکنون دارای نمایش repr() مناسبی است. وصله از Berker Peksag.
asyncio: APIهای جدید حلقه رویداد (event loop): set_task_factory() و get_task_factory().
asyncio: تابع async() به نفع ensure_future() منسوخ شده است.
bpo-24178: کلاسهای asyncio.Lock، Condition، Semaphore و BoundedSemaphore از سینتکس جدید 'async with' پشتیبانی میکنند. مشارکت از Yury Selivanov.
bpo-24179: پشتیبانی از 'async for' برای asyncio.StreamReader. مشارکت از Yury Selivanov.
bpo-24184: اضافه کردن کلاسهای پایه انتزاعی (ABC) ی AsyncIterator و AsyncIterable به collections.abc. مشارکت از Yury Selivanov.
bpo-22547: پیادهسازی __repr__ آموزنده برای inspect.BoundArguments. مشارکت از Yury Selivanov.
bpo-24190: پیادهسازی متد inspect.BoundArgument.apply_defaults(). مشارکت از Yury Selivanov.
bpo-20691: اضافه کردن آرگومان 'follow_wrapped' به inspect.Signature.from_callable() و inspect.signature(). مشارکت از Yury Selivanov.
bpo-24248: منسوخ کردن inspect.Signature.from_function() و inspect.Signature.from_builtin().
bpo-23898: اصلاح inspect.classify_class_attrs() برای پشتیبانی از ویژگیهایی با متدهای __eq__ و __bool__ سربارگذاریشده. وصله از Mike Bayer.
bpo-24298: اصلاح inspect.signature() برای باز کردن صحیح پوششها (wrappers) پیرامون متدهای متصل (bound methods).
IDLE¶
bpo-23184: حذف نامها و ایمپورتهای استفادهنشده در idlelib. وصلهی اولیه از Al Sweigart.
آزمونها¶
مستندات¶
bpo-22155: اضافه کردن زیربخش File Handlers همراه با createfilehandler به مستندات tkinter. حذف مثال منسوخ از بخش پرسشهای متداول (FAQ). وصله از Martin Panter.
bpo-24029: مستندسازی رفتار اتصال نام (name binding) برای ایمپورت زیرماژولها.
bpo-24077: اصلاح خطای تایپی در صفحهی راهنمای (man page) گزینهی دستور -I: گزینهی -s، نه -S
Tools/Demos¶
bpo-24000: بهبود نگاشت مبدلهای Argument Clinic به «واحدهای قالب» (format units) قدیمی. مستندات بهروزرسانی شد تا با آن مطابقت داشته باشد.
bpo-24001: مبدلهای Argument Clinic اکنون به جای types={'type'} از accept={type} برای مشخص کردن انواعی که مبدل میپذیرد، استفاده میکنند.
bpo-23330: ابزار h2py اکنون از نامهای پروندهی دلخواه در #include پشتیبانی میکند.
bpo-24031: دستور make patchcheck اکنون از مخازن گیت (git checkouts) نیز پشتیبانی میکند.
نسخهی ۳.۵.۰ آلفا ۴ پایتون¶
تاریخ انتشار: ۲۰۱۵-۰۴-۱۹
هسته و توکارها (Core and Builtins)¶
bpo-22980: تحت لینوکس، GNU/KFreeBSD و Hurd، پسوندهای C اکنون شامل سهتایی معماری در نام پسوند هستند تا آزمون ساختها برای ABIهای مختلف در یک درختی کاریِ یکسان آسان شود. تحت OS X، نام پسوند اکنون شامل اطلاعاتی به سبک PEP 3149 است.
bpo-22631: ثابت سوکت مخصوص لینوکس CAN_RAW_FD_FRAMES اضافه شد. این وصله با همکاری Joe Jevnik فراهم شده است.
bpo-23726: برای زیرکلاسهای کاربریِ انواعِ غیر GC که هیچ فیلد جدیدی اضافه نمیکنند، GC را فعال نکنید. وصله توسط Eugene Toder.
bpo-23309: از بروز بنبست هنگام خاموش شدن جلوگیری میشود، در صورتی که یک نخ دِیمِن در حالی که قفلی را روی یک شیء ورودی/خروجی بافرشده نگه داشته است لغو شود، و نخ اصلی تلاش کند از همان شیء ورودی/خروجی (معمولاً stdout یا stderr) استفاده کند. بهجای آن یک خطای مهلک صادر میشود.
bpo-22977: قالببندی پیامهای خطای ویندوز روی Wine اصلاح شد. وصله توسط Martin Panter.
bpo-23466: عبارات %c، %o، %x و %X در قالببندی بایتها اکنون روی ورودیهای غیرعدد صحیح خطای TypeError ایجاد میکنند.
bpo-24044: رفع امکان ارجاع به اشارهگر تهی (null pointer dereference) در list.sort در شرایط کمبود حافظه.
bpo-21354: تابع PyCFunction_New بار دیگر توسط DLL پایتون در معرض دید قرار گرفت.
کتابخانه¶
bpo-23840: تابع tokenize.open() اکنون برای رفع یک اخطار منبع، پروندهی دودویی موقت را هنگام خطا میبندد.
bpo-16914: سطح دیباگ جدید ۲ در smtplib برچسبهای زمانی را به خروجی دیباگ اضافه میکند.
bpo-7159: ماژول urllib.request اکنون از ارسال خودکار اعتبارنامههای احراز هویت پس از اولین خطای 401 پشتیبانی میکند. این بهبود، مجموعهای کاملتر (supertset) از بهبود مطرحشده در bpo-19494 است و جایگزین آن تغییر میشود.
bpo-23703: رفع یک رگرسیون در urljoin() که در نسخهی 901e4e52b20a ایجاد شده بود. وصله توسط Demian Brecht.
bpo-4254: تابع _curses.update_lines_cols() اضافه شد. وصله توسط Arnon Yaari
bpo-19933: آرگومان پیشفرضی برای ndigits در تابع round فراهم شد. وصله توسط Vajrasky Kok.
bpo-23193: افزودن پارامتر numeric_owner به متدهای tarfile.TarFile.extract و tarfile.TarFile.extractall. وصله توسط Michael Vogt و Eric Smith.
bpo-23342: اضافه کردن یک تابع subprocess.run() که یک نمونهی CalledProcess را برای یک API سازگارتر نسبت به عملکردهای موجود call* برمیگرداند.
bpo-21217: تابع inspect.getsourcelines() اکنون سعی میکند خطوط شروع و پایان را از شیء کد محاسبه کند و مشکلی را که در آن یک تابع لامبدا به عنوان آرگومان دکوراتور استفاده میشد، برطرف میکند. پچ توسط Thomas Ballinger و Allison Kaptur.
bpo-24521: رفع سرریزهای احتمالی اعداد صحیح در ماژول پیکل.
bpo-22931: اجازه دادن به کاراکترهای '[' و ']' در مقادیر کوکی.
ویژگی keywords از functools.partial اکنون همیشه یک دیکشنری است.
bpo-23811: افزودن کاراکتر خط جدید مفقود به پیام خطای PyCompileError. وصله توسط Alex Shkop.
bpo-21116: جلوگیری از سرریز حافظه هنگام تخصیص یک آرایه اشتراکی multiprocessing که بزرگتر از ۵۰ درصد RAM موجود است. وصله توسط Médéric Boquien.
bpo-22982: بهبود مدیریت نشانگر ترتیب بایت هنگام مکانیابی در موقعیتهای مختلف یک پرونده متنی قابل نوشتن.
bpo-23464: کلاس منسوخشدهی asyncio JoinableQueue حذف شد.
bpo-23529: محدود کردن اندازهی دادههای فشردهزداییشده هنگام خواندن از GzipFile، BZ2File یا LZMAFile. این کار مانع حملات انکار سرویس با استفاده از بمبهای فشرده (یعنی محمولههای فشردهای که به اندازهی بسیار بزرگی فشردهزدایی میشوند) میشود. وصله توسط Martin Panter و Nikolaus Rath.
bpo-21859: پیادهسازی پایتون برای io.FileIO اضافه شد.
bpo-23865: متدهای close() در چندین ماژول اکنون همتوان هستند و در هنگام خاموش شدن پایداری بیشتری دارند. اگر آنها نیاز به آزادسازی چندین منبع داشته باشند، همه آزاد میشوند حتی اگر خطاهایی رخ دهد.
bpo-23400: اگر sem_open در دسترس نباشد، در هر دو نسخهی ۲ و ۳ پایتون استثنای یکسانی ایجاد میشود. وصله توسط Davin Potts.
bpo-10838: ماژول subprocess اکنون شامل SubprocessError و TimeoutError در فهرست نامهای صادرشدهی خود برای کاربرانی است که به اندازهی کافی شجاع هستند تا از
from subprocess import *استفاده کنند.bpo-23411: کلاسهای DefragResult، ParseResult، SplitResult، DefragResultBytes، ParseResultBytes و SplitResultBytes به urllib.parse.__all__ اضافه شدند. وصله توسط Martin Panter.
bpo-23881: سازندهی urllib.request.ftpwrapper اکنون در صورت شکست اتصال FTP، سوکت را میبندد تا یک ResourceWarning برطرف شود.
bpo-23853: متد
socket.socket.sendall()دیگر مهلت زمانی سوکت را هر بار که دادهها با موفقیت ارسال میشوند، بازنشانی نمیکند. مهلت زمانی سوکت اکنون بیشترین مدت زمان کل برای ارسال تمام دادهها است.bpo-22721: ترتیب خروجی چندخطی pprint از مجموعه یا دیکشنری حاوی عناصر قابلترتیببندی و غیرقابلترتیببندی دیگر به ترتیب پیمایش مجموعه یا دیکشنری بستگی ندارد.
bpo-15133: متد _tkinter.tkapp.getboolean() اکنون از Tcl_Obj پشتیبانی میکند و همیشه مقدار bool را برمیگرداند. کلاس tkinter.BooleanVar اکنون مقادیر ورودی را اعتبارسنجی میکند (مقادیر bool، int، str و Tcl_Obj پذیرفته میشوند). متد tkinter.BooleanVar.get() اکنون همیشه مقدار bool را برمیگرداند.
bpo-10590: تابع xml.sax.parseString() اکنون از آرگومان رشتهای پشتیبانی میکند.
bpo-23338: اصلاح قالببندی پیامهای خطای ctypes در Cygwin. وصله توسط Makoto Kato.
bpo-15582: تابع inspect.getdoc() اکنون زنجیرههای ارثبری را دنبال میکند.
bpo-2175: پارسرهای SAX اکنون از جریان نویسهی یک شیء InputSource پشتیبانی میکنند.
bpo-16840: کتابخانهی Tkinter اکنون از اعداد صحیح ۶۴ بیتی اضافه شده در Tcl 8.4 و اعداد صحیح با دقت دلخواه اضافه شده در Tcl 8.5 پشتیبانی میکند.
bpo-23834: اصلاح تابع socket.sendto()؛ استفاده از نوع دادهی C Py_ssize_t برای ذخیرهی نتیجهی sendto() به جای نوع دادهی int در زبان C.
bpo-23618: متد
socket.socket.connect()اکنون تا زمان تکمیل اتصال منتظر میماند و به جای بالا آوردنInterruptedErrorدر صورتی که اتصال توسط سیگنالها قطع شود، هندلرهای سیگنال استثنایی ایجاد نکنند و سوکت مسدودکننده باشد یا مهلت زمانی داشته باشد، به کار خود ادامه میدهد. متدsocket.socket.connect()همچنان برای سوکتهای غیرمسدودکننده خطایInterruptedErrorرا بالا میآورد.bpo-21526: کتابخانهی Tkinter اکنون از نوع بولی جدید در Tcl 8.5 پشتیبانی میکند.
bpo-23836: اصلاح ماژول faulthandler برای مدیریت فراخوانیهای بازورودپذیر به هندلرهای سیگنال آن.
bpo-23838: ماژول linecache اکنون نهانگاه را پاک کرده و در صورت بروز خطای MemoryError یک نتیجهی خالی برمیگرداند.
bpo-10395: تابع os.path.commonpath() اضافه شد. در posixpath و ntpath پیادهسازی شده است. بر اساس وصلهای از Rafik Draoui.
bpo-23611: سریالسازی اشیای «قابل جستجوی» بیشتر (مانند متدهای آزاد یا کلاسهای تو در تو) اکنون با پروتکلهای پیکل < 4 پشتیبانی میشود.
bpo-13583: کلاس sqlite3.Row اکنون از ایندکسگذاری اسلایس پشتیبانی میکند.
bpo-18473: نگاشتهای پیکل سازگار 2to3 و 3to2 اصلاح شدند. نگاشتهای معکوس مبهم اصلاح شدند. نگاشتهای جدید زیادی اضافه شدند. نگاشت ایمپورت دیگر روی ماژولهایی که قبلاً با نگاشت نام کامل نگاشتشدهاند، اعمال نمیشود.
bpo-23485: تابع select.select() اکنون هنگام وقفه توسط یک سیگنال، با مهلت زمانی محاسبهشدهی مجدد به طور خودکار دوباره تلاش میکند، مگر اینکه هندلر سیگنال یک استثنا ایجاد کند. این تغییر بخشی از PEP 475 است.
bpo-23752: هنگامی که io.FileIO() از یک توصیفگر پروندهی موجود ساخته میشود، اکنون فقط یک بار fstat() را فراخوانی میکند. پیش از این fstat() دو بار فراخوانی میشد که ضروری نبود.
bpo-23704: اشیای collections.deque() اکنون از __add__، __mul__ و __imul__() پشتیبانی میکنند.
bpo-23171: تابع csv.Writer.writerow() اکنون از اقلام پیمایشپذیر دلخواه پشتیبانی میکند.
bpo-23745: پارسر جدید سرآیند ایمیل اکنون نامهای پارامترهای تکراری MIME را بدون خطا مدیریت میکند، شبیه به نحوهی رفتار get_param.
bpo-22117: اصلاح os.utime()؛ این تابع اکنون به جای گرد کردن به سمت صفر، زمانسنج (timestamp) را به سمت بینهایت منفی (-inf) گرد میکند.
bpo-23310: اصلاح مقداردهی اولیهی MagicMock برای کار با __methods__، درست مانند configure_mock(). وصله توسط Kasia Jachim.
ساخت¶
آزمونها¶
Tools/Demos¶
bpo-18128: ابزار pygettext اکنون از قالب استاندارد +NNNN در سرآیند POT-Creation-Date استفاده میکند.
bpo-23935: درک کلینیک آرگومان (Argument Clinic) از واحدهای قالبی که بایتها، آرایههای بایتی و بافرها را میپذیرند، اکنون با مستندات و پیادهسازی سازگار است.
bpo-23944: کلینیک آرگومان (Argument Clinic) اکنون پیشنمونههای پیادهسازی طولانی را در ستون ۷۸ میشکند (wrap).
bpo-20586: کلینیک آرگومان (Argument Clinic) اکنون تضمین میکند توابعی که رشته مستند ندارند، دارای امضا (signature) باشند.
bpo-23492: کلینیک آرگومان (Argument Clinic) اکنون در صورت امکان، کد تجزیه آرگومان را با PyArg_Parse و بهجای PyArg_ParseTuple تولید میکند.
bpo-23500: کلینیک آرگومان (Argument Clinic) اکنون در تولید تعریف «#ifndef» (خالی) مربوط به کلاندستور methoddef هوشمندتر عمل میکند: این تعریف فقط یک بار تولید میشود، حتی اگر کلینیک آرگومان همان نماد را چندین بار پردازش کند، و در انتهای تمام پردازشها و نه بلافاصله پس از اولین استفاده، صادر میشود.
رابط C API¶
bpo-23998: تابع PyImport_ReInitLock() اکنون خطای تخصیص قفل را بررسی میکند
نسخهی ۳.۵.۰ آلفا ۳ پایتون¶
تاریخ انتشار: ۲۰۱۵-۰۳-۲۸
هسته و توکارها (Core and Builtins)¶
bpo-23573: افزایش کارایی عملیات جستجوی رشته (str.find، str.index، str.count، عملگر in، str.split، str.partition) با آرگومانهای از انواع مختلف (UCS1، UCS2، UCS4).
bpo-23753: پایتون دیگر از پلتفرمهای بدون stat() یا fstat() پشتیبانی نمیکند، این توابع همیشه مورد نیاز هستند.
bpo-23681: گزینهی -b اکنون روی مقایسههای bytes با int تأثیر میگذارد.
bpo-23632: ساختارهای memoryview اکنون امکان نمایهسازی تاپل را فراهم میکنند (از جمله برای memoryviewهای چندبعدی).
bpo-23192: رفع لامبداهای تولیدگر. پچ توسط Bruno Cauet.
bpo-23629: پیادهسازی پیشفرض
__sizeof__را برای شیءهای با اندازهی متغیر اصلاح میکند.
کتابخانه¶
bpo-14260: ویژگی groupindex در شیء الگوی عبارت باقاعده اکنون یک نگاشت غیرقابلتغییر است.
bpo-23792: هنگام فعال بودن صفحهبند pydoc، استثنای KeyboardInterrupt را نادیده بگیر. این کار رفتار صفحهبندهای استاندارد یونیکس را تقلید میکند و از بسته شدن pipepager در حالی که خود صفحهبند همچنان در حال اجراست جلوگیری میکند.
bpo-23775: تابع ()pprint از OrderedDict اکنون همان نمایشی را خروجی میدهد که ()repr خروجی میدهد.
bpo-23765: فراخوانیهای IsBadStringPtr در ctypes حذف شد.
bpo-22364: برخی از پیامهای خطای re با استفاده از عبارتهای باقاعده برای راهنماییها بهبود یافت.
bpo-23742: تابع ntpath.expandvars() دیگر نقلقولهای تکی نامتوازن را از دست نمیدهد.
bpo-21717: تابع zipfile.ZipFile.open اکنون از حالت 'x' (ایجاد انحصاری) پشتیبانی میکند.
bpo-21802: خواننده در BufferedRWPair اکنون حتی زمانی که بستن نویسنده در BufferedRWPair.close() با شکست مواجه شود، بسته میشود.
bpo-23622: کاراکترهای گریز ناشناخته در عبارتهای باقاعده که شامل
'\'و حروف اسکی (ASCII) هستند، اکنون هشدار منسوخشدگی ایجاد میکنند و در پایتون ۳.۶ ممنوع خواهند شد.bpo-23671: ماژول string.Template اکنون اجازه میدهد پارامتر "self" به عنوان یک آرگومان کلیدواژهای مشخص شود. ماژول string.Formatter اکنون اجازه میدهد پارامترهای "self" و "format_string" به عنوان آرگومانهای کلیدواژهای مشخص شوند.
bpo-23502: ماژول pprint اکنون از پروکسیهای نگاشت پشتیبانی میکند.
bpo-17530: تابع pprint اکنون شیءهای bytes و bytearrays طولانی را دربرمیگیرد (wrap میکند).
bpo-22687: برخی از حالتهای خاص در شکستن کلمات در textwrap اصلاح شد. پیچیدگی درجهدوم در شکستن کلمات طولانی حذف شد.
bpo-4727: ماژول copy اکنون از پروتکل پیکل ۴ (PEP 3154) استفاده میکند و از کپی کردن نمونههای کلاسهایی که متد __new__ آنها آرگومانهای فقط-کلیدواژهای میپذیرد، پشتیبانی میکند.
bpo-23491: یک ماژول zipapp برای پشتیبانی از ایجاد آرشیوهای پروندهی زیپ اجرایی از کد پایتون اضافه شد. پسوندهای ".pyz" و ".pyzw" برای این آرشیوها روی ویندوز ثبت شدند (PEP 441).
bpo-23657: از بررسیهای صریح برای str در zipapp جلوگیری شد و پشتیبانی از شیءهای pathlib.Path به عنوان آرگومان اضافه شد.
bpo-23688: پشتیبانی از شیءهای شبهبایت دلخواه اضافه شد و از کپی کردن غیرضروری memoryview در gzip.GzipFile.write() جلوگیری شد. وصلهی اصلی توسط ولفگانگ مایر (Wolfgang Maier).
bpo-23252: پشتیبانی از نوشتن پروندههای ZIP در جریانهای (streams) غیرقابل مکانیابی اضافه شد.
bpo-23647: متغیر MAXLINE در imaplib برای سازگاری با اندازههای صندوقهای ایمیل مدرن افزایش یافت.
bpo-23539: اگر body برابر با None باشد، تابع http.client.HTTPConnection.request اکنون مقدار Content-Length را برای سرآیندهای PUT، POST و PATCH روی 0 تنظیم میکند تا از خطاهای 411 در برخی از سرورهای وب جلوگیری شود.
bpo-22351: سازندهی nntplib.NNTP دیگر اتصال و سوکت را تا زمان پاکسازی توسط جمعآوریکنندهی زباله باز نگه نمیدارد. وصله توسط مارتین پنتر (Martin Panter).
bpo-23704: اشیای collections.deque() اکنون از متدهای index()، insert() و copy() پشتیبانی میکنند. این کار باعث میشود صفهای دوطرفه به عنوان یک MutableSequence ثبت شوند و قابلیت جایگزینی آنها با فهرستها بهبود یابد.
bpo-23715: توابع
signal.sigwaitinfo()وsignal.sigtimedwait()اکنون وقتی توسط سیگنالی که در پارامتر sigset قرار ندارد متوقف میشوند (در صورتی که هندلر سیگنال استثنایی ایجاد نکند)، دوباره تلاش میشوند. تابع signal.sigtimedwait() هنگام تلاش مجدد، مهلت زمانی را با استفاده از یک ساعت یکنواخت دوباره محاسبه میکند.bpo-23001: تعداد کمی از توابع در ماژولهای mmap، ossaudiodev، socket، ssl و codecs که تنها شیء شبهبایتِ فقطخواندنی میپذیرفتند، اکنون شیء شبهبایتِ قابلنوشتن را نیز میپذیرند.
bpo-23646: اگر تابع time.sleep() توسط یک سیگنال متوقف شود، توقف (به جز در مواردی که هندلر سیگنال استثنایی ایجاد کند) با تاخیر محاسبهشدهی مجدد دوباره تلاش میشود (PEP 475).
bpo-23136: ماژول _strptime اکنون تمام روزهای هفتهی 0، از جمله ۳۰ دسامبر سال قبل را به طور یکنواخت مدیریت میکند. بر اساس وصلهای از Jim Carroll.
bpo-23700: پیمایشگر NamedTemporaryFile اکنون یک ارجاع به نمونهی NamedTemporaryFile نگه میدارد. وصله توسط Bohuslav Kabrda.
bpo-22903: مورد آزمون جعلی ایجاد شده توسط unittest.loader هنگام شکست در ایمپورت کردن یک ماژول آزمون، اکنون پیکلپذیر است.
bpo-22181: روی لینوکس، os.urandom() اکنون از سیستمکال جدید getrandom() در صورت دسترس بودن استفاده میکند، سیستمکالی که در هستهی لینوکس 3.17 معرفی شد. این روش قابلاعتمادتر و امنتر است، زیرا از نیاز به یک توصیفگر پرونده جلوگیری کرده و تا زمانی که هسته آنتروپی کافی داشته باشد منتظر میماند.
bpo-2211: پیادهسازی کلاس http.cookies.Morsel بهروزرسانی شد. تنظیم مستقیم ویژگیهای key، value و coded_value اکنون منسوخ شده است. متدهای update() و setdefault() اکنون کلیدها را تبدیل و بررسی میکنند. مقایسه برای برابری اکنون ویژگیهای key، value و coded_value را در نظر میگیرد. متد copy() اکنون یک Morsel برمیگرداند، نه یک dict. متد repr() اکنون شامل تمام ویژگیها است. بررسی کلیدها و نقلقول کردن مقادیر بهینهسازی شد. آزمونهای جدید اضافه شد. وصلهی اصلی از Demian Brecht.
bpo-18983: امکان انتخاب واحدهای خروجی در timeit فراهم شد. وصله از Julian Gindi.
bpo-23631: رفع مشکل traceback.format_list هنگامی که یک ردگیری (traceback) جهش یافته است.
bpo-23568: پشتیبانی از rdivmod به اشیای MagicMock() اضافه شد. وصله از Håkan Lövdahl.
bpo-2052: پارامتر مجموعهی نویسهها (charset) به HtmlDiff.make_file() اضافه شد.
bpo-23668: پشتیبانی از os.truncate و os.ftruncate روی ویندوز.
bpo-23138: رفع مشکل تجزیهی کوکیها با کلیدها یا مقادیر غایب در cookiejar. وصله از Demian Brecht.
bpo-23051: متدهای imap() و imap_unordered() در multiprocessing.Pool اکنون استثناهای بالاآمده توسط یک پیمایشگر را مدیریت میکنند. وصله توسط Alon Diamant و Davin Potts.
bpo-23581: پشتیبانی از matmul به MagicMock اضافه شد. وصله از Håkan Lövdahl.
bpo-23566: توابع enable()، register()، dump_traceback() و dump_traceback_later() در faulthandler اکنون توصیفگرهای پرونده را میپذیرند. وصله توسط Wei Wu.
bpo-22928: تزریقهای سرآیند HTTP در http.client غیرفعال شدند. وصلهی اصلی از Demian Brecht.
bpo-23615: ماژولهای bz2، tarfile و tokenize اکنون میتوانند با imp.reload() دوباره بارگذاری شوند. وصله از Thomas Kluyver.
bpo-23605: تابع os.walk() اکنون به جای os.listdir() تابع os.scandir() را فراخوانی میکند. استفاده از os.scandir() تعداد فراخوانیهای os.stat() را کاهش میدهد. وصلهی اولیه توسط Ben Hoyt نوشته شده است.
ساخت¶
bpo-23585: دستور make patchcheck تضمین میکند که مفسر ساخته شده است.
آزمونها¶
Tools/Demos¶
bpo-22826: نتیجهی تابع open() در Tools/freeze/bkfile.py اکنون سازگاری بهتری با پروندههای معمولی دارد (بهویژه اکنون از پروتکل مدیریت زمینه پشتیبانی میکند).
پایتون ۳.۵.۰ آلفا ۲¶
تاریخ انتشار: ۲۰۱۵-۰۳-۰۹
هسته و توکارها (Core and Builtins)¶
bpo-23571: توابع PyObject_Call() و PyCFunction_Call() اکنون اگر تابعی نتیجهای را برگرداند و استثنایی را ایجاد کند، یک SystemError تولید میکنند. خطای SystemError به استثنای قبلی زنجیر میشود.
کتابخانه¶
bpo-22524: تابع جدید os.scandir()، بخشی از PEP 471: "تابع os.scandir() -- یک پیمایشگر پوشهی بهتر و سریعتر". وصله نوشتهشده توسط Ben Hoyt.
bpo-23103: مصرف حافظهی IPv4Address و IPv6Address کاهش یافت.
bpo-21793: کلاس BaseHTTPRequestHandler دوباره کد پاسخ را به صورت عددی ثبت میکند، نه به عنوان enum رشتهایشده. وصله از Demian Brecht.
bpo-23476: در ماژول ssl، پرچم X509_V_FLAG_TRUSTED_FIRST متعلق به OpenSSL را روی انبارههای گواهی در صورت در دسترس بودن فعال کنید.
bpo-23576: از توقف در خواندنهای SSL هنگامی که EOF در لایهی SSL رسیده است اما اتصال زیرین بسته نشده است، جلوگیری کنید.
bpo-23504: یک متغیر __all__ به ماژول types اضافه شد.
bpo-23563: توابع کمکی در urllib.parse بهینهسازی شدند.
bpo-7830: تختسازی تابعهای تو در توی functools.partial.
bpo-20204: صفت __module__ به کلاسهای _tkinter اضافه شد.
bpo-19980: تابع help() برای رشتههای ناشناخته بهبود یافت. تابع help('') اکنون راهنمای مربوط به str را نشان میدهد. تابع help('help') اکنون راهنمای مربوط به help() را نشان میدهد. وصلهی اصلی توسط Mark Lawrence.
bpo-23521: پیادهسازی خالص پایتونی تقسیم timedelta اصلاح شد. خطای OverflowError از عبارت
timedelta * floatبرای برخی اعداد اعشاری حذف شد؛ گرد کردن در تقسیم حقیقی timedelta اصلاح شد.bpo-21619: اشیاء Popen اگر پایپ قطع شده باشد، دیگر پس از خروج در دستور with یک شیء زامبی به جا نمیگذارند. وصله توسط Martin Panter.
bpo-22936: امکان نمایش متغیرهای محلی در ردگیریها را هم برای ماژول traceback و هم برای unittest فراهم کنید.
bpo-15955: یک گزینه برای محدود کردن اندازهی خروجی در bz2.decompress() اضافه کنید. وصله توسط Nikolaus Rath.
bpo-6639: توابع ماژولمحور turtle پس از بستن پنجره دیگر خطای TclError را پرتاب نمیکنند.
bpo-814253: ارجاعهای گروهی و ارجاعهای گروهی شرطی اکنون در assertions نوع lookbehind در عبارتهای باقاعده کار میکنند. (همچنین ببینید: bpo-9179)
bpo-23215: کُدکهای چندبایتی با کنترلکنندههای خطای سفارشی که خطاها را نادیده میگیرند، حافظهی زیادی مصرف میکردند و خطای SystemError یا MemoryError را پرتاب میکردند. وصلهی اصلی توسط Aleksi Torhamo.
bpo-5700: تابع io.FileIO() پس از بستن پرونده، متد flush() را فراخوانی میکرد. اگر closefd=False بود، متد flush() در متد close() فراخوانی نمیشد.
bpo-23374: رفع خطای pydoc با پروندههای غیر اسکی هنگامی که کدگذاری خروجی استاندارد با کدگذاری سیستم پرونده متفاوت است (مثلاً در Mac OS).
bpo-23481: حذف RC4 از فهرست رمزهای پیشفرض ماژول SSL.
bpo-21548: رفع مشکل pydoc.synopsis() و pydoc.apropos() روی ماژولهایی با رشته مستندهای خالی.
bpo-22885: رفع آسیبپذیری اجرای کد دلخواه در ماژول dbm.dumb. وصلهی اصلی توسط Claudiu Popa.
bpo-23239: تابع ssl.match_hostname() اکنون از تطبیق آدرسهای IP پشتیبانی میکند.
bpo-23146: رفع خطای پردازش مسیرهای مطلق ویندوز با اسلشهای رو به جلو در pathlib.
bpo-23096: نمایش پیکل اعداد اعشاری با پروتکل ۰ اکنون برای هر دو پیادهسازی پایتون و C یکسان است.
bpo-19105: ماژول pprint اکنون از فضای خالی سمت راست به شکلی کارآمدتر استفاده میکند.
bpo-14910: افزودن پارامتر allow_abbrev به argparse.ArgumentParser. وصله توسط Jonathan Paugh، Steven Bethard، paul j3 و Daniel Eriksson.
bpo-21717: تابع tarfile.open() اکنون از حالت 'x' (ایجاد انحصاری) پشتیبانی میکند.
bpo-23344: تابع marshal.dumps() اکنون به طور میانگین ۲۰ تا ۲۵ درصد سریعتر شده است.
bpo-20416: تابع marshal.dumps() با پروتکلهای ۳ و ۴ اکنون به طور میانگین ۴۰ تا ۵۰ درصد سریعتر شده است.
bpo-23421: رفع فشردهسازی در رابط خط فرمان tarfile. وصله توسط wdv4758h.
bpo-23367: رفع سرریزهای احتمالی در ماژول unicodedata.
bpo-23361: اصلاح سرریز احتمالی در کد ایجاد زیرفرآیند در ویندوز.
کلاس logging.handlers.QueueListener اکنون یک آرگومان کلیدواژهای respect_handler_level را میپذیرد که اگر روی True تنظیم شود، پیامها را با در نظر گرفتن سطوح هندلر به هندلرها ارسال میکند.
bpo-19705: بسته turtledemo اکنون دارای یک نمونهی نمایشی الگوریتم مرتبسازی بصری است. وصلهی اصلی از Jason Yeo.
bpo-23801: اصلاح مشکلی که در آن cgi.FieldStorage همیشه کل مقدمه (preamble) یک بدنهی چندبخشی را نادیده نمیگرفت.
ساخت¶
رابط C API¶
bpo-20204: هشدار منسوخسازی اکنون برای انواع داخلی بدون ویژگی __module__ صادر میشود.
Windows¶
پایتون ۳.۵.۰ آلفا ۱¶
تاریخ انتشار: ۲۰۱۵-۰۲-۰۸
هسته و توکارها (Core and Builtins)¶
bpo-23285: PEP 475 - مدیریت EINTR.
bpo-22735: اصلاح بسیاری از حالتهای خاص (از جمله فروپاشیها) مربوط به پیادهسازیهای سفارشی mro().
bpo-22896: خودداری از استفادهی PyObject_AsCharBuffer()، PyObject_AsReadBuffer() و PyObject_AsWriteBuffer().
bpo-21295: بازگرداندن برخی تغییرات (bpo-16795) در شماره سطرها و آفست ستونهای درخت نحوی انتزاعی (AST) که یک رگرسیون محسوب میشدند.
bpo-22986: امکان تغییر دادن __class__ یک شیء بین یک نوع پویا و نوع ایستا در برخی موارد.
bpo-15859: توابع PyUnicode_EncodeFSDefault()، PyUnicode_EncodeMBCS() و PyUnicode_EncodeCodePage() اکنون اگر شیء از نوع یونیکد نباشد، یک استثنا ایجاد میکنند. برای PyUnicode_EncodeFSDefault()، این مورد قبلاً در پلتفرمهایی به غیر از ویندوز وجود داشت. وصله نوشتهشده توسط Campbell Barton.
bpo-21408: مقدار پیشفرض __ne__() اکنون اگر __eq__() مقدار NotImplemented را برگرداند، NotImplemented را برمیگرداند. وصلهی اصلی از Martin Panter.
bpo-23321: اصلاح یک فروپاشی در str.decode() هنگامی که هندلر خطا، رشتهی جایگزینی بلندتر از دادههای ورودی معیوب برمیگرداند.
bpo-22286: هندلرهای خطای "backslashreplace" اکنون با کدگشایی و ترجمه کار میکنند.
bpo-23253: تابع ShellExecute[AW] در os.startfile برای کاهش سربار راهاندازی در ویندوز بهصورت تاخیری بارگذاری (Delay-load) میشود.
bpo-22038: ماژول pyatomic.h اکنون در صورت موجود بودن از stdatomic.h یا توابع توکار (built-in) جیسیسی (GCC) برای دسترسی اتمی به حافظه استفاده میکند. این وصله توسط Vitor de Lima و Gustavo Temple نوشته شده است.
bpo-20284: اضافه شدن قالببندی درونیابی % (معروف به printf) برای اشیاء bytes و bytearray.
bpo-23048: مشکل پریدن از یک حلقه while بینهایت در pdb برطرف شد.
bpo-20335: سازندهی bytes اکنون وقتی که encoding یا errors با یک آرگومان غیررشتهای مشخص شود، خطای TypeError را بالا میآورد. بر اساس وصلهای از Renaud Blanch.
bpo-22834: اگر پوشهی کاری فعلی در نهایت روی یک پوشهی ناموجود تنظیم شود، عملیات ایمپورت دیگر خطای FileNotFoundError را بالا نخواهد آورد.
bpo-22869: کد راهاندازی و خاموشسازی مفسر به یک ماژول جدید و اختصاصی به نام pylifecycle.c منتقل شد.
bpo-22847: کارایی نهانگاه (cache) متدها بهبود یافت.
bpo-22335: رفع خرابی هنگام تلاش برای بزرگ کردن یک bytearray به اندازهی 0x7fffffff بایت روی یک سکوی ۳۲ بیتی.
bpo-22653: رفع خطای شرط (assertion) در حالت اشکالزدایی (debug mode) هنگام انجام درج مجدد در دیکشنری (reentrant dict insertion).
bpo-22643: رفع سرریز عدد صحیح در عملیاتهای حروف بزرگ و کوچک یونیکد (upper، lower، title، swapcase، casefold).
bpo-17636: ایمپورتهای حلقوی که شامل ایمپورتهای نسبی هستند اکنون پشتیبانی میشوند.
bpo-22604: رفع خطای شرط در حالت اشکالزدایی هنگام تقسیم یک عدد مختلط بر (nan+0j).
bpo-21052: هنگامی که sys.path_hooks یا sys.meta_path روی None تنظیم شده باشند، هشدار ImportWarning صادر نمیشود.
bpo-16518: استفاده از 'bytes-like object required' در پیامهای خطایی که پیشتر از عبارت بسیار مبهم "'x' does not support the buffer protocol" استفاده میکردند.
bpo-22470: مشکلات سرریز عدد صحیح در هندلرهای خطای "backslashreplace"، "xmlcharrefreplace" و "surrogatepass" برطرف شد.
bpo-22540: افزایش سرعت
PyObject_IsInstanceوPyObject_IsSubclassدر حالت رایجی که آرگومان دوم دارای فراکلاس (metaclass)typeاست.bpo-18711: افزودن تابع جدید
PyErr_FormatV، مشابهPyErr_Formatاما با این تفاوت که یک آرگومانva_listرا میپذیرد.bpo-22520: رفع بررسی سرریز هنگام تولید نمایندگی متنی (repr) از یک شیء یونیکد.
bpo-22519: رفع بررسی سرریز در PyBytes_Repr.
bpo-22518: رفع مشکلات سرریز عدد صحیح (integer overflow) در کدگذاری (encoding) latin-1.
bpo-16324: پارامتر _charset از MIMEText اکنون نمونههای email.charset.Charset را نیز میپذیرد. وصلهی اولیه از Claude Paroz.
bpo-1764286: اصلاح تابع inspect.getsource() برای پشتیبانی از توابع تزئینشده. وصله از Claudiu Popa.
bpo-18554: ویژگی os.__all__ شامل توابع posix است.
bpo-21391: استفاده از os.path.abspath در ماژول shutil.
bpo-11471: جلوگیری از تولید دستورالعمل JUMP_FORWARD در انتهای بلوک if در صورتی که بند else وجود نداشته باشد. وصلهی اصلی از Eugene Toder.
bpo-22215: اکنون وقتی آرگومان str یا bytes حاوی نویسه یا بایت پوچ (null) غیرمجاز باشد، بهجای TypeError خطای ValueError بالا آورده میشود.
bpo-22258: اصلاح تابع داخلی set_inheritable() روی پلتفرم Illumos. این پلتفرم تابع
ioctl(FIOCLEX)را فراهم میکند، اما فراخوانی آن با خطای errno با مقدار ENOTTY شکست میخورد: "Inappropriate ioctl for device". تابع set_inheritable() اکنون به تابع کندترfcntl()(ابتداF_GETFDو سپسF_SETFD) برمیگردد.bpo-21389: نمایش دادن __qualname__ تابع زیرین در نمایشی (repr) از یک متد متصل (bound method).
bpo-22206: با استفاده از pthread، تابع PyThread_create_key() اکنون در هنگام سرریز عدد صحیح (integer overflow)، مقدار errno را برابر با ENOMEM قرار داده و ۱- (خطا) برمیگرداند.
bpo-20184: اضافه شدن دروننگری (introspection) امضا مبتنی بر Argument Clinic برای ۳۰ عدد از توابع توکار (builtin).
bpo-22116: توابع و متدهای C (از نوع 'builtin_function_or_method') اکنون میتوانند با مرجع ضعیف (weakref) استفاده شوند. وصله از Wei Wu.
bpo-22077: بهبود پیامهای خطای اندیس (index) برای bytearrays، bytes، فهرستها (lists) و tupleها با افزودن 'or slices'. افزودن ', not <typename>' برای bytearrays. وصلهی اصلی از Claudiu Popa.
bpo-20179: اعمال Argument Clinic روی bytes و bytearray. وصله از Tal Einat.
bpo-22082: پاکسازی رشتههای درونیسازیشده (interned strings) در slotdefs.
ارتقای پایگاهدادهی یونیکد (Unicode) به نسخهی 7.0.0.
bpo-21897: رفع خرابی (crash) مربوط به ویژگی f_locals با متغیرهای بستار (closure) زمانی که تابع frame.clear() فراخوانی شده است.
bpo-21205: افزودن یک ویژگی جدید
__qualname__به generator، یعنی نام کامل (qualified name)، و استفاده از آن در نمایش دادن یک generator (repr(gen)). نام پیشفرض generator (ویژگی__name__) اکنون بهجای کد، از تابع گرفته میشود. ازgen.gi_code.co_nameبرای بهدست آوردن نام کد استفاده کنید.bpo-21669: با کمک اکتشافات در SyntaxError.__init__، تجزیهکننده (parser) اکنون تلاش میکند وقتی "exec" و "print" به عنوان دستور استفاده میشوند، پیامهای خطای معنادارتری (یا دستکم سازگارتر با موتورهای جستجو) تولید کند.
bpo-21642: در عبارت شرطی if-else، اجازه دهید عدد صحیحی که بدون فاصله بین خودش و کلیدواژه
elseنوشته شده است (مثلاًTrue if 42else False) به عنوان نحو (syntax) معتبر شناخته شود.bpo-21523: اصلاح محاسبهی بیشازحد بدبینانه از اثر پشتهی برخی آپکدها در کامپایلر. این مورد همچنین مشکل زمان کامپایل درجهی دوم را که هنگام کامپایل کردن کد با تعداد زیادی عملگر «and» و «or» قابلتوجه بود، برطرف میکند.
bpo-21418: رفع فروپاشی در تابع توکار super() هنگامی که بدون آرگومان و بدون قاب فعلی فراخوانی میشود (بهعنوانمثال، پایتون تعبیهشده).
bpo-21425: اصلاح تخلیه (flushing) جریانهای استاندارد در مفسر تعاملی.
bpo-21435: در موارد نادر، هنگام اجرای نهاییسازها روی اشیاء موجود در زبالهدانی چرخهای، ممکن است به دلیل یک نقص ظریف در منطق پیمایش داخلی، ارجاع به اشارهکنندهی نامعتبر رخ دهد.
bpo-21377: تابع PyBytes_Concat() اکنون تلاش میکند زمانی که آرگومان اول دارای شمارهی ارجاع ۱ است، الحاق را درجا (in-place) انجام دهد. وصله از Nikolaus Rath.
bpo-20355: گزینههای خط فرمان W- اکنون اولویت بالاتری نسبت به متغیر محیطی PYTHONWARNINGS دارند. وصله از Arfrever.
bpo-21274: تعریف PATH_MAX برای GNU/Hurd در Python/pythonrun.c.
bpo-20904: پشتیبانی از تنظیم دقت FPU روی m68k.
bpo-21209: اصلاح ارسال تاپلها به اشیاء تولیدگر سفارشی با استفاده از سینتکس yield from.
bpo-21193: تابع pow(a, b, c) اکنون هنگامی که b منفی است، بهجای TypeError خطای ValueError را بالا میآورد (raise میکند). وصله از Josh Rosenberg.
bpo-21176: سند PEP 465: اضافه کردن عملگر '@' برای ضرب ماتریس.
bpo-21134: اصلاح خطای قطع دسترسی حافظه (segfault) هنگامی که تابع str روی یک شیء UnicodeEncodeError، UnicodeDecodeError یا UnicodeTranslateError مقداردهینشده فراخوانی میشود.
bpo-19537: اصلاح همترازی PyUnicode_DATA() تحت m68k. وصله از Andreas Schwab.
bpo-20929: اضافه کردن یک تبدیل نوع برای جلوگیری از شیفت دادن یک عدد منفی.
bpo-20731: تعیین موقعیت درست در پروندههای کد منبع حتی اگر در حالت متنی باز شده باشند. وصله از Serhiy Storchaka.
bpo-20637: اشتراکگذاری کلید اکنون برای فرهنگ لغات نمونهی زیرکلاسها نیز کار میکند. وصله از Peter Ingebretson.
bpo-8297: ویژگیهای گمشده از ماژولها اکنون شامل نام ماژول در متن خطا میشوند. وصله اصلی از ysj.ray.
bpo-19995: عبارتهای %c، %o، %x و %X اکنون روی ورودیهای غیرعدد صحیح خطای TypeError بالا میآورند.
bpo-19655: پارسر ASDL - که توسط فرایند ساخت برای تولید کد جهت مدیریت درخت نحوی انتزاعی (AST) پایتون در زبان C استفاده میشود - بازنویسی شد. پارسر جدید مستقل است و نیازی به همراه داشتن طولانی کتابخانهی تولیدگر پارسر spark.py ندارد؛ spark.py از پایگاه کد حذف شد.
bpo-12546: امکان استفاده از
\x00به عنوان نویسهی پرکننده هنگام استفاده از متدهای __format__ مربوط به str، int، float و complex.bpo-20480: اضافه کردن ipaddress.reverse_pointer. توسط Leon Weber.
bpo-13598: تغییر string.Formatter برای پشتیبانی از شمارهگذاری خودکار فیلدهای جایگزینی. این ماژول اکنون از این نظر با رفتار str.format() مطابقت دارد. وصلهها توسط Phil Elson و Ramchandra Apte.
bpo-8931: باعث ایجاد استثنا برای قالببندی جایگزین ('#') در نوع 'c' شود. در نسخههای قبل از ۳.۵، '#' با 'c' هیچ تأثیری نداشت. اکنون مشخص کردن آن یک خطا است. وصله از Torsten Landschoff.
bpo-23165: بررسیهای سرریز را پیش از تخصیص حافظه در تابع _Py_char2wchar انجام دهید.
کتابخانه¶
bpo-23399: ابزار pyvenv در صورت امکان پیوندهای نمادین نسبی ایجاد میکند.
bpo-20289: کلاس cgi.FieldStorage() اکنون از پروتکل مدیریت زمینه پشتیبانی میکند.
bpo-13128: چاپ سرآیندهای پاسخ برای درخواستهای CONNECT هنگامی که debuglevel > 0 است. وصله توسط Demian Brecht.
bpo-15381: بهینهسازی io.BytesIO برای کاهش تخصیصها و کپیکاریها.
bpo-22818: تفکیک روی الگویی که میتواند با یک رشتهی خالی مطابقت داشته باشد، اکنون یک هشدار ایجاد میکند. الگوهایی که فقط میتوانند با رشتههای خالی مطابقت داشته باشند، اکنون رد میشوند.
bpo-23099: بستن io.BytesIO با بافر صادرشده برای جلوگیری از خراب شدن بافر صادرشده اکنون رد میشود.
bpo-23326: پیادهسازیهای __ne__ حذف شدند. از زمان رفع پیادهسازی پیشفرض __ne__ در bpo-21408، آنها اضافی هستند.
bpo-23363: رفع سرریز احتمالی در itertools.permutations.
bpo-23364: رفع سرریز احتمالی در itertools.product.
bpo-23366: رفع سرریز عدد صحیح احتمالی در itertools.combinations.
bpo-23369: رفع سرریز عدد صحیح احتمالی در _json.encode_basestring_ascii.
bpo-23353: مدیریت استثنای تولیدگرها در PyEval_EvalFrameEx() را اصلاح کنید. در زمان ورود، وضعیت استثنا را حتی اگر PyEval_EvalFrameEx() با throwflag=0 فراخوانی شود، ذخیره یا جابهجا کنید. در زمان خروج، وضعیت استثنا اکنون همیشه بازیابی یا جابهجا میشود، نه فقط زمانی که why مقدار WHY_YIELD یا WHY_RETURN باشد. وصله به طور مشترک با Antoine Pitrou نوشته شده است.
bpo-14099: پشتیبانی از نوشتن پروندههای ZIP در جریانهای قابلبازگشت (tellable) اما غیرقابلجستجو بازنشانی شد.
bpo-14099: نوشتن در ZipFile و خواندن چندین ZipExtFiles اکنون ایمندرنخ (threadsafe) است.
bpo-19361: رمزگشای JSON اکنون به جای ValueError خطای JSONDecodeError را ایجاد میکند.
bpo-18518: ابزار timeit اکنون دستوراتی را که نمیتوانند خارج از یک تابع یا حلقه کامپایل شوند (مانند "return" یا "break") رد میکند.
bpo-23094: رفع مشکل خواندن خطوط (readline) با قابها (frames) در پیادهسازی پایتونی پیکل (pickle).
bpo-23268: رفع باگهای موجود در مقایسهی کلاسهای ipaddress.
bpo-21408: پیادهسازیهای نادرست متد __ne__() که اگر __eq__() مقدار NotImplemented را برمیگرداند، این مقدار را برنمیگرداندند، حذف شدند. اکنون متد پیشفرض __ne__() بهدرستی کار میکند.
bpo-19996: اکنون کلاس
email.feedparser.FeedParserبه جای فرض کردن اینکه بدنه شروع شده است، سرآیندهای (بهطور نادرست قالببندیشده) بدون کلید را پردازش میکند.bpo-20188: پشتیبانی از مذاکرهی پروتکل لایهی کاربرد (ALPN) در ماژول ssl.
bpo-23133: پیکلسازی اشیای ipaddress اکنون بازنمایی فشردهتر و قابلحملتری تولید میکند.
bpo-23248: بهروزرسانی کدهای خطای ssl از آخرین نسخهی شاخهی اصلی (master) گیت OpenSSL.
bpo-23266: پیادهسازی بسیار سریعتر تابع ipaddress.collapse_addresses() در مواقعی که آدرسهای غیرمتوالی زیادی وجود دارد.
bpo-23098: پشتیبانی از dev_t شصتوچهار بیتی در ماژول os اضافه شد.
bpo-21817: هنگامی که استثنایی در یک وظیفه (task) ارسالی به ProcessPoolExecutor رخ میدهد، ردگیری (traceback) راه دور اکنون در فرایند والد نمایش داده میشود. بستهی اصلاحی (patch) توسط Claudiu Popa.
bpo-15955: افزودن گزینهای برای محدود کردن اندازهی خروجی هنگام خارج کردن دادههای LZMA از حالت فشرده. بستهی اصلاحی (patch) توسط Nikolaus Rath و Martin Panter.
bpo-23250: در ماژول http.cookies، عبارات «HttpOnly» و «Secure» را همانطور که در استاندارد نوشته شدهاند با حروف بزرگ بنویسید.
bpo-23063: در دستور check ابزار distutils، تحلیل (parsing) متن reST با دایرکتیوهای code یا code-block اصلاح شد.
bpo-23209: متد selectors.BaseSelector.get_key() اکنون اگر انتخابگر (selector) بسته شده باشد، یک RuntimeError ایجاد میکند. همچنین متد selectors.BaseSelector.close() اکنون ارجاع داخلی خود به نگاشت انتخابگر را پاک میکند تا چرخهی ارجاع (reference cycle) شکسته شود. بستهی اصلاحی اولیه نوشتهشده توسط Martin Richard. (همچنین ببینید: bpo-23225)
bpo-17911: فراهم کردن راهی برای مقداردهی اولیه (seed) خطوط کششده (linecache) برای یک ماژول PEP-302 بدون بارگذاری واقعی کد.
bpo-17911: ارائهی یک شیء API جدید برای ردگیری (traceback)، شامل قابلیت عدم جستوجوی سطرها تا زمانی که ردگیری عملاً رندر شود، بدون اینکه هیچ ردپایی از اشیای اصلی زنده نگه داشته شود.
bpo-19777: ارائهی یک متد کلاس (classmethod) به نام home() روی اشیای Path. مشارکت توسط Victor Salgado و Mayank Tripathi.
bpo-23206: ساخت عبارت
json.dumps(..., ensure_ascii=False)به سرعت حالت پیشفرضensure_ascii=True. بستهی اصلاحی (patch) توسط Naoki Inada.bpo-23185: افزودن ثابتهای math.inf و math.nan.
bpo-23186: افزودن متدهای ssl.SSLObject.shared_ciphers() و ssl.SSLSocket.shared_ciphers() برای دریافت فهرست رمزهای کلاینت که در زمان دستدهی (handshake) ارسال شدهاند.
bpo-23143: حذف سازگاری با نسخههای قدیمیتر از 0.9.8 کتابخانهی OpenSSL.
bpo-23132: بهبود کارایی و پشتیبانی از دروننگری در متدهای مقایسهای ایجادشده توسط functool.total_ordering.
bpo-19776: افزودن متد expanduser() روی شیءهای Path.
bpo-23112: اصلاح SimpleHTTPServer برای انتقال درست رشتهی پرسوجو و بخش قطعه (fragment) هنگام تغییر مسیر برای افزودن اسلش پایانی.
bpo-21793: افزودن enumهای http.HTTPStatus (مانند HTTPStatus.OK، HTTPStatus.NOT_FOUND). وصلهای از Demian Brecht.
bpo-23093: در ماژول io، به عملیات بیشتری اجازه دهید روی جریانهای جداشده (detached streams) کار کنند.
bpo-23111: در ftplib، مقدار ssl.PROTOCOL_SSLv23 را به عنوان نسخهی پروتکل پیشفرض قرار دهید.
bpo-22585: در OpenBSD نسخهی 5.6 و جدیدتر، اکنون os.urandom() برای دریافت بایتهای شبهتصادفی، بهجای خواندن /dev/urandom، تابع getentropy() را فراخوانی میکند.
bpo-19104: تابع pprint اکنون برای رشتههای پیچیده خروجی قابل ارزیابی تولید میکند.
bpo-23071: افزودن نامهای گمشده به codecs.__all__. وصلهای از Martin Panter.
bpo-22783: پیکل کردن (Pickling) در صورت امکان اکنون بهجای آپکد NEWOBJ_EX از آپکد NEWOBJ استفاده میکند.
bpo-15513: افزودن یک پیادهسازی __sizeof__ برای کلاسهای پیکل.
bpo-19858: تابع pickletools.optimize() اکنون از آپکد MEMOIZE آگاه است، میتواند نتیجهی فشردهتری تولید کند و اگر دادههای ورودی حاوی آپکدهای MEMOIZE به همراه آپکدهای PUT یا BINPUT باشند، دیگر خروجی نامعتبر تولید نمیکند.
bpo-22095: رفع مشکل HTTPConnection.set_tunnel با پورت پیشفرض. مقدار پورت در سرآیند میزبان روی «None» تنظیم شده بود. وصلهای از Demian Brecht.
bpo-23016: یک اخطار هنگام اجرای برنامه با pythonw.exe دیگر خطای AttributeError تولید نمیکند.
bpo-21775: تابع shutil.copytree(): رفع فروپاشی هنگام کپی کردن به VFAT. یک هندلر استثنا فرض میکرد که شیءهای OSError همیشه دارای ویژگی 'winerror' هستند. اینطور نیست، بنابراین خود هندلر استثنا هنگام اجرا روی لینوکس (و احتمالاً هر سیستمعامل غیر ویندوزی دیگری) خطای AttributeError را ایجاد کرد. وصلهای از Greg Ward.
bpo-1218234: رفع inspect.getsource() برای بارگذاری منبع بهروزشدهی ماژول بارگذاری مجدد شده. وصلهی اولیه از Berker Peksag.
bpo-21740: پشتیبانی از موارد فراخوانیپذیر بستهبندیشده در doctest. وصلهای از Claudiu Popa.
bpo-23009: اطمینان حاصل کنید که وقتی هیچ FD ثبت نشده است، selectors.EpollSelector.select() به درستی کار میکند.
bpo-22959: در سازندهی http.client.HTTPSConnection، ویژگی check_hostname زمینهی (context) را به پارامتر check_hostname ترجیح دهید.
bpo-22696: افزودن تابع
sys.is_finalizing()برای آگاهی از خاموش شدن مفسر.bpo-16043: افزودن یک حد پیشفرض برای مقدار دادهای که xmlrpclib.gzip_decode برمیگرداند. این مسئله CVE 2013-1753 را حل میکند.
bpo-14099: متد ZipFile.open() دیگر پروندهی زیرین را دوباره باز نمیکند. اشیاء برگرداندهشده توسط ZipFile.open() اکنون میتوانند مستقل از ZipFile عمل کنند، حتی اگر ZipFile با ارسال یک شیء شبهپرونده به عنوان آرگومان اول به سازنده ایجاد شده باشد.
bpo-22966: رفع مشکل بازنویسی نام پروندهی pyc در __pycache__ هنگامی که از pyc_compile خواسته میشود یک پروندهی منبع حاوی چندین نقطه در نام پروندهی منبع را کامپایل کند.
bpo-21971: بهروزرسانی مستندات turtledemo و افزودن ماژول به اندیس.
bpo-21032: رفع نشت سوکت در صورت شکست HTTPConnection.getresponse(). وصله توسط مارتین پنتر (Martin Panter) نوشته شده است.
bpo-22407: منسوخ کردن استفاده از پرچم re.LOCALE با الگوهای str یا re.ASCII. این کار هرگز کار نمیکرد.
bpo-22902: دستور "ip" اکنون در لینوکس برای تعیین آدرس MAC در uuid.getnode() استفاده میشود. وصله توسط برونو کوئت (Bruno Cauet).
bpo-22960: افزودن یک آرگومان زمینهای (context) به سازندهی xmlrpclib.ServerProxy.
bpo-22389: افزودن contextlib.redirect_stderr().
bpo-21356: اختیاری کردن ssl.RAND_egd() برای پشتیبانی از LibreSSL. دسترسپذیری این تابع در طول کامپایل بررسی میشود. وصله نوشتهشده توسط برنارد اسپیل (Bernard Spil).
bpo-22915: پارسر SAX اکنون از پروندههای بازشده با توصیفگر پرونده یا مسیرهای از نوع bytes پشتیبانی میکند.
bpo-22609: سازندهها و متدهای بهروزرسانی کلاسهای نگاشت در ماژول collections اکنون آرگومان کلیدواژهای self را میپذیرند.
bpo-22940: افزودن readline.append_history_file.
bpo-19676: افزودن هندلر خطای "namereplace".
bpo-22788: افزودن پارامتر context به logging.handlers.HTTPHandler.
bpo-22921: اجازه دادن به SSLContext برای پذیرش پارامتر hostname حتی اگر OpenSSL از SNI پشتیبانی نکند.
bpo-22894: متد TestCase.subTest() باعث میشد که مجموعهی آزمون در حالت failfast متوقف شود، حتی اگر هیچ خطایی رخ نداده باشد.
bpo-22796: تجزیه کوکیهای HTTP اکنون سختگیرانهتر شده است تا در برابر حملات تزریق بالقوه محافظت شود.
bpo-22370: تشخیص ویندوز در pathlib اکنون قویتر شده است.
bpo-22841: رد کردن همروالها در asyncio add_signal_handler(). اصلاحیهای از Ludovic.Gasc.
bpo-19494: اضافه شدن urllib.request.HTTPBasicPriorAuthHandler. اصلاحیهای از Matej Cepl.
bpo-22578: اضافه شدن صفتها به کلاس re.error.
bpo-22849: رفع احتمال آزاد شدن مضاعف حافظه در سازندهی io.TextIOWrapper.
bpo-12728: نویسههای یونیکد مختلفی که حروف بزرگ یکسان اما حروف کوچک متفاوتی دارند، اکنون در عبارتهای باقاعدهی مستقل از بزرگی و کوچکی حروف مطابقت داده میشوند.
bpo-22821: رفع مشکل fcntl() با آرگومان عدد صحیح روی سکوهای بزرگاندیان ۶۴ بیتی.
bpo-21650: اضافه شدن گزینهی
--sort-keysبه رابط خط فرمانjson.tool.bpo-22824: بهروزرسانی قالب خروجی reprlib برای مجموعهها جهت استفاده از مقادیر لفظی مجموعه. اصلاحیهای ارائهشده توسط Berker Peksag.
bpo-22824: بهروزرسانی قالب خروجی reprlib برای آرایهها جهت نمایش آرایههای خالی بدون فهرست خالی غیرضروری. پیشنهادشده توسط Serhiy Storchaka.
bpo-22406: رفع مشکل انتقال نادرست کُدک uu_codec به نسخهی 3.x. بر اساس اصلاحیهای از Martin Panter.
bpo-17293: تابع uuid.getnode() اکنون آدرس MAC را روی AIX با استفاده از netstat تعیین میکند. بر اساس اصلاحیهای از Aivars Kalvāns.
bpo-22769: رفع مشکل ttk.Treeview.tag_has() هنگامی که بدون آرگومان فراخوانی میشود.
bpo-22417: تأیید گواهیها به طور پیشفرض در httplib (PEP 476).
bpo-22775: رفع مشکل بازگردانی از حالت پیکل (unpickling) ماژول http.cookies.SimpleCookie با پروتکل ۲ به بالا. اصلاحیهای از Tim Graham.
bpo-22776: آوردن کد مستثنیشده به محدودهی یک بلوک try در SysLogHandler.emit().
bpo-22665: اضافه کردن get_terminal_size و SameFileError گمشده به shutil.__all__.
bpo-6623: حذف کلاس منسوخشدهی Netrc در ماژول ftplib. اصلاحیهای از Matt Chaput.
bpo-17381: رفع مشکل مدیریت بازههای مستقل از بزرگی و کوچکی حروف در عبارتهای باقاعده.
bpo-22410: توابع سطح ماژول در ماژول re اکنون عبارتهای باقاعدهی وابسته به locale کامپایلشده را با در نظر گرفتن locale نهانگاه (cache) میکنند.
bpo-22759: متدهای پرسوجو روی pathlib.Path() (مانند exists()، is_dir() و غیره) اکنون وقتی فراخوانی stat زیرین خطای NotADirectoryError را ایجاد کند، False برمیگردانند.
bpo-8876: ماژول distutils اکنون در صورت کار نکردن پیوند سخت (hard link)، به کپی کردن پروندهها روی میآورد. این امر امکان استفاده از سامانههای فایلبندی خاص مانند پوشههای مشترک VirtualBox را فراهم میکند.
bpo-22217: پیادهسازی نمایشهای متنی (repr) کلاسها در ماژول zipfile.
bpo-22457: احترام به load_tests در start_dir مربوط به فرآیند کشف (discovery).
bpo-18216: ماژول gettext اکنون هنگامی که یک پروندهی مو (.mo) دارای شماره نسخهی اصلی پشتیبانینشدهای باشد، خطایی را مطرح میکند. وصلهی ارائه شده توسط Aaron Hill.
bpo-13918: ارائهی تابع locale.delocalize() که میتواند قالببندی اعداد محلی را از رشتهای که نمایانگر یک عدد است حذف کند، بدون اینکه آن را به یک نوع دادهی خاص تبدیل کند. وصلهی ارائه شده توسط Cédric Krier.
bpo-22676: کمتر کردن کندی فرآیند پیکل کردن (pickling) شیءهای سراسری که ویژگی __module__ را ندارند.
bpo-18853: رفع هشدار ResourceWarning در shlex.__nain__.
bpo-9351: مقادیر پیشفرضی که با set_defaults روی یک زیرپارسر (subparser) در argparse تنظیم میشوند، دیگر در صورتی که روی پارسر والد نیز تنظیم شده باشند، نادیده گرفته نمیشوند.
bpo-7559: خطاهای ایمپورت (ImportError) در بارگذاری آزمونهای unittest به عنوان خطاهای ایمپورت همراه با استثنای ایمپورت مربوطه گزارش میشوند، نه به عنوان خطاهای ویژگی (attribute error) پس از اینکه فرآیند ایمپورت از پیش شکست خورده است.
bpo-19746: امکان بررسی خطاها از فرآیند کشف unittest بدون اجرای مجموعهآزمون (test suite) فراهم شد. ویژگی جدید
errorsرویTestLoaderاین خطاهای غیرمهلک رخداده در طول کشف را نمایان میکند.bpo-21991: ویژگیهای header 'params' در email.headerregistry خواندنی (MappingProxyType) شدند. پیش از این دیکشنری قابل تغییر بود اما با هر بار دسترسی به ویژگی، یک دیکشنری جدید ایجاد میشد.
bpo-22638: پروتکل SSLv3 اکنون در سراسر کتابخانهی استاندارد غیرفعال شده است. همچنان میتوان آن را با نمونهسازی دستی یک SSLContext فعال کرد.
bpo-22641: در asyncio، زمینهی (context) پیشفرض SSL برای اتصالات کلاینت اکنون برای امنیت بیشتر با استفاده از ssl.create_default_context() ایجاد میشود.
bpo-17401: گنجاندن closefd در repr مربوط به io.FileIO.
bpo-21338: افزودن حالت سکوت برای compileall. پارامترهای quiet در توابع compile_{dir, file, path} اکنون دارای مقدار چندسطحی هستند. همچنین گزینهی -q در رابط خط فرمان (CLI) اکنون دارای مقدار چندسطحی است. وصلهی ارائه شده توسط Thomas Kluyver.
bpo-20152: تبدیل ماژولهای array و cmath به Argument Clinic.
bpo-18643: افزودن socket.socketpair() در ویندوز.
bpo-22435: رفع نشت توصیفگر پرونده (file descriptor) هنگامی که عملیات اتصال (bind) در socketserver با شکست مواجه میشود.
bpo-13096: رفع خطای segfault در مدیریت اشارهگرهای POINTER کتابخانهی CTypes برای مقادیر بزرگ.
bpo-11694: مطرح کردن خطای ConversionError در xdrlib همانطور که مستند شده است. وصلهی ارائه شده توسط Filip Gruszczyński و Claudiu Popa.
bpo-19380: بهینهسازی تجزیه عبارتهای باقاعده.
bpo-1519638: اکنون در re.sub() و re.subn() گروههای مطابقتدادهنشده با رشتههای خالی جایگزین میشوند.
bpo-18615: توابع sndhdr.what و whathdr اکنون یک namedtuple برمیگردانند.
bpo-22462: رفع مشکل ایجاد یک قاب ساختگی (dummy frame) توسط pyexpat برای نمایش آن در ردگیریهای استثنا.
bpo-21965: افزودن پشتیبانی از SSL درون حافظه به ماژول ssl. وصله توسط گرت جانسن (Geert Jansen).
bpo-21173: رفع مشکل len() روی یک WeakKeyDictionary هنگامی که .clear() با یک پیمایشگر فعال فراخوانی شده بود.
bpo-11866: رفع شرایط رقابت (race condition) در محاسبهی نام نخهای جدید.
bpo-21905: جلوگیری از بروز RuntimeError در pickle.whichmodule() هنگامی که sys.modules در حین پیمایش تغییر میکند. وصله توسط اولیویه گریزل (Olivier Grisel).
bpo-11271: تابع concurrent.futures.Executor.map() اکنون یک آرگومان chunksize برای امکان دستهبندی وظایف در فرایندهای فرزند و بهبود کارایی ProcessPoolExecutor میپذیرد. وصله توسط دن اورایلی (Dan O'Reilly).
bpo-21883: توابع os.path.join() و os.path.relpath() اکنون برای انواع دادهی پشتیبانینشده یا نامتطابق از آرگومانها، خطای TypeError با پیام راهنماتری بالا میآورند.
bpo-22219: رابط خط فرمان ماژول zipfile اکنون ورودیهایی برای پوشهها (از جمله پوشههای خالی) در پروندهی ZIP اضافه میکند.
bpo-22449: در تابع ssl.SSLContext.load_default_certs، متغیرهای محیطی SSL_CERT_DIR و SSL_CERT_FILE در ویندوز بررسی شوند.
bpo-22508: متغیر email.__version__ حذف شده است؛ کد email دیگر بهصورت جداگانه از کتابخانهی استاندارد عرضه نمیشود و __version__ طی چند نسخهی گذشته بهروزرسانی نشده است.
bpo-20076: نامهای مستعار UTF-8 مشتقنشده به جدول نامهای مستعار locale اضافه شدند.
bpo-20079: محلیهای (locales) پشتیبانیشده در glibc 2.18 به جدول نامهای مستعار locale اضافه شدند.
bpo-20218: متدهای راحتی read_text/write_text و read_bytes/write_bytes به اشیاء pathlib.Path اضافه شدند.
bpo-22396: روی پلتفرم AIX سیودوبیتی، توابع os.posix_fadvise() و os.posix_fallocate() را معرض دید قرار ندهید زیرا پیشنمونههای آنها در سرآیندهای سیستم نادرست است.
bpo-22517: هنگامی که یک شیء io.BufferedRWPair تخصیصزدایی میشود، ارجاعات ضعیف (weakrefs) آن پاکسازی شوند.
bpo-22437: تعداد گروههای ثبتکننده در عبارت باقاعده دیگر به ۱۰۰ محدود نیست.
bpo-17442: مفسر تعاملی (InteractiveInterpreter) اکنون ردگیری زنجیرشدهی کامل را در متد showtraceback خود نمایش میدهد تا با مفسر تعاملی توکار مطابقت داشته باشد.
bpo-23392: آزمونهایی برای API زبان C مربوط به مارشالکردن اضافه شد که با FILE* کار میکند.
bpo-10510: متدهای register و upload در ماژول distutils اکنون از پایانهی سطر CRLF سازگار با استانداردهای HTML استفاده میکنند.
bpo-9850: مشکل تابع macpath.join() برای اولین مؤلفهی خالی برطرف شد. وصلهای از Oleg Oshmyan.
bpo-5309: دستورهای build و build_ext در distutils اکنون گزینهی
-jرا برای فعالسازی ساخت موازی ماژولهای توسعهای میپذیرند.bpo-22448: برای جلوگیری از مصرف بیرویهی حافظه، پاکسازی دستههای تایمر لغو شده بهبود یافت. وصلهای از Joshua Moore-Oliva.
bpo-22427: کلاس TemporaryDirectory دیگر هنگام استفاده در دستور با (with statement) در تولیدگر، تلاشی برای پاکسازی مضاعف نمیکند.
bpo-22362: گریزهای (escape) هشتهشتی مبهم و غیرمجاز خارج از محدودهی 0-0o377 در عبارتهای باقاعده ممنوع شدند.
bpo-20912: اکنون پوشههای اضافه شده به پروندهی ZIP دارای ویژگیهای صحیح پوشهی Unix و MS-DOS هستند.
bpo-21866: اگر مقدار allowZip64 برابر با false باشد، متد ZipFile.close() دیگر رکوردهای پوشهی مرکزی ZIP64 را نمینویسد.
bpo-22278: مشکل urljoin با URLهای نسبی برطرف شد؛ این رگرسیون پس از اعمال تغییرات مربوط به issue22118 مشاهده شده بود.
bpo-22415: خروجی اشکالزدایی آپکد GROUPREF_EXISTS در ماژول re اصلاح شد. فضاهای خالی پایانی در خروجی اشکالزدایی حذف شدند.
bpo-22423: استثنای مدیریتنشده در نخ دیگر باعث خطای مدیریتنشدهی AttributeError هنگامی که sys.stderr برابر با None است، نمیشود.
bpo-21332: اطمینان حاصل شد که مقدار
bufsize=1در تابع subprocess.Popen() بهجای بافرینگ بلوکی، بافرینگ سطری را انتخاب میکند. وصلهای از Akira Li.bpo-21091: رفع اشکال API: خصوصیت email.message.EmailMessage.is_attachment اکنون یک متد است.
bpo-21079: رفع اشکال email.message.EmailMessage.is_attachment تا هنگامی که سرآیند علاوهبر مقدار دارای پارامتر نیز هست، نتیجهی صحیحی را برگرداند.
bpo-22247: اضافه شدن NNTPError به nntplib.__all__.
bpo-22366: تابع urllib.request.urlopen یک شیء زمینهی (SSLContext) را به عنوان آرگومان میپذیرد که پس از آن برای اتصال HTTPS استفاده خواهد شد. وصلهای از Alex Gaynor.
bpo-4180: رجیستریهای هشدارها اکنون هنگام تغییر فیلترها بازنشانی میشوند.
bpo-22419: محدود کردن طول درخواست HTTP ورودی در سرور wsgiref به ۶۵۵۳۶ بایت و ارسال کد خطای ۴۱۴ برای طولهای بیشتر. وصلهای از Devin Cook.
تجزیه و تحلیل ملایم کوکی (Lax cookie parsing) در http.cookies میتواند در صورت ترکیب با مدیریت غیر استاندارد کوکی در برخی مرورگرهای وب، یک مسئلهی امنیتی باشد. گزارش شده توسط Sergey Bobrov.
bpo-20537: متدهای گزارشگیری اکنون یک نمونهی استثنا و همچنین یک مقدار بولی یا تاپل استثنا را میپذیرند. با تشکر از Yury Selivanov برای ارائهی این وصله.
bpo-22384: یک استثنا در کالبک Tkinter زمانی که با pythonw.exe اجرا میشود، دیگر باعث فروپاشی برنامه نمیشود.
bpo-22168: جلوگیری از بروز خطای AttributeError در turtle با Canvas غیرپیشفرض روی OS X.
bpo-21147: ماژول sqlite3 اکنون اگر درخواست حاوی یک نویسهی تهی باشد، به جای قطع کردن آن، یک استثنا بالا میآورد. براساس وصلهی ارائهشده توسط Victor Stinner.
bpo-13968: ماژول glob اکنون از جستجوی بازگشتی در زیرپوشهها با استفاده از الگوی
**پشتیبانی میکند.bpo-21951: رفع یک فروپاشی در Tkinter روی AIX هنگامی که دستور Tcl با یک رشتهی خالی یا آرگومان تاپل فراخوانی میشد.
bpo-21951: ماژول Tkinter اکنون در صورت شکست تخصیص حافظه، به احتمال زیاد به جای فروپاشی، خطای MemoryError را بالا میآورد.
bpo-22338: رفع فروپاشی در ماژول json در هنگام شکست تخصیص حافظه.
bpo-12410: کلاس imaplib.IMAP4 اکنون از پروتکل مدیریت زمینه پشتیبانی میکند. وصلهی اصلی از Tarek Ziadé.
bpo-21270: ما اکنون متدهای تاپل را در اشیای mock.call بازنویسی میکنیم تا بتوان از آنها به عنوان ویژگیهای عادی فراخوانی استفاده کرد.
bpo-16662: تابع
load_tests()اکنون هر زمان که در__init__.pyیک بسته موجود باشد، بدون قید و شرط اجرا میشود. متدTestLoader.loadTestsFromModule()همچنان use_load_tests را میپذیرد، اما منسوخ شده و نادیده گرفته میشود. یک ویژگی جدید فقط-کلیدواژه به نامpatternاضافه شده و مستند شده است. وصله توسط Robert Collins داده شده و توسط Barry Warsaw اصلاح شده است.bpo-22226: حرف اول دیگر از کلید "status" در نتیجهی Treeview.heading() حذف نمیشود.
bpo-19524: رفع نشتی منبع در اتصال HTTP هنگامی که یک پاسخ نامعتبر دریافت میشود. وصله از Martin Panter.
bpo-20421: افزودن متد .version() به سوکتهای SSL که نسخهی پروتکل واقعی در حال استفاده را نمایش میدهد.
bpo-19546: استثناهای configparser دیگر جزئیات پیادهسازی را آشکار نمیکنند. خطاهای کلید زنجیرهای (Chained KeyErrors) حذف شدهاند که منجر به ردگیریهای تمیزتر میشود. وصله از Claudiu Popa.
bpo-22051: ماژول turtledemo دیگر مثالها را برای اجرای مجدد بارگذاری نمیکند. مقداردهی اولیهی متغیرها و راهاندازی رابط گرافیکی (gui) باید در main() انجام شود که هر بار که یک نمونهکار اجرا میشود (اما نه در هنگام ایمپورت)، فراخوانی میشود.
bpo-21933: کاربران turtledemo میتوانند اندازهی قلم کد را با یک انتخاب از منو یا کلیدهای کنترل (فرمان) '-' یا '+' یا چرخ ماوس و کنترل تغییر دهند. وصلهی اصلی از Lita Cho.
bpo-21597: جداکنندهی بین بخش متن turtledemo و بوم رسم اکنون میتواند با ماوس گرفته شده و کشیده شود. بخش متن کد را میتوان عریضتر کرد تا عرض کامل متن به راحتی مشاهده یا کپی شود. بوم رسم را میتوان در صفحهنمایشهای کوچک عریضتر کرد. وصلههای اصلی از Jan Kanis و Lita Cho.
bpo-18132: دکمههای turtledemo هنگام کوچک شدن پنجره دیگر ناپدید نمیشوند. وصلههای اصلی از Jan Kanis و Lita Cho.
bpo-22043: تابع time.monotonic() اکنون همیشه در دسترس است. توابع
threading.Lock.acquire()،threading.RLock.acquire()و عملیاتهای سوکت اکنون به جای ساعت سیستم، زمانی که از مهلت زمانی استفاده میشود، از یک ساعت یکنواخت استفاده میکنند.bpo-21527: افزودن تعداد پیشفرضی از کارگران به ThreadPoolExecutor که برابر با ۵ برابر تعداد پردازندهها است. پچ توسط Claudiu Popa.
bpo-22216: ماژول smtplib اکنون پس از دستور quit وضعیت خود را به طور کاملتری بازنشانی میکند. آشکارترین پیامد رفتار قبلی، بروز خطای STARTTLS در طول یک دنبالهی connect/starttls/quit/connect/starttls بود.
bpo-22098: کلاسهای BigEndianStructure و LittleEndianStructure در ctypes اکنون یک __slots__ خالی تعریف میکنند تا زیرکلاسها همیشه یک دیکشنری نمونه دریافت نکنند. پچ توسط Claudiu Popa.
bpo-22185: رفع یک خطای RuntimeError گاهبهگاه در threading.Condition.wait() که به دلیل تغییرات صف نگهبانان بدون نگه داشتن قفل ایجاد میشد. پچ توسط Doug Zongker.
bpo-22287: روی سیستمعامل یونیکس، تابع _PyTime_gettimeofday() اکنون در صورت در دسترس بودن از clock_gettime(CLOCK_REALTIME) استفاده میکند. به عنوان یک اثر جانبی، پایتون اکنون روی سولاریس و لینوکس (فقط با نسخههای glibc قدیمیتر از ۲.۱۷) به کتابخانهی librt وابستگی دارد.
bpo-22182: استفاده از e.args برای بازکردن بسته استثناها به صورت صحیح در distutils.file_util.move_file. پچ توسط Claudiu Popa.
ماژول webbrowser اکنون به جای فراخوانی بهطور بالقوه مخاطرهآمیز preexec_fn=os.setsid، از پارامتر start_new_session=True در ماژول subprocess استفاده میکند.
bpo-22042: تابع signal.set_wakeup_fd(fd) اکنون اگر توصیفگر پرونده در حالت مسدود کننده باشد، یک استثنا ایجاد میکند.
bpo-16808: تابع inspect.stack() اکنون به جای یک تاپل، یک تاپل نامدار برمیگرداند. پچ توسط Daniel Shahaf.
bpo-22236: رفع عملیات کپی کردن تصاویر Tkinter در حالت NoDefaultRoot.
bpo-2527: افزودن یک آرگومان globals به توابع timeit، به منظور بازنویسی فضای نام سراسری که کد زمانسنجیشده در آن اجرا میشود. پچ توسط Ben Roberts.
bpo-22118: تغییر urllib.parse به استفاده از معناشناسی RFC 3986 برای حل URLs نسبی، به جای RFCهای ۱۸۰۸ و ۲۳۹۶. پچ توسط Demian Brecht.
bpo-21549: اضافه شدن پارامتر "members" به TarFile.list().
bpo-19628: اجازه دادن به مشخص کردن عمق بازگشتی compileall با استفاده از گزینهی -r.
bpo-15696: افزودن یک پیادهسازی __sizeof__ برای شیءهای mmap روی ویندوز.
bpo-22068: جلوگیری از حلقههای ارجاع با Variables و Fonts در Tkinter.
bpo-22165: کلاس SimpleHTTPRequestHandler اکنون از نام پروندههای غیرقابل رمزگشایی پشتیبانی میکند.
bpo-15381: بهینهسازی خواندن سطر در io.BytesIO.
bpo-8797: ایجاد خطای HTTPError هنگام شکست احراز هویت پایهای (Basic Authentication) بلافاصله. پچ اولیه توسط Sam Bull.
bpo-20729: بازیابی استفاده از iterkeys()/itervalues()/iteritems تنبل در ماژول mailbox.
bpo-21448: متد feed() در FeedParser تغییر کرد تا هنگام تجزیهی سطر طولانی از رفتار O(n2) جلوگیری شود. وصله از Raymond Hettinger.
bpo-22184: کارخانهی دکوراتور نهانگاه (LRU Cache) در functools اکنون هنگام فراموش کردن پارامترهای لازم توسط کاربر، پیام خطای زودتر و واضحتری ارائه میدهد.
bpo-17923: الگوهای glob() که به اسلش ختم میشوند دیگر با غیرپوشهها روی AIX مطابقت ندارند. بر اساس وصلهای از Delhallt.
bpo-21725: پشتیبانی از RFC 6531 (SMTPUTF8) به smtpd اضافه شد.
bpo-22176: libffi متعلق به ماژول ctypes به v3.1 بهروزرسانی شد. این انتشار پشتیبانی از معماریهای لینوکسی AArch64 و POWERPC ELF ABIv2 با بایتکم (little endian) را اضافه میکند.
bpo-5411: پشتیبانی از قالب «xztar» در ماژول shutil اضافه شد.
bpo-21121: افزونههای C شخص ثالث را مجبور نکنید که با -Werror=declaration-after-statement ساخته شوند.
bpo-21975: فروپاشی هنگام استفاده از sqlite3.Row مقداردهینشده (بهویژه هنگام بارگذاری مجدد شیء ترشیشدهی sqlite3.Row) برطرف شد. شیء sqlite3.Row اکنون در متد __new__() مقداردهی اولیه میشود.
bpo-20170: تبدیل posixmodule برای استفاده از Argument Clinic.
bpo-21539: یک آرگومان exists_ok به
Pathlib.mkdir()اضافه شد تا عملکردmkdir -pوos.makedirs()را شبیهسازی کند. در صورت درست بودن،FileExistsErrorsنادیده گرفته میشود. وصله از Berker Peksag.bpo-22127: دور زدن IDNA برای نامهای میزبان خالص اسکی (pure-ASCII) در ماژول socket (بهویژه برای IPهای عددی).
bpo-21047: مقدار پیشفرض برای آرگومان convert_charrefs در HTMLParser روی True تنظیم شد. وصله از Berker Peksag.
یک __all__ به html.entities اضافه شد.
bpo-15114: حالت سختگیرانه (strict mode) و آرگومان HTMLParser، HTMLParser.error، و استثنای HTMLParserError حذف شدهاند.
bpo-22085: پشتیبانی از Tk 8.3 در Tkinter متوقف شد.
bpo-21580: اکنون Tkinter آرگومانهای بایت ارسالشده به Tk را به درستی مدیریت میکند. بهویژه، این امکان را فراهم میکند که تصاویر از دادههای دودویی مقداردهی اولیه شوند.
bpo-22003: هنگام مقداردهی اولیه از یک شیء بایت، io.BytesIO() اکنون ایجاد نسخه را تا زمان تغییر (mutated) به تعویق میاندازد که باعث بهبود عملکرد و استفاده از حافظه در برخی موارد کاربرد میشود. وصله از David Wilson.
bpo-22018: در ویندوز، تابع signal.set_wakeup_fd() اکنون از سوکتها نیز پشتیبانی میکند. یک عارضهی جانبی این است که پایتون به کتابخانهی WinSock وابسته میشود.
bpo-22054: توابع os.get_blocking() و os.set_blocking() برای دریافت و تنظیم حالت مسدودکنندهی توصیفگر پرونده (اگر پرچم O_NONBLOCK تنظیم شده باشد False، در غیر این صورت True) اضافه شدند. این توابع در ویندوز در دسترس نیستند.
bpo-17172: باعث میشود turtledemo حتی زمانی که با subprocess اجرا میشود، روی OS X به عنوان فعال شروع به کار کند. وصله از Lita Cho.
bpo-21704: اصلاح خطای ساخت (build) برای _multiprocessing در صورت عدم دسترسی به سمافورها (semaphores). وصله (patch) توسط Arfrever Frehtes Taifersar Arahesis.
bpo-20173: تبدیل sha1، sha256، sha512 و md5 به ArgumentClinic. وصله (patch) توسط Vajrasky Kok.
اصلاح تابع repr(_socket.socket) روی ویندوز ۶۴ بیتی: عدم مواجهه با خطای OverflowError روی سوکت بسته. تابع repr(socket.socket) از پیش به درستی کار میکند.
bpo-22033: نمایشدهندههای (Reprs) بیشتر کلاسهای پیادهسازیشده در پایتون اکنون بهجای نام سختکدشده، حاوی نام واقعی کلاس هستند.
bpo-21947: ماژول dis اکنون میتواند اشیاء پیمایشگر تولیدگر (generator-iterator) را بر اساس ویژگی gi_code آنها واسازی کند (disassemble). وصله (patch) توسط Clement Rouault.
bpo-16133: متد asynchat.async_chat.handle_read() اکنون استثناهای BlockingIOError را نادیده میگیرد.
bpo-22044: اصلاح کاهش زودهنگام مرجع (DECREF) در call_tzinfo_method. وصله (patch) توسط Tom Flanagan.
bpo-19884: readline: اگر خروجی استاندارد (stdout) یک پایانه نباشد، کلید تغییردهندهی meta را غیرفعال کنید تا دنباله ANSI مربوط به
"\033[1034h"در خروجی استاندارد نوشته نشود. این دنباله در برخی پایانهها (مانند TERM=xterm-256color) برای فعالسازی پشتیبانی از نویسههای ۸ بیتی استفاده میشود.bpo-4350: حذف تعدادی از متدهای قدیمی و منسوخشدهی Tkinter که مدتها بود کار نمیکردند.
bpo-6167: متد Scrollbar.activate() اکنون اگر آرگومان مشخص نشده باشد، نام عنصر فعال را برمیگرداند. متد Scrollbar.set() اکنون همیشه فقط ۲ آرگومان را میپذیرد.
bpo-15275: پاکسازی و بهبود سرعت ماژول ntpath.
bpo-21888: توابع load() و loads() در ماژول plistlib اکنون اگر پارامتر fmt مشخص شده باشد، به درستی کار میکنند.
bpo-22032: ویژگی __qualname__ اکنون بهجای __name__ همیشه برای قالببندی نامهای کامل کلاسهای پیادهسازیشده در پایتون استفاده میشود.
bpo-22031: نمایشدهندهها (Reprs) اکنون هنگام داشتن شناسه در قالب « at 0x...»، همیشه از قالب هگزادسیمال با پیشوند «0x» استفاده میکنند.
bpo-22018: تابع signal.set_wakeup_fd() اکنون در صورت بروز خطای
fstat()، بهجای ValueError یک OSError بالا میآورد.bpo-21044: تابع tarfile.open() اکنون شیء پرونده (fileobj) را با یک ویژگی 'name' از نوع عدد صحیح مدیریت میکند. بر اساس وصله (patch) توسط Antoine Pietri.
bpo-21966: هنگام اجرای ماژول code، گزینهی خط فرمان q- رعایت شود.
bpo-19076: آرگومان اضافی و تکراری 'file' را به self.error() ارسال نکنید.
bpo-16382: بهبود پیام استثنای warnings.warn() برای دستهی نامعتبر. وصله (patch) اولیه توسط Phil Elson.
bpo-21932: تابع os.read() اکنون برای اندازهی خواندن، بهجای int از نوع
Py_ssize_t()استفاده میکند تا از خواندن بیش از ۲ گیگابایت در یک بار پشتیبانی کند. روی سیستمعامل ویندوز، اندازه به INT_MAX تقطیر (truncate) میشود. مانند هر فراخوانی به os.read()، ممکن است سیستمعامل بایتهای کمتری نسبت به تعداد بایتهای درخواستشده بخواند.bpo-21942: رفع مشکل مشاهدهی پروندهی منبع در حالت سرور pydoc در سیستمعامل ویندوز.
bpo-11259: اکنون تابع asynchat.async_chat().set_terminator() در صورتی که تعداد بایتهای دریافتشده منفی باشد، یک خطای ValueError ایجاد میکند.
bpo-12523: اکنون تابع asynchat.async_chat.push() در صورتی که یک رشتهی بایتی دریافت نکند، خطای TypeError ایجاد میکند
bpo-21707: افزودن آرگومان گمشدهی kwonlyargcount به تابع ModuleFinder.replace_paths_in_code().
bpo-20639: فراخوانی Path.with_suffix('') امکان حذف مجدد پسوند را فراهم میکند. وصلهای از July Tikhonov.
bpo-21714: عدم اجازه به ساخت مسیرهای نامعتبر با استفاده از Path.with_name(). وصلهی اصلی از Antony Lee.
bpo-15014: افزودن متد auth به smtplib برای سادهتر کردن پیادهسازی مکانیزمهای احراز هویت، و استفاده از آن به صورت داخلی در متد login.
bpo-21151: رفع یک خطای حافظه (segfault) در ماژول winreg هنگامی که مقدار
Noneبه عنوان یک مقدارREG_BINARYبه SetValueEx ارسال میشود. وصلهای از John Ehresman.bpo-21090: تابع io.FileIO.readall() دیگر خطاهای ورودی/خروجی را نادیده نمیگیرد. پیش از این، اگر دستکم اولین فراخوانی C یعنی read() موفق بود، خطاهای ورودی/خروجی را نادیده میگرفت.
bpo-5800: پارامتر headers در wsgiref.headers.Headers اکنون اختیاری است. وصلهی اولیه از Pablo Torres Navarrete و SilentGhost.
bpo-21781: تابع ssl.RAND_add() اکنون از رشتههای طولانیتر از ۲ گیگابایت پشتیبانی میکند.
bpo-21679: جلوگیری از فراخوانیهای اضافی fstat() در طول open(). وصلهای از Bohuslav Kabrda.
bpo-21863: ماژول cProfile اکنون علاوه بر نام توابع افزونهی C، نام ماژول آنها را نیز نمایش میدهد.
bpo-11453: asyncore: انتشار یک ResourceWarning هنگام از بین رفتن یک شیء file_wrapper بستهنشده. تخریبگر اکنون در صورت نیاز پرونده را میبندد. متد close() اکنون میتواند دو بار فراخوانی شود: فراخوانی دوم هیچ کاری انجام نمیدهد.
bpo-21858: مدیریت بهتر استثناهای پایتون در ماژول sqlite3.
bpo-21476: اطمینان حاصل کنید که TextIOWrapper مربوط به email.parser.BytesParser پس از تجزیه (parsing) دور انداخته میشود تا پروندهی ورودی به طور غیرمنتظره بسته نشود.
bpo-20295: ماژول imghdr اکنون تصاویر با فرمت OpenEXR را تشخیص میدهد.
bpo-21729: استفاده از دستور "with" در ماژول dbm.dumb برای اطمینان از بسته شدن پروندهها. وصلهای از Claudiu Popa.
bpo-21491: socketserver: رفع یک مشکل شرایط مسابقه (race condition) در پایانیافتن فرآیندهای فرزند.
bpo-21719: افزودن فیلد
st_file_attributesبه os.stat_result در ویندوز.bpo-21832: ورودیهای تاپل نامدار را ملزم به داشتن رشتههای دقیق میکند.
bpo-21722: دستور «upload» در distutils اکنون هنگام شکست در بارگذاری، با کُد بازگشت غیرصفر خارج میشود. وصله توسط Martin Dengler.
bpo-21723: در asyncio.Queue: پشتیبانی از هر نوع عددی (مانند float) برای حداکثر اندازه اضافه شد. وصله نوشتهشده توسط Vajrasky Kok.
bpo-21711: پشتیبانی از پوشههای «site-python» اکنون از ماژول site حذف شده است (در نسخهی ۳.۴ منسوخ شده بود).
bpo-17552: متد جدید socket.sendfile() که به پرونده اجازه میدهد با استفاده از os.sendfile() با کارایی بالا روی سیستمعامل UNIX از طریق یک سوکت ارسال شود. وصله توسط Giampaolo Rodola'.
bpo-18039: متد dbm.dump.open() اکنون وقتی پرچم مقدار 'n' را دارد، همیشه یک پایگاه دادهی جدید ایجاد میکند. وصله توسط Claudiu Popa.
bpo-21326: اضافه شدن متد جدید is_closed() به asyncio.BaseEventLoop. متدهای run_forever() و run_until_complete() از asyncio.BaseEventLoop اکنون در صورت بسته بودن حلقه رویداد، یک استثنا بالا میآورند.
bpo-21766: با رمزگشایی نشانیوب (URL) مسیرها قبل از بررسی وجود اسکریپت CGI در آن مسیر، از بروز نقص امنیتی در CGIHTTPServer جلوگیری شد.
bpo-21310: رفع نشت احتمالی منبع در open() ناموفق.
bpo-21256: چاپ آرگومانهای کلیدواژهای در یک فراخوانی تابع ماک باید به ترتیب قطعی باشد. این امر به نوشتن doctestهای بهتر کمک میکند.
bpo-21677: رفع زنجیرهسازی استثناهای غیرنرمالسازیشده در متدهای close() ماژول io.
bpo-11709: رفع تابع pydoc.help تا زمانی که sys.stdin یک پروندهی معتبر نیست، با خطا مواجه نشود.
bpo-21515: در صورتی که پرچم os.O_TMPFILE در دسترس باشد، tempfile.TemporaryFile اکنون از آن استفاده میکند.
bpo-13223: رفع pydoc.writedoc بهطوریکه مستندات HTML برای متدهایی که از 'self' در کد نمونه استفاده میکنند، بهدرستی تولید شود.
bpo-21463: در urllib.request، هرس کردن نهانگاه FTP رفع شد.
bpo-21618: ماژول subprocess ممکن است نتواند توصیفگرهای پروندهی (fd) بازی را که توسط فرایند فراخواننده به ارث برده شدهاند و از محدودیتهای منابع POSIX فراتر رفتهاند، ببندد. روی سیستمهایی با رابط کارآمد /proc/self/fd یا /dev/fd، حد نهایت اکنون نادیده گرفته میشود و تمام توصیفگرهای پرونده بسته میشوند.
bpo-20383: معرفی importlib.util.module_from_spec() بهعنوان روش ترجیحی برای ایجاد یک ماژول جدید.
bpo-21552: رفع سرریز عدد صحیح احتمالی طول رشتههای بسیار طولانی در ماژول tkinter روی سکوهای ۶۴ بیتی.
bpo-14315: ماژول zipfile اکنون فیلدهای اضافی در پوشه مرکزی را که برای تجزیه شدن بسیار کوتاه هستند، بهجای اجازه دادن به بالا آمدن خطای struct.unpack نادیده میگیرد؛ زیرا این «دادهی معیوب» در بسیاری از پروندههای زیپ واقعی در دنیای واقعی ظاهر میشود و توسط ابزارهای دیگر زیپ نادیده گرفته میشود.
bpo-13742: پارامترهای «key» و «reverse» به heapq.merge() اضافه شدند. (پیشنویس اول وصله توسط Simon Sapin مشارکت داده شده است.)
bpo-21402: ماژول tkinter.ttk اکنون هنگامی که پنجرهی ریشه پیشفرض تنظیم نشده باشد نیز کار میکند.
bpo-3015: تابع
_tkinter.create()اکنون به طور پیشفرض شیءtkappرا با مقادیرwantobjects=1ایجاد میکند.bpo-10203: کلاس sqlite3.Row اکنون به طور کامل از پروتکل دنباله پشتیبانی میکند. به طور خاص این کلاس از تابع reverse() و اندیسهای منفی پشتیبانی میکند. وصله اولیهی نوشتهشده توسط Claudiu Popa.
bpo-18807: اگر نسخهی پشتیبان (بدون پیوندهای نمادین) برای یک venv مشخص شود، نامهای مستعار مفسر پایتون (python، python3) اکنون به جای پیوند نمادین، با کپیکردن ایجاد میشوند.
bpo-20197: پشتیبانی از نوع دادهی تصویر WebP در ماژول imghdr اضافه شد. وصله توسط Fabrice Aneche و Claudiu Popa.
bpo-21513: بهبود سرعت برخی از ویژگیهای آدرسهای IP (مانند IPv4Address و IPv6Address) از جمله .is_private یا .is_multicast.
bpo-21137: بهبود تابع repr برای threading.Lock() و انواع آن با نمایش وضعیت «locked» (قفلشده) یا «unlocked» (قفلنشده). وصله توسط Berker Peksag.
bpo-21538: ماژول plistlib اکنون از بارگذاری پروندههای plist دودویی زمانی که اندازه ارجاع یا آفست توان دو نباشد، پشتیبانی میکند.
bpo-21455: افزودن یک پشتهی انتظار (backlog) پیشفرض به socket.listen().
bpo-21525: بیشتر متدهای Tkinter که تاپلها را میپذیرفتند، اکنون فهرستها را نیز میپذیرند.
bpo-22166: با کمک تابع کمکی جدید و داخلی _codecs._forget_codec، ماژول test_codecs اکنون نهانگاههای کدگذاری را پاکسازی میکند تا از بروز ظاهر نشت ارجاع جلوگیری شود.
bpo-22236: آزمونهای Tkinter اکنون از پنجرهی ریشه پیشفرض استفاده مجدد نمیکنند. یک پنجرهی ریشه جدید برای هر کلاس آزمون ایجاد میشود.
bpo-10744: رفع رشتههای قالب PEP 3118 روی اشیاء ctypes با یک شکل غیربدیهی.
bpo-20826: بهینهسازی ipaddress.collapse_addresses().
bpo-21487: بهینهسازی ipaddress.summarize_address_range() و ipaddress.{IPv4Network,IPv6Network}.subnets().
bpo-21486: بهینهسازی تجزیهی ماسکهای شبکه در ipaddress.IPv4Network و ipaddress.IPv6Network.
bpo-13916: غیرفعالسازی هندلر خطای surrogatepass برای کدهای غیر UTF-*.
bpo-20998: رفع مشکل تابع re.fullmatch() برای الگوهای تکنویسهای تکرارشونده با قابلیت نادیدهگرفتن بزرگی و کوچکی حروف. وصله اولیه توسط Matthew Barnett.
bpo-21075: کلاس fileinput.FileInput اکنون در صورت مشخصشدن حالت دودویی، بایتها را از جریان استاندارد میخواند. وصله توسط Sam Kimbrel.
bpo-19775: افزودن یک متد samefile() به اشیاء Path در ماژول pathlib. وصله اولیه توسط Vajrasky Kok.
bpo-21226: تنظیم درست ماژولها در PyImport_ExecCodeModuleObject (و توابع مشابه).
bpo-21398: رفع خطای یونیکد در صفحهبند (pager) ماژول pydoc هنگامی که مستندات حاوی نویسههایی هستند که با کدگذاری stdout قابل رمزگذاری نیستند.
bpo-16531: توابع ipaddress.IPv4Network و ipaddress.IPv6Network اکنون یک آرگومان چندتایی (address, netmask) را میپذیرند تا بتوان به راحتی شیءهای شبکهها را از آدرسهای موجود ساخت.
bpo-21156: تابع importlib.abc.InspectLoader.source_to_code() اکنون یک staticmethod است.
bpo-21424: سادهسازی و بهینهسازی heapq.nlargest() و nsmallest() برای انجام مقایسههای کمتر روی چندتاییها (tuples).
bpo-21396: رفع مشکل TextIOWrapper(..., write_through=True) برای جلوگیری از اعمال اجباری تابع flush() روی جریان دودویی زیرین. وصله توسط akira.
bpo-18314: تابع Unlink اکنون اتصالها (junctions) را در ویندوز حذف میکند. وصله توسط Kim Gräsman
bpo-21088: رفع باگ مربوط به رگرسیون curses.window.addch() در نسخهی ۳.۴.۰. در زمان انتقال به Argument Clinic، دو آرگومان اول جابهجا شده بودند.
bpo-21407: _decimal: این ماژول اکنون از امضای توابع پشتیبانی میکند.
bpo-10650: پارامتر غیر استاندارد 'watchexp' از متد Decimal.quantize() در نسخهی پایتون حذف شد. این پارامتر هرگز در نسخهی C وجود نداشته است.
bpo-21469: کاهش خطر مثبت کاذب در robotparser با اطمینان حاصل کردن از این که پروندهی robots.txt خوانده شده است یا قبل از بازگرداندن True در متد can_fetch() وجود ندارد.
bpo-19414: باعث میشود OrderedDict لینکهای حذفشده را به عنوان غیرقابلاستفاده علامتگذاری کند. این کار باعث شکست زودهنگام در صورت حذف لینک در طول پیمایش میشود.
bpo-21421: افزودن __slots__ به کلاس پایه انتزاعی MappingViews. وصله توسط Josh Rosenberg.
bpo-21101: حذف هشینگ مضاعف در کدهای شتابدهندهی C برای collections.Counter().
bpo-21321: تابع itertools.islice() اکنون پس از اتمام اسلایس، ارجاع به پیمایشگر منبع را آزاد میکند. وصله توسط Anton Afanasyev.
bpo-21057: تابع TextIOWrapper اکنون به متد read() یا read1() جریان دودویی زیرین اجازه میدهد یک شیء شبهبایت دلخواه (مانند یک memoryview) را برگرداند. وصله توسط Nikolaus Rath.
bpo-20951: متد SSLSocket.send() اکنون روی یک سوکت غیرمسدودکننده، در صورت مسدود شدن عملیات، خطای SSLWantReadError یا SSLWantWriteError را بالا میآورد. پیش از این، مقدار 0 را برمیگرداند. وصله توسط Nikolaus Rath.
bpo-13248: ترفند ارثبری ارزان __getattr__ در ماژول منسوخشدهی asyncore.dispatcher حذف شد.
bpo-9815: تابع assertRaises اکنون تلاش میکند ارجاعات به متغیرهای محلی را در ردگیری (traceback) استثنا پاک کند.
bpo-19940: تابع ssl.cert_time_to_seconds() اکنون رشتهی زمانی دادهشده را در منطقه زمانی UTC (همانطور که در RFC 5280 مشخص شده است) تفسیر میکند، نه منطقه زمانی محلی.
bpo-13204: فراخوانی sys.flags.__new__ باعث فروپاشی مفسر میشد، اکنون یک استثنای TypeError ایجاد میکند.
bpo-19385: باعث میشود عملیات روی یک پایگاه دادهی بستهی dbm.dumb همیشه همان استثنا را ایجاد کند.
bpo-21207: تشخیص دهید چه زمانی توصیفگر پروندهی (fd) ذخیرهشده در حافظهی پنهان os.urandom بسته یا جایگزین شده است، و آن را دوباره باز کنید.
bpo-21291: متد Popen.wait() در ماژول subprocess اکنون از نظر نخ ایمن است؛ به طوری که چندین نخ میتوانند بهطور همزمان بدون از دست دادن مقدار Popen.returncode، روی یک نمونهی Popen تابع wait() یا poll() را فراخوانی کنند.
bpo-21127: اشیاء Path اکنون میتوانند از نمونههای زیرردهی str (مانند
numpy.str_) نمونهسازی شوند.bpo-15002: شیء urllib.response از امکان _TemporaryFileWrapper (و _TemporaryFileCloser) استفاده کند. روش بهتری برای مدیریت بستن توصیفگر پرونده فراهم میکند. وصله توسط Christian Theune تهیه شده است.
bpo-12220: ماژول mindom اکنون یک ValueError سفارشی ایجاد میکند که نشان میدهد از فاصلهها در URIها پشتیبانی نمیکند، بهجای اینکه اجازه دهد یک ValueError از نوع 'split' بالا بیاید.
bpo-21068: ثابتهای ssl.PROTOCOL* اکنون از نوع اعضای enum هستند.
bpo-21276: ماژول posixmodule: متغیر USE_XATTRS را روی KFreeBSD و Hurd تعریف نکنید.
bpo-21262: متد جدید assert_not_called برای Mock. اگر ماک فراخوانی شده باشد، خطای AssertionError ایجاد میکند.
bpo-21238: آرگومان کلیدواژهای جدید
unsafeبرای Mock. در صورت شروع ویژگی با assert یا assret، خطایAttributeErrorایجاد میکند.bpo-20896: تابع ssl.get_server_certificate() اکنون برای حداکثر سازگاری از PROTOCOL_SSLv23 و نه PROTOCOL_SSLv3 استفاده میکند.
bpo-21239: متد patch.stopall() وقتی یک نام بیش از یک بار وصله میشد، بهطور قطعی کار نمیکرد.
bpo-21203: توابع fileConfig و dictConfig برای حذف تناقضها بهروزرسانی شدند. با تشکر از Jure Koren برای ارائه وصله.
bpo-21222: ارسال آرگومان کلیدواژهای name به mock.create_autospec اکنون کار میکند.
bpo-21197: افزودن پیوند نمادین lib64 -> lib در محیطهای مجازی (venv) روی سیستمعاملهای POSIX ۶۴ بیتی غیر از OS X.
bpo-17498: برخی از سرورهای SMTP پس از خطاهای خاصی قطع ارتباط میکنند که این امر ناقض انطباق دقیق با RFC است. ماژول smtplib بهجای از دست دادن کد خطا هنگام صدور دستور RSET بعدی، کد خطا را برمیگرداند و ایجاد خطای SMTPServerDisconnected را تا زمان صدور دستور بعدی به تعویق میاندازد.
bpo-17826: تنظیم یک side_effect پیمایشپذیر روی یک تابع ماک ایجاد شده توسط create_autospec اکنون کار میکند. وصله توسط Kushal Das.
bpo-7776: رفع مشکل سرآیند
Host:و اتصال مجدد هنگام استفاده از http.client.HTTPConnection.set_tunnel(). وصله توسط Nikolaus Rath.bpo-20968: کلاس unittest.mock.MagicMock اکنون از عمل تقسیم پشتیبانی میکند. وصله توسط Johannes Baiter.
bpo-21529: رفع دسترسی حافظهی دلخواه در تابع JSONDecoder.raw_decode با استفاده از یک پارامتر دوم منفی. این باگ توسط Guido Vranken گزارش شده است. (همچنین ببینید: CVE 2014-4616)
bpo-21169: ماژول getpass اکنون نویسههای غیر اسکی (non-ascii) را که کدگذاری جریان ورودی نمیتواند کدگذاری کند، با رمزگذاری مجدد و با استفاده از هندلر خطای replace مدیریت میکند.
bpo-21171: رفع API مستندنشدهی کُدک rot13. وصله توسط Berker Peksag.
bpo-20539: بهبود پیام خطای math.factorial برای ورودیهای مثبت بزرگ و تغییر نوع استثنا (از OverflowError به ValueError) برای ورودیهای منفی بزرگ.
bpo-21172: بررسی isinstance از dict به collections.Mapping تسهیل شد.
bpo-21155: تابع asyncio.EventLoop.create_unix_server() اکنون اگر path و sock همزمان مشخص شده باشند، یک ValueError بالا میآورد.
bpo-21136: جلوگیری از نرمالسازی غیرضروری Fractions ناشی از توان و سایر عملیات. وصله توسط Raymond Hettinger.
bpo-17621: معرفی importlib.util.LazyLoader.
bpo-21076: ثابتهای ماژول signal به enum تبدیل شدند. وصله توسط Giampaolo Rodola'.
bpo-20636: بهبود repr ابزارکهای Tkinter.
bpo-19505: نماهای items، keys و values در OrderedDict اکنون از پیمایش معکوس با استفاده از reversed() پشتیبانی میکنند.
bpo-21149: بهبود ایمنی نخ (thread-safety) در پاکسازی گزارشگیری (logging) طی خاموش شدن مفسر. با تشکر از Devin Jeanpierre برای وصله.
bpo-21058: رفع نشت توصیفگر پرونده در
tempfile.NamedTemporaryFile()؛ اگر تابعio.open()با شکست مواجه شد، توصیفگر پرونده را ببندید.bpo-21200: هنگامی که __spec__ وجود ندارد، مقدار None را از pkgutil.get_loader() برگردانید.
bpo-21013: بهبود تابع ssl.create_default_context() هنگام استفاده برای سوکتهای سمت سرور به منظور فراهم کردن امنیت بهتر بهطور پیشفرض.
bpo-20145: عبارتهای
assertRaisesRegexوassertWarnsRegexاکنون اگر آرگومان دوم یک رشته یا عبارت منظم کامپایلشده نباشد، یکTypeErrorبالا میآورند.bpo-20633: جایگزینی ایمپورت نسبی با ایمپورت مطلق.
bpo-20980: متوقف کردن پوششدهی استثنا هنگام استفاده از ThreadPool.
bpo-21082: در os.makedirs، مقدار umask کل فرایند را تنظیم نکنید. توجه کنید که این کار رفتار makedirs را هنگامی که exist_ok=True باشد تغییر میدهد.
bpo-20990: رفع مسائل یافتشده توسط pyflakes برای multiprocessing.
bpo-21015: زمینههای SSL اکنون بهطور خودکار یک خمهی بیضوی (elliptic curve) برای تبادل کلید ECDH در OpenSSL نسخهی ۱.۰.۲ و پس از آن انتخاب میکنند و در غیر این صورت بهطور پیشفرض از "prime256v1" استفاده میکنند.
bpo-21000: بهبود رابط خط فرمان json.tool.
bpo-20995: بهبود رمزهای پیشفرض مورد استفاده توسط ماژول ssl برای فعالسازی امنیت بهتر و اولویتبندی محرمانگی پیشرو کامل (perfect forward secrecy).
bpo-20884: فرض نکنید که __file__ روی importlib.__init__ تعریف شده است.
bpo-21499: نادیدهگرفتن __builtins__ در چندین آزمون test_importlib.test_api.
bpo-20627: شیء xmlrpc.client.ServerProxy اکنون یک مدیر زمینه است.
bpo-19165: ماژول formatter اکنون به جای PendingDeprecationWarning خطای DeprecationWarning را بالا میآورد.
bpo-13936: حذف قابلیت نمونههای datetime.time برای در نظر گرفته شدن به عنوان نادرست در زمینههای بولی.
bpo-18931: ماژول selectors اکنون از /dev/poll روی سیستمعامل Solaris پشتیبانی میکند. وصله توسط Giampaolo Rodola'.
bpo-19977: هنگامی که محلیِ
LC_TYPEبرابر با محلی POSIX (محلیC) باشد،sys.stdinوsys.stdoutاکنون به جای هندلر خطایstrictاز هندلر خطایsurrogateescapeاستفاده میکنند.bpo-20574: پیادهسازی رمزگشای افزایشی برای کد cp65001 (صفحه کد ۶۵۰۰۱ ویندوز، مایکروسافت UTF-8).
bpo-20879: تأخیر در مقداردهی اولیهی جداول کدگذاری و کدگشایی برای کُدکهای base32، ascii85 و base85 در ماژول base64، و تأخیر در مقداردهی اولیهی جدول unquote_to_bytes() از ماژول urllib.parse، تا اگر این ماژولها استفاده نمیشوند، حافظه هدر نرود.
bpo-19157: گنجاندن آدرس پخش در میزبانهای قابل استفاده برای IPv6 در ipaddress.
bpo-11599: هنگامی که یک فرمان خارجی (مانند کامپایلر) با خطا مواجه شود، distutils اکنون در صورت تنظیم بودن متغیر محیطی DISTUTILS_DEBUG، کل خط فرمان (به جای فقط نام فرمان) را چاپ میکند.
bpo-4931: distutils دیگر نباید پیامهای نامفید "error: None" را تولید کند. تابع distutils.util.grok_environment_error حفظ شده است اما از نظر مستندات منسوخ است.
bpo-20875: جلوگیری از خطای NameError احتمالی در gzip با عنوان "'read' is not defined". وصله توسط Claudiu Popa.
bpo-11558: تابع
email.message.Message.attachاکنون اگرattachروی پیامی فراخوانی شود که مقدارis_multipartبرای آن False است، پیام خطای مفیدتری را برمیگرداند.bpo-20283: متدهای الگوی عبارت باقاعده اکنون پارامترهای کلیدواژهی رشتهای را همانطور که مستند شده است میپذیرند. پارامترهای کلیدواژهی pattern و source به عنوان نام مستعار منسوخ باقی میمانند.
bpo-20778: رفع مشکل modulefinder برای کار با ماژولهای فقط-بایتکد.
bpo-20791: تابع copy.copy() اکنون وقتی ورودی یک شیء bytes باشد، کپی نمیسازد. وصلهی اولیه توسط Peter Otten.
bpo-19748: در سیستمهای AIX، تابع time.mktime() اکنون برای سالهای خارج از بازهی مجاز [1902; 2037] خطای OverflowError را بالا میآورد.
bpo-19573: inspect.signature: استفاده از enum برای ثابتهای نوع پارامتر.
bpo-20726: inspect.signature: قابلیت پیکلپذیر کردن Signature و Parameter.
bpo-17373: افزودن متد inspect.Signature.from_callable.
bpo-20378: بهبود repr متعلق به inspect.Signature و inspect.Parameter.
bpo-20816: رفع مشکل تابع inspect.getcallargs() برای بالا آوردن خطای صحیح TypeError در صورت مفقود بودن آرگومانهای کلیدواژهایِ الزامی. وصله توسط Jeremiah Lowin.
bpo-20817: رفع مشکل تابع inspect.getcallargs() برای شکست خوردن صحیح در صورت مفقود بودن بیش از ۳ آرگومان. وصله توسط Jeremiah Lowin.
bpo-6676: اطمینان از اینکه هنگام تلاش برای تجزیه بیش از یک سند XML در هر نمونه از pyexpat xmlparser، یک استثنای معنادار بالا میآید. (وصلههای اصلی توسط Hirokazu Yamamoto و Amaury Forgeot d'Arc، با پیشنهاد متن توسط David Gutteridge)
bpo-21117: اصلاح تابع inspect.signature برای پشتیبانی بهتر از functools.partial. به دلیل ویژگیهای پیادهسازی functools.partial، آرگومانهای جایگاهی یا کلیدواژهای که به عنوان آرگومان کلیدواژهای ارسال میشوند، به آرگومان کلیدواژهایِ الزامی تبدیل میشوند.
bpo-20334: کلاسهای inspect.Signature و inspect.Parameter اکنون هشپذیر هستند. با تشکر از Antony Lee برای گزارش باگها و پیشنهادها.
bpo-15916: تابع doctest.DocTestSuite در صورت نیافتن هیچ آزمونی، به جای بالا آوردن ValueError، یک unittest.TestSuite خالی برمیگرداند
bpo-21209: رفع مشکل asyncio.tasks.CoroWrapper برای دور زدن یک باگ در پیادهسازی yield-from در نسخههای CPython قبل از ۳.۴.۱.
asyncio: افزودن ویژگیهای gi_{frame,running,code} به CoroWrapper (بالادست bpo-163).
bpo-21311: جلوگیری از بروز استثنا در _osx_support با تنظیمات کامپایلر غیر استاندارد. وصله توسط John Szakmeister.
bpo-11571: اطمینان از اینکه پنجرهی turtle هنگام اجرا روی OS X به بالاترین پنجره تبدیل میشود.
bpo-21801: اعتبارسنجی اینکه __signature__ برابر با None یا نمونهای از Signature باشد.
bpo-21923: جلوگیری از AttributeError در distutils.sysconfig.customize_compiler به دلیل احتمال مقداردهی اولیه نشدهی _config_vars.
bpo-21323: اصلاح http.server برای مدیریت مجدد اسکریپتها در زیرپوشههای CGI، که با اصلاحیهی امنیتی bpo-19435 خراب شده بود. وصله توسط Zach Byrne.
bpo-22733: اصلاح ffi_prep_args برای اینکه مقادیر آرگومان را در ویندوز ۶۴ بیتی به درستی با صفر گسترش ندهد (zero-extending).
bpo-23302: تنظیم پیشفرض TCP_NODELAY=1 هنگام برقراری یک اتصال HTTPConnection. حذف استفاده از MSS با کدگذاری سخت (hard-coded) زیرا این یک بهینهسازی است که با غیرفعال شدن Nagle دیگر نیازی به آن نیست.
IDLE¶
bpo-20577: پیکربندی حداکثر طول سطر برای افزونهی FormatParagraph از زبانهی General در محاورهی ترجیحات Idle به زبانهی FormatParagraph در محاورهی Config Extensions منتقل شد. وصل از Tal Einat.
bpo-16893: بهروزرسانی فصل مستندات Idle برای تطابق با وضعیت فعلی Idle و افزودن اطلاعات جدید.
bpo-3068: افزودن محاورهی پیکربندی افزونهی Idle به منوی Options. تغییرات در HOME/.idlerc/config-extensions.cfg نوشته میشوند. وصل اصلی از Tal Einat.
bpo-16233: مرورگر ماژول (File : Class Browser, Alt+C) به پنجرهی ویرایشگری با نام پرونده نیاز دارد. وقتی درخواست مرورگر کلاس به شکل دیگری از یک پوسته، پنجرهی خروجی یا ویرایشگر «Untitled» داده شود، دیگر Idle کادر خطایی نمایش نمیدهد. اکنون یک کادر Open Module (Alt+M) را بالا میآورد. اگر نام معتبری وارد شود و ماژولی باز شود، مرورگر متناظر با آن نیز باز میشود.
bpo-4832: گزینهی Save As برای نوع پروندههای پایتون بهطور خودکار پسوند .py را به نام واردشده اضافه میکند (حتی اگر سیستم شما آن را نمایش ندهد). برخی سیستمها وقتی نوع پرونده روی Text files تنظیم شده باشد، بهطور خودکار پسوند .txt را اضافه میکنند.
bpo-21986: شیءهای کد معمولاً توسط ماژول pickle پیکل نمیشوند. برای تطابق با این موضوع، هنگام اجرا تحت Idle نیز دیگر پیکل نمیشوند.
bpo-17390: تنظیم عنوان پنجرهی Editor؛ حذف «Python» و انتقال شمارهی نسخه به انتها.
bpo-14105: نقطههای توقف اشکالزدای Idle هنگام درج یا حذف سطرها دیگر ناپدید نمیشوند.
bpo-17172: اکنون میتوان Turtledemo را از درون Idle اجرا کرد. در حال حاضر، ورودی آن در منوی Help قرار دارد، اما ممکن است به Run منتقل شود. وصل از Ramchandra Apt و Lita Cho.
bpo-21765: افزودن پشتیبانی از شناسههای غیر ascii به HyperParser.
bpo-21940: افزودن آزمون واحد برای WidgetRedirector. وصل اولیه از Saimadhav Heblikar.
bpo-18592: افزودن آزمون واحد برای SearchDialogBase. وصل از Phil Webster.
bpo-21694: افزودن آزمون واحد برای ParenMatch. وصل از Saimadhav Heblikar.
bpo-21686: افزودن آزمون واحد برای HyperParser. وصل اصلی از Saimadhav Heblikar.
bpo-12387: افزودن نسخههای حروف بزرگ (کوچک) مفقودشده از کلیدهای میانبر پیشفرض ویندوز برای Idle به طوری که Caps Lock آنها را غیرفعال نکند. وصل از Roger Serwy.
bpo-21695: بستن پنجرهی خروجی Find-in-files در حالی که جستوجو همچنان در جریان است، دیگر باعث بستهشدن Idle نمیشود.
bpo-18910: افزودن آزمون واحد برای textView. وصل از Phil Webster.
bpo-18292: افزودن آزمون واحد برای AutoExpand. وصل از Saihadhav Heblikar.
bpo-18409: افزودن آزمون واحد برای AutoComplete. وصل از Phil Webster.
bpo-21477: htest.py - بهبود چارچوب، کاملسازی مجموعه آزمونها. وصلها از Saimadhav Heblikar
bpo-18104: افزودن پروندهی idlelib/idle_test/htest.py با چند آزمون نمونه برای شروع یکپارچهسازی و بهبود آزمونهای تأییدشدهی انسانی در Idle. تغییر دیگر پروندهها در صورت نیاز برای کار با htest. اجرای ماژول به عنوان __main__ تمام آزمونها را اجرا میکند.
bpo-21284: آزمون قالببندی مجدد پاراگراف پس از تغییر عرض قالببندی مجدد توسط کاربر با موفقیت انجام میشود.
bpo-17654: اطمینان از سفارشیسازی صحیح منوهای IDLE در سیستمعامل OS X برای ساختهای غیرچارچوب و برای تمام انواع Tk.
bpo-23180: تغییر نام آیتم منوی «Windows» در IDLE به «Window». وصله توسط Al Sweigart.
ساخت¶
bpo-15506: استفاده از ماکروی استاندارد PKG_PROG_PKG_CONFIG در اتوکانف در اسکریپت کانفیگور.
bpo-22935: اجازه دادن به ماژول ssl برای کامپایلشدن در صورتی که openssl از SSL 3 پشتیبانی نکند.
bpo-22592: حذف پشتیبانی از کامپایلر Borland C برای ساخت پایتون. ماژول distutils همچنان برای ساخت افزونهها از آن پشتیبانی میکند.
bpo-22591: حذف پشتیبانی از MS-DOS، بهویژه کامپایلر DJGPP (پورت MS-DOS برای GCC).
bpo-16537: بررسی اینکه آیا self.extensions در setup.py خالی است یا خیر. وصله توسط Jonathan Hosmer.
bpo-22359: حذف استفادههای نادرست از make بازگشتی. وصله توسط Jonas Wagner.
bpo-21958: تعریف HAVE_ROUND هنگام ساخت با Visual Studio 2013 و بالاتر. وصله توسط Zachary Turner.
bpo-18093: برنامههایی که رانتایم سیپایتون را تعبیه میکنند، اکنون به جای پوشهی Modules، در پوشهی مجزای «Programs» قرار دارند.
bpo-15759: عبارتهای «make suspicious»، «make linkcheck» و «make doctest» در Doc/ اکنون تنها و تنها زمانی که خطاهایی وجود داشته باشد، پیام ویژهای را نمایش میدهند.
bpo-21141: فرایند ساخت ویندوز دیگر تلاشی برای یافتن Perl نمیکند، بلکه به پیکربندی و آمادهی ساخت بودن سورس OpenSSL متکی است. اسکریپت
PCbuild\build_ssl.pyبازنویسی و بهPCbuild\prepare_ssl.pyتغییر نام یافته است، و پیکربندی سورس OpenSSL را برای پلتفرمهای ۳۲ و ۶۴ بیتی انجام میدهد. سورسهای OpenSSL به دست آمده از svn.python.org همیشه از پیش پیکربندیشده و آمادهی ساخت خواهند بود.bpo-21037: افزودن یک گزینهی ساخت برای فعالسازی پشتیبانی از AddressSanitizer.
bpo-19962: فرایند ساخت ویندوز اکنون پروندهی «python.bat» را در ریشهی درخت سورس ایجاد میکند که همهی آرگومانها را به آخرین مفسر ساختهشده ارسال میکند.
bpo-21285: بازسازی و رفع بررسی کانفیگور curses برای جستوجوی همیشه در یک پوشهی ncursesw.
bpo-15234: برای BerkeleyDB و Sqlite، کتابخانهی یافتهشده و پوشههای include را فقط در صورتی اضافه کنید که از قبل جستوجو نشده باشند. این کار از وابستگی صریح کتابخانهی رانتایم جلوگیری میکند.
bpo-17861: ابزار Tools/scripts/generate_opcode_h.py در صورت اعمال هرگونه تغییر روی Lib/opcode.py، بهطور خودکار Include/opcode.h را بازسازی میکند.
bpo-20644: پشتیبانی از ساخت نصبکنندهی OS X برای تغییرات ساخت مستندات در نسخهی 3.4.1: فرض بر این است که دستور sphinx-build ارائهشده از بیرون در /usr/bin در دسترس است.
bpo-20022: حذف استفاده از bundlebuilder منسوخشده در ساختهای OS X.
bpo-15968: ادغام ساختهای Tcl، Tk و Tix در راهحل ساخت ویندوز.
bpo-17095: اصلاح پشتیبانی از Modules/Setup به صورت shared.
bpo-21811: اصلاحات پیشبینیشده برای پشتیبانی از نسخههای OS X بزرگتر از 10.9.
bpo-21166: جلوگیری از خطاهای احتمالی حافظه (segfault) و سایر خطاهای تصادفی دستور python --generate-posix-vars در هدف ساخت pybuilddir.txt.
bpo-18096: اصلاح ترتیب کتابخانههای بازگرداندهشده توسط python-config.
bpo-17219: افزودن دایرکتوری ساخت کتابخانه برای ساختهای متقابل پسوند پایتون.
bpo-22919: ساخت ویندوز بهروزرسانی شد تا از VC 14.0 (Visual Studio 2015) پشتیبانی کند، که برای نسخهی رسمی استفاده خواهد شد.
bpo-21236: ساخت _msi.pyd با cabinet.lib به جای fci.lib
bpo-17128: استفاده از نسخهی اختصاصی OpenSSL برای نصبکنندهی OS X 10.5 و بالاتر.
رابط C API¶
bpo-14203: حذف پشتیبانی منسوخ از view==NULL در تابعهای PyBuffer_FillInfo()، bytearray_getbuffer()، bytesiobuf_getbuffer() و array_buffer_getbuf(). تمامی تابعها اکنون در آن حالت یک BufferError بالا میآورند.
bpo-22445: تابع PyBuffer_IsContiguous() اکنون آزمونهای پیوستگی دقیقی را پیادهسازی میکند که با پرچم کامپایل NPY_RELAXED_STRIDES_CHECKING در کتابخانهی NumPy سازگار است. پیشتر این تابع برای موارد خاص نتایج منفی نادرست گزارش میکرد.
bpo-22079: تابع PyType_Ready() اکنون بررسی میکند که نوع تخصیصیافته به صورت ایستا دارای پایههای تخصیصیافته به صورت پویا نباشد.
bpo-22453: ماکروی مستندنشدهی PyObject_REPR() حذف شد.
bpo-18395: تغییر نام
_Py_char2wchar()بهPy_DecodeLocale()، تغییر نام_Py_wchar2char()بهPy_EncodeLocale()، و مستندسازی این تابعها.bpo-21233: افزودن تابعهای جدید C: تابعهای PyMem_RawCalloc()، PyMem_Calloc()، PyObject_Calloc()، و _PyObject_GC_Calloc(). اکنون ساختار bytes(int) برای اشیای بزرگ به جای
malloc()ازcalloc()استفاده میکند که سریعتر است و حافظهی کمتری مصرف میکند.bpo-20942: تابع PyImport_ImportFrozenModuleObject() دیگر __file__ را تنظیم نمیکند تا با عملکرد importlib مطابقت داشته باشد؛ این تغییر روی _frozen_importlib و همچنین هر ماژول بارگذاریشده با استفاده از imp.init_frozen() تأثیر میگذارد.
مستندات¶
bpo-19548: بهروزرسانی مستندات ماژول codecs برای پوشش بهتر تمایز بین کدهای متن و سایر کُدکها، به همراه سایر شفافسازیها. اصلاحیه توسط Martin Panter.
bpo-22394: پوشهی Doc/Makefile اکنون از دستور
make venv PYTHON=../pythonبرای ایجاد یک محیط مجازی (venv) جهت تولید مستندات پشتیبانی میکند؛ به عنوان مثال:make html PYTHON=venv/bin/python3.bpo-21514: مستندات ماژول json اکنون بهجای RFC 4627 منسوخشده، به استاندارد جدید JSON یعنی RFC 7159 ارجاع میدهد.
bpo-21777: متدهای دنبالهی دودویی روی bytes و bytearray اکنون به جای فرض بر اینکه کاربران میتوانند رفتار مورد انتظار را از رفتار متدهای متناظر str استنتاج کنند، بهطور صریح مستندسازی شدهاند.
bpo-6916: کلاس منسوخشدهی asynchat.fifo از مستندات خارج شد.
bpo-17386: قابلیتهای اسکریپت
Doc/make.batگسترش یافت تا شباهت بسیار بیشتری باDoc/Makefileپیدا کند.bpo-21312: پروندهی الگوی thread_foobar.h بهروزرسانی شد تا شامل APIهای جدیدتر نخکشی شود. وصله توسط جک مککراکن (Jack McCracken).
bpo-21043: توصیهی مربوط به سازمانهای مرجع صدور گواهی خاص حذف شد و امکان بارگذاری گواهیهای سیستمعامل ذکر گردید.
bpo-20765: مستندات مفقود برای PurePath.with_name() و PurePath.with_suffix() اضافه شد.
bpo-19407: راهنماهای نصب و توزیع بسته بر اساس ابزارهای مرجع بستهبندی پایتون جدید شدند. راهنماهای موجود بهعنوان پیوندهای میراث از مستندات distutils حفظ شدهاند، زیرا همچنان حاوی برخی مطالب مرجع ضروری برای توسعهدهندگان ابزار هستند که جای دیگری ثبت نشده است.
bpo-19697: موارد مستندسازی شدند که در آنها __main__.__spec__ برابر با None است.
آزمونها¶
bpo-18982: آزمونهایی برای رابط خط فرمان (CLI) ماژول گاهشماری اضافه شد.
bpo-19548: بررسیهای اضافی به test_codecs اضافه شد تا اطمینان حاصل شود که دستورات موجود در مستندات بهروزرسانیشده دقیق باقی میمانند. وصله توسط مارتین پنتر (Martin Panter).
bpo-22838: تمام آزمونهای test_re اکنون با کشف آزمون unittest کار میکنند.
bpo-22173: آزمونهای lib2to3 بهروزرسانی شدند تا از کشف آزمون unittest استفاده کنند.
bpo-16000: تبدیل test_curses برای استفاده از unittest.
bpo-21456: اگر ماژول _ssl موجود نباشد، دو آزمون در test_urllib2net.py نادیده گرفته میشوند. وصله توسط رمی پونتل (Remi Pointel).
bpo-20746: رفع مشکل test_pdb برای اجرا در حالت بررسی نشت مرجع (-R). وصله توسط زاویه دو گای (Xavier de Gaye).
bpo-22060: ماژول test_ctypes تا حدی پاکسازی و سادهسازی شده است؛ اکنون برای یافتن آزمونهای خود از کشف آزمون unittest استفاده میکند.
bpo-22104: برنامهی regrtest.py دیگر ارجاعی به مجموعهای از آزمونهای بارگذاریشده از ماژولهای آزمونی که test_main() را تعریف نمیکنند، نگه نمیدارد.
bpo-22111: پاکسازیهای گوناگون در test_imaplib. وصله توسط میلان اوبرکیرش (Milan Oberkirch).
bpo-22002: تابع
load_package_testsبه test.support اضافه شد و برای پیادهسازی یا افزایش کشف آزمون در test_asyncio، test_email، test_importlib، test_json و test_tools مورد استفاده قرار گرفت.bpo-21976: اصلاح test_ssl برای پذیرش رشتههای نسخهی LibreSSL. با تشکر از William Orr.
bpo-21918: تبدیل test_tools از یک ماژول به یک بسته حاوی پروندههای آزمون جداگانه برای هر اسکریپت آزمودهشده.
bpo-9554: استفاده از ویژگیهای مدرن unittest در test_argparse. وصلهی اولیه توسط Denver Coneybeare و Radu Voicilas.
bpo-20155: تغییر نام متدهای HTTP در آزمونهای ناموفق در test_httpservers به گونهای که نرمافزار فیلترینگ بستهها (بهطور خاص Windows Base Filtering Engine) با معناشناسی تراکنش مورد انتظار آزمونها تداخل پیدا نکند.
bpo-19493: بازطراحی بستهی آزمون ctypes برای صرفنظر کردن از آزمونها بهطور صریح و نه بهصورت بیصدا.
bpo-18492: اکنون هنگام اجرا نشدن آزمونها توسط regrtest.py، تمام منابع مجاز هستند.
bpo-21634: اصلاح ریزسنجشگر (micro-benchmark) pystone: استفاده از تقسیم کف بهجای تقسیم حقیقی برای سنجش اعداد صحیح بهجای اعداد ممیز شناور. تنظیم نسخهی pystone روی 1.2. وصلهی نوشتهشده توسط Lennart Regebro.
bpo-21605: افزودن آزمونها برای تصاویر Tkinter.
bpo-21493: افزودن آزمون برای ntpath.expanduser(). وصلهی اصلی توسط Claudiu Popa.
bpo-19925: افزودن آزمونها برای ماژول spwd. وصلهی اصلی توسط Vajrasky Kok.
bpo-21522: افزودن آزمونهای Tkinter برای Listbox.itemconfigure()، PanedWindow.paneconfigure() و Menu.entryconfigure().
bpo-17756: اصلاح آزمون test_code هنگام اجرا از محل نصبشده.
bpo-17752: اصلاح آزمونهای distutils هنگام اجرا از محل نصبشده.
bpo-18604: یکپارچهسازی بررسیهای مربوط به دسترسپذیری رابط گرافیکی (GUI). همه سکوها اکنون حداقل بررسی میکنند که آیا هنگام درخواست منبع رابط گرافیکی (GUI)، امکان نمونهسازی Tk وجود دارد یا خیر.
bpo-21275: اصلاح یک آزمون socket روی KFreeBSD.
bpo-21223: گذراندن test_site/test_startup_imports وقتی برخی از پسوندها به صورت توکار (builtin) ساخته شدهاند.
bpo-20635: افزودن آزمونها برای مدیران هندسهی Tk.
افزودن مورد آزمون برای freeze.
bpo-20743: اصلاح نشت ارجاع در test_tcl.
bpo-21097: انتقال test_namespace_pkgs به درون test_importlib.
bpo-21503: استفادهی مداوم از test_both() در test_importlib.
bpo-20939: جلوگیری از خطاهای مختلف آزمونهای شبکه به دلیل تغییر مسیر جدید http://www.python.org/ به https://www.python.org: به جای آن از http://www.example.com استفاده کنید.
bpo-20668: آزمونهای asyncio دیگر به پروندهی tests.txt وابسته نیستند. (تهیهی وصله توسط Vajrasky Kok)
bpo-21093: جلوگیری از خطاهای آزمون ctypes یعنی test_macholib در سیستمعامل OS X در صورتی که نسخهای از libz در مسیر $HOME/lib یا /usr/local/lib وجود داشته باشد.
bpo-22770: جلوگیری از برخی خطاهای قطعی حافظه (segfault) در Tk روی سیستمعامل OS X هنگام اجرای آزمونهای گرافیکی (gui).
bpo-23211: رفع موقت خطای آزمون test_logging در برخی سیستمهای OS X نسخه ۱۰.۶.
bpo-23345: جلوگیری از خطاهای test_ssl با مقادیر سطح وصلهی بزرگ OpenSSL (مانند ۰.۹.۸zc).
Tools/Demos¶
bpo-22314: ابزار pydoc اکنون زمانی که متغیر محیطی LINES تنظیم شده باشد، کار میکند.
bpo-22615: ابزار Argument Clinic اکنون از آرگومان "type" برای مبدل int پشتیبانی میکند. این امر استفاده از مبدل int را با انوام (enums) و تعریف نوعها (typedefs) امکانپذیر میسازد.
bpo-20076: اسکریپت makelocalealias.py دیگر نگاشت UTF-8 را نادیده نمیگیرد.
bpo-20079: اسکریپت makelocalealias.py اکنون میتواند پروندهی SUPPORTED را از منابع glibc تجزیه (parse) کند و از گزینههای خط فرمان برای مسیرهای منبع پشتیبانی میکند.
bpo-22201: رابط خط فرمان ماژول zipfile اکنون پروندههای ZIP را با شناسههای پوشه به درستی استخراج میکند. تهیهی وصله توسط Ryan Wilson.
bpo-22120: برای توابع استفادهکننده از مبدل بازگشتی عدد صحیح بدون علامت، Argument Clinic اکنون یک تبدیل نوع به آن نوع برای مقایسه با ۱- در کد تولیدشده ایجاد میکند. (این کار یک هشدار کامپایل را سرکوب میکند.)
bpo-18974: ابزار Tools/scripts/diff.py اکنون به جای optparse از argparse استفاده میکند.
bpo-21906: سازگاری Tools/scripts/md5sum.py با پایتون ۳. تهیهی وصله توسط Zachary Ware.
bpo-21629: رفع ویژگی "--converters" در Argument Clinic.
افزودن پشتیبانی از
yield fromبه 2to3.افزودن پشتیبانی از عملگر ضرب ماتریس PEP 465 به 2to3.
bpo-16047: رفع فهرست استثنای ماژول و نحوهی پردازش __file__ در freeze. تهیهی وصله توسط Meador Inge.
bpo-11824: در نظر گرفتن برچسبهای ABI در freeze. تهیهی وصله توسط Meador Inge.
bpo-20535: متغیر PYTHONWARNING دیگر روی اسکریپت run_tests.py تأثیری ندارد. وصلهای از Arfrever Frehtes Taifersar Arahesis.
Windows¶
bpo-23260: بهروزرسانی نصبکنندهی ویندوز
نسخهی همراه Tcl/Tk به 8.6.3 بهروزرسانی شده است. بارزترین نتیجهی این تغییر، اضافه شدن محاورههای پروندهی بومی جدید هنگام اجرای روی ویندوز ویستا یا جدیدتر است. برای اطلاعات بیشتر، TIP 432 مربوط به Tcl/Tk را ببینید. همچنین، این نسخهی Tcl/Tk از ویندوز ۱۰ پشتیبانی میکند.
bpo-17896: اسکریپتهای ساخت ویندوز اکنون انتظار دارند منابع کتابخانهی خارجی بهجای
PCbuild\..\..درPCbuild\..\externalsقرار داشته باشند.bpo-17717: اسکریپتهای ساخت ویندوز اکنون برای ساخت OpenSSL از نسخهای از NASM که از svn.python.org دریافت شده است، استفاده میکنند.
bpo-21907: بهبود اسکریپتهای دستهای (batch) ارائهشده برای ساخت پایتون.
bpo-22644: نسخهی همراه OpenSSL به 1.0.1j بهروزرسانی شده است.
bpo-10747: استفاده از برچسبهای دارای نسخه در منوی شروع ویندوز. وصلهای از Olive Kilburn.
bpo-22980: پروندههای pyd. با برچسب نسخه و سکو (برای مثال، ".cp35-win32.pyd") اکنون به پروندههای بدون برچسب ترجیح داده شده و بارگذاری میشوند.
(برای کسب اطلاعات دربارهی نسخههای قدیمیتر، پروندهی HISTORY را مطالعه کنید.)