Skip to content
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unstable C API tier (PEP 689) #101101

Open
3 of 13 tasks
encukou opened this issue Jan 17, 2023 · 3 comments
Open
3 of 13 tasks

Unstable C API tier (PEP 689) #101101

encukou opened this issue Jan 17, 2023 · 3 comments
Labels
topic-C-API type-feature A feature request or enhancement

Comments

@encukou
Copy link
Member

encukou commented Jan 17, 2023

Add an Unstable C API tier as per PEP 689.

Other candidates for inclusion are below.
These usually need discussion first. This is a checklist for having the discussion.
Please try to not hold the individual discussions in this issue.

  • Dict watching API
  • Functions from PEP-523 not specified in PEP-689 (_PyEval_EvalFrameDefault & co.) -- this is a can of worms tho
  • FrameStack API (Add "unstable" frame stack api #91371)
  • _Py_HashDouble, see PEP 689 -- Add an unstable C-API tier #91744 (comment)
  • PyBytesObject.ob_shash sounds like a good candidate: see https://discuss.python.org/t/15108 (guess fields need a slightly different naming convention though. Sigh. That should have been in the PEP.)
  • non-opaque access to frame structs and any other key APIs needed to implement alternate eval loops with comparable performance to the default eval loop (unless & until we can figure out stable public APIs that can deliver equivalent performance) - see Nick's reply
  • C APIs that provide access to compiled code whether in AST or opcode form (the API itself may be stable, but the compiled code isn't) - see Nick's reply
  • PyLong_FromByteArray/PyUnstable_LongToBase30Digits: https://discuss.python.org/t/20045
  • Anything that starts with an underscore and is documented
  • Fast access to PyLong contents

Got any more?
I offer to move other API to the unstable tier myself, if there's a good usage example to base docs & regression tests on.

Linked PRs

@encukou encukou added type-feature A feature request or enhancement topic-C-API labels Jan 17, 2023
carljm added a commit to carljm/cpython that referenced this issue Feb 28, 2023
* main: (67 commits)
  pythongh-99108: Add missing md5/sha1 defines to Modules/Setup (python#102308)
  pythongh-100227: Move _str_replace_inf to PyInterpreterState (pythongh-102333)
  pythongh-100227: Move the dtoa State to PyInterpreterState (pythongh-102331)
  pythonGH-102305: Expand some macros in generated_cases.c.h (python#102309)
  Migrate to new PSF mailgun account (python#102284)
  pythongh-102192: Replace PyErr_Fetch/Restore etc by more efficient alternatives (in Python/) (python#102193)
  pythonGH-90744: Fix erroneous doc links in the sys module (python#101319)
  pythongh-87092: Make jump target label equal to the offset of the target in the instructions sequence (python#102093)
  pythongh-101101: Unstable C API tier (PEP 689) (pythonGH-101102)
  IDLE: Simplify DynOptionsMenu __init__code (python#101371)
  pythongh-101561: Add typing.override decorator (python#101564)
  pythongh-101825: Clarify that as_integer_ratio() output is always normalized (python#101843)
  pythongh-101773: Optimize creation of Fractions in private methods (python#101780)
  pythongh-102251: Updates to test_imp Toward Fixing Some Refleaks (pythongh-102254)
  pythongh-102296 Document that inspect.Parameter kinds support ordering (pythonGH-102297)
  pythongh-102250: Fix double-decref in COMPARE_AND_BRANCH error case (pythonGH-102287)
  pythongh-101100: Fix sphinx warnings in `types` module (python#102274)
  pythongh-91038: Change default argument value to `False` instead of `0` (python#31621)
  pythongh-101765: unicodeobject: use Py_XDECREF correctly (python#102283)
  [doc] Improve grammar/fix missing word (pythonGH-102060)
  ...
@corona10
Copy link
Member

corona10 commented Mar 1, 2023

@encukou #101102 caused the refleak test failure with my local machine
I submitted the related patch: #102350
See also: https://buildbot.python.org/all/#/builders/840/builds/390

@CAM-Gerlach
Copy link
Member

Hey @encukou , with the feature freeze coming up, do you have an update on the status here?

@encukou
Copy link
Member Author

encukou commented May 2, 2023

Changes described the PEP are in. Waiting for SC approval for a change before I mark it Final: python/steering-council#185

I won't be able to start all the discussions I want before beta, so the issue will stay open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic-C-API type-feature A feature request or enhancement
3 participants