Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gh-77273: Better bytecodes for f-strings#6132

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
markshannon merged 6 commits intopython:mainfrommarkshannon:better-bytecode-fstring
Jun 14, 2023

Conversation

markshannon
Copy link
Member

@markshannonmarkshannon commentedMar 17, 2018
edited by bedevere-bot
Loading

Simplify and speed up interpreter for f-strings.

tldr; Do work in the compiler instead of the interpreter.

Splits the FORMAT_VALUE opcode into CONVERT_VALUE, FORMAT_SIMPLE and FORMAT_WITH_SPEC.
The compiler can then emit the optimal sequence for each format expression.

The three new opcodes are much simpler than the one they replace, actually removing a few lines of code from the interpreter.

The CONVERT_VALUE is emitted only if a conversion is present.
In the standard library only (approx) 20% of f-strings include a conversion.

FORMAT_WITH_SPEC is emitted if a format specifier is present.
Otherwise FORMAT_SIMPLE is emitted.
In the standard library about 70% of format expressions can be formatted with just the simple (and fast)
FORMAT_SIMPLE opcode.

https://bugs.python.org/issue33092

bluss and machinexa2 reacted with thumbs up emoji
@alimcmaster1
Copy link

Any update on this@taleinat suggested sharing benchmarks herehttps://bugs.python.org/issue33092.

Otherwise due to lack of activity I think we can close this.

@github-actions
Copy link

This PR is stale because it has been open for 30 days with no activity.

@furkanonder
Copy link
Contributor

CC:@rhettinger@ambv

@github-actionsgithub-actionsbot removed the staleStale PR or inactive for long period of time. labelMay 14, 2023
@markshannon
Copy link
MemberAuthor

Updated to use the new bytecode definition format.

Removes the conditional stack effect, simplifying tooling around these instructions.

@iritkatriel
Copy link
Member

Looks like you missed out the doc update.

@brettcannonbrettcannon removed their request for reviewJune 8, 2023 21:04
@markshannon
Copy link
MemberAuthor

#105678

@gvanrossumgvanrossum changed the titlebpo-33092: Better bytecodes for f-stringsgh-77273: Better bytecodes for f-stringsJun 12, 2023
Comment on lines +507 to +508
argval = (None, str, repr, ascii)[arg]
argrepr = ('', 'str', 'repr', 'ascii')[arg]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

since oparg 0 isn't a thing (right?), maybe write this as:

Suggested change
argval= (None,str,repr,ascii)[arg]
argrepr= ('','str','repr','ascii')[arg]
argval= (_,str,repr,ascii)[arg]
argrepr= (_,'str','repr','ascii')[arg]

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

What is_? We might not use the 0th item, but it still needs to be defined.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

IIUC _ is the convention for ‘unused value’.

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

For lvalues, sure, but this is an rvalue.

@markshannonmarkshannon merged commit1d857da intopython:mainJun 14, 2023
carljm added a commit to carljm/cpython that referenced this pull requestJun 15, 2023
* main: (57 commits)pythongh-105831: Fix NEWS blurb frompythongh-105828 (python#105833)pythongh-105820: Fix tok_mode expression buffer in file & readline tokenizer (python#105828)pythongh-105751, test_ctypes: Remove disabled tests (python#105826)pythongh-105821: Use a raw f-string in test_httpservers.py (python#105822)pythongh-105751: Remove platform usage in test_ctypes (python#105819)pythongh-105751: Reenable disable test_ctypes tests (python#105818)pythongh-105751: Remove dead code in test_ctypes (python#105817)  More reorganisation of the typing docs (python#105787)  Improve docs for `typing.dataclass_transform` (python#105792)pythonGH-89812: Churn `pathlib.Path` test methods (python#105807)pythongh-105800: Issue SyntaxWarning in f-strings for invalid escape sequences (python#105801)pythongh-105751: Cleanup test_ctypes imports (python#105803)pythongh-105481: add HAS_JUMP flag to opcode metadata (python#105791)pythongh-105751: test_ctypes avoids the operator module (pythonGH-105797)pythongh-105751: test_ctypes: Remove @need_symbol decorator (pythonGH-105798)pythongh-104909: Implement conditional stack effects for macros (python#105748)pythongh-75905: Remove test_xmlrpc_net: skipped since 2017 (python#105796)pythongh-105481: Fix types and a bug for pseudos (python#105788)  Update DSL docs for cases generator (python#105753)pythonGH-77273: Better bytecodes for f-strings (pythonGH-6132)  ...
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@iritkatrieliritkatrieliritkatriel approved these changes

@ericvsmithericvsmithAwaiting requested review from ericvsmith

@ericsnowcurrentlyericsnowcurrentlyAwaiting requested review from ericsnowcurrentlyericsnowcurrently is a code owner

@ncoghlanncoghlanAwaiting requested review from ncoghlanncoghlan is a code owner

@warsawwarsawAwaiting requested review from warsawwarsaw is a code owner

Assignees
No one assigned
Labels
None yet
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

7 participants
@markshannon@alimcmaster1@furkanonder@iritkatriel@the-knights-who-say-ni@ezio-melotti@bedevere-bot

[8]ページ先頭

©2009-2025 Movatter.jp