Author steve.dower
Recipients Alexander.Belopolsky, Arfrever, Christian.Tismer, Robin.Schreiber, amaury.forgeotdarc, belopolsky, haberman2, jcea, jhaberman, lekma, loewis, mattip, petr.viktorin, pitrou, seberg, steve.dower
Date 2021-09-27.19:16:29
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1632770189.96.0.927150535524.issue15870@roundup.psfhosted.org>
In-reply-to
Content
The section of documentation you reference explains that this behaviour is  not covered by the standard ("applied to a non-static variable like PyBaseObject_Type() is not required to produce an address constant"), and so static addresses of exported symbols do not have to be supported.

It also says that gcc supports it (I assume by generating dynamic code for getting the address) while MSVC does not (requiring you to write your own dynamic code). 

The conclusion, "tp_base should be set in the extension module’s init function," is exactly the right conclusion if you want your code to work across all the supported compilers. Invoking the C standard to explain why this looks similar to standard code but actually is not is totally fine.

Though I do note that the text can obviously be clearer. I assume it was written this way because of a discussion that started "but the C standard says ..." and so it was clarified to point out that this isn't actually the part of the spec that someone thought it was. If we can make it clearer, happy to, but it's certainly not incorrect as it stands.
History
Date User Action Args
2021-09-27 19:16:30steve.dowersetrecipients: + steve.dower, loewis, jcea, amaury.forgeotdarc, belopolsky, pitrou, Arfrever, petr.viktorin, lekma, Alexander.Belopolsky, mattip, Robin.Schreiber, seberg, Christian.Tismer, jhaberman, haberman2
2021-09-27 19:16:29steve.dowersetmessageid: <1632770189.96.0.927150535524.issue15870@roundup.psfhosted.org>
2021-09-27 19:16:29steve.dowerlinkissue15870 messages
2021-09-27 19:16:29steve.dowercreate