python / python/cpython

Add C API to notify when tracing/profiling is enabled or disabled

Open
#144,690 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

interpreter-core topic-C-API topic-profiling type-feature
Dominant language
Python
Stars
77.2k
Forks
35.9k
PR merge metrics
PR metrics pending

Description

Feature or enhancement

Proposal:

There is currently no way to be notified when tracing/profiling is enabled or disabled. This forces tools that want different behavior based on tracing/profiling enablement (e.g., JIT compilers) to poll on every function call, adding significant overhead.
PEP-523 established frame evaluation hooks as an officially supported extension point for JITs. However, JITs using this API have no efficient way to know when tracing/profiling is enabled and fall back to the interpreter.
I propose adding a small C API enhancement allowing callbacks to be registered when trace/profile functions are set or cleared.

Has this already been discussed elsewhere?

No response given

Links to previous discussion of this feature:

No response

Linked PRs
  • gh-144691

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review PEP-523, the frame evaluation hooks, and the existing trace/profile function set and clear paths; the issue does not name specific files or tests. The work is done when a C API lets tools register callbacks for tracing/profiling enablement changes without polling, with behavior aligned to the linked PR gh-144691.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, python
Domain
api, backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.