The bpo-29137 removed the fpectl module. But two macros were kept in pyfpe.h: /* These macros used to do something when Python was built with --with-fpectl, * but support for that was dropped in 3.7. We continue to define them though, * to avoid breaking API users. */ #define PyFPE_START_PROTECT(err_string, leave_stmt) #define PyFPE_END_PROTECT(v) I propose to exclude them from the stable API. Maybe at least exclude them from the stable API >= 3.9? commit 735ae8d139a673b30b321dc10acfd3d14f0d633b Author: Nathaniel J. Smith <njs@pobox.com> Date: Fri Jan 5 23:15:34 2018 -0800 bpo-29137: Remove fpectl module (#4789) This module has never been enabled by default, never worked correctly on x86-64, and caused ABI problems that caused C extension compatibility. See bpo-29137 for details/discussion.
Python/pyfpe.c still contains two variables (PyFPE_jbuf and PyFPE_counter) and one function (PyFPE_dummy) for ABI compatibility: --- /* These variables used to be used when Python was built with --with-fpectl, * but support for that was dropped in 3.7. We continue to define them, * though, because they may be referenced by extensions using the stable ABI. */ #include "setjmp.h" jmp_buf PyFPE_jbuf; int PyFPE_counter; double PyFPE_dummy(void *dummy) { return 1.0; } ---