cpython/Lib
Guido van Rossum bcce5e2718
gh-109039: Branch prediction for Tier 2 interpreter (#109038)
This adds a 16-bit inline cache entry to the conditional branch instructions POP_JUMP_IF_{FALSE,TRUE,NONE,NOT_NONE} and their instrumented variants, which is used to keep track of the branch direction.

Each time we encounter these instructions we shift the cache entry left by one and set the bottom bit to whether we jumped.

Then when it's time to translate such a branch to Tier 2 uops, we use the bit count from the cache entry to decided whether to continue translating the "didn't jump" branch or the "jumped" branch.

The counter is initialized to a pattern of alternating ones and zeros to avoid bias.

The .pyc file magic number is updated. There's a new test, some fixes for existing tests, and a few miscellaneous cleanups.
2023-09-11 18:20:24 +00:00
..
__phello__
asyncio gh-108903: Remove unneeded lambdas from asyncio (GH-108904) 2023-09-05 18:11:12 +03:00
collections gh-108751: Add copy.replace() function (GH-108752) 2023-09-06 23:55:42 +03:00
concurrent gh-107219: Fix concurrent.futures terminate_broken() (#109244) 2023-09-11 08:11:31 +00:00
ctypes gh-105751: test_ctypes avoids "from ctypes import *" (#105768) 2023-06-14 03:34:11 +00:00
curses gh-60436: fix curses textbox backspace/del (#103783) 2023-04-26 22:54:07 +02:00
dbm
email gh-106186: Don't report MultipartInvariantViolationDefect for valid multipart emails when parsing header only (#107016) 2023-07-23 12:25:18 +02:00
encodings gh-98433: Fix quadratic time idna decoding. (#99092) 2022-11-07 16:54:41 -08:00
ensurepip gh-106774: Update bundled pip version to 23.2.1 (#106775) 2023-07-25 10:59:25 +01:00
html gh-100210: Correct the comment link for unescaping HTML (#100212) 2023-02-19 11:18:12 +01:00
http gh-105626: Change the default return value of HTTPConnection.get_proxy_response_headers (#105628) 2023-07-13 23:55:49 -07:00
idlelib IDLE: Condense run.main threading.Thread start. (#106125) 2023-06-27 13:12:56 -04:00
importlib gh-109039: Branch prediction for Tier 2 interpreter (#109038) 2023-09-11 18:20:24 +00:00
json Revert "GH-96145: Add AttrDict to JSON module for use with object_hook (#96146)" (#105948) 2023-06-26 20:35:53 +02:00
logging gh-103384: Generalize the regex pattern BaseConfigurator.INDEX_PATTERN to allow spaces and non-alphanumeric characters in keys. (GH-103391) 2023-08-25 09:15:26 +01:00
multiprocessing gh-107219: Fix concurrent.futures terminate_broken() (#109244) 2023-09-11 08:11:31 +00:00
pydoc_data Python 3.12.0b1 2023-05-22 14:07:36 +02:00
re gh-56166: Deprecate passing confusing positional arguments in re functions (#107778) 2023-08-16 13:35:35 -07:00
site-packages
sqlite3 gh-108590: Revert gh-108657 (commit 400a1cebc) (#108686) 2023-08-30 14:53:10 +00:00
test gh-109039: Branch prediction for Tier 2 interpreter (#109038) 2023-09-11 18:20:24 +00:00
tkinter gh-72684: Tkinter: provide interface for "tk busy" subcommands (GH-107684) 2023-08-19 14:48:02 +03:00
tomllib bpo-40059: Add tomllib (PEP-680) (GH-31498) 2022-03-08 09:26:13 +01:00
turtledemo Rewrite the turtledemo makeGraphFrame method (#104224) 2023-05-06 11:09:08 -04:00
unittest gh-104090: Fix unittest collectedDurations resources leak (#106795) 2023-07-19 12:03:47 +01:00
urllib GH-104554: Add RTSPS support to urllib/parse.py (#104605) 2023-06-13 16:45:47 -07:00
venv gh-89427: Set VIRTUAL_ENV_PROMPT even when VIRTUAL_ENV_DISABLE_PROMPT… (GH-106643) 2023-07-13 07:08:33 +01:00
wsgiref bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
xml gh-50002: xml.dom.minidom now preserves whitespaces in attributes (GH-107947) 2023-08-23 15:23:41 +03:00
xmlrpc xmlrpc.client uses datetime.datetime.isoformat() (#105741) 2023-06-14 17:00:40 +02:00
zipfile gh-106752: Sync with zipp 3.16.2 (#106757) 2023-07-15 09:21:17 -04:00
zoneinfo Fix typos in documentation and comments (GH-102374) 2023-03-02 07:26:49 -08:00
__future__.py gh-93626: Set the release for __future__.annotations to None (GH-93628) 2022-07-05 10:46:39 +02:00
__hello__.py bpo-47084: Clear Unicode cached representations on finalization (GH-32032) 2022-03-22 13:53:51 +01:00
_aix_support.py gh-96305: Fix AIX build by avoiding subprocess during bootstrap (#96429) 2023-02-02 12:30:49 -08:00
_collections_abc.py gh-91896: Deprecate collections.abc.ByteString (#102096) 2023-05-04 09:39:33 -07:00
_compat_pickle.py gh-75552: Remove deprecated tkinter.tix module (GH-104902) 2023-05-27 12:34:19 -05:00
_compression.py
_markupbase.py
_opcode_metadata.py GH-108614: Add RESUME_CHECK instruction (GH-108630) 2023-09-07 14:39:03 +01:00
_osx_support.py
_py_abc.py
_pydatetime.py Docs: Fix typo in datetime.tzinfo docstring (#107257) 2023-09-06 21:29:46 +00:00
_pydecimal.py gh-86682: Adds sys._getframemodulename as an alternative to using _getframe (GH-99520) 2023-01-13 11:31:06 +00:00
_pyio.py gh-62948: IOBase finalizer logs close() errors (#105104) 2023-05-31 11:41:19 +00:00
_pylong.py gh-102515: Remove unused imports in the Lib/ directory (#102516) 2023-03-08 11:45:38 +00:00
_sitebuiltins.py
_strptime.py GH-90750: Use datetime.fromisocalendar in _strptime (#103802) 2023-04-27 10:27:27 -06:00
_threading_local.py
_weakrefset.py bpo-26579: Add object.__getstate__(). (GH-2821) 2022-04-06 20:00:14 +03:00
abc.py gh-87864: Use correct function definition syntax in the docs (#103312) 2023-04-11 16:50:25 +03:00
antigravity.py
argparse.py gh-103558: Add coverage tests for argparse (#103570) 2023-06-05 00:14:00 -07:00
ast.py gh-108469: Update ast.unparse for unescaped quote support from PEP701 [3.12] (#108553) 2023-09-05 21:01:23 +01:00
base64.py GH-102456: Fix docstring and getopt options for base64 (gh-102457) 2023-04-02 14:05:50 +09:00
bdb.py gh-101517: fix line number propagation in code generated for except* (#103550) 2023-04-24 21:58:51 +01:00
bisect.py GH-102833: Mention the key function in the docstrings (GH-103009) 2023-03-25 02:19:20 -05:00
bz2.py
calendar.py GH-108202: Document `calendar`'s command-line interface (#109020) 2023-09-06 21:19:54 +00:00
cmd.py gh-67248: cmd: Sort miscellaneous help topics (#92254) 2022-05-03 21:36:52 -06:00
code.py gh-102778: Add sys.last_exc, deprecate sys.last_type, sys.last_value,sys.last_traceback (#102779) 2023-03-18 11:47:11 +00:00
codecs.py gh-50644: Forbid pickling of codecs streams (GH-109180) 2023-09-10 20:06:09 +03:00
codeop.py Remove dead code in codeop.py (#105263) 2023-06-05 18:14:10 +02:00
colorsys.py gh-106498: Revert incorrect colorsys.rgb_to_hls change (#106627) 2023-07-11 11:07:20 -04:00
compileall.py GH-84559: Deprecate fork being the multiprocessing default. (#100618) 2023-02-02 15:50:35 -08:00
configparser.py Fix typo in configparser module docstring (#105652) 2023-06-11 15:06:42 +01:00
contextlib.py gh-102799: use sys.exception() instead of sys.exc_info() in contextlib (#103311) 2023-07-20 14:41:32 +05:30
contextvars.py
copy.py gh-108751: Add copy.replace() function (GH-108752) 2023-09-06 23:55:42 +03:00
copyreg.py gh-99325: Remove unused NameError handling (#99326) 2022-11-11 09:56:57 +00:00
cProfile.py gh-103935: Use io.open_code() when executing code in trace and profile modules (GH-103947) 2023-04-27 20:29:35 +00:00
csv.py gh-67230: add quoting rules to csv module (GH-29469) 2023-04-12 15:32:30 -07:00
dataclasses.py gh-108751: Add copy.replace() function (GH-108752) 2023-09-06 23:55:42 +03:00
datetime.py gh-84976: Add back UTC to datetime.__all__ (#104920) 2023-05-25 11:18:56 -04:00
decimal.py
difflib.py Correct method name typo (#91970) 2022-04-27 15:28:56 -06:00
dis.py gh-107932: Fix dis module for bytecode that does not have an associated source line (GH-107988) 2023-08-25 09:31:26 +01:00
doctest.py gh-108794: doctest counts skipped tests (#108795) 2023-09-02 16:42:07 +02:00
enum.py gh-109022: [Enum] require names=() to create empty enum type (GH-109048) 2023-09-07 18:19:03 -07:00
filecmp.py gh-93991: Use boolean instead of 0/1 for condition check (GH-93992) 2022-06-19 07:12:59 -07:00
fileinput.py gh-101961 fileinput.hookcompressed should not set the encoding value for the binary mode (gh-102068) 2023-02-21 12:10:29 +09:00
fnmatch.py gh-89973: Fix re.error in the fnmatch module. (GH-93072) 2022-06-05 11:46:29 +03:00
fractions.py gh-101825: Clarify that as_integer_ratio() output is always normalized (#101843) 2023-02-27 19:11:28 +00:00
ftplib.py bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
functools.py gh-107995: Fix doctest collection of functools.cached_property objects (#107996) 2023-08-18 15:44:38 +00:00
genericpath.py gh-101196: Make isdir/isfile/exists faster on Windows (GH-101324) 2023-02-08 14:34:24 +00:00
getopt.py bpo-44712: Replace "type(literal)" with corresponding builtin types (GH-27294) 2022-05-08 17:10:11 +03:00
getpass.py
gettext.py gh-62519: Make pgettext search plurals when translation is not found (#107118) 2023-07-23 16:08:28 +02:00
glob.py
graphlib.py
gzip.py gh-108111: Flush gzip write buffer before seeking, fixing bad writes (#108341) 2023-08-24 10:23:01 +02:00
hashlib.py gh-99108: Refactor _sha256 & _sha512 into _sha2. (#101924) 2023-02-15 22:08:20 -08:00
heapq.py Update: usage doc for heappushpop (GH-91451) 2022-04-17 23:12:33 -05:00
hmac.py
imaplib.py gh-94172: Remove keyfile, certfile and check_hostname parameters (#94173) 2022-11-03 18:32:25 +01:00
inspect.py gh-108751: Add copy.replace() function (GH-108752) 2023-09-06 23:55:42 +03:00
io.py gh-94169: Remove deprecated io.OpenWrapper (#94170) 2022-06-24 08:46:53 +02:00
ipaddress.py gh-87799: Improve the textual representation of IPv4-mapped IPv6 addresses (#29345) 2023-07-31 14:33:26 +00:00
keyword.py gh-103763: Implement PEP 695 (#103764) 2023-05-15 20:36:23 -07:00
linecache.py gh-92336: linecache.getline should not raise exceptions on decoding errors (GH-94410) 2022-06-30 10:18:18 +01:00
locale.py gh-104783: locale.getlocale() calls sys.getfilesystemencoding() (#105401) 2023-06-06 18:19:40 +00:00
lzma.py
mailbox.py bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
mimetypes.py bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
modulefinder.py
netrc.py netrc: Remove unused "import shlex" (#93311) 2022-06-03 20:14:58 -07:00
ntpath.py gh-106242: Make ntpath.realpath errors consistent with abspath when there are embedded nulls (GH-108248) 2023-08-22 00:16:02 +00:00
nturl2path.py
numbers.py gh-68163: Correct conversion of Rational instances to float (GH-25619) 2022-09-04 13:15:59 +01:00
opcode.py gh-109039: Branch prediction for Tier 2 interpreter (#109038) 2023-09-11 18:20:24 +00:00
operator.py
optparse.py
os.py gh-106046: Improve error message from os.fspath if __fspath__ is set to None (#106082) 2023-06-26 00:06:12 +01:00
pathlib.py GH-78722: Raise exceptions from pathlib.Path.iterdir() without delay. (#107320) 2023-09-02 16:08:03 +01:00
pdb.py gh-106670: Fix Pdb handling of chained Exceptions with no stacks. (#108865) 2023-09-06 09:41:56 +00:00
pickle.py gh-93627: Align Python implementation of pickle with C implementation of pickle (GH-103035) 2023-09-10 10:06:08 +03:00
pickletools.py
pkgutil.py gh-97850: Deprecate find_loader and get_loader in pkgutil (GH-98520) 2023-05-03 16:11:54 -07:00
platform.py gh-103977: compile re expressions in platform.py only if required (#103981) 2023-04-30 08:36:19 -07:00
plistlib.py gh-101992: update pstlib module documentation (#102133) 2023-03-04 13:35:25 -08:00
poplib.py gh-106200: Remove unused imports (#106201) 2023-06-28 11:55:41 +00:00
posixpath.py gh-101196: Make isdir/isfile/exists faster on Windows (GH-101324) 2023-02-08 14:34:24 +00:00
pprint.py gh-92546: Move pprint benchmark into pyperformance (GH-94613) 2022-07-25 11:30:13 -07:00
profile.py gh-103935: Use io.open_code() when executing code in trace and profile modules (GH-103947) 2023-04-27 20:29:35 +00:00
pstats.py bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
pty.py gh-96522: Fix deadlock in pty.spawn (#96639) 2023-05-19 13:22:43 +00:00
py_compile.py
pyclbr.py
pydoc.py gh-107782: Pydoc: fall back to __text_signature__ if inspect.signature() fails (GH-107786) 2023-08-11 20:51:36 +03:00
queue.py gh-90879: Fix missing parameter for put_nowait() (GH-91514) 2022-04-14 17:23:57 +09:00
quopri.py bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
random.py Fix an ironic typo in a code comment. (gh-109186) 2023-09-09 10:21:42 -05:00
reprlib.py gh-107409: set __wrapped__ attribute in reprlib.recursive_repr (#107410) 2023-08-10 06:55:49 +00:00
rlcompleter.py gh-92345: Import rlcompleter before sys.path is extended (#92346) 2022-05-05 21:24:16 +02:00
runpy.py gh-98040: Remove just the imp module (#98573) 2023-04-28 16:17:58 -07:00
sched.py
secrets.py gh-99305: Speed up secrets.token_hex() ~2x (#99306) 2022-11-11 14:45:24 -08:00
selectors.py gh-106751: Optimize _PolllikeSelector for many iteration case (gh-106884) 2023-07-20 09:53:11 +09:00
shelve.py gh-107089: Improve Shelf.clear method performance (gh-107090) 2023-07-29 09:08:11 +09:00
shlex.py bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
shutil.py gh-99203: shutil.make_archive(): restore select CPython <= 3.10.5 behavior (GH-99802) 2023-08-16 10:00:03 +03:00
signal.py
site.py gh-102038: Skip a sometimes unnecessary stat in site.py (#102039) 2023-04-02 15:47:31 -07:00
smtplib.py gh-65495: Use lowercase mail from and rcpt to in smtplib.SMTP (#107019) 2023-07-22 16:46:59 +02:00
socket.py Fix broken link to MSDN (#102355) 2023-03-13 15:15:52 +02:00
socketserver.py gh-103673: Add missing ForkingUnixStreamServer and ForkingUnixDatagramServer socketservers (#103674) 2023-04-24 22:35:52 +00:00
sre_compile.py bpo-47152: Convert the re module into a package (GH-32177) 2022-04-02 11:35:13 +03:00
sre_constants.py bpo-47152: Convert the re module into a package (GH-32177) 2022-04-02 11:35:13 +03:00
sre_parse.py bpo-47152: Convert the re module into a package (GH-32177) 2022-04-02 11:35:13 +03:00
ssl.py gh-108342: Break ref cycle in SSLSocket._create() exc (#108344) 2023-08-23 05:26:01 +00:00
stat.py gh-108638: Fix stat.filemode() when _stat is missing (#108639) 2023-08-29 15:46:46 +00:00
statistics.py gh-108322: Optimize statistics.NormalDist.samples() (gh-108324) 2023-08-27 08:59:40 -05:00
string.py
stringprep.py
struct.py
subprocess.py gh-106723: forward -Xfrozen_modules option to spawned process interpreters (#106724) 2023-07-28 05:04:26 +00:00
symtable.py Change list to view object (#93661) 2022-06-11 11:54:31 +01:00
sysconfig.py gh-106789: avoid importing pprint from sysconfig (#106790) 2023-07-17 10:28:33 +01:00
tabnanny.py gh-102856: Python tokenizer implementation for PEP 701 (#104323) 2023-05-21 01:03:02 +01:00
tarfile.py gh-107811: tarfile: treat overflow in UID/GID as failure to set it (#108369) 2023-08-23 20:00:07 +02:00
tempfile.py gh-51574: Make tempfile.mkdtemp() always return absolute paths (#94612) 2023-04-25 16:05:59 +00:00
textwrap.py gh-107369: optimize textwrap.indent() (#107374) 2023-07-29 06:37:23 +00:00
this.py
threading.py gh-102029: Deprecate passing arguments to _PyRLock in threading (#102071) 2023-08-17 09:19:07 -07:00
timeit.py gh-105052:update timeit function's description (#105060) 2023-08-27 03:22:27 -04:00
token.py gh-107015: Remove async_hacks from the tokenizer (#107018) 2023-07-26 16:34:15 +01:00
tokenize.py gh-71299: Fix __all__ in tokenize (#105907) 2023-06-19 13:31:57 +02:00
trace.py gh-103935: Use io.open_code() when executing code in trace and profile modules (GH-103947) 2023-04-27 20:29:35 +00:00
traceback.py gh-106922: Fix error location for constructs with spaces and parentheses (#108959) 2023-09-08 17:18:35 +01:00
tracemalloc.py
tty.py gh-85984: New additions and improvements to the tty library. (#101832) 2023-05-19 18:13:30 +00:00
turtle.py gh-107805: Fix signatures of module-level generated functions in turtle (#107807) 2023-09-01 01:18:15 -07:00
types.py gh-107576: Ensure __orig_bases__ are our own in get_original_bases (#107584) 2023-08-03 14:19:24 +00:00
typing.py gh-105509: Simplify implementation of typing.Annotated (#105510) 2023-09-01 13:57:25 -07:00
uuid.py gh-104396: uuid.py to skip platform check for emscripten and wasi (gh-104397) 2023-05-12 07:45:55 +09:00
warnings.py Fix docstring of warnings._deprecated to show correct remove value (#105178) 2023-06-01 08:07:52 +00:00
wave.py gh-105096: Deprecate wave getmarkers() method (#105098) 2023-05-31 12:09:41 +00:00
weakref.py Remove unnecessary registration of weakref.WeakSet to _collections_abc.Set (GH-32211) 2022-03-31 09:11:35 -05:00
webbrowser.py gh-105745: Fix open method of webbrowser.Konqueror (#105746) 2023-06-14 12:29:16 +02:00
zipapp.py gh-104527: zippapp will now avoid appending an archive to itself. (gh-106076) 2023-06-26 10:09:08 +01:00
zipimport.py gh-103200: Fix performance issues with zipimport.invalidate_caches() (GH-103208) 2023-07-07 22:02:13 +00:00