Message345350
| Author |
vstinner |
| Recipients |
jdemeyer, petr.viktorin, scoder, vstinner |
| Date |
2019年06月12日.13:36:42 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1560346603.05.0.916903315017.issue37250@roundup.psfhosted.org> |
| In-reply-to |
| Content |
me:
> I understand that tp_vectorcall_offset=0 is fine and the expected value for a type which doesn't have the flag _Py_TPFLAGS_HAVE_VECTORCALL.
Jeroen Demeyer:
> Not necessarily. There are subtleties involved when subclassing: there are cases where tp_vectorcall_offset needs to be non-zero despite _Py_TPFLAGS_HAVE_VECTORCALL not being set. See also PR 13858.
Cython generates C code which looks like:
if (PyType_Ready(type) < 0) { ... handle error ... }
type->tp_print = 0;
This code can cause subtle and annoying issue if PR 13858 is merged. So that's another argument in favor of reintroducing tp_print in Python 3.8.
--
Cython has already been fixed to no longer set tp_print to 0 on Python 3.8:
https://github.com/cython/cython/commit/f10a0a391edef10bd37095af87f521808cb362f7
But again, this problem is not about correctness, but more about practical backward compatibility issues (see my first message). |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2019年06月12日 13:36:43 | vstinner | set | recipients:
+ vstinner, scoder, petr.viktorin, jdemeyer |
| 2019年06月12日 13:36:43 | vstinner | set | messageid: <1560346603.05.0.916903315017.issue37250@roundup.psfhosted.org> |
| 2019年06月12日 13:36:43 | vstinner | link | issue37250 messages |
| 2019年06月12日 13:36:42 | vstinner | create |
|