Title: Centralized documentation of assumptions made by C code
Type: Stage:
Components: Documentation Versions: Python 3.6
Status: open Resolution:
Dependencies: Superseder:
Assigned To: docs@python Nosy List: benjamin.peterson, docs@python, tvanslyke
Priority: normal Keywords:

Created on 2018-03-11 18:17 by tvanslyke, last changed 2018-03-12 06:29 by benjamin.peterson.

Messages (2)
msg313607 - (view) Author: Timothy VanSlyke (tvanslyke) Date: 2018-03-11 18:17
It would be nice for those who write C extensions to have a resource that explicitly states what assumptions are made by the CPython implementation that are otherwise implementation-defined in standard C.  

For example, Python versions >= 3.6 require:
- That UCHAR_MAX is defined to be 255 (from Python.h)
- That fixed-width intXX_t and uintXX_t types are provided in stdint.h and inttypes.h (from PEP7)

These two requirements also pretty much guarantee that CHAR_BIT == 8.  These kinds of things are nice to know for anybody working with the C API; we can make the same assumptions in our own code without having hunt through the API docs or the CPython source tree every time something comes up.

From what I've found, there isn't any component of the documentation that explicitly lists these assumptions in one place (I apologize if there is and I somehow missed it...).  Could this be addressed in the future?  

msg313634 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2018-03-12 06:29
In general, we try to confine ourselves to C99 aside from widely supported extensions like intXX_t (no one wants to go around writing int_least32_t).
Date User Action Args
2018-03-12 06:29:39benjamin.petersonsetnosy: + benjamin.peterson
messages: + msg313634
2018-03-11 18:17:26tvanslykecreate