)]}'
{
  "log": [
    {
      "commit": "7ed37e95c5ac4f502cfc366f7ea24ebdc48d077a",
      "tree": "6a049f492115cd26eef46d4b874391a2ad84a5ab",
      "parents": [
        "81518cec90434a650bcddfa9ec928f5124c2ed2e"
      ],
      "author": {
        "name": "Stan Ulbrych",
        "email": "stan@python.org",
        "time": "Wed Oct 21 09:36:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 09:36:53 2026"
      },
      "message": "gh-117404: Document preference for `zlib_version` over `zlib.ZLIB_RUNTIME_VERSION` (#157816)"
    },
    {
      "commit": "81518cec90434a650bcddfa9ec928f5124c2ed2e",
      "tree": "7d5721a27a1fce8985864ee791b433bcee48c623",
      "parents": [
        "1a4dfd1d009a2aad82da92c31db23ae13f4da0d0"
      ],
      "author": {
        "name": "Rafid Aslam",
        "email": "rafidteam@gmail.com",
        "time": "Wed Oct 21 07:57:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 07:57:56 2026"
      },
      "message": "gh-125873: Improve error message when PYTHONHOME is invalid (#126027)\n\nCo-authored-by: Lukasz Langa \u003cambv@meta.com\u003e"
    },
    {
      "commit": "1a4dfd1d009a2aad82da92c31db23ae13f4da0d0",
      "tree": "fabb9d22464e72ddc6e22357d70b748b0af108cc",
      "parents": [
        "00348beb6767451fcbab218e12acdec684a979f8"
      ],
      "author": {
        "name": "Serhiy Storchaka",
        "email": "storchaka@gmail.com",
        "time": "Wed Oct 21 07:54:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 07:54:50 2026"
      },
      "message": "gh-74876: Support pickling weak references and weak containers (#153818)\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Lukasz Langa \u003cambv@meta.com\u003e"
    },
    {
      "commit": "00348beb6767451fcbab218e12acdec684a979f8",
      "tree": "12dd668930046304e344d75ca8d0223c34e52419",
      "parents": [
        "b577a5403ad513e6f28ec28630b5ee09a5f521ab"
      ],
      "author": {
        "name": "Hugo van Kemenade",
        "email": "1324225+hugovk@users.noreply.github.com",
        "time": "Wed Oct 21 07:35:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 07:35:49 2026"
      },
      "message": "gh-154675: Use lazy imports in `pdb`, `bdb`, `code` (#156567)"
    },
    {
      "commit": "b577a5403ad513e6f28ec28630b5ee09a5f521ab",
      "tree": "a8001cb3b8ae1d2aa36f06eb876d128f095f3276",
      "parents": [
        "fab1405da8c93429ab1a1d3d3e1779d15b7223a2"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Wed Oct 21 04:38:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 04:38:55 2026"
      },
      "message": "gh-159739: Avoid destroying a remote unwinder cache twice (#159982)\n\nIn a free-threaded build, if allocating the thread-local bytecode cache fails after the code-object cache has been created, the initializer destroys the first cache and returns an error without clearing its pointer. Failed construction then invokes the unwinder\u0027s deallocator, which destroys the same cache again and can crash the profiling process instead of propagating `MemoryError`."
    },
    {
      "commit": "fab1405da8c93429ab1a1d3d3e1779d15b7223a2",
      "tree": "a72ab063733b34108e402a86330797e565f9b142",
      "parents": [
        "9c649dbaa80e905c9ccd874606cea706ca799a0d"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Wed Oct 21 04:34:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 04:34:23 2026"
      },
      "message": "gh-159739: Fix reference and error handling in warnings (#159758)\n\n\n\nDo not release the borrowed skip_file_prefixes argument, and stop if\nallocation of the fallback filename fails."
    },
    {
      "commit": "9c649dbaa80e905c9ccd874606cea706ca799a0d",
      "tree": "a7367660ccc8750c7ffba917ac8d2ea0e5b6e80d",
      "parents": [
        "ebce4b70bf5e874c8602d02ab0ce709cb089c004"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Wed Oct 21 04:33:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 04:33:19 2026"
      },
      "message": "gh-159739: Keep generic alias arguments alive while formatting errors (#159981)\n\nWhen a generic alias contains a list of parameters and an object claiming to be an unpacked type-variable tuple returns a non-tuple from `__typing_subst__`, the error path frees the temporary argument tuple before reading it to format a `TypeError`. That use-after-free can crash the interpreter instead of reporting the invalid substitution."
    },
    {
      "commit": "ebce4b70bf5e874c8602d02ab0ce709cb089c004",
      "tree": "86ae298e02b1487e9542848edc2d97108c3ffbd4",
      "parents": [
        "2315d94664f0a1c93ef43272b9c200ad4b04c709"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Wed Oct 21 04:32:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 04:32:50 2026"
      },
      "message": "gh-159739: Release weak proxy operands on errors (#159968)\n\nBackport to 3.15 and 3.14."
    },
    {
      "commit": "2315d94664f0a1c93ef43272b9c200ad4b04c709",
      "tree": "1cc9d7d9f52fbee2319c0c03607095d099ed4019",
      "parents": [
        "4101d59902bed8278fb50d6ac50e7227e3fe12ab"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Wed Oct 21 04:32:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 04:32:19 2026"
      },
      "message": "gh-159739: Clear free-threaded GC worklists after early errors (#159979)\n\nBackport to 3.15 and 3.14."
    },
    {
      "commit": "4101d59902bed8278fb50d6ac50e7227e3fe12ab",
      "tree": "e398816662d0084e1fb22a062c5c50e3f4ce5360",
      "parents": [
        "990bcd9abdd1063dc90d8f182b6f85b1d8149bb8"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Wed Oct 21 04:31:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 04:31:59 2026"
      },
      "message": "gh-159739: Break reference cycles involving property objects (#159978)"
    },
    {
      "commit": "990bcd9abdd1063dc90d8f182b6f85b1d8149bb8",
      "tree": "433487d68faaf76cc9ff02b6d0181dd3857c656c",
      "parents": [
        "5503a5e0997740573b68d924535aa87ee4d36d79"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Wed Oct 21 04:31:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 04:31:44 2026"
      },
      "message": "gh-159739: Collect grapheme iterator and segment type cycles (#159975)\n\nBackport to 3.15."
    },
    {
      "commit": "5503a5e0997740573b68d924535aa87ee4d36d79",
      "tree": "34a08a0a437c8c767542f130385237d1a455ef77",
      "parents": [
        "1277a5e5820ee747865413998981ceba90587bcc"
      ],
      "author": {
        "name": "Aniket",
        "email": "148300120+Aniketsy@users.noreply.github.com",
        "time": "Wed Oct 21 02:18:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 02:18:24 2026"
      },
      "message": "gh-152490: Fix TypeError when traceback.py formats SyntaxError(NotImplemented) (#152495)\n\nMethod traceback.TracebackException._format_syntax_error contains line `msg \u003d self.msg or \"\u003cno detail available\u003e\"`.\nSince 3.14, bool(NotImplemented) raises TypeError and hence so does `self.msg or ...`.  Catch it in a try statement.\n\n---------\n\nCo-authored-by: Terry Jan Reedy \u003ctjreedy@udel.edu\u003e\nCo-authored-by: Bénédikt Tran \u003c10796600+picnixz@users.noreply.github.com\u003e"
    },
    {
      "commit": "1277a5e5820ee747865413998981ceba90587bcc",
      "tree": "5f525e811c13c897e494f4ea80d0b5127bef1051",
      "parents": [
        "f9c0e1ea27a8731fecc3395ae31fc88277ff24b3"
      ],
      "author": {
        "name": "Tomas R.",
        "email": "tomas.roun8@gmail.com",
        "time": "Wed Oct 21 00:25:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 00:25:31 2026"
      },
      "message": "gh-130197: Improve test coverage of `msgfmt.py` part 2 (#133309)"
    },
    {
      "commit": "f9c0e1ea27a8731fecc3395ae31fc88277ff24b3",
      "tree": "e9f1e77b896f285ea3c934f040945bac0107b44a",
      "parents": [
        "e07817d02974cd574c453b4f7e84be57331abd05"
      ],
      "author": {
        "name": "Donghee Na",
        "email": "donghee.na@python.org",
        "time": "Wed Oct 21 00:25:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 00:25:02 2026"
      },
      "message": "gh-114258: Update AC to support @critical_section for tp_iternext (gh-159962)"
    },
    {
      "commit": "e07817d02974cd574c453b4f7e84be57331abd05",
      "tree": "eda75ae25f66638b7e1d264f998e7f3973d6950f",
      "parents": [
        "c99097ee97edff0cd2ccd254690f14015f4368ce"
      ],
      "author": {
        "name": "Jonathan J. Helmus",
        "email": "jjhelmus@gmail.com",
        "time": "Wed Oct 21 00:09:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 00:09:54 2026"
      },
      "message": "gh-106045: Fix venv path discovery for symlinked executables (#156483)\n\nUse the resolved base executable when locating the base installation\ninstead of relying on the home directory in pyvenv.cfg.\n\nAdd tests covering relocated Python installations and misleading\nstandard-library landmarks near executable symlinks."
    },
    {
      "commit": "c99097ee97edff0cd2ccd254690f14015f4368ce",
      "tree": "9b919e7713d74c517cf94d9abb1f23e0daf8b45a",
      "parents": [
        "f3d863a6d5fcac86b1e87c7655716f186ad853cf"
      ],
      "author": {
        "name": "Nishant Bhandari",
        "email": "46300244+n1snt@users.noreply.github.com",
        "time": "Wed Oct 21 00:04:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 00:04:58 2026"
      },
      "message": "gh-159868: Accept UserString arguments in startswith and endswith (#159869)"
    },
    {
      "commit": "f3d863a6d5fcac86b1e87c7655716f186ad853cf",
      "tree": "40482da0acb9b53360064a874788090eb69bd135",
      "parents": [
        "23469818538cf39108535b8f182f3527639d519b"
      ],
      "author": {
        "name": "jj.lee",
        "email": "63435794+jx2lee@users.noreply.github.com",
        "time": "Wed Oct 21 00:02:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 00:02:57 2026"
      },
      "message": "gh-151950: Fix unresolved AST references in ast.rst (#158156)\n\nSigned-off-by: jx2lee \u003cdev.jaejun.lee.1991@gmail.com\u003e"
    },
    {
      "commit": "23469818538cf39108535b8f182f3527639d519b",
      "tree": "5082da3277f57727cba7d7c1cb8a6c81510e1567",
      "parents": [
        "c6a084ac6022d834fd0ad3eb0129a111a28638fe"
      ],
      "author": {
        "name": "Bénédikt Tran",
        "email": "10796600+picnixz@users.noreply.github.com",
        "time": "Tue Oct 20 23:55:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 23:55:40 2026"
      },
      "message": "gh-149816: fix a race when fetching OpenSSL digests (#153019)"
    },
    {
      "commit": "c6a084ac6022d834fd0ad3eb0129a111a28638fe",
      "tree": "88450f8f841c12eed0c1d3454bee28d89e56f1b7",
      "parents": [
        "488ce0f050d798ff0553ac6b52e7bccb73b60017"
      ],
      "author": {
        "name": "Bénédikt Tran",
        "email": "10796600+picnixz@users.noreply.github.com",
        "time": "Tue Oct 20 23:54:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 23:54:51 2026"
      },
      "message": "gh-143376: validate usages of `_interpchannels.ChannelID` in `_channelid_shared` (#146574)"
    },
    {
      "commit": "488ce0f050d798ff0553ac6b52e7bccb73b60017",
      "tree": "9bae6ed57a3d2f472bd8cbe25f1ba65761418937",
      "parents": [
        "13a807afc84909eec3be7656d021d8171af42764"
      ],
      "author": {
        "name": "Loïc Simon",
        "email": "loic.simon@napta.io",
        "time": "Tue Oct 20 23:23:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 23:23:13 2026"
      },
      "message": "gh-69605: fix PyREPL completions inserted for import statements with spaces (#148629)\n\nFix `from math .\u003ctab\u003e` inserting `from math .ath.integer` instead of `from math.integer`"
    },
    {
      "commit": "13a807afc84909eec3be7656d021d8171af42764",
      "tree": "81df29cdc745bc612afac6d52fd565218124d361",
      "parents": [
        "97b5f245136eb91bbc1aeddfcbf9bc571cedfdb5"
      ],
      "author": {
        "name": "Martin Škopek",
        "email": "kiblik1@gmail.com",
        "time": "Tue Oct 20 23:22:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 23:22:21 2026"
      },
      "message": "gh-107689: add docstrings to abstract classes (#108882)"
    },
    {
      "commit": "97b5f245136eb91bbc1aeddfcbf9bc571cedfdb5",
      "tree": "0ca764faee9c96a8780c5ee236e30945de30600f",
      "parents": [
        "c3608845b678729245ef03deb78c47cdabcddf5f"
      ],
      "author": {
        "name": "Adam D. Thomas",
        "email": "adamt@diversityarrays.com",
        "time": "Tue Oct 20 23:12:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 23:12:16 2026"
      },
      "message": "gh-129605: Add more exception handling when computing suggestions in traceback.py (#129632)"
    },
    {
      "commit": "c3608845b678729245ef03deb78c47cdabcddf5f",
      "tree": "71fac273600afbc1ebd7d2d68820058b4b13f6ee",
      "parents": [
        "514cfe739e8559d964a216e20358ae6c0f8831fa"
      ],
      "author": {
        "name": "Gregory P. Smith",
        "email": "68491+gpshead@users.noreply.github.com",
        "time": "Tue Oct 20 23:00:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 23:00:14 2026"
      },
      "message": "gh-159739: Fix crash in _PyTuple_Resize() with an invalid size (GH-159804)\n\n_PyTuple_Resize() did not validate newsize for non-empty tuples.\n\nRaise SystemError for a negative size and MemoryError for a too-large size,\nlike PyTuple_New() already does for the empty-tuple path."
    },
    {
      "commit": "514cfe739e8559d964a216e20358ae6c0f8831fa",
      "tree": "51dac8962a669fd1c1b52dba1d54c03a7186a8ce",
      "parents": [
        "875337080e77ebe563341e7852c953d2bc81b58e"
      ],
      "author": {
        "name": "Tian Gao",
        "email": "gaogaotiantian@hotmail.com",
        "time": "Tue Oct 20 22:47:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 22:47:31 2026"
      },
      "message": "gh-138641: Ignore set_trace() when we are already in pdb (#159918)"
    },
    {
      "commit": "875337080e77ebe563341e7852c953d2bc81b58e",
      "tree": "d7174cd2350c04a67210eada651276baeb0e1dcc",
      "parents": [
        "80040b6f6304dfd61bb42142d204f6ddea5c6cee"
      ],
      "author": {
        "name": "Peter Bierma",
        "email": "zintensitydev@gmail.com",
        "time": "Tue Oct 20 22:40:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 22:40:27 2026"
      },
      "message": "gh-78327: Fix buildbot failures on Windows Clang (GH-159936)"
    },
    {
      "commit": "80040b6f6304dfd61bb42142d204f6ddea5c6cee",
      "tree": "d7c63def481d2c930454f4c9a27486504efc2fc4",
      "parents": [
        "39bc958bf9beeb0eb5357d9d722a23ce7a6ce25d"
      ],
      "author": {
        "name": "Stan Ulbrych",
        "email": "stan@python.org",
        "time": "Tue Oct 20 21:26:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 21:26:48 2026"
      },
      "message": "gh-157290: Add support for `%Nf` to `datetime.str{f,p}time()` (#157704)\n\nCo-authored-by: Karoline Pauls \u003ccode@karolinepauls.com\u003e\nCo-authored-by: Victor Stinner \u003cvstinner@python.org\u003e"
    },
    {
      "commit": "39bc958bf9beeb0eb5357d9d722a23ce7a6ce25d",
      "tree": "4ae6b21ec399af58f8f46760fd33e39380df4a09",
      "parents": [
        "74367077b81880fbfc0d5c91a57df98e8282ac1a"
      ],
      "author": {
        "name": "Gr4ph0s",
        "email": "gr4ph0s@hotmail.fr",
        "time": "Tue Oct 20 20:06:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 20:06:55 2026"
      },
      "message": "gh-159860: Adjust QSBR cache line size from 64 to 128 on AArch64 (gh-159862)"
    },
    {
      "commit": "74367077b81880fbfc0d5c91a57df98e8282ac1a",
      "tree": "8483e45e153ddd288178672af4f9fe4b71abcef5",
      "parents": [
        "264860472c1ec9446974c6c235b26c1774cec75d"
      ],
      "author": {
        "name": "tonghuaroot (童话)",
        "email": "tonghuaroot@gmail.com",
        "time": "Tue Oct 20 19:50:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 19:50:08 2026"
      },
      "message": "gh-152373: Make pdb \"until\" step over a list comprehension with a breakpoint (#152374)"
    },
    {
      "commit": "264860472c1ec9446974c6c235b26c1774cec75d",
      "tree": "6255c74a921c0c565e3c0662ee896c588906300e",
      "parents": [
        "4bb1dadff42980eb133587f5798f20fb0354f039"
      ],
      "author": {
        "name": "Harjoth Khara",
        "email": "harjoth.khara@gmail.com",
        "time": "Tue Oct 20 19:41:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 19:41:52 2026"
      },
      "message": "gh-139580: Clarify pathlib full_match recursive pattern docs (#151479)\n\nDocuments how PurePath.full_match() handles a pattern ending in /**: /a/** matches /a/b but not /a, because the separator before ** must be present in the path and PurePath drops trailing slashes. Adds two doctest examples under full_match() and a note at the ** entry of the pattern language list contrasting it with Path.glob().\n---------\n\nCo-authored-by: Terry J Reedy \u003ctjreedy@udel.edu\u003e"
    },
    {
      "commit": "4bb1dadff42980eb133587f5798f20fb0354f039",
      "tree": "b1f9cf6806af7443c62ff8ef18150dd3eef05e19",
      "parents": [
        "e5e0748abd27e39655cb8dc313a82cad6563c54f"
      ],
      "author": {
        "name": "Neil Schemenauer",
        "email": "nas-github@arctrix.com",
        "time": "Tue Oct 20 19:33:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 19:33:27 2026"
      },
      "message": "gh-158197: Fix split dict iteration during concurrent deletion (gh-158686)\n\nRead insertion order from the iterator\u0027s captured values snapshot instead\nof re-reading ma_values and asserting against a concurrently changing\nsize. Retry under the dictionary lock when a value slot has been cleared.\n\nMake insertion-order writes atomic and publish size changes with release\nstores, pairing with the iterator\u0027s size load. Keep order-byte accesses\nrelaxed. Add _Py_atomic_store_uint8_release() and\nFT_ATOMIC_STORE_UINT8_RELEASE() for this."
    },
    {
      "commit": "e5e0748abd27e39655cb8dc313a82cad6563c54f",
      "tree": "9b422ad5e2aebe18366a5af8d714b04b51b60038",
      "parents": [
        "fd6ed15a894dcc426da3d4d6cc9f297573b2c83e"
      ],
      "author": {
        "name": "Junhyung Lee",
        "email": "70549809+espressolee@users.noreply.github.com",
        "time": "Tue Oct 20 19:32:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 19:32:09 2026"
      },
      "message": "gh-159864: Fix syslog.openlog() crash with concurrent sys.argv changes (GH-159884)\n\nsyslog_get_argv() took sys.argv[0] with PyList_GetItem() and increfed it\nonly afterwards, so on the free-threaded build a concurrent replacement of\nsys.argv[0] could free it in between. Use PyList_GetItemRef() instead.\n\nCo-authored-by: Lazizbek Ergashev \u003c20501725+lazerg@users.noreply.github.com\u003e"
    },
    {
      "commit": "fd6ed15a894dcc426da3d4d6cc9f297573b2c83e",
      "tree": "327fdab41bdd117ab20db778e0fbc00d849b4470",
      "parents": [
        "f071bacf49452af56ee4d57a79be56686e7b47cc"
      ],
      "author": {
        "name": "Mariatta",
        "email": "Mariatta@users.noreply.github.com",
        "time": "Tue Oct 20 19:23:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 19:23:37 2026"
      },
      "message": "gh-124549: Document that `strptime()` uses the last directive when a time unit is over-specified (#125009)\n\n* Add a note that when over-specifying datetime format, only the last directive gets used.\n\n* adjust and reorganize the notes location, fast forward to latest.\n\n* Update Doc/library/datetime.rst\n\nCo-authored-by: Stan Ulbrych \u003cstan@python.org\u003e\n\n---------\n\nCo-authored-by: Stan Ulbrych \u003cstan@python.org\u003e"
    },
    {
      "commit": "f071bacf49452af56ee4d57a79be56686e7b47cc",
      "tree": "c858cb93a3c0ebba8f13f6ed8cd06c16458b2f33",
      "parents": [
        "30a55f3e9616ec0c583d15ae43987bd7b82be1f2"
      ],
      "author": {
        "name": "Stan Ulbrych",
        "email": "stan@python.org",
        "time": "Tue Oct 20 19:20:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 19:20:40 2026"
      },
      "message": "gh-157847: Re-write more of the `turtle` reference docs (#159685)\n\nCo-authored-by: Maciej Olko \u003cmaciej.olko@affirm.com\u003e\nCo-authored-by: Carol Willing \u003ccarolcode@willingconsulting.com\u003e"
    },
    {
      "commit": "30a55f3e9616ec0c583d15ae43987bd7b82be1f2",
      "tree": "181057a8dceb4feccf372a57f7ff0af81a8d52cc",
      "parents": [
        "f5bd07700ecd0f02cc424666b871f51de03b9232"
      ],
      "author": {
        "name": "Stan Ulbrych",
        "email": "stan@python.org",
        "time": "Tue Oct 20 19:17:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 19:17:09 2026"
      },
      "message": "Regenerate `blurb` entry categories (#159566)"
    },
    {
      "commit": "f5bd07700ecd0f02cc424666b871f51de03b9232",
      "tree": "8fa8482513b40a92fcddd9af93b4cb94630ae596",
      "parents": [
        "88d922ad982c4e00f8cb936cffba154d8d5fb697"
      ],
      "author": {
        "name": "Bartosz Sławecki",
        "email": "bartosz@ilikepython.com",
        "time": "Tue Oct 20 18:55:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 18:55:45 2026"
      },
      "message": "gh-148228: Enable error overlays in the REPL (GH-148229)"
    },
    {
      "commit": "88d922ad982c4e00f8cb936cffba154d8d5fb697",
      "tree": "a8d402d94c4710b3faa5eb03cb86beee933cec99",
      "parents": [
        "39d7c0ff0d32c1ae3d7c6f7109810d515fad9cd8"
      ],
      "author": {
        "name": "Victor Stinner",
        "email": "vstinner@python.org",
        "time": "Tue Oct 20 18:48:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 18:48:29 2026"
      },
      "message": "gh-159914: Ignore gdb stderr in test_gdb.test_pretty_print (#159916)\n\ntest_strings() gets gdb.host_charset(), but fails if gdb writes\nanything to stderr. For example, it fails if gdb logs the warning:\n\n    \"/usr/bin/gdb: warning: Couldn\u0027t determine a path for the index\n    cache directory.\"\n\nEven if stdout contains the expected encoding (\"UTF-8\").\n\nChange test_gdb to only fail if stdout is empty, ignore stderr\notherwise to ignore gdb warnings."
    },
    {
      "commit": "39d7c0ff0d32c1ae3d7c6f7109810d515fad9cd8",
      "tree": "b957ece9430fa0a2e640ce7aecf8fd4a95761d49",
      "parents": [
        "14b43d4d3c59b552b275dd4e85552ef005b5fddf"
      ],
      "author": {
        "name": "Damian Shaw",
        "email": "damian.peter.shaw@gmail.com",
        "time": "Tue Oct 20 18:46:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 18:46:18 2026"
      },
      "message": "gh-159894: Upgrade bundled pip to 26.2.2 (#159910)"
    },
    {
      "commit": "14b43d4d3c59b552b275dd4e85552ef005b5fddf",
      "tree": "44b10093655f6f5ebc59a40faa6afa5415b87eca",
      "parents": [
        "6fa2d645ea57120d1cbf38b45fc8ee2b5019090b"
      ],
      "author": {
        "name": "Victor Stinner",
        "email": "vstinner@python.org",
        "time": "Tue Oct 20 18:15:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 18:15:57 2026"
      },
      "message": "gh-159603: Call pthread_attr_init() in hardware_stack_limits() (#159857)\n\nAlways call pthread_attr_init() in hardware_stack_limits(), not only\non FreeBSD (if pthread_attr_get_np() is available).\n\nEmscripten: add pthread_attr_init() workaround."
    },
    {
      "commit": "6fa2d645ea57120d1cbf38b45fc8ee2b5019090b",
      "tree": "25bfe7dd4f0a2301b3e4fa2e35a09abe8fa0e876",
      "parents": [
        "b4b81e1b205ff1e88d5add0fcb050ed5162e4eca"
      ],
      "author": {
        "name": "Bénédikt Tran",
        "email": "10796600+picnixz@users.noreply.github.com",
        "time": "Tue Oct 20 18:03:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 18:03:19 2026"
      },
      "message": "gh-159811: Raise OpenSSL errors in `_hashlib.HASH` after re-attaching the thread state (#159817)\n\nWhen `EVP_DigestUpdate()` failed, `_hashlib_HASH_hash()` raised a Python\nexception, however, `_hashlib.HASH.update()` and the `_hashlib.HASH`\nconstructor release the GIL before calling it when the data is larger\nthan `HASHLIB_GIL_MINSIZE` bytes.\n\n`_hashlib_HASH_hash()` now only returns an error status and its callers\nraise the exception once they have re-attached the thread state."
    },
    {
      "commit": "b4b81e1b205ff1e88d5add0fcb050ed5162e4eca",
      "tree": "2d44878b047729e87f88f149bf2b91ba30ea83ac",
      "parents": [
        "6f439ee069c0e0f9e41865961ceaae8b0544fcbc"
      ],
      "author": {
        "name": "Bénédikt Tran",
        "email": "10796600+picnixz@users.noreply.github.com",
        "time": "Tue Oct 20 17:58:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:58:09 2026"
      },
      "message": "gh-159811: Raise OpenSSL errors in `_hashlib.HMAC` after re-attaching the thread state (#159818)\n\n`hashlib_openssl_HMAC_update_once()` set an exception when the OpenSSL\nHMAC update function failed, but it was called inside a GIL-released\nregion and the object\u0027s mutex held by `_hashlib.HMAC.update()` and\n`_hashlib.hmac_new()` when the data exceeds `HASHLIB_GIL_MINSIZE` bytes.\n\nInstead, the HMAC update function is called directly in `_hmac_update()`,\nand the exception is set once the thread state is re-attached and the mutex\nis released (restores the behavior prior to gh-134531).\n\nSince the OpenSSL error queue is per thread, the exception type and message\nare unaffected."
    },
    {
      "commit": "6f439ee069c0e0f9e41865961ceaae8b0544fcbc",
      "tree": "a1016b16391dc586d0ccd1437e7e237f10d73b8b",
      "parents": [
        "c38d75ce321b72a67a04f41589a2e405ed3145a7"
      ],
      "author": {
        "name": "Peter Bierma",
        "email": "zintensitydev@gmail.com",
        "time": "Tue Oct 20 17:44:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:44:33 2026"
      },
      "message": "gh-141004: Document `Py_FrozenMain` (#159724)"
    },
    {
      "commit": "c38d75ce321b72a67a04f41589a2e405ed3145a7",
      "tree": "37e9594c867ad0f9d4fa776fcc4656c8b40f13e0",
      "parents": [
        "0071fb511110a03d8766a9061f8813c9a1a9a4de"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 17:42:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:42:30 2026"
      },
      "message": "gh-159739: Preserve the normalization buffer on allocation failure (#159755)\n\nSave the original buffer before calling PyMem_Resize(), which overwrites\nits first argument even on failure.\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "0071fb511110a03d8766a9061f8813c9a1a9a4de",
      "tree": "6054c03b4adecb199e3f8b33fb24519556329840",
      "parents": [
        "f37e82139a24c4f1bd84c7d9111f44719b94fff5"
      ],
      "author": {
        "name": "Stan Ulbrych",
        "email": "stan@python.org",
        "time": "Tue Oct 20 17:37:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:37:13 2026"
      },
      "message": "gh-158876: Update bundled Expat to 2.9.0 (GH-158881)\n\n\nCo-authored-by: Petr Viktorin \u003cencukou@gmail.com\u003e"
    },
    {
      "commit": "f37e82139a24c4f1bd84c7d9111f44719b94fff5",
      "tree": "3f738ba2bd670d3148930b2b23a11574e7f651ae",
      "parents": [
        "c8746492c580a33b2c903ac7b7ba78e43788bdd6"
      ],
      "author": {
        "name": "Serhiy Storchaka",
        "email": "storchaka@gmail.com",
        "time": "Tue Oct 20 17:28:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:28:55 2026"
      },
      "message": "gh-143632: Fix the musl check for PR_SET_VMA_ANON_NAME (GH-159886)\n\nThe guard added by gh-143730 tested $ac_cv_libc, which is never set, so the\ncheck always ran and the build could fail on the struct prctl_mm_map\nredefinition it was meant to avoid.  Match on the host triplet instead.\n\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "c8746492c580a33b2c903ac7b7ba78e43788bdd6",
      "tree": "8b190424b8089a5875002bc9bf09c4d49a04a699",
      "parents": [
        "905aab60f72ec5aa9183ec0b74b5eda8f9ca188d"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 17:26:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:26:52 2026"
      },
      "message": "gh-159739: Handle OrderedDict item iterator allocation failures (#159774)\n\n\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "905aab60f72ec5aa9183ec0b74b5eda8f9ca188d",
      "tree": "5705b6568617ca93467af8199f594f2076729515",
      "parents": [
        "07df106f7efa7e5e3f5fba4b4927eaba5bcd98d0"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 17:23:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:23:14 2026"
      },
      "message": "gh-159739: Bound encoding-name lookahead in surrogatepass (#159785)\n\n\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "07df106f7efa7e5e3f5fba4b4927eaba5bcd98d0",
      "tree": "967a5938451ffe9e971e9df84d124dae6a00e50d",
      "parents": [
        "7652a6daccc39d7fb051d54d9f804df535bb17b0"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 17:20:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:20:51 2026"
      },
      "message": "gh-159739: [typing] Handle generic alias construction errors (#159772)\n\n\n\n\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "7652a6daccc39d7fb051d54d9f804df535bb17b0",
      "tree": "c6b7ff623c56b6136188878141bb952c3142dbc8",
      "parents": [
        "95f94d04d8772f926b6a9bc1e38b67218a1dba7a"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 17:20:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:20:43 2026"
      },
      "message": "gh-159739: Avoid leaking references during free-threaded GC enumeration (#159781)\n\n\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "95f94d04d8772f926b6a9bc1e38b67218a1dba7a",
      "tree": "83af77bc2d5c83e1557169991f5cebe5d65110bc",
      "parents": [
        "c2deb791c5381b2c97db4b92e0289ad9c60460ff"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 17:20:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:20:20 2026"
      },
      "message": "gh-159739: Reject the minimum dynamic formatting width (#159780)\n\n\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "c2deb791c5381b2c97db4b92e0289ad9c60460ff",
      "tree": "020ad90d6120faa594909112fd4661b25130ffc4",
      "parents": [
        "17df836e6d4ba3ce0a28cfe98efedf7c7b4f0e49"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 17:20:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:20:07 2026"
      },
      "message": "gh-159739: Track group records for cyclic garbage collection (#159778)\n\n\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "17df836e6d4ba3ce0a28cfe98efedf7c7b4f0e49",
      "tree": "7899955240371c2906602080549de75c957cfe62",
      "parents": [
        "d51e6e596b7c9f5510203b06a641df0fb579faba"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 17:19:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:19:50 2026"
      },
      "message": "gh-159739: Handle overlapping buffers in BytesIO.readinto (#159777)\n\n\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "d51e6e596b7c9f5510203b06a641df0fb579faba",
      "tree": "8a07b6584686b75e8528346ab32cabd85285daea",
      "parents": [
        "8b0fd99e4d06802f27a829108201a694b903ad99"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 17:19:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:19:30 2026"
      },
      "message": "gh-159739: Initialize template iterator references before allocating (#159773)\n\n\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "8b0fd99e4d06802f27a829108201a694b903ad99",
      "tree": "cb6973311a8e94118d96869df3a79f538455e372",
      "parents": [
        "e3c395542adebfbca1f54379065c15380ac5e182"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 17:19:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:19:03 2026"
      },
      "message": "gh-159739: Read resized ctypes scalars using their declared size (#159767)\n\n\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "e3c395542adebfbca1f54379065c15380ac5e182",
      "tree": "a7b8385beda7abae17fdcd58ca120ac320cc5ca1",
      "parents": [
        "44a2c1a5d9f460f8f5f1c09287a293e77ac3aa2e"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 17:16:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:16:11 2026"
      },
      "message": "gh-159739: Preserve the full maxlen when copying deque subclasses (#159765)\n\n\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "44a2c1a5d9f460f8f5f1c09287a293e77ac3aa2e",
      "tree": "869fe5a9f9e372946489c23030ec8ef2adebdbe5",
      "parents": [
        "25b17d4d5171f5d72b90aca6ecefcce24730b018"
      ],
      "author": {
        "name": "Stan Ulbrych",
        "email": "stan@python.org",
        "time": "Tue Oct 20 17:13:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:13:44 2026"
      },
      "message": "Update `pylock.toml` and add Sphinx markup for CVEs in Changelog entries (#159415)"
    },
    {
      "commit": "25b17d4d5171f5d72b90aca6ecefcce24730b018",
      "tree": "46be0a81abc1fe0ea53430fb1e75394a711105a0",
      "parents": [
        "3758955e2fb844cd764a59ba8519c916877dd8f5"
      ],
      "author": {
        "name": "Arnold Dumas",
        "email": "arnold@dumas.at",
        "time": "Tue Oct 20 17:10:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:10:10 2026"
      },
      "message": "bpo-24053: Add EXIT_SUCCESS and EXIT_FAILURE values in the sys module (GH-14773)\n\nCo-authored-by: Ethan Furman \u003cethan@stoneleaf.us\u003e"
    },
    {
      "commit": "3758955e2fb844cd764a59ba8519c916877dd8f5",
      "tree": "8aed320a900b9dcc6f5d5b96d76e9308e8ec5da2",
      "parents": [
        "f5d989eda168099551c8bbb2249e512c993698a4"
      ],
      "author": {
        "name": "Peter Bierma",
        "email": "zintensitydev@gmail.com",
        "time": "Tue Oct 20 16:55:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 16:55:15 2026"
      },
      "message": "gh-71990: Call `_as_parameter_` on `ctypes.POINTER` arguments (GH-159763)"
    },
    {
      "commit": "f5d989eda168099551c8bbb2249e512c993698a4",
      "tree": "475f95a3c8dfb587d52e7501b5935c1086348948",
      "parents": [
        "182bf2e72ff53de942c04420e383118c11c70c69"
      ],
      "author": {
        "name": "Paul Ganssle",
        "email": "1377457+pganssle@users.noreply.github.com",
        "time": "Tue Oct 20 16:47:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 16:47:20 2026"
      },
      "message": "gh-107862: Add stateful, timezones and ip_addresses to the Hypothesis stubs (#159770)\n\nThe stubs in test.support._hypothesis_stubs only cover the strategies\nand decorators the existing property tests happen to use, so a test\nthat wants hypothesis.stateful, or the timezones() and ip_addresses()\nstrategies, fails to import when Hypothesis is not installed.\n\nThis adds those names. The stateful API has no equivalent of @example,\nso there is nothing for the stub to replay: a state machine\u0027s TestCase\nis skipped and run_state_machine_as_test raises SkipTest. The\ndecorators are accepted so that state machine classes can be defined\nat import time.\n\nReal Hypothesis only exposes hypothesis.stateful once the submodule has\nbeen imported, so hypothesis_helper now imports it, making the\nattribute available in both modes."
    },
    {
      "commit": "182bf2e72ff53de942c04420e383118c11c70c69",
      "tree": "a84ff1c0ffd33704bb91bb961198f18318811321",
      "parents": [
        "af1e0300d90344af4b9d412698e63af67c7f3dcf"
      ],
      "author": {
        "name": "Donghee Na",
        "email": "donghee.na@python.org",
        "time": "Tue Oct 20 16:40:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 16:40:52 2026"
      },
      "message": "gh-159462: Relax the thread check in _PyMem_mi_page_reclaimed() (gh-159807)"
    },
    {
      "commit": "af1e0300d90344af4b9d412698e63af67c7f3dcf",
      "tree": "83818f455aa71f88f2d93d483e680451425322e0",
      "parents": [
        "b12497756ba0242a2a389dd1bb6fb26ddbd48602"
      ],
      "author": {
        "name": "An Long",
        "email": "aisk@users.noreply.github.com",
        "time": "Tue Oct 20 15:32:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:32:05 2026"
      },
      "message": "gh-159880: Fix handle leak in winreg when audit hook returns failure (GH-159881)"
    },
    {
      "commit": "b12497756ba0242a2a389dd1bb6fb26ddbd48602",
      "tree": "3b983059fd441ba0f784878c1bd890ef0fb19160",
      "parents": [
        "4b33a9db8084bb4a5c631db5cb97e4a2e0e33a98"
      ],
      "author": {
        "name": "Pengyu Lee",
        "email": "lipengyu@kylinos.cn",
        "time": "Tue Oct 20 15:24:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:24:13 2026"
      },
      "message": "gh-159690: Fix timed log rotation after a failed or duplicate rollover (GH-159692)"
    },
    {
      "commit": "4b33a9db8084bb4a5c631db5cb97e4a2e0e33a98",
      "tree": "12879e73b0f7c9938c37bbdf0de093820d2cff89",
      "parents": [
        "b12fcffdb153d992e665510e23bfaa14519de56c"
      ],
      "author": {
        "name": "Pengyu Lee",
        "email": "lipengyu@kylinos.cn",
        "time": "Tue Oct 20 12:31:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 12:31:15 2026"
      },
      "message": "gh-158004: preserve `asyncio.as_completed()` items after anext cancellation (#158005)\n\nCo-authored-by: Kumar Aditya \u003ckumaraditya@python.org\u003e"
    },
    {
      "commit": "b12fcffdb153d992e665510e23bfaa14519de56c",
      "tree": "0430ff86040b8be9479d5b66ece870b8c0b0c7c3",
      "parents": [
        "0815fe3afc001e4cedc44cc8007ce8597eba7c51"
      ],
      "author": {
        "name": "Aslan Osmanov",
        "email": "32789812+OsmnvAslan@users.noreply.github.com",
        "time": "Tue Oct 20 11:52:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 11:52:03 2026"
      },
      "message": "gh-157856: Fix `asyncio.as_completed()` outside a running event loop (#157857)"
    },
    {
      "commit": "0815fe3afc001e4cedc44cc8007ce8597eba7c51",
      "tree": "1bf80056c82243120232dca1a369b509f3f39f81",
      "parents": [
        "59942e247df0b31207b734ed36c57feff4a6dde2"
      ],
      "author": {
        "name": "Thomas Grainger",
        "email": "tagrain@gmail.com",
        "time": "Tue Oct 20 11:18:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 11:18:52 2026"
      },
      "message": "gh-156784: do not ignore error port unreachable in proactor event loop implementation (#156788)"
    },
    {
      "commit": "59942e247df0b31207b734ed36c57feff4a6dde2",
      "tree": "1e51984bb205765484dc5efc879aa60620b52cc5",
      "parents": [
        "66e391d14ba42218a4bf604973f584853440d6c1"
      ],
      "author": {
        "name": "limadog9",
        "email": "jakewallin42@gmail.com",
        "time": "Tue Oct 20 11:04:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 11:04:02 2026"
      },
      "message": "gh-127388: Restore WeakValueDictionary.itervaluerefs documentation (#159850)"
    },
    {
      "commit": "66e391d14ba42218a4bf604973f584853440d6c1",
      "tree": "f67eb44e04f6afeffda1790ff610aeaaf885fdce",
      "parents": [
        "8b7d6c53eee2226b08bed761d5a1742b5adb8507"
      ],
      "author": {
        "name": "Michael J. Sullivan",
        "email": "sully@msully.net",
        "time": "Tue Oct 20 10:59:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 10:59:18 2026"
      },
      "message": "gh-146065: Fix NULL dereference in FutureIter_am_send (#158468)"
    },
    {
      "commit": "8b7d6c53eee2226b08bed761d5a1742b5adb8507",
      "tree": "67036d4d8ffd74d74db0b4d5d8a044969396d7ad",
      "parents": [
        "cb12c5e514e378ef4e75a3402d2eff1162a321c5"
      ],
      "author": {
        "name": "Kumar Aditya",
        "email": "kumaraditya@python.org",
        "time": "Tue Oct 20 10:14:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 10:14:16 2026"
      },
      "message": "gh-157361: Add What\u0027s New entry for anext() and aiter() in Python (#159867)"
    },
    {
      "commit": "cb12c5e514e378ef4e75a3402d2eff1162a321c5",
      "tree": "1f2a3ace8d5ffabb516d82bac390413cabf8f421",
      "parents": [
        "4c73f50ca9885e5850dae64463e87cf5e80992a1"
      ],
      "author": {
        "name": "Kumar Aditya",
        "email": "kumaraditya@python.org",
        "time": "Tue Oct 20 10:03:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 10:03:36 2026"
      },
      "message": "gh-157361: Implement `aiter()` in Python instead of C (#157687)\n\ngh-157361: Implement aiter() in Python instead of C\n\nMove both forms of aiter() into the frozen _pybuiltins module and remove\nthe C async_callable_iterator types. The callable form now returns an\niterator whose __anext__() is a plain coroutine, so call-graph tools can\nsee through it into the awaited result of the callable."
    },
    {
      "commit": "4c73f50ca9885e5850dae64463e87cf5e80992a1",
      "tree": "a40affd978f00763ac4a741c897e9273b09ad72c",
      "parents": [
        "71ba39dc057941fb8ea032b813862a215bb3d5aa"
      ],
      "author": {
        "name": "Donghee Na",
        "email": "donghee.na@python.org",
        "time": "Tue Oct 20 04:00:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 04:00:42 2026"
      },
      "message": "gh-159813: Add a fast path for None in PyUnicodeWriter_WriteRepr (gh-159814)\n\n\nCo-authored-by: Victor Stinner \u003cvstinner@python.org\u003e"
    },
    {
      "commit": "71ba39dc057941fb8ea032b813862a215bb3d5aa",
      "tree": "2a4430442355111415e37143d3451f18f5512646",
      "parents": [
        "6044c6275dcfcb2f2fc49742920e4cfb094089a4"
      ],
      "author": {
        "name": "Victor Stinner",
        "email": "vstinner@python.org",
        "time": "Tue Oct 20 03:54:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 03:54:27 2026"
      },
      "message": "gh-159603: Use pthread_attr_get_np() on FreeBSD (#159604)\n\nUse pthread_attr_get_np() on FreeBSD to get the stack size (and guard\nsize) of the current thread.\n\nCheck if pthread_attr_get_np() function and \u003cpthread_np.h\u003e header are\navailable in configure.\n\nUpdate test_json.test_recursion. On FreeBSD 16 with a default stack size of\n512 MB, the json C implementation no longer raises RecursionError in\ntest_highly_nested_objects_encoding(). Reduce also max_depth from 5,000 to\n2,000 so test_highly_nested_objects_encoding() of the Python implementation\nonly takes 1.6 seconds, instead of 12 seconds."
    },
    {
      "commit": "6044c6275dcfcb2f2fc49742920e4cfb094089a4",
      "tree": "83bb7310a7f7e743d2fca709a0fcb9d4f934d2fc",
      "parents": [
        "9c239fb50a7f2821359ed3dc82993fba7da7d41c"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 02:31:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 02:31:36 2026"
      },
      "message": "gh-159739: Propagate macOS proxy conversion errors (#159750)\n\nPropagate Python exceptions from Core Foundation string conversion\ninstead of returning a result with an exception set."
    },
    {
      "commit": "9c239fb50a7f2821359ed3dc82993fba7da7d41c",
      "tree": "63f1b86f7938d9b7c46b2c39911464e5045c976c",
      "parents": [
        "626394e0a38bdf7734567f00a09837f09e653bff"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 02:31:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 02:31:16 2026"
      },
      "message": "gh-159739: Preserve the syntax error if metadata allocation fails (#159751)\n\nRestore the original exception when optional syntax-error metadata\ncannot be allocated."
    },
    {
      "commit": "626394e0a38bdf7734567f00a09837f09e653bff",
      "tree": "e164b2a06d8c7f120b27edf50e3dafca67f9dfab",
      "parents": [
        "9e262af9aebbad2abc975649036d6fc455bcb194"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 02:30:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 02:30:32 2026"
      },
      "message": "gh-159739: Handle interpreter configuration encoding errors (#159747)\n\nPropagate UTF-8 conversion errors before copying a string configuration\nvalue."
    },
    {
      "commit": "9e262af9aebbad2abc975649036d6fc455bcb194",
      "tree": "d5dd9e82db02cdf709bf3cc257727a1be6aa6291",
      "parents": [
        "5b0ab21364813b4f78e04a1a6b2805f6bdcc5d46"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 02:30:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 02:30:21 2026"
      },
      "message": "gh-159739: Handle module filename encoding errors (#159749)\n\nPropagate UTF-8 conversion errors before copying the module filename.\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "5b0ab21364813b4f78e04a1a6b2805f6bdcc5d46",
      "tree": "011faaeb43185fa8f88f89fd9e980028cdb3a5d4",
      "parents": [
        "0fba211fefd110e84cf3a064f7fde5074810bc95"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Tue Oct 20 02:29:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 02:29:25 2026"
      },
      "message": "gh-159739: Check character formatting allocation failure (#159746)\n\nPropagate the error from PyUnicode_FromOrdinal() before using the\nresult."
    },
    {
      "commit": "0fba211fefd110e84cf3a064f7fde5074810bc95",
      "tree": "f312f31b76db21c79c549abac5f8e9f28de10b5e",
      "parents": [
        "4c356f7731bfaa36a8b0195782716b790cbc4357"
      ],
      "author": {
        "name": "Bénédikt Tran",
        "email": "10796600+picnixz@users.noreply.github.com",
        "time": "Tue Oct 20 00:55:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 00:55:09 2026"
      },
      "message": "gh-159786: Convert HACL* update() errors in `_hmac` after releasing the lock (GH-159805)\n\n* gh-159786: Convert HACL* update() errors in `_hmac` after releasing the lock\n\n`_hacl_hmac_state_update_once()` converted the HACL* exit code into an\nexception while the thread state was detached and, for HMAC.update(),\nwhile the object\u0027s mutex was held. On debug builds, this re-attached the\nthread state under the mutex and then called PyErr_Occurred() with the\nthread state detached in the chunking loop of `_hacl_hmac_state_update()`.\n\nReturn the raw HACL* exit code instead and convert it in `_hmac.new()` and\n`_hmac.HMAC.update()` once the thread state is re-attached and the mutex\nis released, as `hmac_digest_compute_locked()` already does. Release\nbuilds keep ignoring the update() exit code.\n\nSince `_hacl_convert_errno()` is now always called with an attached\nthread state, remove the `PyGILState_Ensure()` added by gh-135561 and\nassert that a thread state is attached instead.\n\n* simplify ifdefs: always check for the hacl error\n\n---------\n\nCo-authored-by: Gregory P. Smith \u003cgreg@krypto.org\u003e"
    },
    {
      "commit": "4c356f7731bfaa36a8b0195782716b790cbc4357",
      "tree": "4a445398b8ae23357672a531273c025e94a6d451",
      "parents": [
        "e41b38b7cdcc901a13ec25d149d4cf2db03fe547"
      ],
      "author": {
        "name": "Paul Ganssle",
        "email": "1377457+pganssle@users.noreply.github.com",
        "time": "Tue Oct 20 00:52:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 00:52:25 2026"
      },
      "message": "Docs: Add a diagram of pathlib path components (#159727)\n\n* Docs: Add a diagram of pathlib path components\n\n* Use the pathlib SVG diagram in EPUB as well\n\n* Preserve pathlib diagram contrast in EPUB readers"
    },
    {
      "commit": "e41b38b7cdcc901a13ec25d149d4cf2db03fe547",
      "tree": "de34677a62795cad1d9ee20a3c474963e2ca9454",
      "parents": [
        "34fe59b878335856ddfec5137fc989f4ec36a973"
      ],
      "author": {
        "name": "Itamar Oren",
        "email": "itamarost@gmail.com",
        "time": "Tue Oct 20 00:50:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 00:50:16 2026"
      },
      "message": "gh-159759: Fix libpython.static in PEP 739 build-details.json (#159766)\n\nWhen a shared library is also built, point `libpython.static` at `LIBPL`,\nthe only place `make install` puts the static library, and don\u0027t list it for\nframework builds, which don\u0027t install one. Static-only builds keep the\nexisting `LIBDIR` value, which is installed in that configuration."
    },
    {
      "commit": "34fe59b878335856ddfec5137fc989f4ec36a973",
      "tree": "fee23e011dc8d49e1fb6114d0da5397020b100dc",
      "parents": [
        "fa8600cb1dd2ad33e95d3cfbed55208e35f5b472"
      ],
      "author": {
        "name": "Peter Bierma",
        "email": "zintensitydev@gmail.com",
        "time": "Tue Oct 20 00:32:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 00:32:08 2026"
      },
      "message": "gh-141004: Document `PY_AUDIT_READ` (GH-159720)\n\n\nCo-authored-by: Petr Viktorin \u003cencukou@gmail.com\u003e"
    },
    {
      "commit": "fa8600cb1dd2ad33e95d3cfbed55208e35f5b472",
      "tree": "dabecd56d5c1b320e1b143a1ca266da768208e43",
      "parents": [
        "01a683a3d4dcc8fa2b28873dbe6f57183899ad31"
      ],
      "author": {
        "name": "Lysandros Nikolaou",
        "email": "lisandrosnik@gmail.com",
        "time": "Tue Oct 20 00:05:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 00:05:29 2026"
      },
      "message": "gh-159799: Require pathlib.[Pure]Path for file paths in the PEG generator (#159800)\n\nThe pegen entry points now take `pathlib.Path` objects instead of\nstrings, and the command-line tools (`python -m pegen`, `keywordgen`,\n`first_sets`, `grammar_visualizer`) parse their path arguments into\n`Path` objects.\n\nThe generators\u0027 `generate` and `prepare` take a `pathlib.PurePath`\nsince they only use the file\u0027s name (for the \"generated by\" comment\nin the output) and callers pass names that are not files, such as\n`\"\u003cstring\u003e\"`."
    },
    {
      "commit": "01a683a3d4dcc8fa2b28873dbe6f57183899ad31",
      "tree": "e268c57253f285455b5f5b56d8166210462304ac",
      "parents": [
        "395d766d4f44e45ca4e9053b4761f115de122317"
      ],
      "author": {
        "name": "Tony",
        "email": "tony1225leung@gmail.com",
        "time": "Mon Oct 19 23:50:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 23:50:25 2026"
      },
      "message": "gh-158277: sqlite3 CLI completer: include views in column completion (GH-158278)"
    },
    {
      "commit": "395d766d4f44e45ca4e9053b4761f115de122317",
      "tree": "c0511e300883396a27f3af417696d9924e02f9a4",
      "parents": [
        "da6629cf667769f7740f27c4a56795d75616996c"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Mon Oct 19 22:56:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 22:56:57 2026"
      },
      "message": "gh-159739: Release replaced PyInitConfig strings (GH-159769)\n\n* gh-159739: Release replaced PyInitConfig strings\n\nBackport to 3.15 and 3.14.\n\n---------\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "da6629cf667769f7740f27c4a56795d75616996c",
      "tree": "fae8e927ed96a0c98d6e53ad941631106a57ccf7",
      "parents": [
        "4e3d5ecaad295c0b766019409c7e762497fd1d7d"
      ],
      "author": {
        "name": "Tian Gao",
        "email": "gaogaotiantian@hotmail.com",
        "time": "Mon Oct 19 22:41:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 22:41:59 2026"
      },
      "message": "gh-149309: Use BaseException as BdbQuit\u0027s base class (#149337)"
    },
    {
      "commit": "4e3d5ecaad295c0b766019409c7e762497fd1d7d",
      "tree": "4cad9457ceb2ee808f8d20452a0075e2ac83ebca",
      "parents": [
        "3f09229cb7f92106cd9afa7091eaf4443e8aaef6"
      ],
      "author": {
        "name": "Peter Bierma",
        "email": "zintensitydev@gmail.com",
        "time": "Mon Oct 19 22:29:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 22:29:35 2026"
      },
      "message": "gh-158418: Document that zero-arg `super` doesn\u0027t work with `ctypes.util.struct` (GH-159803)"
    },
    {
      "commit": "3f09229cb7f92106cd9afa7091eaf4443e8aaef6",
      "tree": "5334e48784256535e2a1e87b006dd0eb257c0b15",
      "parents": [
        "630920e45e2ee9fe9bef44bf4a70c95868c58afb"
      ],
      "author": {
        "name": "Peter Bierma",
        "email": "zintensitydev@gmail.com",
        "time": "Mon Oct 19 22:12:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 22:12:18 2026"
      },
      "message": "gh-78327: Use `PyObject_HashNotImplemented` for `ctypes` data types (GH-159736)"
    },
    {
      "commit": "630920e45e2ee9fe9bef44bf4a70c95868c58afb",
      "tree": "f794fba8c99b63ee1f320dfa159210161f04e75c",
      "parents": [
        "6297f8dc5167c49a62a9416cb840f3e116fb29e4"
      ],
      "author": {
        "name": "Tian Gao",
        "email": "gaogaotiantian@hotmail.com",
        "time": "Mon Oct 19 22:03:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 22:03:14 2026"
      },
      "message": "gh-149015: Fix clear_all_file_breaks for breakpoints sharing a line in bdb (#159748)"
    },
    {
      "commit": "6297f8dc5167c49a62a9416cb840f3e116fb29e4",
      "tree": "fd383c94162f434f8c892136f1358b7e494ad91e",
      "parents": [
        "4c34b7ebf15d4775323936278ab6ee9900671fa7"
      ],
      "author": {
        "name": "Peter Bierma",
        "email": "zintensitydev@gmail.com",
        "time": "Mon Oct 19 21:55:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:55:48 2026"
      },
      "message": "gh-141004: Document `Py_UniversalNewlineFgets` (GH-159713)"
    },
    {
      "commit": "4c34b7ebf15d4775323936278ab6ee9900671fa7",
      "tree": "2ab04499d0039d3dd5652e479df0c3081c02c9a3",
      "parents": [
        "36f7c130df22f512d3b81c73ee20b555ef1cb5ea"
      ],
      "author": {
        "name": "Peter Bierma",
        "email": "zintensitydev@gmail.com",
        "time": "Mon Oct 19 21:49:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:49:42 2026"
      },
      "message": "gh-141004: Document missing `pyport.h` macros (GH-159719)"
    },
    {
      "commit": "36f7c130df22f512d3b81c73ee20b555ef1cb5ea",
      "tree": "f622e279dc6871abb3e29a44a49b10d7deab71cb",
      "parents": [
        "0c4ca17441f0ae1006aa67b635886f0b48f264dd"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Mon Oct 19 21:45:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:45:20 2026"
      },
      "message": "gh-159739: Release resources on interpreter startup error paths (GH-159752)\n\nRelease path-file read buffers on early return and the command string\nwhen an audit hook rejects execution.\n\nBackport to 3.15 and 3.14.\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "0c4ca17441f0ae1006aa67b635886f0b48f264dd",
      "tree": "7bc6e3ea297f83fb535e3a88ee553f56dfb11817",
      "parents": [
        "29fd3b8b0988d540e5b679667947523f6039da6c"
      ],
      "author": {
        "name": "Itamar Oren",
        "email": "itamarost@gmail.com",
        "time": "Mon Oct 19 21:43:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:43:56 2026"
      },
      "message": "gh-157384: Document and test PyImport_CreateModuleFromInitfunc() semantics (GH-157389)\n\nDocument that single-phase init modules are added to sys.modules by\nthe call itself (unlike multi-phase init modules), and that the spec\nname identifies the module, so a later call with the same name and a\ndifferent init function reuses the cached module without calling the\nnew init function.  Add regression tests for both behaviors.\n\n\nCo-authored-by: Petr Viktorin \u003cencukou@gmail.com\u003e"
    },
    {
      "commit": "29fd3b8b0988d540e5b679667947523f6039da6c",
      "tree": "3dcb68eb61a777d41d6189610fb4ea577a8e4024",
      "parents": [
        "14cd72b0ca2c269b98e070e8509b1c5f8d8c1e75"
      ],
      "author": {
        "name": "Bénédikt Tran",
        "email": "10796600+picnixz@users.noreply.github.com",
        "time": "Mon Oct 19 21:29:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:29:17 2026"
      },
      "message": "gh-155833: GC-untrack MD5/SHA* objects before freeing the HACL* state (#155834)"
    },
    {
      "commit": "14cd72b0ca2c269b98e070e8509b1c5f8d8c1e75",
      "tree": "979514d8363409370a4124dcf8052c5f897d0e78",
      "parents": [
        "8b2a37361a227b813402fd98ca19f1a316bfe028"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Mon Oct 19 21:20:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:20:58 2026"
      },
      "message": "gh-159739: Release tuple items if resizing fails (GH-159754)\n\nRelease the references still held by the original tuple when\nreallocation fails.\n\nBackport to 3.15 and 3.14.\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "8b2a37361a227b813402fd98ca19f1a316bfe028",
      "tree": "6e7f0c6824080c5035156735a03b3076f5c5bfce",
      "parents": [
        "d1dd070f0c75621c06f7df048d5ce611df306b85"
      ],
      "author": {
        "name": "Peter Bierma",
        "email": "zintensitydev@gmail.com",
        "time": "Mon Oct 19 21:08:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:08:18 2026"
      },
      "message": "gh-112423: Clarify how to use `errcheck` for `ctypes` function pointers (GH-159776)"
    },
    {
      "commit": "d1dd070f0c75621c06f7df048d5ce611df306b85",
      "tree": "2ea10c4fbbf3e9b85d02dd927458bf0c5c1e1e1c",
      "parents": [
        "b2b0a337098e60fa9f84df7b53d191fbd8d4fc67"
      ],
      "author": {
        "name": "Savannah Ostrowski",
        "email": "savannah@python.org",
        "time": "Mon Oct 19 21:01:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:01:35 2026"
      },
      "message": "Remove Savannah from JIT and optimizer CODEOWNERS (#159775)"
    },
    {
      "commit": "b2b0a337098e60fa9f84df7b53d191fbd8d4fc67",
      "tree": "8770e62e194b88afa9d43f8f9e8a55b28903696c",
      "parents": [
        "6576fb46db1ac2c1280c852df637a66c3e5aada7"
      ],
      "author": {
        "name": "Jelle Zijlstra",
        "email": "jelle@openai.com",
        "time": "Mon Oct 19 20:42:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 20:42:04 2026"
      },
      "message": "gh-159739: Release SSL resources on error paths (GH-159745)\n\nFree decoded subject alternative names when certificate conversion\nfails, and close the key log file if the BIO allocation fails.\n\nBackport to 3.15 and 3.14.\n\nCo-authored-by: Jelle Zijlstra \u003cjelle.zijlstra@gmail.com\u003e"
    },
    {
      "commit": "6576fb46db1ac2c1280c852df637a66c3e5aada7",
      "tree": "6b80475be669e22b58b54896c1667927152d5713",
      "parents": [
        "597ae8fdc4cbd5e73c82d9df2a31fc8f836b79c4"
      ],
      "author": {
        "name": "Cody Maloney",
        "email": "cmaloney@users.noreply.github.com",
        "time": "Mon Oct 19 20:39:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 20:39:11 2026"
      },
      "message": "gh-87613: Use AC vectorcall for bytes and bytearray (#158891)\n\n* gh-87613: Use AC vectorcall for bytes and bytearray\n\nSpeeds up common construction of both objects. Enables optimizing\nconstruction off uniquely referenced temporary objects.\n\nPreviously the argument tuples / dictionaries required by the call\nprotocol resulted in arguments never being unique temporaries. With\nvectorcall they can be. Avoid copying by adopting the existing\nallocation when possible.\n\nBenchmark\nRun on my linux dev machine: PGO+LTO, clang 23, --with-tail-call-interp\n\n(note: AI Written, but I think sufficiently representative)\n```python\n\"\"\"bytes() and bytearray() construction.\n\ntemp/ passes a unique temporary (adopted, no copy); named/ binds the same\nsource to a name first so it is always copied.\n\"\"\"\nimport pyperf\n\nrunner \u003d pyperf.Runner()\n\nrunner.timeit(\u0027call/bytes()\u0027, \u0027bytes()\u0027)\nrunner.timeit(\u0027call/bytes(int)\u0027, \u0027bytes(16)\u0027)\nrunner.timeit(\u0027call/bytes(bytes)\u0027, \"bytes(b\u0027abcdefghabcdefgh\u0027)\")\nrunner.timeit(\"call/bytes(str, \u0027ascii\u0027)\", \"bytes(\u0027abcdefgh\u0027, \u0027ascii\u0027)\")\nrunner.timeit(\u0027call/bytearray()\u0027, \u0027bytearray()\u0027)\nrunner.timeit(\u0027call/bytearray(int)\u0027, \u0027bytearray(16)\u0027)\nrunner.timeit(\u0027call/bytearray(bytes)\u0027, \"bytearray(b\u0027abcdefghabcdefgh\u0027)\")\nrunner.timeit(\"call/bytearray(str, \u0027ascii\u0027)\",\n              \"bytearray(\u0027abcdefgh\u0027, \u0027ascii\u0027)\")\n\nfor size_name, size in ((\u002716B\u0027, 16), (\u00274KiB\u0027, 4096), (\u00271MiB\u0027, 1 \u003c\u003c 20)):\n    # Slicing in the statement makes a fresh unique temporary.\n    setup \u003d f\"b \u003d b\u0027x\u0027 * {size}; ba \u003d bytearray(b)\"\n    runner.timeit(f\u0027temp/bytes(bytearray) {size_name}\u0027,\n                  \u0027bytes(ba[1:])\u0027, setup)\n    runner.timeit(f\u0027named/bytes(bytearray) {size_name}\u0027,\n                  \u0027x \u003d ba[1:]; bytes(x); del x\u0027, setup)\n    runner.timeit(f\u0027temp/bytearray(bytes) {size_name}\u0027,\n                  \u0027bytearray(b[1:])\u0027, setup)\n    runner.timeit(f\u0027named/bytearray(bytes) {size_name}\u0027,\n                  \u0027x \u003d b[1:]; bytearray(x); del x\u0027, setup)\n    runner.timeit(f\u0027temp/bytearray(bytearray) {size_name}\u0027,\n                  \u0027bytearray(ba[1:])\u0027, setup)\n    runner.timeit(f\u0027named/bytearray(bytearray) {size_name}\u0027,\n                  \u0027x \u003d ba[1:]; bytearray(x); del x\u0027, setup)\n```\n\n| Benchmark                       | main    | patch                  |\n|---------------------------------|:-------:|:----------------------:|\n| temp/bytearray(bytearray) 1MiB  | 515 us  | 14.9 us: 34.53x faster |\n| temp/bytearray(bytes) 1MiB      | 508 us  | 14.8 us: 34.27x faster |\n| temp/bytes(bytearray) 1MiB      | 507 us  | 14.9 us: 34.05x faster |\n| temp/bytearray(bytes) 4KiB      | 144 ns  | 79.5 ns: 1.81x faster  |\n| temp/bytearray(bytearray) 4KiB  | 155 ns  | 94.7 ns: 1.63x faster  |\n| temp/bytearray(bytes) 16B       | 56.4 ns | 36.1 ns: 1.56x faster  |\n| temp/bytes(bytearray) 4KiB      | 150 ns  | 96.4 ns: 1.55x faster  |\n| temp/bytearray(bytearray) 16B   | 64.1 ns | 47.3 ns: 1.35x faster  |\n| call/bytes()                    | 14.7 ns | 11.1 ns: 1.32x faster  |\n| call/bytes(int)                 | 31.5 ns | 24.3 ns: 1.29x faster  |\n| call/bytes(str, \u0027ascii\u0027)        | 36.9 ns | 28.7 ns: 1.28x faster  |\n| call/bytes(bytes)               | 34.3 ns | 27.3 ns: 1.26x faster  |\n| temp/bytes(bytearray) 16B       | 59.4 ns | 49.5 ns: 1.20x faster  |\n| call/bytearray(str, \u0027ascii\u0027)    | 45.6 ns | 39.1 ns: 1.17x faster  |\n| call/bytearray(bytes)           | 44.3 ns | 38.9 ns: 1.14x faster  |\n| call/bytearray(int)             | 41.7 ns | 37.3 ns: 1.12x faster  |\n| named/bytearray(bytes) 16B      | 59.6 ns | 54.4 ns: 1.10x faster  |\n| named/bytes(bytearray) 16B      | 61.3 ns | 56.2 ns: 1.09x faster  |\n| named/bytearray(bytearray) 16B  | 65.3 ns | 60.9 ns: 1.07x faster  |\n| named/bytes(bytearray) 4KiB     | 154 ns  | 148 ns: 1.04x faster   |\n| call/bytearray()                | 22.1 ns | 21.4 ns: 1.03x faster  |\n| named/bytearray(bytearray) 4KiB | 156 ns  | 151 ns: 1.03x faster   |\n| named/bytearray(bytes) 4KiB     | 146 ns  | 143 ns: 1.02x faster   |\n| Geometric mean                  | (ref)   | 1.77x faster           |\n\nBenchmark hidden because not significant (3): named/bytes(bytearray) 1MiB,\nnamed/bytearray(bytes) 1MiB, named/bytearray(bytearray) 1MiB\n\n* Remove unique temporary adoption optimizations\n\nPyUnstable_Object_IsUniqueReferencedTemporary() can\u0027t tell when a C\ncaller still holds a borrowed reference to the argument (for example\nbisect.insort(lst, bytearray(b\u0027abc\u0027)[1:], key\u003dbytes)), so adopting the\nbuffer empties an object still in use. Leave the optimization for a\nfollow-up and keep this PR to the vectorcall change.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "597ae8fdc4cbd5e73c82d9df2a31fc8f836b79c4",
      "tree": "57069bcaa816be324eba52e02301d00d4896d542",
      "parents": [
        "7641c5d69152eafc6f0fb865fdb7b97b33967ba2"
      ],
      "author": {
        "name": "Peter Bierma",
        "email": "zintensitydev@gmail.com",
        "time": "Mon Oct 19 20:19:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 20:19:15 2026"
      },
      "message": "gh-55462: Document the `ctypes.wintypes` module (GH-159753)"
    },
    {
      "commit": "7641c5d69152eafc6f0fb865fdb7b97b33967ba2",
      "tree": "c15b35dd5dd68a79554a1718977a6fefabf4963f",
      "parents": [
        "1016f735349410e4caf0dc20b52b0c1a3e150dda"
      ],
      "author": {
        "name": "Bénédikt Tran",
        "email": "10796600+picnixz@users.noreply.github.com",
        "time": "Mon Oct 19 20:02:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 20:02:04 2026"
      },
      "message": "gh-145019: improve `SyntaxError` when `match` patterns bind different names (#145939)\n\nCo-authored-by: AN Long \u003caisk@users.noreply.github.com\u003e\nCo-authored-by: Petr Viktorin \u003cencukou@gmail.com\u003e"
    },
    {
      "commit": "1016f735349410e4caf0dc20b52b0c1a3e150dda",
      "tree": "3afd50fa468eaff6cacf287359e1da70cebe6bd5",
      "parents": [
        "5c75b50c9d416bf03f022aa2da1f2dbc550f80d1"
      ],
      "author": {
        "name": "Ethan Furman",
        "email": "ethan@stoneleaf.us",
        "time": "Mon Oct 19 19:52:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 19:52:54 2026"
      },
      "message": "gh-158856: convert `Enum._hashable_values_` to a set (GH-159250)"
    },
    {
      "commit": "5c75b50c9d416bf03f022aa2da1f2dbc550f80d1",
      "tree": "e433665a86fa63bc6c6b241f4e511294b44df155",
      "parents": [
        "769d44c87227c44d21ded11b06fb89cdebc64f2f"
      ],
      "author": {
        "name": "esadomer",
        "email": "54475303+esadomer@users.noreply.github.com",
        "time": "Mon Oct 19 19:49:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 19:49:26 2026"
      },
      "message": "gh-159322: NUL-terminate owner names in PAX base headers (GH-159329)\n\nCo-authored-by: Ethan Furman \u003cethan@stoneleaf.us\u003e"
    }
  ],
  "next": "769d44c87227c44d21ded11b06fb89cdebc64f2f"
}
