گزارش تغییرات

پایتون بعدی

تاریخ انتشار: XXXX-XX-XX

امنیت

  • gh-149698: به‌روزرسانی libexpat بسته‌بندی‌شده به نسخه‌ی ۲.۸.۱ برای رفع آسیب‌پذیری CVE 2026-45186.

  • gh-160499: Fix unbounded memory growth in asyncio TLS 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 allowed tarfile extraction with the 'data' or 'tar' filter to create a file outside the destination directory.

  • gh-161323: On Windows, the 'tar' and 'data' tarfile extraction filters now refuse member names and link targets that have a drive but are not absolute, such as C:foo, with AbsolutePathError or AbsoluteLinkError. Such members could be extracted outside the destination directory. Fixes CVE 2026-107784.

  • gh-160420: Fix zoneinfo.ZoneInfo on Windows accepting keys in which a component after a / starts with a drive letter, such as America/C:\file. Such a key could open a file outside the tzdata package; it now raises ValueError.

  • 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=undefined enables since clang 17.

  • gh-126312: رفع فروپاشی حین زباله‌روبی روی شیء فریزشده توسط gc.freeze() در ساخت نخ‌آزاد.

  • gh-161229: __lazy_import__() now treats None for globals and locals the same as omitting them, matching its signature.

  • gh-160773: Fix a crash in str() of an OSError when formatting one of its attributes modifies the others.

  • gh-159652: Fix a hang when an import fails with RecursionError because 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 raises RecursionError before 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 using functools.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 raises SyntaxError.

  • gh-151060: Fix a crash or memory corruption in sum() when summing a float subclass instance into a complex running total.

کتابخانه

مستندات

  • 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 configure probe that could omit functions such as os.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 _wmi under 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 of Py_SETREF, Py_XSETREF and Py_CLEAR macros. Patch by Nathan Goldbaum and Victor Stinner.

پایتون ۳.۵.۲ نهایی

تاریخ انتشار: ۲۰۲۶-۱۰-۲۱

