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-157495: Avoid Py_MIN()/Py_MAX() side effects by vstinner · Pull Request #157591 · python/cpython

Conversation

@vstinner

@vstinner vstinner commented Sep 15, 2026 •
edited by bedevere-app Bot
Loading

Uh oh!

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

Copy link
Copy Markdown
Member

Avoid calling Py_MIN() or Py_MAX() with non-trivial functions/expressions since these macros evaluate their arguments twice.

  • Issue: C API: Implement Py_MIN(), Py_MAX() and Py_ABS() macros using typeof() #157495

Sorry, something went wrong.

Uh oh!

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

All reactions
@vstinner
pythongh-157495: Avoid Py_MIN()/Py_MAX() side effects
e70baf3
Avoid calling Py_MIN() or Py_MAX() with non-trivial
functions/expressions since these macros evaluate their arguments
twice.
@vstinner
vstinner requested review from gpshead and methane as code owners September 15, 2026 21:13
@vstinner vstinner added the skip news label Sep 15, 2026
@vstinner
vstinner requested a review from markshannon as a code owner September 15, 2026 21:13
@bedevere-app bedevere-app Bot mentioned this pull request Sep 15, 2026
C API: Implement Py_MIN(), Py_MAX() and Py_ABS() macros using typeof() #157495
Closed
@bedevere-app bedevere-app Bot added the awaiting core review label Sep 15, 2026
@vstinner

vstinner commented Sep 15, 2026 •
edited
Loading

Uh oh!

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

Copy link
Copy Markdown
Member Author

@skirpichev: I checked Py_MIN/MAX/ABS calls in the Python code base and I found a few calls which are inefficient. I wrote this PR to fix them.

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

methane
methane approved these changes Sep 16, 2026
View reviewed changes
@bedevere-app bedevere-app Bot added awaiting merge and removed awaiting core review labels Sep 16, 2026
@vstinner
vstinner merged commit ba91215 into python:main Sep 16, 2026
59 checks passed

Uh oh!

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

@vstinner
vstinner deleted the macro_eval_once branch September 16, 2026 16:44
@bedevere-app bedevere-app Bot removed the awaiting merge label Sep 16, 2026
@vstinner

vstinner commented Sep 16, 2026

Copy link
Copy Markdown
Member Author

The duplicated safe_get_max_fd() and _PyDeadline_Get() is not great, but I don't think that it's worth it to backport this change. It's not a big deal to call these functions twice.

All reactions

Sorry, something went wrong.

Uh oh!

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

@vstinner

vstinner commented Sep 16, 2026

Copy link
Copy Markdown
Member Author

Merged. Thanks for the review @methane!

All reactions

Sorry, something went wrong.

Uh oh!

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

@areeq-hasan areeq-hasan mentioned this pull request Nov 9, 2026
Thread.join(timeout) can block forever: ThreadHandle_join reads the clock twice through Py_MAX (3.13, 3.14) #161712
Open
This was referenced Nov 10, 2026
[3.15] gh-161712: Read the clock once in ThreadHandle_join() #161771
Merged
gh-161712: Read the clock once in ThreadHandle_join() #161794
Closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@methane methane methane approved these changes
@gpshead gpshead Awaiting requested review from gpshead gpshead is a code owner
@markshannon markshannon Awaiting requested review from markshannon markshannon is a code owner

Uh oh!

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

Assignees

No one assigned

Labels

skip news

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

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

2 participants

@vstinner @methane
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 01402520 — 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.