classification
Title: Prepare CPython for opaque PyObject structure.
Type: enhancement Stage: patch review
Components: C API, Interpreter Core Versions: Python 3.10
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: WildCard65, ronaldoussoren, vstinner
Priority: normal Keywords: patch

Created on 2020-07-01 17:43 by WildCard65, last changed 2020-07-07 19:55 by ronaldoussoren.

Pull Requests
URL Status Linked Edit
PR 21262 open WildCard65, 2020-07-01 17:45
Messages (1)
msg372775 - (view) Author: William Pickard (WildCard65) * Date: 2020-07-01 17:43
The goal of issue 39573 is to make "PyObject" and opaque structure in the limited API.

To do that, a few mandatory changes will be required to CPython in order to allow for seamless implementation.

Namely:
1) User types need to get away from directly referencing PyObject.
    - This can be done by adding a new variable to "PyTypeObject" who's value is an offset into the object's pointer to the type's internal structure.
        -- Example: 'PyType_Type.tp_obj_offset' would be the value of "sizeof(PyVarObject)".
        -- For custom types with another base: The value would be calculated from the base's "tp_obj_offset" + "tp_basicsize"

2) Create a linkable static library to facility method calls requiring internal implementation.
    - This static library will be implementation defined, IE: using internal methods specific to the runtime that created it.
    - Public facing methods will use generic names for example, "PyObject_GetType" will get the object's ob_type (or whatever the target runtime calls it).
History
Date User Action Args
2020-07-07 19:55:22ronaldoussorensetnosy: + ronaldoussoren
2020-07-01 17:45:18WildCard65setkeywords: + patch
stage: patch review
pull_requests: + pull_request20415
2020-07-01 17:43:02WildCard65create