For backwards compatibility, PyTypeObject will eventually have the flag: Py_TPFLAG_OMIT_PYOBJECT_SIZE, but from what I can tell, eventually all extensions should be using PyType_FromSpec/it's variants. the members I added are internal use only with external public API for extension users to grab their type's data structure (example: PyTupleObject for tuples') as well a properly allocation memory to the type. PyTypeObject.tp_obj_size is a member that holds the total size of the type's object structure (includes the size of it's immediate base type's structure), this will allow Python to properly allocate the correct amount of memory to contain the data. PyTypeObject.to_obj_offset is a member that holds the offset from the 'PyObject *' pointer to that type's internal data structure. A Python PEP has added the term "defining class" for C types that can make utilizing this member simpler, but it's scope will need to be expanded to include all possible C method definitions (It currently only supports fastcall). I am planning on replacing the two members with a private struct called "struct _type_memdata" to simplify readability of code using the members. I'm now leaning towards replacing the Static Library with a precompiled header (Those will not users from building DLLs as they're just a plain headers compiled to machine code used differently from obj files, I BELIEVE at least, haven't tested inlinability yet).