Am 01.04.14 13:45, schrieb Nick Coghlan:
Interesting to see the UCS2 removal there for 3.3. That's a genuine removal from the public ABI as part of PEP 393. I guess the reason nobody complained is because most 3.2 Linux builds used the UCS4 ABI instead, and the stable ABI hadn't seen broad adoption on Windows in the 3.2->3.3 time frame.
Not really. The intention was that the stable ABI wouldn't have any UCS2/UCS4 denotation in the function names, see http://hg.python.org/cpython/file/9186f4a18584/PC/python3.def Functions that explicitly referred to Py_UNICODE were banned from the ABI; functions that were mapped but shouldn't have been mapped were meant to be unmapped. However, it seems that this wasn't properly implemented, see http://bugs.python.org/issue17432
Regardless, this service already shows we've made some mistakes with the stable ABI in previous releases - it is indicating there are new symbols in the stable ABI for 3.3 and 3.4 that aren't properly guarded with version constraints. That means it is currently possible to set Py_LIMITED_API=0x03020000 and get something that won't actually run properly on 3.2.
Depends on the operating system. On Windows, the import library has much less additions; anything declared in the header files that is not in python3.def is a bug in the header files (by default). Regards, Martin