7 // Workaround for Python issue 35810; no longer necessary in Python 3.8
8 PY_INCREF(type)
9#endif
10 return foo;
11}
确保 tp_dealloc堆分配类型的一切自定义函数都增加了类型的援用计数。
例:
1 static void
2foo_dealloc(foo_struct *instance) {
3 PyObject *type = Py_TYPE(instance);
4 PyObject_GC_Del(instance);
5#if PY_VERSION_HEX >= 0x03080000
6 // This was not needed before Python 3.8 (Python issue 35810)
7 Py_DECREF(type);
8#endif
9}
CPython字节码更改经过移动将块堆栈展开到编译器中的逻辑,简化了解释器循环。编译器如今收回显式指令,用于调整值堆栈并调用清算代码break,continue和 return。
删除操作码BREAK_LOOP,CONTINUE_LOOP, SETUP_LOOP和SETUP_EXCEPT。添加了新的操作码ROT_FOUR,BEGIN_FINALLY,CALL_FINALLY和 POP_FINALLY。改动了END_FINALLY和WITH_CLEANUP_START。 添加了新的操作码,END_ASYNC_FOR`用于处置在等候循环中的下一个项目时引发的异常。
【编辑引荐】
微软越来越接近开发一个适用的DNA数据存储系统
涵盖15个范围,GitHub 优质开源 Python 项目大合集
前端开发值得拥有的 VSCode 插件
阿里工程师开发了一款收费工具,提升Kubernetes运用开发效率
Vim哭了,阅读器就能远程VS Code开发,还支持Docker快速部署运转
(责任编辑:admin)