<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body><div><div style="font-family: Calibri,sans-serif; font-size: 11pt;">I should also point out that when 3.6.0 releases, all of these will already be in the stable API for other platforms. I'm not going to take a stance on whether we can break it there between 3.6.0 and 3.6.1, but it may already be too late to remove any.<br><br>Top-posted from my Windows Phone</div></div><div dir="ltr"><hr><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">From: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:steve.dower@python.org">Steve Dower</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">Sent: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;">‎12/‎20/‎2016 17:56</span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">To: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:python-dev@python.org">Python Dev</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">Subject: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;">[Python-Dev] Issue #23903 - stable API is incomplete</span><br><br></div>For those who aren't aware, the stable API (PEP 384) is broken on <br>Windows because the exports from python3.dll have not been kept up to date.<br><br>Over at http://bugs.python.org/issue23903 we're trying to address this <br>by automatically generating the DLL based on the headers. This has shown <br>that many more functions and data items are in the stable ABI than expected.<br><br>If it's left entirely to me, I'm planning to add all the public APIs <br>into python3.dll, which will commit them to the stable API for good, and <br>remove the _private APIs that have been added since we last updated the DLL.<br><br>However, if you've added an API recently that you didn't mean to be in <br>the stable API, here is your chance to remove it. The full list of APIs <br>that have never been available on Windows in the stable ABI but are in <br>the headers are below. If it should not be considered long-term stable, <br>then it needs "#ifndef Py_LIMITED_API" around it.<br><br>Note that anything NOT on this list has already been released, and so it <br>cannot be removed from the stable API at this time. I want to resolve <br>this for 3.5.3 (that is, release all of these as stable and then it <br>cannot be undone), which is coming up very soon, so if any of the public <br>APIs should NOT be stable, please fix them, and if any of the private <br>APIs SHOULD be stable, they'll probably need version-specific guards <br>(see moduleobject.h).<br><br>Cheers,<br>Steve<br><br>Full list of APIs to be added to python3.dll:<br><br>PyAST_FromNode<br>PyAST_FromNodeObject<br>PyAST_Validate<br>PyCmpWrapper_Type<br>PyCodec_NameReplaceErrors<br>PyErr_GetExcInfo<br>PyErr_ResourceWarning<br>PyErr_SetExcFromWindowsErr<br>PyErr_SetExcFromWindowsErrWithFilename<br>PyErr_SetExcFromWindowsErrWithFilenameObject<br>PyErr_SetExcFromWindowsErrWithFilenameObjects<br>PyErr_SetExcInfo<br>PyErr_SetExcWithArgsKwargs<br>PyErr_SetFromErrnoWithFilenameObjects<br>PyErr_SetFromWindowsErr<br>PyErr_SetFromWindowsErrWithFilename<br>PyErr_SetImportError<br>PyErr_SetImportErrorSubclass<br>PyErr_SyntaxLocationEx<br>PyExc_BlockingIOError<br>PyExc_BrokenPipeError<br>PyExc_ChildProcessError<br>PyExc_ConnectionAbortedError<br>PyExc_ConnectionError<br>PyExc_ConnectionRefusedError<br>PyExc_ConnectionResetError<br>PyExc_FileExistsError<br>PyExc_FileNotFoundError<br>PyExc_InterruptedError<br>PyExc_IsADirectoryError<br>PyExc_ModuleNotFoundError<br>PyExc_NotADirectoryError<br>PyExc_PermissionError<br>PyExc_ProcessLookupError<br>PyExc_RecursionError<br>PyExc_ResourceWarning<br>PyExc_StopAsyncIteration<br>PyExc_TimeoutError<br>PyExc_WindowsError<br>PyImport_AddModuleObject<br>PyImport_ExecCodeModuleObject<br>PyImport_ImportFrozenModuleObject<br>PyImport_ImportModuleLevelObject<br>PyMarshal_ReadObjectFromString<br>PyMarshal_WriteLongToFile<br>PyMarshal_WriteObjectToFile<br>PyMarshal_WriteObjectToString<br>PyMem_Calloc<br>PyMember_GetOne<br>PyMember_SetOne<br>PyMemoryView_FromMemory<br>PyModuleDef_Init<br>PyModuleDef_Type<br>PyModule_AddFunctions<br>PyModule_ExecDef<br>PyModule_FromDefAndSpec2<br>PyModule_GetNameObject<br>PyModule_NewObject<br>PyModule_SetDocString<br>PyNode_AddChild<br>PyNode_Free<br>PyNode_ListTree<br>PyNode_New<br>PyNumber_InPlaceMatrixMultiply<br>PyNumber_MatrixMultiply<br>PyOS_CheckStack<br>PyOS_FSPath<br>PyObject_Calloc<br>PyObject_GenericSetDict<br>PyParser_SimpleParseStringFlagsFilename<br>PySys_AddXOption<br>PySys_GetXOptions<br>PyThread_GetInfo<br>PyThread_ReInitTLS<br>PyThread_acquire_lock<br>PyThread_acquire_lock_timed<br>PyThread_allocate_lock<br>PyThread_create_key<br>PyThread_delete_key<br>PyThread_delete_key_value<br>PyThread_exit_thread<br>PyThread_free_lock<br>PyThread_get_key_value<br>PyThread_get_stacksize<br>PyThread_get_thread_ident<br>PyThread_init_thread<br>PyThread_release_lock<br>PyThread_set_key_value<br>PyThread_set_stacksize<br>PyThread_start_new_thread<br>PyUnicode_AsMBCSString<br>PyUnicode_AsUCS4<br>PyUnicode_AsUCS4Copy<br>PyUnicode_AsWideCharString<br>PyUnicode_DecodeCodePageStateful<br>PyUnicode_DecodeLocale<br>PyUnicode_DecodeLocaleAndSize<br>PyUnicode_DecodeMBCS<br>PyUnicode_DecodeMBCSStateful<br>PyUnicode_EncodeCodePage<br>PyUnicode_EncodeLocale<br>PyUnicode_FindChar<br>PyUnicode_GetLength<br>PyUnicode_ReadChar<br>PyUnicode_Substring<br>PyUnicode_WriteChar<br>Py_DecodeLocale<br>Py_EncodeLocale<br>Py_FileSystemDefaultEncodeErrors<br>Py_SetPath<br>Py_hexdigits<br>_PyBytes_DecodeEscape<br>_PyDebug_PrintTotalRefs<br>_PyThreadState_Current<br>_PyTrash_thread_deposit_object<br>_PyTrash_thread_destroy_chain<br>_PyUnicode_DecodeUnicodeEscape<br>_Py_AddToAllObjects<br>_Py_ForgetReference<br>_Py_GetRefTotal<br>_Py_HashSecret_Initialized<br>_Py_NegativeRefcount<br>_Py_NewReference<br>_Py_PrintReferenceAddresses<br>_Py_PrintReferences<br>_Py_RefTotal<br>_______________________________________________<br>Python-Dev mailing list<br>Python-Dev@python.org<br>https://mail.python.org/mailman/listinfo/python-dev<br>Unsubscribe: https://mail.python.org/mailman/options/python-dev/steve.dower%40python.org<br></body></html>