Skip to content

Commit

Permalink
bpo-43795: PEP-652: Clean up the stable ABI/limited API (GH-25482)
Browse files Browse the repository at this point in the history
- `_Py_EncodeLocaleRaw`, which is private by name, undocumented,
  and wasn't exported in `python3.dll`, is moved to a private header.
- `_Py_HashSecret_Initialized`, again private by name, undocumented,
  and not exported in `python3.dll`, is excluded with `Py_LIMITED_API`.
- `PyMarshal_*` and `PyMember_*One` functions, declared in private headers and
  not exported in `python3.dll`, are removed from `Doc/data/stable_abi.dat`.
- `PyMem_Calloc` which *was* exported in `python3dll.c`, is moved to public
  headers where it joins its other `PyMem_*` friends.

Only the last change is documented in the blurb; others are not user-visible.
(Nothing uses `Doc/data/stable_abi.dat` yet.)


https://bugs.python.org/issue43795
  • Loading branch information
encukou authored Apr 23, 2021
1 parent e7cc64e commit 9d6a2d0
Show file tree
Hide file tree
Showing 7 changed files with 7 additions and 14 deletions.
7 changes: 1 addition & 6 deletions Doc/data/stable_abi.dat
Original file line number Diff line number Diff line change
Expand Up @@ -351,16 +351,11 @@ PyMapping_Length
PyMapping_SetItemString
PyMapping_Size
PyMapping_Values
PyMarshal_ReadObjectFromString
PyMarshal_WriteLongToFile
PyMarshal_WriteObjectToFile
PyMarshal_WriteObjectToString
PyMem_Calloc
PyMem_Free
PyMem_Malloc
PyMem_Realloc
PyMemberDescr_Type
PyMember_GetOne
PyMember_SetOne
PyMemoryView_FromMemory
PyMemoryView_FromObject
PyMemoryView_GetContiguous
Expand Down
3 changes: 3 additions & 0 deletions Include/cpython/fileutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ PyAPI_FUNC(int) _Py_EncodeLocaleEx(
int current_locale,
_Py_error_handler errors);

PyAPI_FUNC(char*) _Py_EncodeLocaleRaw(
const wchar_t *text,
size_t *error_pos);

PyAPI_FUNC(PyObject *) _Py_device_encoding(int);

Expand Down
2 changes: 0 additions & 2 deletions Include/cpython/pymem.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ PyAPI_FUNC(void) PyMem_RawFree(void *ptr);
/* Try to get the allocators name set by _PyMem_SetupAllocators(). */
PyAPI_FUNC(const char*) _PyMem_GetCurrentAllocatorName(void);

PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize);

/* strdup() using PyMem_RawMalloc() */
PyAPI_FUNC(char *) _PyMem_RawStrdup(const char *str);

Expand Down
4 changes: 0 additions & 4 deletions Include/fileutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ PyAPI_FUNC(wchar_t *) Py_DecodeLocale(
PyAPI_FUNC(char*) Py_EncodeLocale(
const wchar_t *text,
size_t *error_pos);

PyAPI_FUNC(char*) _Py_EncodeLocaleRaw(
const wchar_t *text,
size_t *error_pos);
#endif

#ifndef Py_LIMITED_API
Expand Down
2 changes: 0 additions & 2 deletions Include/pyhash.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,13 @@ typedef union {
} expat;
} _Py_HashSecret_t;
PyAPI_DATA(_Py_HashSecret_t) _Py_HashSecret;
#endif

#ifdef Py_DEBUG
PyAPI_DATA(int) _Py_HashSecret_Initialized;
#endif


/* hash function definition */
#ifndef Py_LIMITED_API
typedef struct {
Py_hash_t (*const hash)(const void *, Py_ssize_t);
const char *name;
Expand Down
1 change: 1 addition & 0 deletions Include/pymem.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ extern "C" {
*/

PyAPI_FUNC(void *) PyMem_Malloc(size_t size);
PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize);
PyAPI_FUNC(void *) PyMem_Realloc(void *ptr, size_t new_size);
PyAPI_FUNC(void) PyMem_Free(void *ptr);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
:c:func:`PyMem_Calloc` is now available in the limited C API
(``Py_LIMITED_API``).

0 comments on commit 9d6a2d0

Please sign in to comment.