GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — gh-104602: ensure all cellvars are known up front by carljm · Pull Request #104603 · python/cpython

Conversation

@carljm

@carljm carljm commented May 18, 2023 •
edited by bedevere-bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Because u_cellvars and u_freevars share the same index-space and must not reuse the same indices, all cellvars must be populated in compiler_enter_scope, and never lazily. (So that freevars can begin at the right index offset.)

This means that compiler_enter_scope must already know about all cellvars up front, including those in inlined comprehensions.

But we can't promote all inlined-comprehension cells to be handled as cells throughout the function; if the name is global in outer scope, it must stay that way in order to resolve names correctly. So we need the symtable to record the fact that a symbol is a cellvar in an inlined scope, so compiler_enter_scope can include it in u_cellvars.

This issue only shows up in the case where we have an inlined comprehension containing both a cell var and a free var, and the cell var is a global in the outer scope.

  • Issue: PEP 709: Crash with lambda + nested scope #104602

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@carljm
pythongh-104602: ensure all cellvars are known up front
c1442c5
@bedevere-bot bedevere-bot mentioned this pull request May 18, 2023
PEP 709: Crash with lambda + nested scope #104602
Closed
@carljm
carljm requested a review from JelleZijlstra May 18, 2023 04:40
@carljm carljm added the skip news label May 18, 2023
@carljm
carljm marked this pull request as ready for review May 18, 2023 04:54
@carljm
carljm requested review from iritkatriel and markshannon as code owners May 18, 2023 04:54
@bedevere-bot bedevere-bot added the awaiting core review label May 18, 2023
@JelleZijlstra
Merge branch 'main' into nestedcomps
a382623
@JelleZijlstra

JelleZijlstra commented May 18, 2023

Copy link
Copy Markdown
Member

(Fixed the trivial merge conflict with #104528, will review the code tomorrow)

carljm reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@carljm
add another test and propagate DEF_COMP_CELL
9f814a4
@JelleZijlstra JelleZijlstra mentioned this pull request May 18, 2023
PEP 709: Comprehension iteration variable leaks into outer locals() #104619
Closed
JelleZijlstra
JelleZijlstra approved these changes May 18, 2023
View reviewed changes

@JelleZijlstra JelleZijlstra left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Looks good, left a suggestion for improving the test

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread Lib/test/test_listcomps.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot bedevere-bot added awaiting merge and removed awaiting core review labels May 18, 2023
carljm added 2 commits May 18, 2023 16:36
@carljm
improve new tests
96f17a8
@carljm
Merge branch 'main' into nestedcomps
54095f0
* main:
  pythongh-74690: Don't set special protocol attributes on non-protocol subclasses of protocols (python#104622)
  pythongh-104623: Update Windows installer to use SQLite 3.42.0 (python#104625)
  pythongh-104050: Add more type annotations to Argument Clinic (python#104628)
  pythongh-104629: Don't skip test_clinic if _testclinic is missing (python#104630)
  pythongh-104549: Set __module__ on TypeAliasType (python#104550)
  pythongh-104050: Improve some typing around `default`s and sentinel values (python#104626)
  pythongh-104146: Remove unused vars from Argument Clinic (python#104627)
  pythongh-104615: don't make unsafe swaps in apply_static_swaps (python#104620)
  pythonGH-104484: Add case_sensitive argument to `pathlib.PurePath.match()` (pythonGH-104565)
  pythonGH-96803: Document and test new unstable internal frame API functions (pythonGH-104211)
  pythonGH-104580: Don't cache eval breaker in interpreter (pythonGH-104581)
@carljm
carljm enabled auto-merge (squash) May 18, 2023 23:44
JelleZijlstra
JelleZijlstra approved these changes May 18, 2023
View reviewed changes
@carljm carljm linked an issue May 18, 2023 that may be closed by this pull request
PEP 709: Crash with lambda + nested scope #104602
Closed
@carljm
carljm merged commit 86e6f16 into python:main May 19, 2023
@bedevere-bot bedevere-bot removed the awaiting merge label May 19, 2023
@carljm
carljm deleted the nestedcomps branch May 19, 2023 00:08
JelleZijlstra added a commit to JelleZijlstra/cpython that referenced this pull request May 19, 2023
@JelleZijlstra
pythongh-104602: Add additional test for listcomp with lambda
e3fa00f
This threw a SystemError before python#104603. Adding a separate test
because this was a different failure mode than the other two new
tests from python#104603, both of which used to segfault.
@JelleZijlstra JelleZijlstra mentioned this pull request May 19, 2023
gh-104602: Add additional test for listcomp with lambda #104639
Merged
carljm pushed a commit that referenced this pull request May 19, 2023
@JelleZijlstra
gh-104602: Add additional test for listcomp with lambda (#104639)
dbe171e
This threw a SystemError before #104603. Adding a separate test
because this was a different failure mode than the other two new
tests from #104603, both of which used to segfault.
carljm added a commit to gsallam/cpython_with_perfmap_apii that referenced this pull request May 20, 2023
@carljm
Merge branch 'main' into gsallam/main
ea5965a
* main: (30 commits)
  pythongh-103987: fix several crashes in mmap module (python#103990)
  docs: fix wrong indentation causing rendering error in dis page (python#104661)
  pythongh-94906: Support multiple steps in math.nextafter (python#103881)
  pythongh-104472: Skip `test_subprocess.ProcessTestCase.test_empty_env` if ASAN is enabled (python#104667)
  pythongh-103839: Allow building Tkinter against Tcl 8.7 without external libtommath (pythonGH-103842)
  pythongh-85984: New additions and improvements to the tty library. (python#101832)
  pythongh-104659: Consolidate python examples in enum documentation (python#104665)
  pythongh-92248: Deprecate `type`, `choices`, `metavar` parameters of `argparse.BooleanOptionalAction` (python#103678)
  pythongh-104645: fix error handling in marshal tests (python#104646)
  pythongh-104600: Make type.__type_params__ writable (python#104634)
  pythongh-104602: Add additional test for listcomp with lambda (python#104639)
  pythongh-104640: Disallow walrus in comprehension within type scopes (python#104641)
  pythongh-103921: Rename "type" header in argparse docs (python#104654)
  Improve readability of `typing._ProtocolMeta.__instancecheck__` (python#104649)
  pythongh-96522: Fix deadlock in pty.spawn (python#96639)
  pythonGH-102818: Do not call `PyTraceBack_Here` in sys.settrace trampoline.  (pythonGH-104579)
  pythonGH-103545: Add macOS specific constants for ``os.setpriority`` to ``os`` (python#104606)
  pythongh-104623: Update macOS installer to SQLite 3.42.0 (pythonGH-104624)
  pythongh-104619: never leak comprehension locals to outer locals() (python#104637)
  pythongh-104602: ensure all cellvars are known up front (python#104603)
  ...
@JelleZijlstra JelleZijlstra self-assigned this Apr 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@JelleZijlstra JelleZijlstra JelleZijlstra approved these changes
@markshannon markshannon Awaiting requested review from markshannon markshannon is a code owner
@iritkatriel iritkatriel Awaiting requested review from iritkatriel iritkatriel is a code owner

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@JelleZijlstra JelleZijlstra

Labels

skip news

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

PEP 709: Crash with lambda + nested scope

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@carljm @JelleZijlstra @bedevere-bot
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.