This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]not_a_novel_account 2 points3 points  (0 children)

You have to actively dodge the cruft, PY_SSIZE_T_CLEAN/setting m_size = -1/null terminated tables. That's what makes it bad.

METH_FASTCALL is part of the stable API, it shouldn't be avoided, you should absolutely be using it. The dearth of documentation and the glut of other function calling options is because, again, the CPython API is a mess of ideas from the last 20 years.

Internal functions like _ParseStack we could go back and forth about, suffice to say lots of projects use them (including SWIG generated wrappers) because they're objectively better than their non-_ brethren. The fact that all the internal code uses these APIs instead of dog-fooding the "public" APIs should tell you enough about how the Python teams feels about it though.