امنیت

  • gh-160300: Fix http.cookiejar.DefaultCookiePolicy accepting and returning cookies with a negative Version attribute 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: ssl now 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 5280 SubjectPublicKeyInfo), 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 SyntaxError now 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 _DeadlockError or 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 the import statement 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.ZstdCompressor that uses worker threads and a ZstdDict is deallocated, or the interpreter exits, while data passed to compress() is still being compressed.

  • gh-160535: Fix a crash in compression.zstd when the garbage collector frees a ZstdCompressor that uses worker threads together with its ZstdDict before the compression of already submitted data has finished.

  • gh-160520: Fix asyncio SSL 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 with TimeoutError once the timeout expires.

  • gh-160326: Raise ValueError for a NaN timeout in threading.Condition.wait() and the blocking calls built on it, such as threading.Event.wait(), threading.Semaphore.acquire() and queue.Queue.get(), instead of returning at once or looping without ever timing out.

  • gh-157639: برطرف‌کردن یک فروپاشی در cProfile هنگامی که یک تایمر خارجی مجدداً وارد پروفایل‌گیر می‌شود. رویدادهای پروفایل‌گیری که هنگام اجرای تایمر خارجی ایجاد می‌شوند اکنون نادیده گرفته می‌شوند.

  • gh-159739: Fix crashes in xml.parsers.expat when a character data callback disables buffering or clears another handler during a flush, or when interning an attribute name changes ordered_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 raising AttributeError when the client sent no certificate.

  • gh-159739: Fix a possible crash in abc.ABCMeta instance 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 AttributeError in email.message.EmailMessage.get_body() when a nested multipart part is malformed and its payload is a string.

  • gh-158287: رفع باگی در asyncio که در آن متوقف کردن یک فرایند فرزند (مانند استفاده از SIGSTOP) روی سیستم‌عامل macOS باعث مسدود شدن بی‌حساب حلقه‌ی رویداد می‌شد.

  • gh-130698: Fix PyREPL to convert sys.ps1 and sys.ps2 to 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 raises ValueError when 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.zipimporter now raises zipimport.ZipImportError instead of UnicodeDecodeError for a UTF-8-flagged file name that is not valid UTF-8. Patch by tonghuaroot.

  • gh-153319: The turtledemo viewer 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 by tarfile.TarFile.getnames(). Contributed by Xiao Yuan.

  • gh-149527: ماژول multiprocessing: رفع مشکل ایجاد پرونده‌های سوکت موقت به دنبال gh-137335 (پیوند PR#148578 و بک‌پورت‌های مربوطه). وصله‌ای از Bénédikt Tran.

  • gh-146169: xml.parsers.expat: raise RuntimeError when an Expat handler calls parser.Parse or parser.ParseFile on the parser that called the handler. Patch by Bénédikt Tran.

  • gh-140036: Avoid hanging in floor division of pure Python decimal.Decimal instances when the context precision is very large. Patch by Bénédikt Tran.

ساخت

  • gh-128883: Fix crashes with -X perf and -X perf_jit in 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=no and --without-name-sanitizer configure 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

تاریخ انتشار: ۲۰۲۶-۱۰-۲۱

امنیت

  • gh-159894: ارتقای نسخه‌ی pip بسته‌بندی‌شده در ensurepip به نسخه‌ی 26.2.2.

  • gh-159428: ماژول mimetypes دیگر به‌طور پیش‌فرض در ویندوز پرونده‌های فهرست‌شده در mimetypes.knownfiles را نمی‌خواند و تنها از رجیستری استفاده می‌کند.

  • gh-157953: به‌روزرسانی کتابخانه‌ی بسته‌بندی‌شده‌ی libexpat به نسخه‌ی 2.9.0.

هسته و توکارها (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 739 build-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() فعال شدند.

مک‌اواس

  • gh-158010: به‌روزرسانی برنامه‌ی نصب مک‌اواس برای استفاده از OpenSSL 3.5.9.

  • gh-152023: به‌روزرسانی ساخت‌های برنامه‌ی نصب مک‌اواس به SQLite 3.53.4.

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-118150: شفاف‌سازی در مستندات difflib در مورد اینکه بخش junk دقیقا چه کاری انجام می‌دهد، معایب آن و نحوه‌ی کنترل کردنش.

آزمون‌ها

  • 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

  • gh-140146: جلوگیری از متوقف شدن tkinter روی ویندوز اگر ورودی استاندارد (stdin) در یک نشست تعاملی به یک پایپ هدایت شود. این امر برای آزمایش استفاده‌ی تعاملی از tkinter از یک اسکریپت، به عنوان مثال به عنوان بخشی از مجموعه‌آزمون cpython، مفید است.

مک‌اواس

  • gh-124111: به‌روزرسانی نصب‌کننده macOS برای استفاده از Tcl/Tk 9.0.4.

  • gh-152023: به‌روزرسانی ساخت‌های نصب‌کننده macOS به SQLite 3.53.3. فعال‌سازی توابع median() و percentile().

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_callback

  • gh-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: به‌روزرسانی ساخت‌های ویندوز برای شامل شدن نسخه‌ی ۳.۵۳.۲ SQLite.

  • gh-151159: به‌روزرسانی نسخه‌ی بسته‌بندی‌شده‌ی OpenSSL به ۳.۵.۷.

  • gh-150836: باعث شوید tkinter نصب‌شده با ساخت‌های Tcl/Tk ۹ که کتابخانه‌ی اسکریپت Tk را در فایل DLL مربوط به Tk در ویندوز تعبیه می‌کنند، به کار بیفتد.

مک‌اواس

  • gh-151163: به‌روزرسانی نصب‌کننده‌ی macOS برای شامل شدن نسخه‌ی ۳.۵۳.۲ SQLite.

IDLE

  • bpo-6699: در صورت بازنویسی شدن پرونده هنگام ذخیره‌سازی، به کاربر هشدار دهید.

رابط C API

نسخه‌ی بتا ۲ پایتون ۳.۱۵.۰

تاریخ انتشار: ۲۰۲۶-۰۶-۰۲

امنیت

  • 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

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 به عنوان کنسول ورودی پیش‌فرض برای pdb

  • gh-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-149425: افزایش دلتای زمان در test.test_zipfile.test_core.OtherTests.test_write_without_source_date_epoch

  • gh-148600: افزودن پشتیبانی از OpenSSL 4.0.0 به پیکربندی‌های آزمون.

ساخت

  • 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 هنگام تغییر اندازه‌ی پنجره‌ی کنسول روی ویندوز اصلاح شد.

مک‌اواس

  • gh-142295: برای ساخت‌های چارچوب macOS پایتون، پرونده‌های Info.plist به‌روزرسانی شدند تا با دستورالعمل‌های فعلی Apple سازگارتر باشند. وصله‌ی اصلی توسط Martinus Verburg مشارکت داده شده است.

  • gh-149254: نصب‌کننده‌ی macOS برای استفاده از OpenSSL 3.5.6 به‌روزرسانی شد.

IDLE

  • gh-94523: تشخیص پرونده در صورت تغییر روی دیسک محلی و نمایش اعلان برای درخواست تازه‌سازی. وصله توسط Shixian Li.

  • gh-139551: پشتیبانی از رندر کردن BaseExceptionGroup در IDLE.

  • gh-89520: پیکربندی افزونه‌ی IDLE طوری تنظیم شد که پرونده‌های پیکربندی کاربر را بررسی کند و به افزونه‌های نصب‌شده توسط کاربر اجازه دهد تنظیمات و کلیدهای میانبر تعریف‌شده در ~/.idlerc را داشته باشند.

رابط C API

پایتون ۳.۱۵.۰ آلفا ۸

تاریخ انتشار: ۲۰۲۶-۰۴-۰۷

امنیت

هسته و توکارها (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-146083: به‌روزرسانی بسته‌ی libexpat به نسخه‌ی 2.7.5.

  • 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 Naithani

  • gh-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-126676: گسترش مستندات ماژول argparse برای type=bool همراه با نمایش رفتار غیرمنتظره و اشاره‌گرهایی به جایگزین‌های رایج.

  • gh-145649: اصلاح شکستن متن و قالب‌بندی توضیحات گزینه‌ی -X در صفحه‌ی راهنمای python(1) با استفاده از نشانه‌گذاری مناسب roff.

آزمون‌ها

  • 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 به configure

  • gh-145633: حذف پشتیبانی از پلتفرم‌های قدیمی ARM (بردهای ARMv4L و ARMv5L OABI)، که از بازنمایی مختلط-اندیان (mixed-endian) برای ممیزهای شناور با دقت مضاعف استفاده می‌کردند. وصله‌ای از Sergey B Kirpichev.

  • gh-85277: رفع مشکل ساخت بدون stropts.h یا با stropts.h خالی

Windows

  • gh-140131: رفع موقعیت نشانگر REPL روی ویندوز زمانی که سطر پیشنهاد تکمیل ماژول به عرض کنسول می‌رسد.

مک‌اواس

Tools/Demos

  • gh-135953: شناسایی صحیح نخ اصلی در جمع‌آورنده‌ی پروفایل‌گیر Gecko با استفاده از پرچم وضعیت از وضعیت مفسر به جای تکیه بر threading.main_thread() در فرایند جمع‌آورنده.

  • gh-145976: حذف Misc/indent.pro، یک پرونده‌ی پیکربندی برای indent(1) در GNU.

  • gh-145976: حذف Misc/vgrindefs و Misc/Porting.

رابط C API

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-117865: کاهش زمان ایمپورت ماژول inspect حدود ۲۰ درصد.

  • 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-144533: استفاده از --argv0 ابزار wasmtime برای کشف خودکار sysconfig در نسخه‌های ساخت WASI

  • gh-145110: رفع اهداف «Clean» و «CLeanAll» در صورت ساخت‌های PGO روی ویندوز. توسط Chris Eibl وصل شد.

  • gh-144679: هنگام ساخت با Visual Studio 2026 (نسخه‌ی ۱۸)، به‌طور پیش‌فرض از PlatformToolSet v145 استفاده کنید. توسط Chris Eibl وصل شد.

  • gh-144675: به‌روزرسانی به WASI SDK 30.

  • gh-136677: معرفی پرچم‌های پیونددهنده‌ی مختص فایل اجرایی به ./configure.

پایتون ۳.۱۵.۰ آلفا ۶

تاریخ انتشار: ۲۰۲۶-۰۲-۱۱

مک‌اواس

  • gh-144648: با استفاده از proc_listpids() به‌جای proc_listallpids()، امکان ساخت _remote_debugging روی نسخه‌های بیشتری از سیستم‌عامل فراهم شد.

  • gh-124111: به‌روزرسانی نصب‌کننده‌ی macOS برای استفاده از Tcl/Tk 9.0.3.

  • gh-144551: به‌روزرسانی نصب‌کننده‌ی macOS برای استفاده از OpenSSL 3.5.5.

Windows

آزمون‌ها

  • 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-142956: به‌روزرسانی tomllib برای تجزیه‌ی TOML 1.1.0.

  • 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_SLICE

  • gh-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-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

  • gh-143082: رفع کار نکردن تاریخچه‌ی کلیدهای جهت‌نما در pdb هنگامی که stdin برابر با sys.stdin است.

  • gh-128067: برطرف‌سازی باگی در PyREPL در ویندوز که در آن خروجی فاقد نویسه‌ی خط جدید پایانی، توسط اعلان بعدی بازنویسی می‌شد.

Tools/Demos

  • gh-142095: دستور 'py-bt' در gdb را به‌گونه‌ای تنظیم کنید که در صورت امکان، از قاب (frame) موجود در وضعیت محلی نخ (thread local state) استفاده کند. وصله توسط Sam Gross و Victor Stinner.

آزمون‌ها

  • gh-143460: اگر اندازه‌ی پشته نامحدود باشد، آزمون‌هایی که به بازگشت (recursion) بی‌نهایت وابسته‌اند را رد کنید.

  • gh-143553: افزودن پشتیبانی از منابع پارامتری‌دار، مانند -u xpickle=2.7.

  • bpo-31391: انتقال رو به جلوی test_xpickle از پایتون ۲ به پایتون ۳ و افزودن مجدد منبع به خط فرمان آزمون.

کتابخانه

  • 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-140025: queue: اصلاح محاسبه‌ی SimpleQueue.__sizeof__().

  • 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: پوسته تعاملی پایتون (asyncio REPL) اکنون به پرچم -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: پس از وقوع یک خطا، از نوشتن اشیاء در طول مارشالینگ صرف‌نظر کنید.

مستندات

هسته و توکارها (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 Roun

  • gh-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: رابط asyncio REPL دیگر پیام‌های حق چاپ (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 Galindo

  • gh-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-140381: برطرف‌سازی آزمون‌های ناپایدار test_profiling در معماری‌های i686 و s390x با افزایش بسامد فراخوانی slow_fibonacci از هر ۵ پیمایش (iteration) به هر ۲ پیمایش.

  • gh-140210: کاهش آسیب‌پذیری test_sysconfig.test_parse_makefile_renamed_vars از طریق پاک‌سازی متغیرهای محیطی پیش از تجزیه‌ی Makefile.

امنیت

  • 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 به رابط خط فرمان، CLI profiling.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 Galindo

  • gh-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 Galindo

  • gh-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.

مستندات

هسته و توکارها (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() و قلاب‌های PyModExport

  • gh-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/getattr

  • gh-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 646 star_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 برای نشان دادن زباله‌روبی فعال و فراخوانی‌ها به کد بومی.

کتابخانه

  • gh-140942: افزودن .cjs به mimetypes برای اختصاص نوع MIME به نام application/node به ماژول‌های CommonJS.

هسته و توکارها (Core and Builtins)

  • gh-140479: به‌روزرسانی کامپایلر درجا (JIT) برای استفاده از LLVM 21 در زمان ساخت.

  • gh-140939: رفع نشت حافظه زمانی که bytearray یا bytes با قالب %*b و با عرض زیاد قالب‌بندی می‌شوند که منجر به MemoryError می‌گردد.

کتابخانه

  • gh-140260: رفع مسابقه‌ی داده (data race) در ماژول struct هنگام مقداردهی اولیه‌ی جدول اندیان (endian) با زیرتفسیرگرها. پچ توسط Shamil Abdulaev.

هسته و توکارها (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.

کتابخانه

هسته و توکارها (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_example

  • gh-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-139374: timeit: افزودن رنگ به ردگیری‌های خطا.

  • 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-138993: حذف تورفتگی متن credits.

  • 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-138712: افزودن os.NODEV.

  • 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-138515: ماژول email به ساخت Emscripten اضافه شد.

  • 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_exception

  • gh-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_N

  • gh-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: قرار دادن تابع C99 signbit() در دسترس برای تشخیص این که آیا بیت علامت یک مقدار ممیز شناور تنظیم شده است یا خیر. وصله توسط 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-90117: افزایش سرعت pprint برای list و tuple.

  • 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-133447: افزودن رنگ پایه به رابط خط فرمان sqlite3.

  • 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 Roun

  • gh-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

  • gh-96491: حذف شماره‌ی نسخه اضافی در نوار عنوان پوسته‌ی IDLE پس از ذخیره‌سازی در یک پرونده.

  • gh-139742: رنگ‌آمیزی پیشوندهای تی‌استرینگ (t-string) برای رشته‌های قالبی در IDLE، درست مانند پیشوندهای اف‌استرینگ (f-string).

مستندات

  • gh-136155: اکنون خطاهای مهلک در ساخت‌های EPUB در CI بررسی می‌شوند.

  • gh-135171: مستندسازی این که پیمایش‌گر برای چپ‌ترین بند for در عبارت تولیدگر فوراً ایجاد می‌شود.

  • bpo-45210: مستندسازی کنید که نشانگر خطا ممکن است در tp_dealloc تنظیم شود و چگونه می‌توان از مخدوش شدن آن جلوگیری کرد.

هسته و توکارها (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 Galindo

  • gh-133059: افزایش تعداد اعداد صحیح مثبت کوچک کش‌شده از ۲۵۶ به ۱۰۲۴.

  • gh-74857: PEP 538: اعمال تنظیمات locale پیکس بر مبنای UTF-8. وصله توسط Victor Stinner.

کتابخانه

هسته و توکارها (Core and Builtins)

  • gh-138558: رفع نحوه پردازش حاشیه‌نویسی‌های غیرعادی t-string در annotationlib. وصله توسط Dave Peck.

  • gh-134466: عدم اجرای PyREPL در محیطی تخریب‌شده که در آن تنظیم ویژگی‌های termios مجاز نیست.

  • gh-138794: هنگامی که یک تابع ردگیری جدید با PyRefTracer_SetTracer() ثبت می‌شود، با جایگزینی تابع فعلی، فراخوانی تابع ردگیری با شیء تنظیم‌شده روی NULL و event تنظیم‌شده روی PyRefTracer_TRACKER_REMOVED انجام خواهد شد. این کار درست قبل از ثبت تابع جدید رخ می‌دهد. وصله توسط Pablo Galindo

  • gh-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 پشتیبانی می‌کند.

کتابخانه

هسته و توکارها (Core and Builtins)

  • gh-137838: رفع سرریز بافر رد کامپایلر درجا (JIT) با افزایش تعداد استاب‌های خروجی احتمالی. وصله توسط Donghee Na.

  • gh-71679: استفاده از الگوریتم نقل‌قول یکسان برای تابع repr شیءهای bytearray همانند شیءهای bytes و رشته‌ها -- اگر شیء bytearray شامل نقل‌قول تکی باشد و شامل نقل‌قول دوتایی نباشد، از نقل‌قول دوتایی برای محصور کردن استفاده کنید.

  • gh-137384: رفع فروپاشی هنگام استفاده از ماژول warnings در یک نهایی‌ساز هنگام خاموش شدن. وصله توسط Kumar Aditya.

کتابخانه

  • gh-138004: در پلتفرم‌های Solaris/Illumos، نام‌های نخ‌ها اکنون به صورت اسکی کدگذاری می‌شوند تا از بروز خطا در سیستم‌هایی (مانند OpenIndiana) که از نام‌های غیر اسکی پشتیبانی نمی‌کنند، جلوگیری شود.

  • gh-137976: حذف localtime از فهرست مناطق زمانی گزارش‌شده‌ی سیستم.

هسته و توکارها (Core and Builtins)

  • gh-137992: اطمینان حاصل کنید که PyRefTracer_SetTracer() هنگام فراخوانی با تمام نخ‌های موجود همگام می‌شود تا از رقابت‌ها در ساخت نخ‌بندی آزاد جلوگیری شود. وصله توسط Pablo Galindo

  • gh-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

کتابخانه

هسته و توکارها (Core and Builtins)

  • gh-136616: بهبود پیام‌های خطای SyntaxError برای استفاده‌های نامعتبر assert.

  • gh-136599: بهبود کارایی محاسبات درهم‌سازی int.

کتابخانه

  • gh-136421: رفع فروپاشی هنگام مقداردهی اولیه هم‌زمان datetime.

هسته و توکارها (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).

کتابخانه

هسته و توکارها (Core and Builtins)

  • gh-134280: غیرفعال کردن تاشدن ثابت (constant folding) برای ~ با یک آرگومان بولی. این تغییر، هشدار منسوخ‌شدن را از زمان کامپایل به زمان اجرا منتقل می‌کند.

  • gh-134876: افزودن پشتیبانی از اشکال‌زدایی از راه دور PEP 768 برای هسته‌های لینوکس که CONFIG_CROSS_MEMORY_ATTACH در آن‌ها پیکربندی نشده است.

  • gh-134889: اصلاح نحوه‌ی مدیریت برخی از آپ‌کدها که هنگام بهینه‌سازی LOAD_FAST عملوندها را روی پشته باقی می‌گذارند.

کتابخانه

هسته و توکارها (Core and Builtins)

  • gh-117852: رفع بررسی آرگومان athrow().

  • 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.

کتابخانه

هسته و توکارها (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_BORROW

  • gh-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 Roun

  • gh-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: رفع یک فروپاشی هنگام استفاده از نخ‌ها در داخل یک زیرتفسیرگر.

کتابخانه

  • gh-116738: ماژول json را برای استفاده‌ی امن تحت ساخت نخ‌آزاد آماده کنید.

هسته و توکارها (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_JIT

  • gh-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-130453: امکان ارسال چندین آرگومان کلیدواژه‌ای با نام تابع یکسان در pygettext را فراهم می‌کند.

  • gh-130195: افزودن پیام‌های هشدار زمانی که گزینه‌ی پیاده‌سازی‌نشده‌ی -a/--extract-all در pygettext فراخوانی می‌شود.

آزمون‌ها

  • 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-113081: برجسته‌سازی نحو روی کد منبع در pdb.

  • gh-133349: معرفی تورفتگی خودکار در ورودی چندخطی pdb.

  • 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__ را از falsey Exception و ویژگی 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-127385: افزودن ثابت F_DUPFD_QUERY به ماژول fcntl.

  • 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_SET

  • gh-132942: رفع دو وضعیت رقابتی در نهانگاه جستجوی نوع. این مورد ساخت نخ‌آزاد را تحت تأثیر قرار داد و می‌تواند باعث فروپاشی شود (که ظاهراً تکرار آن بسیار دشوار است).

  • gh-131798: انتشار نوع بازگشتی _BINARY_OP_SUBSCR_TUPLE_INT در کامپایلر درجا (JIT). وصله‌ای از Tomas Roun

  • gh-132952: با ایمپورت کردن ماژول خصوصی _io به جای io، راه‌اندازی را با آرگومان -S سرعت ببخشید. این کار یک رگرسیون عملکردی را که قبلاً در روند توسعه‌ی پایتون ۳.۱۴ معرفی شده بود، رفع می‌کند و عملکرد را به سطح پایتون ۳.۱۳ بازمی‌گرداند.

  • gh-131798: با تنظیم نوع بازگشتی به int، به کامپایلر درجا (JIT) اجازه دهید نگهبان‌های int را پس از _CALL_LEN حذف کند. وصله‌ای از Diego Russo

  • gh-131798: تجزیه‌ی CALL_TUPLE_1 به چندین ریزعمل که به کامپایلر درجا (JIT) اجازه می‌دهد برخی از آن‌ها را حذف کند. وصله‌ای از Tomas Roun

  • gh-131798: تجزیه‌ی CALL_STR_1 به چندین ریزعمل که به کامپایلر درجا (JIT) اجازه می‌دهد برخی از آن‌ها را حذف کند. وصله‌ای از Tomas Roun

  • gh-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.

کتابخانه

  • gh-132737: پشتیبانی از پروفایل‌گیری کدهایی که به __main__ نیاز دارند، مانند pickle.

هسته و توکارها (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_MAP

  • gh-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.

پایتون ۳.۱۴.۰ آلفا ۷

تاریخ انتشار: ۲۰۲۵-۰۴-۰۸

مک‌اواس

  • gh-124111: بروزرسانی برنامه‌ی نصب macOS برای استفاده از Tcl/Tk 8.6.16.

  • gh-131423: بروزرسانی برنامه‌ی نصب macOS برای استفاده از OpenSSL 3.0.16. وصل توسط Bénédikt Tran.

  • gh-131025: بروزرسانی برنامه‌ی نصب macOS برای عرضه‌ی همراه با SQLite 3.49.1.

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-132121: همیشه نویسه‌های یونیکد غیرقابل‌چاپ را در pygettext گریز (escape) دهید.

  • gh-131852: ابزار msgfmt دیگر تاریخ ایجاد را یعنی POT-Creation-Date را به پرونده‌های تولیدشده‌ی .mo اضافه نمی‌کند تا با ابزار msgfmt گنو سازگاری داشته باشد.

آزمون‌ها

  • 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: افزودن نام مستعار برای زبان تایلندی با استفاده از صفحات کد مایکروسافت.

مستندات

هسته و توکارها (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: رفع مسئله‌ی گسترش علامت شناسه‌های نخ در برخی پلتفرم‌ها.

کتابخانه

  • gh-99108: افزودن پشتیبانی برای پیاده‌سازی توکار HMAC (متصل به RFC 2104) بر اساس HACL*. وصله توسط Bénédikt Tran.

هسته و توکارها (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-131740: به‌روزرسانی PyUnstable_GC_VisitObjects برای پیمایش نسل دائم (perm gen).

  • gh-131525: شیء PyTupleObject اکنون مقدار هش محاسبه‌شده را در فیلد جدید ob_hash نهانگاه (cache) می‌کند.

ساخت

  • 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 روی pdb

  • gh-130230: رفع خرابی در pow() با فقط آرگومان سوم Decimal.

  • gh-126944: نمایش خطاهای صریح هنگام مفقود بودن آرگومان‌های ضروری دستورات pdb

  • gh-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_IsPossiblyShadowing

  • gh-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-130574: تغییر شماره‌ی RESUME از ۱۴۹ به ۱۲۸.

  • 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: توابع خصوصی زیر منسوخ شده‌اند و برنامه‌ریزی شده است که در پایتون ۳.۱۸ حذف شوند:

    پروژه‌ی 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-129248: اجراکننده‌ی آزمون iOS اکنون پیشوند گزارش را از هر سطر خروجی تولید شده توسط بدنه‌ی آزمون حذف می‌کند.

  • gh-104400: رفع چندین باگ در استخراج با تغییر دادن پارسر به درخت نحوی انتزاعی (AST) در pygettext.

آزمون‌ها

  • 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-128991: رهاسازی ارجاع قاب ورود در درون کال‌بک bdb

  • 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-58956: رفع نشت ارجاع قاب در bdb.

  • 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_locals

  • gh-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-127119: بهینه‌سازی جزئی تخصیص‌زدای int.

  • gh-127349: خطای مربوط به تغییر اندازه‌ی پایانه در REPL پایتون برطرف شد. از وصله‌های Semyon Moroz.

  • gh-125723: فروپاشی با gi_frame.f_locals زمانی که قاب‌های تولیدگر از خودِ تولیدگر بیشتر عمر می‌کنند، برطرف شد. از وصله‌های Mikhail Efimov.

کتابخانه

هسته و توکارها (Core and Builtins)

  • gh-115911: اگر پوشه‌ی کاری فعلی به دلیل محدودیت دسترسی قابل تعیین نباشد، عملیات ایمپورت دیگر خطای PermissionError را بالا نخواهد آورد. از وصله‌های Alex Willmer.

کتابخانه

رابط 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: توابع خصوصی زیر منسوخ شده‌اند و برنامه‌ریزی شده است که در پایتون ۳.۱۸ حذف شوند:

    پروژه‌ی pythoncapi-compat project را می‌توان برای دریافت این توابع عمومی جدید در پایتون ۳.۱۳ و نسخه‌های قدیمی‌تر استفاده کرد.

    توسط Victor Stinner وصل شد.

  • gh-126599: حذف برخی از APIهای آزمایشی داخلی برای کامپایلر درجا (JIT) آزمایشی.

  • gh-127925: تبدیل ماژول decimal برای استفاده از API C در PEP 757 (صصدور و ورود اعداد صحیح)، که اگر بخش صحیح نمونه‌ی Decimal کوچک باشد، سرعت را افزایش می‌دهد. وصله توسط Sergey B Kirpichev.

ساخت

  • gh-129660: حذف test_embed از آموزش PGO، که سهم آن در نسخه‌های اخیر ناچیز در نظر گرفته می‌شود.

  • gh-128902: رفع خطاهای کامپایل با Clang 9 و نسخه‌های قدیمی‌تر به دلیل عدم پشتیبانی از __attribute__((fallthrough)).

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-128559: بهبود زمان ایمپورت ماژول asyncio.

  • 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

  • gh-127353: امکان اجبار خروجی رنگی روی ویندوز با استفاده از متغیرهای محیطی. وصله توسط Andrey Efremov.

  • gh-125729: وابستگی حضور ماژول turtle به گزینه‌ی نصب‌کننده‌ی Tcl/Tk. پیش‌تر، این ماژول همیشه نصب می‌شد اما بدون Tcl/Tk غیرقابل‌استفاده بود.

Tools/Demos

  • gh-126700: افزودن پشتیبانی از توابع چند آرگومانی gettext در pygettext.py.

آزمون‌ها

  • 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-127481: افزودن ثابت EPOLLWAKEUP به ماژول select.

  • 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-85046: افزودن کد خطای EHWPOISON به errno.

  • 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 است. این کار آزمایش موارد فوق را بسیار آسان‌تر می‌کند.

مستندات

هسته و توکارها (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-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-126807: رفع هشدارهای استخراج در pygettext.py که ناشی از اشتباه گرفتن تعاریف تابع با فراخوانی‌های تابع بود.

  • gh-126167: محیط آزمایشی (testbed) iOS اصلاح شد تا بتواند توسط پروژه‌های شخص ثالث برای اهداف آزمایشی استفاده شود.

آزمون‌ها

  • gh-126909: اصلاح آزمون‌های ویژگی (attribute) توسعه‌یافته‌ی test_os تا روی سامانه‌های فایل‌بندی دارای محدودیت اندازه‌ی ۱ کیلوبایتی xattr به درستی کار کنند.

  • gh-125730: دستور make test را تغییر دهید تا به‌طور پیش‌فرض آزمون‌های رابط گرافیکی (GUI) را اجرا نکند. در عوض، از make ci برای اجرای آزمون‌ها همراه با آزمون‌های رابط گرافیکی استفاده کنید.

  • gh-124295: افزودن آزمون‌های ترجمه به ماژول argparse.

امنیت

  • 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-126106: رفع رفع ارجاع احتمالی به اشاره‌گر NULL در ssl.

  • 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.

کتابخانه

  • gh-126066: رفع importlib به طوری که وقتی یک محدودیت ulimit یا مکانیسم سیستم‌عامل دیگری مانع از انجام کامل عملیات نوشتن می‌شود، پرونده‌های .pyc ناقص نوشته نشوند.

هسته و توکارها (Core and Builtins)

  • gh-126222: عدم گنجاندن تعداد آیتم‌های «peek» در _PyUop_num_popped. این کار تضمین می‌کند که وقتی یک ریزعملیات (micro-op) با خطا خارج می‌شود، تعداد درستی از آیتم‌ها از پشته خارج (pop) شوند.

  • gh-126366: رفع فروپاشی هنگام استفاده از yield from روی شیء‌ای که در __iter__ خود یک استثنا ایجاد می‌کند.

کتابخانه

  • 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 Galindo

  • gh-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 است تا بررسی کند که تمام پیمایش‌پذیرها طول برابری دارند. پچ توسط وانس بویکنز.

کتابخانه

  • gh-118950: رفع باگی که در آن روش SSLProtocol.connection_lost هنگام پرتاب خطای OSError در هنگام نوشتن روی سوکت فراخوانی نمی‌شد.

  • gh-113570: رفع باگ در reprlib.repr که در آن متد repr را به اشتباه روی انواع توکار پوشانده‌شده‌ی پایتون فراخوانی می‌کرد.

رابط C API

ساخت

  • 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های میزبان و هدف با یکدیگر مطابقت دارند.

نسخه‌ی ۳.۱۴.۰ آلفا ۱ پایتون

تاریخ انتشار: ۲۰۲۴-۱۰-۱۵

مک‌اواس

  • gh-124448: به‌روزرسانی Tcl/Tk دسته‌بندی‌شده در نصب‌کننده‌ی مک‌اواس به نسخه‌ی ۸.۶.۱۵.

  • gh-123797: بررسی دسترس‌پذیری در ران‌تایم تابع ptsname_r روی مک‌اواس.

  • gh-123418: به‌روزرسانی ساخت نصب‌کننده‌ی مک‌اواس برای استفاده از OpenSSL 3.0.15.

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.Future

  • gh-53203: اصلاح time.strptime() برای قالب‌های %c و %x در بسیاری از تنظیمات محلی (locale): عربی، بیسلاما، برتون، بودو، کاشوبی، چوواش، استونیایی، فرانسوی، ایرلندی، گِعِز، گجراتی، مانکسی، عبری، هندی، چتیسگری، کریول هائیتی، ژاپنی، کاناده‌ای، کره‌ای، مراتی، مالایی، نروژی، نینورسک، پنجابی، راجستانی، توک پیسین، یوروبا، چینی یوئه، یاو/نونگون و چینی.

  • gh-123961: تبدیل curses به مقداردهی اولیه‌ی چندمرحله‌ای (PEP 489)، که از این طریق نشتی‌های ارجاع در زمان خاموش شدن مفسر اصلاح می‌شوند. وصله‌ای از Bénédikt Tran.

  • gh-124944: افزودن SO_ORIGINAL_DST به ماژول socket.

  • 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: رفع متغیر نامعتبر در مدیریت پیوند نمادین ناموفق در ویندوز توسط venv

  • gh-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-123504: نشت ارجاع در نهایی‌سازی tkinter برطرف شد.

  • 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 Hsing

  • gh-122400: استثناهای ValueError ایجادشده توسط os.stat() را در filecmp.dircmp و filecmp.cmpfiles() مدیریت کنید. اصلاحیه از Bénédikt Tran.

  • gh-122311: برخی از پیام‌های خطا را در pickle برطرف کنید.

  • 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، ویژگی‌های زیر را برای سفارشی‌سازی ارزیابی محدوده‌های حاشیه‌نویسی اضافه کنید:

  • 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 Hsing

  • gh-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-112672: پشتیبانی از ساخت ماژول tkinter با Tcl نسخه ۹.۰.

  • 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-118830: پروتکل پیش‌فرض pickle به 5 ارتقا یافت.

  • 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 Kulik

  • gh-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 Galindo

  • gh-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 اجرا شود، اما به دلیل عدم وجود شواهدی از بهبود کارایی، این موارد (هنوز) فعال نشده‌اند.

کتابخانه

  • gh-121999: فیلتر استخراج پیش‌فرض برای ماژول tarfile اکنون روی 'data' تنظیم شده است.

هسته و توکارها (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 Galindo

  • gh-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 Galindo

  • gh-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 Galindo

  • gh-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، این امر شکلِ شمارش ارجاعِ معوقِ آن را امکان‌پذیر می‌سازد. برای هر دو ساخت پیش‌فرض و نخ‌آزاد، این کار زیرساخت را برای اعداد صحیح جعبه‌نشده در آینده فراهم می‌کند.

کتابخانه

هسته و توکارها (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 Smith

  • gh-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-freelists

  • gh-124102: به‌روزرسانی مستندات داخلی تحت PCbuild، به طوری که اکنون به درست بیان می‌کند که ویندوز به VS2017 یا جدیدتر و پایتون ۳.۱۰ یا جدیدتر نیاز دارد

  • gh-124043: ساخت با استفاده از --with-trace-refs هنگامی که GIL غیرفعال است (به‌طور موقت) مجاز نیست.

  • gh-123418: به‌روزرسانی ساخت اندروید برای استفاده از OpenSSL 3.0.15.

  • gh-123297: انتقال دادن مقدار LDFLAGS به LDCXXSHARED در sysconfig. وصله توسط Pablo Galindo

  • gh-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 Galindo

  • gh-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-118500: افزودن پشتیبانی pdb برای zipappها

  • 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 در ماژول pdb

  • gh-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 برای تمام روش‌های شروع multiprocessing

  • gh-113081: چاپ استثنای رنگی درست مانند traceback توکار در pdb

  • gh-112855: افزایش سرعت پیکل کردن (pickling) اشیاء pathlib.PurePath. وصله‌ای از Barney Gale.

  • gh-111744: پشتیبانی از رویدادهای آپ‌کد در bdb

  • 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

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 Semyon

  • gh-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) تقسیم می‌شود.

    جمع‌آوری در دو مرحله انجام می‌شود:: * یک گام از نسل جوان و بخش کوچکی از فضای معلق تشکیل می‌شود. * این گام پیمایش می‌شود و بازماندگان به انتهای فضای بازدیدشده منتقل می‌شوند.

    هنگامی که فضای جمع‌آوری خالی می‌شود، این دو فضا با یکدیگر جابه‌جا می‌شوند.

کتابخانه

  • gh-109870: دیتاکلاس‌ها اکنون تابع exec() را به ازای هر دیتاکلاس یک بار فراخوانی می‌کنند، به جای این که به ازای هر متدی که اضافه می‌شود فراخوانی کنند. این کار می‌تواند ایجاد دیتاکلاس را تا 20 درصد تسریع کند.

  • gh-97901: نوع داده‌ی text/rtf اکنون توسط mimetypes پشتیبانی می‌شود.

هسته و توکارها (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-117349: بهینه‌سازی چندین تابع در os.path.

  • 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 C SSL_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: نادیده گرفتن سطرهای خالی و کامنت‌ها در .pdbrc

  • gh-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.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-112948: تکمیل‌خودکار pdb را مشابه REPL پایتون بسازید.

  • 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-115977: حذف ارجاعات سازگاری به Emscripten.

  • gh-114099: افزودن راهنمای پلتفرم iOS و علامت‌گذاری ماژول‌هایی که روی iOS در دسترس نیستند.

  • gh-91565: اعمال تغییرات در پرونده‌های مستندات و خروجی‌های پیکربندی جهت انعکاس مکان جدید گزارش‌دهی باگ‌ها، یعنی گیت‌هاب (GitHub) به‌جای bugs.python.org.

آزمون‌ها

  • 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 جلوگیری شود.

ساخت

  • gh-114736: تنظیم ساخت‌های WASI برای استفاده از WASI SDK 21.

  • gh-115983: از ساخت ماژول‌های آزمونی که باید به شکل مشترک تحت WASI ساخته شوند، خودداری کنید.

  • gh-71052: اسکریپت ساخت و دستورالعمل‌های اندروید اضافه شد.

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-117642: پیاده‌سازی PEP 737 برای %#T و %#N اصلاح شد.

  • 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

تاریخ انتشار: ۲۰۲۴-۰۳-۱۲

امنیت

هسته و توکارها (Core and Builtins)

  • gh-116604: احترام به وضعیت جمع‌آوری‌کننده‌ی زباله هنگامی که فراخوانی‌های غیرمستقیم از طریق PyErr_CheckSignals() و شکستن ارزیابی انجام می‌شود. تهیه شده توسط Pablo Galindo

  • gh-112087: کلاس list اکنون با پیاده‌سازی PEP 703 سازگار است.

  • gh-116381: افزودن تخصصی‌سازی برای CONTAINS_OP.

  • gh-116296: رفع نشت حافظه‌ی احتمالی در مدیریت خطای داخلی object.__reduce__().

  • gh-115823: محاسبه‌ی صحیح بازه‌های خطا در پارسر هنگام بالا آوردن استثناهای SyntaxError که توسط دنباله‌های بایت نامعتبر ایجاد شده‌اند. تهیه شده توسط Pablo Galindo

  • gh-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-116600: رفع repr() برای اعضای سراسری Flag.

  • 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 هنگام اجرای یک اسکریپت با pdb

  • gh-76511: رفع خطای UnicodeEncodeError در email.Message.as_string() که وقتی پیامی ادعا می‌کند در مجموعه‌نویسه‌ی ascii است اما در واقع نویسه‌های غیر ascii دارد رخ می‌دهد. نویسه‌های غیر ascii اکنون مانند هندلر خطای replace با نویسه‌ی جایگزین U+FFFD جایگزین می‌شوند.

  • gh-89547: افزودن پشتیبانی از اشکال خاص تایپینگ تو در تو مانند Final[ClassVar[int]].

  • gh-65824: بهبود اعلان less در pydoc.

  • 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-103092: ایزوله کردن _lsprof (اعمال PEP 687).

  • 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 Rautenkranz

  • gh-69990: متد Profile.print_stats() بهبود یافته است تا چندین آرگومان مرتب‌سازی را بپذیرد. اصلاح‌شده توسط Chiu-Hsiang Hsu و Furkan Onder.

  • gh-104061: افزودن ثابت socket.SO_BINDTOIFINDEX.

  • gh-60346: رفع عدم سازگاری ArgumentParser با parse_known_args.

  • gh-102389: افزودن windows_31j به نام‌های مستعار کُدک cp932

  • gh-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-109653: بهبود زمان ایمپورت uuid در لینوکس.

آزمون‌ها

  • 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

  • gh-100176: حذف ابزارهای منسوخ‌شده‌ی Tools/{io,cc,string}bench

  • bpo-45101: ایجاد سازگاری در پیام استفاده‌ی IO بین ۲ نسخه‌ی python-config.

رابط 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 Na

  • gh-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-patch

  • gh-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 Russo

  • gh-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-114099: استثناهای آزمون مورد نیاز برای اجرای مجموعه آزمون‌ها در iOS اضافه شد.

  • gh-105089: رفع آزمون test.test_zipfile.test_core.TestWithDirectory.test_create_directory_with_write در AIX با انجام دادن یک عمل AND بیتی روی 0xFFFF در حالت، تا با zinfo.external_attr همگام باشد.

ساخت

  • 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

  • gh-96905: در کد idlelib، تعریف مجدد توابع توکار 'dict' و 'object' متوقف شد.

  • gh-103820: بازنگری اتصالات IDLE به‌طوری‌که رویدادهای دکمه‌ی ماوس ۴/۵ در سیستم‌های پنجره‌بندی غیر X11 (یعنی Win32 و Aqua) با اسکرول کردن اشتباه گرفته نشوند.

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-113659: نادیده گرفتن پرونده‌های .pth که نام آن‌ها با نقطه یا ویژگی پرونده‌ی مخفی شروع می‌شود.

  • gh-112302: ایجاد سند صورت‌حساب مواد نرم‌افزاری (Software Bill-of-Materials) و ابزارهایی برای پیگیری وابستگی‌ها.

هسته و توکارها (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 Galindo

  • gh-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-113212: بهبود پیغام‌های خطای super.

  • 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-90350: بهینه‌سازی توابع توکار min() و max().

  • gh-112943: محاسبه‌ی صحیح آفست‌های ستون پایانی برای توکن‌های چندخطی در ماژول tokenize. وصله توسط Pablo Galindo

  • gh-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-45369: حذف راهکارهای دور زدن LibreSSL طبق PEP 644.

  • 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: رفع مشکل متد asyncio SubprocessTransport.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 Shaw

  • gh-77621: بهبود جزئی زمان ایمپورت ماژول pathlib با به تعویق انداختن برخی ایمپورت‌ها. توسعه توسط Barney Gale.

  • gh-112137: تغییر خروجی dis جهت نمایش برچسب‌های منطقی برای مقاصد پرش به جای آفست‌ها.

  • gh-112139: افزودن Signature.format() برای قالب‌بندی امضاها به صورت رشته با گزینه‌های اضافی. و استفاده از آن در pydoc جهت رندر کردن امضاهای خواناتر که دارای سطرهای جدید بین پارامترها هستند.

  • gh-112105: سازگار کردن readline.set_completer_delims() با libedit

  • gh-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-112266: تغییر رشته‌های مستند __dict__ و __weakref__.

  • 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 Galindo

  • gh-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 Galindo

  • gh-111380: رفع باگی که باعث می‌شد SyntaxWarning هنگام تجزیه، در صورت مواجهه با نحو نامعتبر در ادامه، دو بار ظاهر شود. وصله توسط Pablo galindo

  • gh-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 Galindo

  • gh-111123: باگی را برطرف کرد که در آن اعلان global درون یک بلوک except در صورت استفاده از متغیر سراسری در بلوک else رد می‌شد.

  • gh-110938: پیام‌های خطا را برای بلوک‌های دارای تورفتگی با توابع و کلاس‌های دارای پارامترهای نوع عام اصلاح کرد. بسته‌ی اصلاحی از Pablo Galindo

  • gh-109214: به‌روزرسانی‌های غیرضروری اشاره‌گر دستورالعمل را پیش از بازگشت از قاب‌ها حذف کنید.

  • gh-110912: ردگیری مربوط به استثناهای MemoryError را با استفاده از ماژول traceback به درستی نمایش دهید. بسته‌ی اصلاحی از Pablo Galindo

  • gh-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 در یک بلوک except

  • gh-111541: رفع ماژول doctest برای زیرکلاس‌های غیرتوکار SyntaxError.

  • gh-111719: افزودن اعتبارسنجی آرگومان اضافی برای دستور alias در ماژول pdb

  • gh-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-111259: بهینه‌سازی وایلدکاردهای بازگشتی در pathlib.

  • 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: پشتیبانی از نام‌های مستعار و متغیرهای کمکی برای تکمیل‌سازی pdb

  • gh-110745: افزودن پارامتر newline به pathlib.Path.read_text(). پچ توسط Junya Okabe.

  • gh-84583: وادار کردن pdb به ورود به حالت پس از مرگ حتی برای SyntaxError

  • gh-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.IsolatedAsyncioTestCase

  • gh-110392: رفع مشکل tty.setraw() و tty.setcbreak(): پیش‌تر آن‌ها فهرستی نیمه‌تغییریافته از ویژگی‌های اصلی tty را برمی‌گرداندند. توابع tty.cfmakeraw() و tty.cfmakecbreak() اکنون پیش از اعمال تغییرات، یک نسخه از فهرست نویسه‌های خاص تهیه می‌کنند.

  • gh-59013: دقیق‌تر کردن شماره‌ی سطر نقطه‌ی ایست (breakpoint) تابع در pdb

  • gh-88434: انتشار هشدار منسوخ‌سازی برای اعداد غیرصحیح در توابع و متدهای gettext که فرم‌های جمع را حتی در صورت پیدا نشدن ترجمه بررسی می‌کنند.

  • gh-110395: اطمینان از اینکه شیء‌های select.kqueue() به درستی در فرزندان فورک‌شده به عنوان بسته ظاهر می‌شوند تا از انجام عملیات روی یک توصیف‌گر پرونده نامعتبر جلوگیری شود.

  • gh-110196: افزودن متد __reduce__ به IPv6Address به منظور حفظ scope_id

  • gh-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 Galindo

  • gh-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-109216: رفع نشت حافظه‌ی احتمالی در BUILD_MAP.

  • 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 Galindo

  • gh-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 Galindo

  • gh-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 Galindo

  • gh-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 Galindo

  • gh-105017: هنگام تجزیه‌ی پرونده‌های دارای خطوط CRLF، توکن نهایی اضافی NL را اضافه نکنید. وصله توسط Marta Gómez.

  • gh-104976: اطمینان از اینکه اشیاء tokenize.TokenInfo مربوط به DEDENT پایانی که توسط ماژول tokenize صادر می‌شوند، درست مانند پایتون ۳.۱۱ گزارش شوند. وصله توسط Pablo Galindo

  • gh-104972: اطمینان از اینکه ویژگی line در اشیاء tokenize.TokenInfo در ماژول tokenize همیشه درست باشد. وصله توسط Pablo Galindo

  • gh-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-101006: بهبود مدیریت خطا هنگام خواندن داده‌های marshal.

  • gh-91095: تخصصی‌سازی فراخوانی‌ها برای بیشتر کلاس‌های پایتون. به‌طور خاص، هر کلاسی که از object یا کلاس دیگری در پایتون ارث‌بری می‌کند و __new__ را بازنویسی نمی‌کند.

    دستورالعمل تخصصی‌سازی کارهای زیر را انجام می‌دهد:

    1. شیء را ایجاد می‌کند (با فراخوانی object.__new__)

    2. یک فریم شیم (shim) را به پشته‌ی فریم می‌پوشاند (برای پاکسازی پس از __init__)

    3. فریم مربوط به __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.LoggerAdapter

  • gh-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 Galindo

  • gh-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-106789: حذف ایمپورت pprint از sysconfig.

  • 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-106734: غیرفعال کردن تکمیل تب در حالت چندخطی pdb

  • gh-105481: عرضه‌ی فراداده‌ی آپ‌کد از طریق _opcode.

  • gh-106670: افزودن دستور جدید exceptions به دیباگر Pdb. این کار امکان جابه‌جایی بین استثناهای زنجیره‌ای را هنگام استفاده از اشکال‌زدایی پس از مرگ فراهم می‌کند.

  • gh-106602: افزودن __copy__ و __deepcopy__ در enum

  • 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-80480: array: افزودن کد نوع 'w' که نمایانگر Py_UCS4 است.

  • 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 مبتنی بر kwargs

  • gh-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 Zijlstra

  • gh-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-103124: اضافه شدن پشتیبانی از دستورهای چندخطی برای pdb

  • 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: رفع معلق ماندن multiprocessing ProcessPoolExecutor زمانی که یک فرایند فرزند در حین نوشتن داده‌ها در صف فراخوانی دچار فروپاشی می‌شود.

  • 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-110388: افزودن آزمون‌ها برای tty.

  • gh-81002: افزودن آزمون‌ها برای termios.

  • 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 را برمی‌گرداند و روی سکوهای غیرویندوزی وجود ندارد.

مک‌اواس

  • gh-109286: به‌روزرسانی نصب‌کننده‌ی مک‌اواس برای استفاده از SQLite 3.43.1.

  • gh-109991: به‌روزرسانی نصب‌کننده‌ی مک‌اواس برای استفاده از OpenSSL 3.0.11.

  • gh-99079: به‌روزرسانی نصب‌کننده‌ی مک‌اواس برای استفاده از OpenSSL 3.0.9.

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.

کتابخانه

  • gh-102856: پیاده‌سازی تغییرات PEP 701 در ماژول tokenize. وصله از Marta Gómez Macías و Pablo Galindo Salgado

هسته و توکارها (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-103082: پیاده‌سازی پایش کم‌تأثیر PEP 669 برای سی‌پایتون.

  • gh-88691: کاهش تعداد ورودی‌های درون خطی CACHE برای CALL.

  • 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() اختیاری است («الزامی نیست»)._translated

  • gh-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) جدیداً اضافه شده‌ی Day

  • gh-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-103977: بهبود زمان ایمپورت ماژول platform.

  • 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-103693: افزودن قابلیت متغیر کمکی به pdb

  • 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 669

  • gh-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-103092: انطباق ماژول توسعه‌ای winreg با PEP 687.

  • 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-102778: پشتیبانی از sys.last_exc در ماژول idlelib.

  • gh-103285: بهبود کارایی ast.get_source_segment().

  • gh-103225: رفع یک باگ در pdb هنگام نمایش شماره‌سندهای کدهای منبع در سطح ماژول.

  • gh-103092: تطبیق ماژول توسعه‌ای msvcrt با PEP 687.

  • gh-103092: تطبیق ماژول توسعه‌ای winsound با PEP 687.

  • 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.ByteString

  • gh-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

  • gh-104499: اصلاح تکمیل‌ها برای Tk Aqua 8.7 (که در حال حاضر خالی است).

  • gh-104496: دستور About در صورت متفاوت بودن، نسخه‌های tcl و tk را چاپ می‌کند (که روزی انتظار می‌رفت).

  • gh-88496: رفع مشکل توقف ناگهانی آزمون IDLE در macOS.

Tools/Demos

  • gh-104389: مبدل‌های C در Argument Clinic اکنون کلیدواژه‌ی unused را برای پوشش‌دهی یک پارامتر با Py_UNUSED می‌پذیرند. وصله توسط Erlend E. Aasland.

رابط 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 استفاده می‌شوند.

کتابخانه

هسته و توکارها (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 Waygood

  • gh-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-102980: بهبود پوشش آزمون در pdb.

  • gh-102537: تنظیم استراتژی مدیریت خطا در test_zoneinfo.TzPathTest.python_tzpath_context. وصله توسط Paul Ganssle.

  • gh-101377: بهبود test_locale_calendar_formatweekday از گاه‌شماری.

ساخت

  • gh-102973: افزودن یک کانتینر توسعه (به‌همراه Dockerfile همراه آن) برای مقاصد توسعه.

  • gh-102711: رفع هشدارهای کامپایلر -Wstrict-prototypes.

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 Galindo

  • gh-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-99266: حفظ پیام‌های خطای دقیق‌تر در ctypes.

  • 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-99582: فریز کردن ماژول zipimport داخل _bootstrap_python.

  • gh-99554: بسته‌بندی کارآمدتر جداول مکان اشکال‌زدایی در طول کامپایل بایت‌کد.

  • gh-98522: افزودن یک شماره نسخه‌ی داخلی به اشیاء کد، برای ارائه‌ی نسخه‌گذاری بهتر توابع داخلی و درک‌ها (comprehensions)، و در نتیجه تخصصی‌سازی بهتر آن توابع. این تغییر برای هر دو افزونه‌ی پایتون و C نامحسوس است.

  • gh-94603: بهبود کارایی متد list.pop برای فهرست‌های کوچک.

کتابخانه

هسته و توکارها (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-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 را برمی‌گرداند.

مک‌اواس

  • gh-100180: به‌روزرسانی نصب‌کننده‌ی مک‌اوس به OpenSSL 1.1.1s

  • gh-100540: شیم منسوخ dlfcn.h از ماژول توسعه‌ای _ctypes حذف شد؛ این شیم از زمان Mac OS X 10.2 دیگر ضروری نبوده است.

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 را دربربگیرد.

کتابخانه

  • gh-99547: افزودن تابعی به os.path برای بررسی اینکه آیا یک مسیر اتصال (junction) است: isjunction. افزودن قابلیت مشابهی به pathlib.Path تحت عنوان is_junction.

  • gh-99370: رفع مسیر فشرده (zip path) برای venv ایجاد شده از یک پایتون نصب‌نشده در سکوهای POSIX.

هسته و توکارها (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-87235: روی macOS عبارت python3 /dev/fd/9 9</path/to/script.py برای هر اسکریپتی طولانی‌تر از چند بایت با شکست مواجه می‌شد.

  • gh-98940: رفع باگ صافی (فیلتر) پرونده Mac/Extras.install.py.

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) احتمالی پردازنده در صورتی که نام میزبان بیش از حد طولانی و خارج از مشخصات حاوی نویسه‌های دوسویه رمزگشایی شود، جلوگیری می‌کند. برخی پروتکل‌ها مانند تغییر مسیرهای http 3xx در 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-99181: برطرف کردن خطا در except* با استثناهای هش‌ناپذیر.

  • 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 Galindo

  • gh-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-98762: اصلاح موقعیت‌های منبع زیرالگوهای match.

  • 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 آگاه باشند که اکنون قاب را پاکسازی می‌کنند.

ساخت

  • gh-98415: اصلاح تشخیص آدرس‌های MAC برای uuid در سیستم‌عامل‌های خاص. وصله توسط Chaim Sanders

هسته و توکارها (Core and Builtins)

  • gh-98686: سریع‌تر کردن تمام اشیای کد و تخصصی‌سازی تهاجمی‌تر دستورالعمل‌های بایت‌کد تطبیقی.

  • gh-92119: چاپ نام کلاس استثنا به جای نمایش متنی آن هنگام بالا آوردن خطاها از فراخوانی‌های ctypes.

  • gh-91058: ImportError که از from <module> import <name> ناموفق ناشی می‌شود، اکنون شامل پیشنهادهایی برای مقدار <name> بر اساس نام‌های موجود در <module> است. وصله توسط Pablo Galindo

  • gh-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.sslproto

  • gh-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) در مقداردهی اولیه‌ی ناموفق ماژول در _zoneinfo

  • gh-83004: پاک‌سازی نشت‌های ارجاع (refleaks) در مقداردهی اولیه‌ی ناموفق ماژول در _pickle

  • gh-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 Stinner

  • gh-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 Galindo

  • gh-97997: اضافه کردن افست ستون در حال اجرا به حالت توکن‌ساز برای جلوگیری از محاسبه‌ی اطلاعات ستون درخت نحوی انتزاعی (AST) با حساب اشاره‌گر.

  • gh-97973: اصلاح توکن‌ساز برای بازگرداندن تمام اطلاعات لازم مورد نیاز پارسر جهت تنظیم اطلاعات موقعیت در گره‌های درخت نحوی انتزاعی (AST)، به‌طوری‌که پارسر مجبور نباشد آن‌ها را با محاسبات اشاره‌گر انجام دهد.

کتابخانه

  • gh-96078: تابع os.sched_yield() اکنون هنگام فراخوانی sched_yield(2) قفل GIL را آزاد می‌کند. وصله توسط Donghee Na.

  • gh-97955: انتقال ماژول zoneinfo به Argument Clinic.

هسته و توکارها (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 Galindo

  • gh-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

کتابخانه

  • gh-64373: تبدیل _functools به Argument Clinic.

  • gh-96641: عدم افشای KeyWrapper در _functools.

هسته و توکارها (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 Galindo

  • gh-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 Galindo

  • gh-93351: موقعیت‌های گره ast.AST اکنون هنگام ارائه به compile() و سایر عملکردهای مرتبط اعتبارسنجی می‌شوند. اگر موقعیت‌های نامعتبر شناسایی شوند، یک ValueError بالا آورده خواهد شد.

  • gh-94438: رفع مشکلی که باعث می‌شد آرگومان‌های آپ‌کد توسعه‌یافته و برخی پاپ‌های شرطی هنگام محاسبه‌ی اهداف پرش معتبر برای انتساب‌ها به ویژگی f_lineno شیءهای قاب نادیده گرفته شوند. در برخی موارد، این امر می‌تواند باعث ایجاد وضعیت داخلی نامتوازن شود که به فروپاشی شدید مفسر می‌انجامد.

  • gh-95060: تابع مستندسازنشده‌ی PyCode_Addr2Location اکنون وقتی آرگومان addrq کمتر از صفر است، به درستی مقداری را برمی‌گرداند.

  • gh-95113: جایگزینی تمامی دستورورالعمل‌های EXTENDED_ARG_QUICK با دستورالعمل‌های پایه‌ای EXTENDED_ARG در کدهای تسریع‌نشده. مصرف‌کنندگان بایت‌کد غیرانطباقی باید بتوانند آرگومان‌های توسعه‌یافته را به همان شکلی که در سی‌پایتون ۳.۱۰ و نسخه‌های قدیمی‌تر مدیریت می‌شدند، مدیریت کنند.

  • gh-91409: رفع اطلاعات نادرست مکان منبع ناشی از بهینه‌سازی‌های خاص در کامپایلر بایت‌کد.

کتابخانه

هسته و توکارها (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 Galindo

  • gh-88116: مسئله‌ی خواندن شماره سطرها از اشیای کد در صورت نزدیک بودن شماره سطرهای رمزگذاری‌شده به INT_MIN را اصلاح می‌کند. وصله‌ای از Pablo Galindo

  • gh-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 659

  • gh-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، تابع libc syslog() نخ‌ایمن (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 case

  • gh-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-97639: بررسی tokenize.NL از tabnanny حذف شد.

  • 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.Sized

  • gh-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-94318: حذف فاصله‌های انتهایی در خروجی متنی pydoc.

  • gh-89988: رفع نشت حافظه در pickle.Pickler هنگام جست‌وجوی dispatch_table. وصله توسط Kumar Aditya.

  • gh-90016: منسوخ کردن sqlite3 default 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-93820: پیکل کردن enum.Flag بر اساس نام.

  • gh-93847: رفع نمایش (repr) از enumهای مستعار عام.

  • gh-91404: بازگردانی نشتی حافظه‌ی re هنگامی که یک تطابق با یک سیگنال یا شکست در تخصیص حافظه متوقف می‌شود، زیرا اصلاح پیاده‌سازی‌شده باعث یک رگرسیون عملکردی عمده شده بود.

  • gh-83499: رفع بسته‌شدن مضاعف توصیف‌گر پرونده در tempfile.

  • 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-93243: ماژول smtpd مطابق برنامه زمانی در PEP 594 حذف شد.

  • 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-47025: حذف پشتیبانی از bytes در sys.path.

  • 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.ZipExtFile

  • bpo-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_ssl test_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 Galindo

  • gh-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 Galindo

  • gh-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. Smith

  • gh-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-91670: حذف متغیر تنظیمات منسوخ SO در sysconfig.

  • 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.

  • gh-91276: ایجاد فضا برای آپ‌کدهای طولانی‌تر در خروجی dis.

  • 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-46696: اضافه‌کردن ثابت SO_INCOMING_CPU به ماژول socket.

  • bpo-46053: رفع پشتیبانی صوتی OSS روی NetBSD.

  • bpo-45639: image/avif و image/webp به mimetypes اضافه شدند.

  • 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.

کتابخانه

هسته و توکارها (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 590 vectorcall و با جایگزین کردن 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-45099: مستندسازی API داخلی asyncio.

  • 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 جلوگیری کنید.

مک‌اواس

  • bpo-46890: یک رگرسیون در تنظیم sys._base_executable در ساخت‌های چارچوب را برطرف کنید و به این ترتیب یک رگرسیون را در محیط‌های مجازی venv با چنین ساخت‌هایی رفع کنید.

  • bpo-46907: برنامه‌ی نصب macOS را به SQLite 3.38.1 به‌روزرسانی کنید.

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.

کتابخانه

  • bpo-46323: ماژول ctypes اکنون برای ارسال آرگومان‌ها هنگام فراخوانی یک تابع فراخوانی بازگشتی پایتون، حافظه را روی پشته (stack) به جای هیپ (heap) تخصیص می‌دهد. اصلاحیه‌ای از Donghee Na.

هسته و توکارها (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-46724: رفع رفتار dis در آفست‌های پرش منفی.

  • 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

  • bpo-46630: محاوره‌های پرس‌وجو (query dialogs) روی ویندوز را به گونه‌ای بسازید که با یک نشانگر در کادر ورودی شروع شوند.

  • bpo-45447: اعمال برجسته‌سازی نحوی IDLE روی پرونده‌های .pyi. ارسال وصله توسط Alex Waygood و Terry Jan Reedy.

رابط 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-44024: بهبود پیام TypeError برای آرگومان‌های دوم غیررشته‌ای که به توابع توکار getattr() و hasattr() فرستاده می‌شوند. پچ توسط ژری اوگام (Géry Ogam).

کتابخانه

  • 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-45654: انجماد عمیق ماژول runpy، وصله توسط Kumar Aditya.

  • bpo-46025: رفع فروپاشی در ماژول atexit که مربوط به توابعی است که پیش از ایجاد استثنا، ثبت خود را لغو می‌کنند. وصله توسط Pablo Galindo.

کتابخانه

  • bpo-46000: بهبود سازگاری ماژول curses با NetBSD curses.

هسته و توکارها (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-45292: تکمیل پیاده‌سازی PEP 654: افزودن except*.

  • 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-46196: مستندسازی متد cmd.Cmd.columnize().

  • bpo-46120: ذکر این نکته که در مستندات typing برای خوانایی بیشتر، استفاده از | بر Union ترجیح داده می‌شود.

  • bpo-46109: استخراج مستندات importlib.resources و importlib.resources.abc در پرونده‌های جداگانه.

  • bpo-19737: به‌روزرسانی مستندات تابع globals().

آزمون‌ها

  • 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 Galindo

  • bpo-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: تخصیص فضا برای فریم مفسر در شیء فریم، به منظور جلوگیری از تخصیص اضافی هنگامی که عمر شیء فریم از فعال‌سازی فریم بیشتر است.

کتابخانه

  • bpo-45614: رفع مشکل نمایش traceback برای استثناهایی با نام ماژول نامعتبر.

هسته و توکارها (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 Galindo

  • bpo-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-27580: افزودن پشتیبانی از نویسه‌های پوچ در csv.

  • 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.c

  • bpo-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 تعریف شده باشد دیگر در دسترس نیستند:

    این موارد بخشی از 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_CACHED

    • LOAD_METHOD_MODULE

    • LOAD_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 حذف شد.

کتابخانه

  • bpo-44490: ماژول typing اکنون به دنبال پارامترهای نوع در اشیاء types.Union می‌گردد. تابع get_type_hints نیز حاشیه‌نویسی‌ها را با اشیاء تو در توی types.Union به درستی حل خواهد کرد. وصله توسط Yurii Karabas ارائه شده است.

هسته و توکارها (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: بهبود خطای توکن‌ساز با موقعیت‌های بهبودیافته. وصله توسط پابلو گالیندو.

کتابخانه

  • bpo-44304: رفع خرابی در ماژول sqlite3 که هنگام پاکسازی اشیاء sqlite.Statement توسط جمع‌آور زباله رخ می‌داد. وصله توسط پابلو گالیندو

هسته و توکارها (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 Oxer

  • bpo-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.futures

  • bpo-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 Galindo

  • bpo-44771: افزودن ماژول importlib.simple که آداپتورها را از یک رابط خواننده‌ی منابع سطح پایین به یک رابط TraversableResources پیاده‌سازی می‌کند. رابط برمبنای API قدیمی (path, contents, ...) اکنون به طور کامل توسط API روش .files() با یک سازگاری موقت ارائه‌شده برای بارگذارهای منابع بدون آن قابلیت، پشتیبانی می‌شود. برابری ویژگی با importlib_resources 5.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_3

  • bpo-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.Path

  • bpo-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_termination

  • bpo-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: جلوگیری از مصرف ورودی استاندارد در ماژول platform

  • bpo-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 Galindo

  • bpo-41323: تاشدن تاپل ثابت (Constant tuple folding) در بهینه‌ساز بایت‌کد اکنون از تاپل موجود در جدول ثابت استفاده‌ی مجدد می‌کند.

  • bpo-43846: استفاده از پشته‌ی داده (Data stack) برای عبارت‌های لفظی و فراخوانی بزرگ به میزان قابل‌توجهی کاهش یافته است.

  • bpo-38530: هنگام چاپ NameError ایجادشده توسط مفسر، تابع PyErr_Display() پیشنهادهایی از نام‌های متغیر مشابه را در تابعی که استثنا از آنجا ایجاد شده است ارائه خواهد داد. وصله توسط Pablo Galindo

  • bpo-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_COMPAT 1.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 اکنون منسوخ شده‌اند و باید جایگزین شوند:

    اصلاحیه از 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 با شکست مواجه می‌شوند.

ساخت

  • bpo-43567: بهبود تازه‌سازی کد تولیدشده (درخت نحوی انتزاعی (AST)/توکن‌ها/آپ‌کدها/کلیدواژه‌ها) روی ویندوز.

  • bpo-43669: پیاده‌سازی PEP 644. پایتون اکنون به OpenSSL 1.1.1 یا جدیدتر نیاز دارد.

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-37945: رفع test_getsetlocale_issue1813() از test_locale: در صورتی که setlocale() با خطا مواجه شود، آزمون رد شود. وصله توسط ویکتور استینر.

  • bpo-41561: افزودن راه‌کار موقت برای سیاست سطح امنیت سفارشی OpenSSL در اوبونتو.

ساخت

  • 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

  • bpo-43440: ساخت ماژول sqlite3 با فعال‌سازی ماژول R*Tree. وصله توسط ارلند ای. آس‌لند (Erlend E. Aasland).

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-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 Galindo

  • bpo-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-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.

نسخه‌ی ۳.۱۰.۰ آلفا ۵

تاریخ انتشار: ۲۰۲۱-۰۲-۰۲

امنیت

هسته و توکارها (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 تنظیم شده باشد نیز درست است

کتابخانه

هسته و توکارها (Core and Builtins)

  • bpo-41994: نشت احتمالی در import هنگامی که sys.modules یک dict نیست، برطرف شد.

  • bpo-27772: در قالب‌بندی رشته، قرار دادن نویسه‌ی '0' پیش از فیلد width دیگر روی تراز پیش‌فرض رشته‌ها تأثیری نمی‌گذارد.

کتابخانه

  • 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-40304: رفع مستندات برای type(name, bases, dict). وصله از Boris Verkhovskiy و Éric Araujo.

  • bpo-42811: به‌روزرسانی مستندات importlib.util.resolve_name() برای استفاده از __spec__.parent به جای __package__. (با تشکر از Yair Frid.)

آزمون‌ها

  • bpo-40823: استفاده از unittest.TestLoader().loadTestsFromTestCase() به جای unittest.makeSuite() در آزمون‌های sqlite3. وصله از Erlend E. Aasland.

  • bpo-40810: در sqlite3، تابع CheckTraceCallbackContent را برای SQLite نسخه‌های قبل از ۳.۷.۱۵ رفع کنید.

ساخت

  • 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-41837: به‌روزرسانی نصب‌کننده‌ی ویندوز برای گنجاندن OpenSSL 1.1.1i.

  • bpo-42584: ارتقای نصب‌کننده‌ی ویندوز برای استفاده از SQLite 3.34.0.

مک‌اواس

  • 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: حذف دستورهای پرش که به دلیل حذف بلوک‌های بایت‌کد غیرقابل‌دسترس اضافی شده بودند.

کتابخانه

  • bpo-42639: وضعیت ماژول atexit را به ازای هر مفسر کنید. اکنون امن است که بیش از یک نمونه از ماژول atexit داشته باشید. وصله‌ای از Donghee Na و Victor Stinner.

هسته و توکارها (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 e

  • bpo-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. Aasland

  • bpo-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() برای IntFlag

  • bpo-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-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.

مک‌اواس

  • bpo-42361: به‌روزرسانی ساخت نصب‌کننده‌ی macOS برای استفاده از Tcl/Tk 8.6.11 (نسخه‌ی نامزد انتشار rc2، که انتظار می‌رود انتشار نهایی باشد).

  • bpo-41837: به‌روزرسانی ساخت نصب‌کننده‌ی macOS برای استفاده از OpenSSL 1.1.1i.

  • bpo-42584: به‌روزرسانی نصب‌کننده‌ی macOS برای استفاده از SQLite 3.34.0.

Tools/Demos

  • bpo-42726: رفع مسئله‌ی سازگاری پایتون ۳ با نحوه‌ی مدیریت لغت‌نامه‌های ویژگی توسط gdb/libpython.py.

  • bpo-42613: رفع ابزار freeze.py برای استفاده از دایرکتوری‌های پیکربندی و کتابخانه‌ی مناسب. وصله توسط Victor Stinner.

رابط 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).

کتابخانه

  • bpo-40077: تبدیل queue برای استفاده از نوع‌های هیپ.

هسته و توکارها (Core and Builtins)

  • bpo-42246: دقت رویدادهای ردیابی سطر و صفت f_lineno از اشیای Frame بهبود یافت. برای جزئیات بیشتر به PEP 626 مراجعه کنید.

کتابخانه

  • bpo-40077: تبدیل mmap برای استفاده از نوع‌های هیپ.

هسته و توکارها (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.etree

  • bpo-28850: رفع نادیده گرفته شدن بازنویسی‌های متد pprint.PrettyPrinter.format() برای محتویات ظروف کوچک. تابع pprint._safe_repr() حذف شد.

  • bpo-41625: قرار دادن splice() به عنوان os.splice() در ماژول os. وصله‌ای از Pablo Galindo

  • bpo-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.1 ALPN را در جریان دست‌دهی 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-42120: تعریف کلان‌دستور copysign (به _copysign) در سرآیندها حذف شد.

  • bpo-38506: راه‌انداز ویندوز اکنون هنگام فهرست کردن نسخه‌های نصب‌شده‌ی پایتون، پایتون ۳.۱۰ را به درستی مدیریت می‌کند.

مک‌اواس

  • 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 Galindo

  • bpo-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 را برگرداند.

کتابخانه

هسته و توکارها (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.

کتابخانه

هسته و توکارها (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() با شکست مواجه می‌شود.

کتابخانه

  • bpo-40950: افزودن یک وضعیت به ماژول nis (PEP 3121) و اعمال مقداردهی اولیه چندمرحله‌ای. وصله توسط Donghee Na.

هسته و توکارها (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 Galindo

  • bpo-40903: رفع خطای احتمالی segfault در پارسر جدید PEG هنگام تولید پیام‌های خطا برای انتساب‌های نامعتبر به فرم p=p=. وصله توسط Pablo Galindo

  • bpo-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-19569: افزودن ماکروهای خصوصی _Py_COMP_DIAG_PUSH، _Py_COMP_DIAG_IGNORE_DEPR_DECLS و _Py_COMP_DIAG_POP.

  • bpo-26680: نوع داده‌ی int اکنون برای سازگاری با عدد اعشاری از متد x.is_integer() پشتیبانی می‌کند.

کتابخانه

  • 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.EventType Enum به طوری که تمام اعضا رشته باشند و هیچ‌کدام تاپل (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-41364: کاهش هزینه‌ی ایمپورت uuid.

  • 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-40876: شفاف‌سازی پیام خطا در ماژول csv.

  • 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 Galindo

  • bpo-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_* کتابخانه‌ی asyncio

  • bpo-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 Duran

  • bpo-33660: رفع مشکل pathlib.PosixPath برای حل کردن صحیح یک مسیر نسبی واقع در پوشه‌ی ریشه.

  • bpo-28557: بهبود پیام خطا برای عملکرد نامناسب rawio.readinto

  • bpo-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 بتا ۱

تاریخ انتشار: ۲۰۲۰-۰۵-۱۹

امنیت

  • bpo-40501: ماژول uuid دیگر از ctypes برای بارگذاری libuuid یا rpcrt4.dll در زمان ران‌تایم استفاده نمی‌کند.

هسته و توکارها (Core and Builtins)

  • bpo-40663: حاشیه‌نویسی‌ها را به‌درستی تولید کنید؛ مواردی که پرانتزها حذف شده‌اند اما الزامی هستند (مانند: Type[(str, int, *other))]).

  • bpo-40596: متد str.isidentifier() را برای رشته‌های غیرکانونیک‌شده که حاوی نویسه‌های غیر BMP در ویندوز هستند، رفع اشکال کنید.

  • bpo-40593: خطاهای نحو برای نویسه‌های نامعتبر در کد منبع را بهبود ببخشید.

  • bpo-40585: باگ مربوط به استفاده از codeop.compile_command() رفع شد که باعث می‌شد استثناها با پارسر جدید نادیده گرفته شوند. وصله‌ای از Pablo Galindo

  • bpo-40566: اعمال PEP 573 روی ماژول abc.

  • bpo-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 را بررسی می‌کنند.

ساخت

  • bpo-40653: انتقال _dirnameW به خارج از HAVE_SYMLINK برای رفع مشکل بالقوه در کامپایل.

  • bpo-40514: افزودن گزینه‌ی ساخت --with-experimental-isolated-subinterpreters به دستور configure: ایزوله کردن بهتر زیرمفسرها، حالت ساخت آزمایشی.

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.

ساخت

  • bpo-38360: پشتیبانی از فرم تک‌آرگومانی پرچم -isysroot در مک‌اواس.

  • bpo-40158: رفع ویژگی‌های MSBuild سی‌پایتون در بسته‌ی NuGet (build/native/python.props)

  • bpo-38527: رفع بررسی پیکربندی روی Solaris برای «ترتیب کلمات اعشاری»: گاهی اوقات، دستور درست «grep» استفاده نمی‌شد. وصله توسط Arnon Yaari.

Windows

  • bpo-40164: به‌روزرسانی ویندوز به OpenSSL 1.1.1f

  • bpo-8901: نادیده‌گرفتن رجیستری ویندوز هنگامی که از گزینه‌ی -E استفاده می‌شود.

مک‌اواس

  • bpo-38329: نصب‌کننده‌های macOS مربوط به پایتون اکنون پیوند نمادین (symlink) نسخه‌ی Current در مسیر /Library/Frameworks/Python.framework/Versions را برای نصب‌های ۳.۹ به‌روزرسانی می‌کنند. پیش از این، Current فقط برای نصب‌های پایتون ۲.x به‌روزرسانی می‌شد. این کار باید تعبیه‌ی پایتون ۳ را در سایر برنامه‌های macOS آسان‌تر کند.

  • bpo-40164: به‌روزرسانی ساخت‌های نصب‌کننده‌ی macOS برای استفاده از OpenSSL 1.1.1g.

IDLE

  • bpo-38439: افزودن یک نماد IDLE با ابعاد ۲۵۶×۲۵۶ پیکسل برای پشتیبانی از محیط‌های مدرن‌تر. ایجادشده توسط Andrew Clover. حذف پرونده‌ی نماد استفاده‌نشده‌ی idle.icns در macOS.

  • bpo-38689: IDLE دیگر هنگام بروز خطا در inspect.signature در زمان دریافت یک راهنمای فراخوانی (calltip) متوقف (freeze) نمی‌شود.

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 Taskaya

  • bpo-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-39868: به‌روزرسانی مرجع زبان برای PEP 572.

  • 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 را دریافت می‌کند.

پایتون ۳.۹.۰ آلفا ۴

تاریخ انتشار: ۲۰۲۰-۰۲-۲۵

امنیت

  • bpo-39184: افزودن رویدادهای حسابرسی به توابع در fcntl، msvcrt، os، resource، shutil، signal و syslog.

  • bpo-39401: جلوگیری از بارگذاری ناامن DLL در زمان راه‌اندازی روی ویندوز ۷ و نسخه‌های قبلی.

  • bpo-39184: افزودن رویدادهای حسابرسی به توابع اجرای فرمان در ماژول‌های os و pty.

هسته و توکارها (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.TimeoutError

  • bpo-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.CompletedProcess

  • bpo-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-39007: افزودن رویدادهای حسابرسی به توابع در ماژول winreg.

  • bpo-33125: افزودن پشتیبانی برای ساخت و انتشار بسته‌های Windows ARM64.

مک‌اواس

  • 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. Felt

  • bpo-36781: تابع sum() برای مقادیر بولی بهینه‌سازی شده است.

  • bpo-34556: افزودن --upgrade-deps به ماژول venv. اصلاحیه از Cooper Ry Lees

  • bpo-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-38049: رابط خط فرمان برای ماژول ast اضافه شد.

  • 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_metadata 0.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-37964: افزودن دستور F_GETPATH به ماژول fcntl.

  • 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-37785: رفع هشدارهای xgettext در argparse.

  • 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-11953: تکمیل کدهای خطای WSA* در socket.

  • 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 Siregar

  • bpo-36161: در posix، برای امنیت نخ از ttyname_r به جای ttyname استفاده کنید.

  • bpo-36324: خصوصی کردن ویژگی‌های داخلی برای statistics.NormalDist().

  • bpo-37555: رفع مشکل بازگرداندن تاپل به جای شیء _Call توسط NonCallableMock._call_matcher هنگامی که self._spec_signature وجود دارد. وصله توسط Elizabeth Uselton

  • bpo-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.request

  • bpo-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 اکنون برای اشیای نوع (type objects) فعال شده است: تنظیم 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-37215: رفع مشکل dtrace ایجاد شده توسط bpo-36842

  • 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 Taskaya

  • bpo-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 Nanjekye

  • bpo-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_override

  • bpo-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: در حالت توسعه (-X dev) و در ساخت‌های دیباگ، مخرب کلاس 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) روی رایانه فعال باشد، پیوندهای نمادین ایجاد کنند.

مک‌اواس

  • bpo-34602: جلوگیری از شکست در تنظیم حد منبع پشته macOS با resource.setrlimit. این کار اصلاح قبلی برای bpo-18075 را که هنگام ساخت فایل اجرایی مفسر روی macOS اندازه‌ی پشته‌ی غیرپیش‌فرضی را تحمیل می‌کرد، برمی‌گرداند.

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-36139: آزادسازی GIL هنگام بستن اشیای mmap.

  • 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 Wirtel

  • bpo-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

  • bpo-35132: رفع دستورات py-list و py-bt در python-gdb.py روی gdb7.

  • bpo-32217: رفع اسکریپت freeze روی ویندوز.

رابط C API

  • bpo-36381: هنگامی که قالب‌های '#' برای ساخت یا تجزیه کردن مقادیر بدون PY_SSIZE_T_CLEAN استفاده می‌شوند، هشدار DeprecationWarning صادر می‌شود.

  • bpo-36142: کل سرآیند coreconfig.h اکنون از Py_LIMITED_API مستثنی شده است. تعاریف توابع به یک سرآیند داخلی جدید به نام pycore_coreconfig.h منتقل شدند.

پایتون ۳.۸.۰ آلفا ۲

تاریخ انتشار: ۲۰۱۹-۰۲-۲۵

هسته و توکارها (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-36083: رفع قالب‌بندی گزینه‌های --check-hash-based-pycs در بخش خلاصه (Synopsis) راهنمای خط فرمان (manpage).

  • bpo-36007: ارتقای حداقل نسخه‌ی sphinx به ۱.۸. وصله‌ای از Anthony Sottile.

  • bpo-22062: به‌روزرسانی مستندات و رشته‌های مستند (docstrings) برای pathlib. وصله‌ی اصلی از Mike Short.

آزمون‌ها

  • 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-24310: ابزار IDLE -- مستندسازی نمونه‌ی زبانه‌ی فونت در پنجره‌ی تنظیمات.

  • bpo-35833: بازنگری مستندات IDLE برای کدهای کنترلی ارسال‌شده به پوسته. افزودن یک بلوک مثال کد.

  • bpo-35689: افزودن رشته‌های مستند و آزمون‌های واحد برای colorizer.py.

نسخه‌ی ۳.۸.۰ آلفا ۱

تاریخ انتشار: ۲۰۱۹-۰۲-۰۳

امنیت

  • 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-32489: دستور continue اکنون در بند finally مجاز است.

  • 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_signal

  • bpo-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 Effron

  • bpo-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.py

  • bpo-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 Wirtel

  • bpo-35042: جایگزینی PEP XYZ با نقش pep و امکان استفاده از پیوندهای مستقیم به PEPها.

  • bpo-35044: اصلاح مستندات با استفاده از نقش exc برای استثنای مناسب. وصله توسط Stéphane Wirtel

  • bpo-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-32436: مستندسازی تغییرات PEP 567 در asyncio.

  • 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-25041: مستندسازی AF_PACKET در ماژول socket.

  • 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_env

  • bpo-34347: رفع مشکل test_utf8_mode.test_cmd_line برای AIX

  • bpo-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) ذخیره نمی‌کنند.

نسخه‌ی نهایی ۳.۷.۰ پایتون

تاریخ انتشار: ۲۰۱۸-۰۶-۲۷

کتابخانه

رابط 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-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 Effron

  • bpo-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-32436: مستندسازی تغییرات PEP 567 در asyncio.

  • bpo-33604: به‌روزرسانی پیش‌فرض HMAC md5 به یک DeprecationWarning و انتقال زمان حذف به نسخه‌ی ۳.۸.

  • bpo-33503: اصلاح پیوند خراب pypi

  • bpo-33421: افزودن مستندات مفقود برای typing.AsyncContextManager.

آزمون‌ها

  • bpo-33655: نادیده گرفتن خطاهای test_posix_fallocate در پلتفرم‌های BSD که ممکن است به دلیل اجرا روی ZFS رخ داده باشند.

  • bpo-32604: حذف ماژول _xxsubinterpreters (که برای آزمایش در نظر گرفته شده بود) و کمکی‌های وابسته به آن. این ماژول اصالتاً اخیراً در 3.7b1 اضافه شده بود.

ساخت

  • 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

  • bpo-33628: ابزار IDLE: پاک‌سازی codecontext.py و آزمون آن.

  • bpo-33564: زمینه‌ی کد IDLE اکنون کلمه‌ی کلیدی async را به عنوان آغازگر یک بلوک تشخیص می‌دهد.

  • bpo-32831: افزودن رشته‌های مستند و آزمون‌ها برای codecontext.

نسخه‌ی بتا ۴ پایتون ۳.۷.۰

تاریخ انتشار: ۲۰۱۸-۰۵-۰۲

هسته و توکارها (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.py

  • bpo-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-32872: جلوگیری از مشکل سازگاری regrtest با بسته‌های فضای نام (namespace packages).

  • bpo-32517: رفع خطای test_asyncio روی macOS 10.12.2 به بالا به دلیل بسته نشدن انتقالِ حلقهِ KqueueSelector.

  • bpo-19417: افزودن پرونده‌ی test_bdb.py.

ساخت

  • bpo-33163: ارتقای pip به 9.0.3 و setuptools به v39.0.1.

Windows

  • bpo-33016: برطرف‌سازی استفاده‌ی احتمالی از حافظه‌ی مقداردهی‌نشده در nt._getfinalpathname

  • bpo-32903: رفع یک نشت حافظه در os.chdir() روی ویندوز اگر پوشه‌ی فعلی روی یک مسیر UNC تنظیم شده باشد.

مک‌اواس

  • 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-32436: پیاده‌سازی متغیرهای زمینه (PEP 567).

  • 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.run

  • bpo-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-32588: ایجاد ماژول مستقل _distutils_findvs و افزودن ماژول گمشده‌ی _queue به برنامه‌ی نصب.

  • bpo-29911: اطمینان از اینکه دکمه‌های جداگانه‌ی Modify و Uninstall نمایش داده می‌شوند.

  • bpo-32507: استفاده از نصب محلیِ برنامه‌ی UCRT به جای به‌روزرسانی مناسب برای نسخه‌های قدیمی ویندوز.

مک‌اواس

  • 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

  • bpo-32681: رفع متغیر مقداردهی‌نشده‌ی 'res' در پیاده‌سازی C مربوط به os.dup2. وصله توسط Stéphane Wirtel

  • bpo-10381: افزودن دسترسی API زبان C به سازنده‌ی datetime.timezone و تک‌نمونه‌ی datetime.timezone.UTC.

پایتون 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_mode

  • bpo-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-31537: اصلاح استفاده‌ی نادرست از get_history_length در مثال کد مستندات readline. پچ توسط Brad Smith.

  • bpo-30085: توابع عملگری بدون زیرخط‌های دوتایی برای خوانایی بیشتر ترجیح داده می‌شوند. توابع دارای زیرخط فقط برای سازگاری عقب‌بر (back-compatibility) حفظ شده‌اند.

ساخت

  • 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-22257: پاک‌سازی راه‌اندازی مفسر (نگاه کنید به PEP 432).

  • 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 Steele

  • bpo-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-31341: طبق PEP 11، پشتیبانی از سیستم‌عامل IRIX حذف شد.

  • 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 Effron

  • bpo-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-33655: نادیده گرفتن خطاهای test_posix_fallocate در پلتفرم‌های BSD که ممکن است به دلیل اجرا روی ZFS رخ داده باشند.

  • bpo-19417: افزودن پرونده‌ی test_bdb.py.

ساخت

  • 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-1102: هنگامی که View.Fetch() مقدار ERROR_NO_MORE_ITEMS را برمی‌گرداند، به‌جای بالا آوردن (raising) خطای MSIError، مقدار None را برگردانید. وصله‌ی اولیه توسط Anthony Tuininga.

  • bpo-31944: رفع دکمه‌ی Modify در محاوره‌ی Apps and Features.

مک‌اواس

  • 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.

ساخت

  • bpo-31662: رفع خطاهای تایپی در اسکریپت uploadrelease.bat در ویندوز. رفع مسائل ساخت مستندات ویندوز در Doc/make.bat.

  • bpo-31423: رفع مشکل ساخت مستندات PDF با نسخه‌های جدیدتر Sphinx.

نامزد انتشار ۱ پایتون ۳.۶.۳

Release date: 2017-09-18

امنیت

  • bpo-29781: تابع SSLObject.version() اکنون وقتی دست‌دهی روی BIO هنوز انجام نشده است، به درستی None را برمی‌گرداند.

  • bpo-30947: ارتقای نسخه‌ی تعبیه‌شده‌ی libexpat از نسخه‌ی 2.2.1 به 2.2.3 برای دریافت اصلاحات امنیتی.

هسته و توکارها (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-31294: اصلاح قطعه‌کد ناقص در مثال‌های ZeroMQSocketListener و ZeroMQSocketHandler و تطبیق آن‌ها با پایتون ۳.

  • bpo-21649: افزودن پیوندهای RFC 7525 و TLS سمت سرور Mozilla به مستندات SSL.

  • bpo-30803: شفاف‌سازی مستندات مربوط به آزمون ارزش درستی. وصله‌ی اولیه از Peter Thomassen.

آزمون‌ها

  • 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

امنیت

هسته و توکارها (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

  • bpo-29071: ایدل (IDLE) پیشوندهای اف‌استرینگ را رنگی می‌کند (اما پیشوندهای نامعتبر ur را رنگی نمی‌کند).

  • bpo-28572: افزودن ۱۰٪ به پوشش آزمون آزمون test_configdialog در 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)

  • bpo-28147: یک نشتی حافظه در دیکشنری‌های جدول-تفکیک‌شده (split-table) برطرف شد: دستور setattr() نباید جدول ترکیبی را به جدول تفکیک‌شده تبدیل کند. این وصله توسط INADA Naoki نوشته شده است.

  • bpo-28990: رفع مشکل متوقف‌شدن SSL در asyncio اگر اتصال قبل از اتمام دست‌دهی بسته شود. (ارائه‌ی وصله توسط HoHo-Ho)

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() اکنون هرگز استثنایی بالا نمی‌آورد.

مستندات

  • bpo-23722؛ مرجع مدل داده و بخش انتقال در راهنمای «چه چیزی جدید است» اکنون مدیریت اضافی __classcell__ را که برای فراکلاس‌های سفارشی برای پشتیبانی کامل از PEP 487 و super() بدون آرگومان مورد نیاز است، پوشش می‌دهد.

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.

آزمون‌ها

  • bpo-28666: اکنون test.support.rmtree قادر است دایرکتوری‌های غیرقابل‌نوشتن یا غیرقابل‌خواندن را حذف کند.

  • bpo-23839: نهانگاه‌های مختلف اکنون قبل از اجرای هر پرونده‌ی آزمونی پاکسازی می‌شوند.

ساخت

  • bpo-10656: رفع ساخت خارج از درخت (out-of-tree) روی AIX. وصله توسط Tristan Carel و Michael Haubenwallner.

  • bpo-26359: تغییر نام --with-optimiations به --enable-optimizations.

  • bpo-28676: جلوگیری از هشدار کمبود اعلام 'getentropy' روی مک‌اواس. وصله‌ای از Gareth Rees.

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

ساخت

  • bpo-28444: رفع ماژول‌های افزونه‌ی گمشده هنگام کامپایل متقاطع.

  • bpo-28208: به‌روزرسانی ساخت ویندوز و نصب‌کننده‌های OS X برای استفاده از SQLite نسخه 3.14.2.

  • bpo-28248: به‌روزرسانی ساخت ویندوز و نصب‌کننده‌های OS X برای استفاده از OpenSSL نسخه 1.0.2j.

آزمون‌ها

  • bpo-26944: رفع مشکل test_posix در اندروید که در آن دستور 'id -G' کاملاً اشتباه است یا شناسه گروه مؤثر (gid) را ندارد.

  • bpo-28409: ابزار regrtest: اصلاح تحلیل‌گر آرگومان‌های خط فرمان.

نسخه‌ی ۳.۶.۰ بتای ۲ پایتون

تاریخ انتشار: ۲۰۱۶-۱۰-۱۰

هسته و توکارها (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-26900: حذف نام‌های دارای خط زیرین و سایر APIهای خصوصی از API محدود.

  • bpo-26027: افزودن پشتیبانی از اشیاء شبه‌مسیر در PyUnicode_FSConverter() و PyUnicode_FSDecoder().

آزمون‌ها

  • 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"، نحوه‌ی پردازش بافرهای بزرگ (معمولاً ۴ گیگابایت) هنگام فشرده‌سازی و واگشایی اصلاح شد. پیش از این، ورودی‌ها به ۴ گیگابایت محدود بودند و عملیات فشرده‌سازی و واگشایی نتایج ۴ گیگابایتی را به درستی پردازش نمی‌کردند.

  • bpo-24773: پیاده‌سازی PEP 495 (رفع ابهام زمان محلی).

  • نمایش ثابت 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-27647: به‌روزرسانی Tcl/Tk بسته‌بندی‌شده به نسخه‌ی 8.6.6.

  • bpo-27610: افزودن فراداده‌ی PEP 514 به برنامه‌ی نصب ویندوز

  • bpo-27469: افزودن یک افزونه‌ی پوسته (shell extension) به برنامه‌ی راه‌انداز به طوری که کشیدن و رها کردن (drag and drop) به درستی کار کند.

  • bpo-27309: فعال‌سازی سبک‌های مناسب ویندوز در مانیفست python[w].exe.

ساخت

  • 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-27332: نوع آرگومان اول توابع هم‌سطح ماژول که توسط Argument Clinic تولید می‌شوند، اصلاح شد. وصله توسط Petr Viktorin.

  • bpo-27418: رفع Tools/importbench/importbench.py.

مستندات

  • bpo-19489: کادر جستجو از نوار کناری به سرآیند و پانویس هر صفحه منتقل شد. اصلاحیه توسط Ammar Askar.

  • bpo-27285: به‌روزرسانی مستندات جهت بازتاب منسوخ شدن pyvenv و استفاده‌ی استاندارد از اصطلاح «محیط مجازی». وصله توسط Steve Piercy.

آزمون‌ها

  • 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)

ساخت

  • bpo-27229: اصلاح قانون pgen برای کامپایل تقاطعی در ساخت‌های درون‌درختی (in-tree builds). وصله توسط Xavier de Gaye.

  • bpo-26930: به‌روزرسانی نصب‌کننده‌ی فقط ۳۲ بیتی OS X 10.5+ برای ساخت و پیوند با OpenSSL 1.0.2h.

رابط C API

  • bpo-27186: افزودن تابع PyOS_FSPath() (بخشی از PEP 519).

  • bpo-26282: تابع PyArg_ParseTupleAndKeywords() اکنون از پارامترهای فقط-جایگاهی پشتیبانی می‌کند.

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-27147: در مستندات importlib به PEP 420 اشاره کنید.

  • 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

  • bpo-30687: پیدا کردن msbuild.exe در ویندوز هنگام ساخت به جای استفاده از vcvarsall.bat

  • bpo-29392: جلوگیری از فروپاشی هنگام ارسال آرگومان‌های نامعتبر به ماژول msvcrt.

رابط 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-28808: تابع PyUnicode_CompareWithASCIIString() اکنون هرگز استثنایی بالا نمی‌آورد.

  • bpo-26754: تابع PyUnicode_FSDecoder() آرگومان نام پرونده را که به صورت یک پیمایش‌پذیر از اعداد صحیح کدگذاری شده بود، می‌پذیرفت. اکنون فقط رشته‌ها و اشیاء شبه‌بایت پذیرفته می‌شوند.

مستندات

  • 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-27147: در مستندات importlib به PEP 420 اشاره کنید.

  • 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-24305: جلوگیری از شمارش فریم‌های پشته‌ی زیرسیستم ایمپورت توسط پارامتر warnings.warn(stacklevel=).

  • bpo-24912: جلوگیری از انتساب __class__ به اشیاء توکار تغییرناپذیر.

  • bpo-24975: رفع کامپایل درخت نحوی انتزاعی (AST) برای سینتکس PEP 448.

کتابخانه

  • 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 می‌شود.

کتابخانه

  • bpo-24847: حذف وابستگی vcruntime140.dll از Tcl/Tk.

  • bpo-24839: تابع platform._syscmd_ver خطای DeprecationWarning را بالا می‌آورد.

  • bpo-24867: رفع Task.get_stack() برای هم‌روال‌های 'async def'

نامزد انتشار ۱ پایتون ۳.۵.۰

تاریخ انتشار: ۲۰۱۵-۰۸-۰۹

هسته و توکارها (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-24569: سازگارتر کردن ارزیابی دیکشنری در PEP 448.

  • 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-24373: ماژول‌های _testmultiphase و xxlimited اکنون از tp_traverse و tp_finalize برای جلوگیری از نشتی ارجاع مواجه‌شده هنگام ترکیب tp_dealloc با PyType_FromSpec استفاده می‌کنند (برای جزئیات به bpo-16690 مراجعه کنید)

مستندات

  • bpo-24458: به‌روزرسانی مستندات برای پوشش راه‌اندازی چندمرحله‌ای برای ماژول‌های توسعه‌ای (PEP 489). وصله‌ای از Petr Viktorin.

  • bpo-24351: شفاف‌سازی منظور از «شناسه» در زمینه‌ی نمونه‌های string.Template.

ساخت

  • 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-21520: اگر کلمه‌ی 'bad' در هر جایی از نام پوشه‌ی فعلی ظاهر شود، دیگر test_zipfile با خطا مواجه نمی‌شود.

  • bpo-9517: انتقال script_helper به بسته‌ی support. وصله از Christie Wilson.

مستندات

  • 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-23731: پیاده‌سازی PEP 488: حذف پرونده‌های .pyo.

  • 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.

ساخت

  • bpo-23817: سیستم‌عامل FreeBSD اکنون مانند سایر سیستم‌عامل‌ها، به‌جای استفاده صرف از «1»، از «1.0» در SOVERSION استفاده می‌کند.

  • bpo-23501: کلینیک آرگومان (Argument Clinic) اکنون به‌طور پیش‌فرض کد را در پرونده‌های جداگانه‌ای تولید می‌کند.

آزمون‌ها

  • bpo-23799: تابع test.support.start_threads() برای اجرا و پاکسازی چند نخ (thread) اضافه شد.

  • bpo-22390: ابزار test.regrtest اکنون اگر پس از اجرای یک آزمون، پرونده‌ها یا پوشه‌های موقتی باقی بمانند، یک اخطار صادر می‌کند.

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 تضمین می‌کند که مفسر ساخته شده است.

آزمون‌ها

  • bpo-23583: آزمون‌هایی برای جریان‌های ورودی/خروجی استاندارد در IDLE اضافه شد.

  • bpo-22289: از بروز خطاهای test_urllib2net به دلیل اتمام مهلت زمانی اتصال ftp جلوگیری شد.

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) یک بدنه‌ی چندبخشی را نادیده نمی‌گرفت.

ساخت

  • bpo-23445: ساخت‌های pydebug اکنون در صورت امکان از "gcc -Og" استفاده می‌کنند تا فایل اجرایی حاصل سریع‌تر شود.

  • bpo-23686: به‌روزرسانی ساخت نصب‌کننده‌ی OS X 10.5 برای استفاده از OpenSSL 1.0.2a.

رابط C API

  • bpo-20204: هشدار منسوخ‌سازی اکنون برای انواع داخلی بدون ویژگی __module__ صادر می‌شود.

Windows

  • bpo-23465: پیاده‌سازی PEP 486 - آگاه‌سازی راه‌انداز پایتون از محیط‌های مجازی. وصله توسط Paul Moore.

  • bpo-23437: نسخه‌بندی پوشه‌ی اسکریپت‌های کاربر در ویندوز. وصله توسط Paul Moore.

پایتون ۳.۵.۰ آلفا ۱

تاریخ انتشار: ۲۰۱۵-۰۲-۰۸

هسته و توکارها (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-21139: تغییر عرض پیش‌فرض پاراگراف به ۷۲، توصیه‌ی PEP 8.

  • 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 را مطالعه کنید.)