使用刚更新的 AGENTS.md 和 align-linuxcnc 加速规则执行
结论:按 align-linuxcnc 先确认干净基线,避免 source-map-only 和 smoke 扩展;增强 WASM Python C API symbol probe,覆盖 LinuxCNC src/emc/rs274ngc/gcodemodule.cc、interp_python.cc、interp_namedparams.cc 等 RS274 Python/remap 源已使用的 inert API 返回边界,包括 PyObject_Str、Py*_Check、PySequence_*、PyObject_*、PyArg_ParseTuple 和 Py_BuildValue。\n\n测试结论:./test-linuxcnc-wasm-python-c-api-symbols.sh、./test-native.sh、./test-linuxcnc-source-link.sh 均通过。
This commit is contained in:
@@ -36,9 +36,16 @@ int main() {
|
||||
if (PyUnicode_FromString("linuxcnc") != Py_None) {
|
||||
return 5;
|
||||
}
|
||||
if (PyObject_Str(Py_None) != Py_None) {
|
||||
return 16;
|
||||
}
|
||||
if (std::strcmp(PyUnicode_AsUTF8(Py_None), "") != 0) {
|
||||
return 6;
|
||||
}
|
||||
if (PyUnicode_Check(Py_None) != 0 || PyLong_Check(Py_None) != 0 || PyFloat_Check(Py_None) != 0 ||
|
||||
PyGen_Check(Py_None) != 0 || PyErr_ExceptionMatches(PyExc_KeyError) != 0) {
|
||||
return 17;
|
||||
}
|
||||
if (PyLong_FromLong(7) != Py_None || PyLong_AsLong(Py_None) != 0) {
|
||||
return 7;
|
||||
}
|
||||
@@ -51,9 +58,21 @@ int main() {
|
||||
if (PyList_New(2) != Py_None || PyList_SetItem(Py_None, 0, Py_None) != 0 || PyList_Size(Py_None) != 0) {
|
||||
return 10;
|
||||
}
|
||||
if (PyTuple_GetItem(Py_None, 0) != Py_None || PyList_GetItem(Py_None, 0) != Py_None ||
|
||||
PySequence_GetItem(Py_None, 0) != Py_None || PySequence_Length(Py_None) != 0) {
|
||||
return 18;
|
||||
}
|
||||
if (PyObject_IsTrue(Py_None) != 0 || PyCallable_Check(Py_None) != 0 || PyObject_IsInstance(Py_None, Py_None) != 0) {
|
||||
return 11;
|
||||
}
|
||||
if (PyObject_CallMethod(Py_None, const_cast<char *>("noop"), const_cast<char *>("")) != Py_None ||
|
||||
PyObject_GetAttrString(Py_None, "noop") != Py_None ||
|
||||
PyObject_SetAttrString(Py_None, "noop", Py_None) != 0) {
|
||||
return 19;
|
||||
}
|
||||
if (PyArg_ParseTuple(Py_None, "") != 0 || Py_BuildValue("i", 1) != Py_None) {
|
||||
return 20;
|
||||
}
|
||||
ProbeObject *probe = PyObject_New(ProbeObject, &PyList_Type);
|
||||
if (!probe || Py_TYPE(reinterpret_cast<PyObject *>(probe)) != &PyList_Type) {
|
||||
std::free(probe);
|
||||
|
||||
Reference in New Issue
Block a user