Skip to content

[WIP] bpo-35134: Create Include/pycapi/ subdirectory #10285

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

Closed
wants to merge 1 commit into from
Closed

[WIP] bpo-35134: Create Include/pycapi/ subdirectory #10285

wants to merge 1 commit into from

Conversation

vstinner
Copy link
Member

@vstinner vstinner commented Nov 1, 2018

  • Create Include/pycapi/ subdirectory
  • "make install" now creates $prefix/include/pycapi and copy
    Include/pycapi/* to $prefix/include/pycapi
  • Create Include/pycapi/pycapi_objimpl.h: move objimpl.h code
    surrounded by #ifndef Py_LIMITED_API to pycapi_objimpl.h.
  • objimpl.h includes pycapi/pycapi_objimpl.h

https://bugs.python.org/issue35134

* Create Include/pycapi/ subdirectory
* "make install" now creates $prefix/include/pycapi and copy
  Include/pycapi/* to $prefix/include/pycapi
* Create Include/pycapi/pycapi_objimpl.h: move objimpl.h code
  surrounded by #ifndef Py_LIMITED_API to pycapi_objimpl.h.
* objimpl.h includes pycapi/pycapi_objimpl.h
#ifdef __cplusplus
extern "C" {
#endif

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wanted to add:

#ifdef Py_LIMITED_API
#  error "Py_LIMITED_API must not be defined to include this header"
#endif

But this header should be include if Py_LIMITED_API is defined with a value.

Copy link
Contributor

@ncoghlan ncoghlan Nov 5, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you don't move PyObject_Calloc (because it's in the stable ABI in 3.5+), then you can add that guard to the unstable ABI header.

@@ -95,24 +95,9 @@ PyObject_{New, NewVar, Del}.
the raw memory.
*/
PyAPI_FUNC(void *) PyObject_Malloc(size_t size);
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03050000
PyAPI_FUNC(void *) PyObject_Calloc(size_t nelem, size_t elsize);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is in the stable API (since version 3.5). It should not be moved.

The same is for other functions, added to the stable API after 3.2.

@vstinner
Copy link
Member Author

I abandon this PR: moving PyObject_Calloc() was wrong, and "pycapi" name is too generic: I created a new PR #10624.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants