Message413918
| Author |
vstinner |
| Recipients |
vstinner |
| Date |
2022年02月24日.15:36:24 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1645716984.87.0.22272006941.issue46850@roundup.psfhosted.org> |
| In-reply-to |
| Content |
In Python 3.10, _PyEval_EvalFrameDefault() has the API:
PyObject* _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag);
In Python 3.11, bpo-44590 (commit ae0a2b756255629140efcbe57fc2e714f0267aa3 "Lazily allocate frame objects (GH-27077)") changed it to:
PyObject* _PyEval_EvalFrameDefault(PyThreadState *tstate, InterpreterFrame *frame, int throwflag);
Problem: InterpreterFrame is part of the internal C API.
By the way, PyInterpreterState.eval_frame type (_PyFrameEvalFunction) also changed. This field type already changed in Python 3.9:
* ``PyInterpreterState.eval_frame`` (:pep:`523`) now requires a new mandatory
*tstate* parameter (``PyThreadState*``).
(Contributed by Victor Stinner in :issue:`38500`.)
Maybe the Python 3.11 change should be documented in What's New in Python 3.11, as it was in What's New in Python 3.9.
I propose to move most _PyEval private functions to the internal C API to clarify that they must be used. |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2022年02月24日 15:36:24 | vstinner | set | recipients:
+ vstinner |
| 2022年02月24日 15:36:24 | vstinner | set | messageid: <1645716984.87.0.22272006941.issue46850@roundup.psfhosted.org> |
| 2022年02月24日 15:36:24 | vstinner | link | issue46850 messages |
| 2022年02月24日 15:36:24 | vstinner | create |
|