Initial support for Python 3.14
This commit is contained in:
@@ -62,6 +62,7 @@ add_library(pycxx STATIC
|
|||||||
bytes/python_3_11.cpp
|
bytes/python_3_11.cpp
|
||||||
bytes/python_3_12.cpp
|
bytes/python_3_12.cpp
|
||||||
bytes/python_3_13.cpp
|
bytes/python_3_13.cpp
|
||||||
|
bytes/python_3_14.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
add_executable(pycdas pycdas.cpp)
|
add_executable(pycdas pycdas.cpp)
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ DECLARE_PYTHON(3, 10)
|
|||||||
DECLARE_PYTHON(3, 11)
|
DECLARE_PYTHON(3, 11)
|
||||||
DECLARE_PYTHON(3, 12)
|
DECLARE_PYTHON(3, 12)
|
||||||
DECLARE_PYTHON(3, 13)
|
DECLARE_PYTHON(3, 13)
|
||||||
|
DECLARE_PYTHON(3, 14)
|
||||||
|
|
||||||
const char* Pyc::OpcodeName(int opcode)
|
const char* Pyc::OpcodeName(int opcode)
|
||||||
{
|
{
|
||||||
@@ -109,6 +110,7 @@ int Pyc::ByteToOpcode(int maj, int min, int opcode)
|
|||||||
case 11: return python_3_11_map(opcode);
|
case 11: return python_3_11_map(opcode);
|
||||||
case 12: return python_3_12_map(opcode);
|
case 12: return python_3_12_map(opcode);
|
||||||
case 13: return python_3_13_map(opcode);
|
case 13: return python_3_13_map(opcode);
|
||||||
|
case 14: return python_3_14_map(opcode);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
102
bytecode_ops.inl
102
bytecode_ops.inl
@@ -124,6 +124,104 @@ OPCODE(FORMAT_WITH_SPEC) // Python 3.13 ->
|
|||||||
OPCODE(MAKE_FUNCTION) // Python 3.13 ->
|
OPCODE(MAKE_FUNCTION) // Python 3.13 ->
|
||||||
OPCODE(TO_BOOL) // Python 3.13 ->
|
OPCODE(TO_BOOL) // Python 3.13 ->
|
||||||
|
|
||||||
|
OPCODE(BUILD_TEMPLATE) // Python 3.14 ->
|
||||||
|
OPCODE(BINARY_OP_INPLACE_ADD_UNICODE)
|
||||||
|
OPCODE(NOT_TAKEN)
|
||||||
|
OPCODE(POP_ITER)
|
||||||
|
OPCODE(BUILD_INTERPOLATION)
|
||||||
|
OPCODE(LOAD_COMMON_CONSTANT)
|
||||||
|
OPCODE(LOAD_FAST_BORROW)
|
||||||
|
OPCODE(LOAD_FAST_BORROW_LOAD_FAST_BORROW)
|
||||||
|
OPCODE(LOAD_SPECIAL)
|
||||||
|
OPCODE(BINARY_OP_ADD_FLOAT)
|
||||||
|
OPCODE(BINARY_OP_ADD_INT)
|
||||||
|
OPCODE(BINARY_OP_ADD_UNICODE)
|
||||||
|
OPCODE(BINARY_OP_EXTEND)
|
||||||
|
OPCODE(BINARY_OP_MULTIPLY_FLOAT)
|
||||||
|
OPCODE(BINARY_OP_MULTIPLY_INT)
|
||||||
|
OPCODE(BINARY_OP_SUBSCR_DICT)
|
||||||
|
OPCODE(BINARY_OP_SUBSCR_GETITEM)
|
||||||
|
OPCODE(BINARY_OP_SUBSCR_LIST_INT)
|
||||||
|
OPCODE(BINARY_OP_SUBSCR_LIST_SLICE)
|
||||||
|
OPCODE(BINARY_OP_SUBSCR_STR_INT)
|
||||||
|
OPCODE(BINARY_OP_SUBSCR_TUPLE_INT)
|
||||||
|
OPCODE(BINARY_OP_SUBTRACT_FLOAT)
|
||||||
|
OPCODE(BINARY_OP_SUBTRACT_INT)
|
||||||
|
OPCODE(CALL_ALLOC_AND_ENTER_INIT)
|
||||||
|
OPCODE(CALL_BOUND_METHOD_EXACT_ARGS)
|
||||||
|
OPCODE(CALL_BOUND_METHOD_GENERAL)
|
||||||
|
OPCODE(CALL_BUILTIN_CLASS)
|
||||||
|
OPCODE(CALL_BUILTIN_FAST)
|
||||||
|
OPCODE(CALL_BUILTIN_FAST_WITH_KEYWORDS)
|
||||||
|
OPCODE(CALL_BUILTIN_O)
|
||||||
|
OPCODE(CALL_ISINSTANCE)
|
||||||
|
OPCODE(CALL_KW_BOUND_METHOD)
|
||||||
|
OPCODE(CALL_KW_NON_PY)
|
||||||
|
OPCODE(CALL_KW_PY)
|
||||||
|
OPCODE(CALL_LEN)
|
||||||
|
OPCODE(CALL_LIST_APPEND)
|
||||||
|
OPCODE(CALL_METHOD_DESCRIPTOR_FAST)
|
||||||
|
OPCODE(CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS)
|
||||||
|
OPCODE(CALL_METHOD_DESCRIPTOR_NOARGS)
|
||||||
|
OPCODE(CALL_METHOD_DESCRIPTOR_O)
|
||||||
|
OPCODE(CALL_NON_PY_GENERAL)
|
||||||
|
OPCODE(CALL_PY_EXACT_ARGS)
|
||||||
|
OPCODE(CALL_PY_GENERAL)
|
||||||
|
OPCODE(CALL_STR_1)
|
||||||
|
OPCODE(CALL_TUPLE_1)
|
||||||
|
OPCODE(CALL_TYPE_1)
|
||||||
|
OPCODE(COMPARE_OP_FLOAT)
|
||||||
|
OPCODE(COMPARE_OP_INT)
|
||||||
|
OPCODE(COMPARE_OP_STR)
|
||||||
|
OPCODE(CONTAINS_OP_DICT)
|
||||||
|
OPCODE(CONTAINS_OP_SET)
|
||||||
|
OPCODE(FOR_ITER_GEN)
|
||||||
|
OPCODE(FOR_ITER_LIST)
|
||||||
|
OPCODE(FOR_ITER_RANGE)
|
||||||
|
OPCODE(FOR_ITER_TUPLE)
|
||||||
|
OPCODE(JUMP_BACKWARD_JIT)
|
||||||
|
OPCODE(JUMP_BACKWARD_NO_JIT)
|
||||||
|
OPCODE(LOAD_ATTR_CLASS)
|
||||||
|
OPCODE(LOAD_ATTR_CLASS_WITH_METACLASS_CHECK)
|
||||||
|
OPCODE(LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN)
|
||||||
|
OPCODE(LOAD_ATTR_INSTANCE_VALUE)
|
||||||
|
OPCODE(LOAD_ATTR_METHOD_LAZY_DICT)
|
||||||
|
OPCODE(LOAD_ATTR_METHOD_NO_DICT)
|
||||||
|
OPCODE(LOAD_ATTR_METHOD_WITH_VALUES)
|
||||||
|
OPCODE(LOAD_ATTR_MODULE)
|
||||||
|
OPCODE(LOAD_ATTR_NONDESCRIPTOR_NO_DICT)
|
||||||
|
OPCODE(LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES)
|
||||||
|
OPCODE(LOAD_ATTR_PROPERTY)
|
||||||
|
OPCODE(LOAD_ATTR_SLOT)
|
||||||
|
OPCODE(LOAD_ATTR_WITH_HINT)
|
||||||
|
OPCODE(LOAD_CONST_IMMORTAL)
|
||||||
|
OPCODE(LOAD_CONST_MORTAL)
|
||||||
|
OPCODE(LOAD_GLOBAL_BUILTIN)
|
||||||
|
OPCODE(LOAD_GLOBAL_MODULE)
|
||||||
|
OPCODE(LOAD_SUPER_ATTR_ATTR)
|
||||||
|
OPCODE(LOAD_SUPER_ATTR_METHOD)
|
||||||
|
OPCODE(RESUME_CHECK)
|
||||||
|
OPCODE(SEND_GEN)
|
||||||
|
OPCODE(STORE_ATTR_INSTANCE_VALUE)
|
||||||
|
OPCODE(STORE_ATTR_SLOT)
|
||||||
|
OPCODE(STORE_ATTR_WITH_HINT)
|
||||||
|
OPCODE(STORE_SUBSCR_DICT)
|
||||||
|
OPCODE(STORE_SUBSCR_LIST_INT)
|
||||||
|
OPCODE(TO_BOOL_ALWAYS_TRUE)
|
||||||
|
OPCODE(TO_BOOL_BOOL)
|
||||||
|
OPCODE(TO_BOOL_INT)
|
||||||
|
OPCODE(TO_BOOL_LIST)
|
||||||
|
OPCODE(TO_BOOL_NONE)
|
||||||
|
OPCODE(TO_BOOL_STR)
|
||||||
|
OPCODE(UNPACK_SEQUENCE_LIST)
|
||||||
|
OPCODE(UNPACK_SEQUENCE_TUPLE)
|
||||||
|
OPCODE(UNPACK_SEQUENCE_TWO_TUPLE)
|
||||||
|
OPCODE(ANNOTATIONS_PLACEHOLDER)
|
||||||
|
OPCODE(JUMP)
|
||||||
|
OPCODE(JUMP_NO_INTERRUPT)
|
||||||
|
OPCODE(SETUP_CLEANUP)
|
||||||
|
OPCODE(STORE_FAST_MAYBE_NULL)
|
||||||
|
|
||||||
/* Has parameter word */
|
/* Has parameter word */
|
||||||
OPCODE_A_FIRST(STORE_NAME) // Python 1.0 -> names[A]
|
OPCODE_A_FIRST(STORE_NAME) // Python 1.0 -> names[A]
|
||||||
OPCODE_A(DELETE_NAME) // Python 1.0 -> names[A]
|
OPCODE_A(DELETE_NAME) // Python 1.0 -> names[A]
|
||||||
@@ -269,6 +367,7 @@ OPCODE_A(LOAD_FAST_LOAD_FAST) // Python 3.13 -> A=locals
|
|||||||
OPCODE_A(SET_FUNCTION_ATTRIBUTE) // Python 3.13 -> A=attribute_type
|
OPCODE_A(SET_FUNCTION_ATTRIBUTE) // Python 3.13 -> A=attribute_type
|
||||||
OPCODE_A(STORE_FAST_LOAD_FAST) // Python 3.13 -> A=locals[A<<4]+locals[A&0xf]
|
OPCODE_A(STORE_FAST_LOAD_FAST) // Python 3.13 -> A=locals[A<<4]+locals[A&0xf]
|
||||||
OPCODE_A(STORE_FAST_STORE_FAST) // Python 3.13 -> A=locals[A<<4]+locals[A&0xf]
|
OPCODE_A(STORE_FAST_STORE_FAST) // Python 3.13 -> A=locals[A<<4]+locals[A&0xf]
|
||||||
|
OPCODE_A(LOAD_SMALL_INT) // Python 3.14 -> A=small int range(256)
|
||||||
|
|
||||||
/* Instrumented opcodes */
|
/* Instrumented opcodes */
|
||||||
OPCODE_A(INSTRUMENTED_LOAD_SUPER_ATTR) // Python 3.12 -> (see LOAD_SUPER_ATTR)
|
OPCODE_A(INSTRUMENTED_LOAD_SUPER_ATTR) // Python 3.12 -> (see LOAD_SUPER_ATTR)
|
||||||
@@ -290,3 +389,6 @@ OPCODE_A(INSTRUMENTED_END_SEND) // Python 3.12 -> (see END
|
|||||||
OPCODE_A(INSTRUMENTED_INSTRUCTION) // Python 3.12 -> A=(unused)
|
OPCODE_A(INSTRUMENTED_INSTRUCTION) // Python 3.12 -> A=(unused)
|
||||||
OPCODE_A(INSTRUMENTED_LINE) // Python 3.12 -> ???
|
OPCODE_A(INSTRUMENTED_LINE) // Python 3.12 -> ???
|
||||||
OPCODE_A(INSTRUMENTED_CALL_KW) // Python 3.13 -> (see CALL_KW)
|
OPCODE_A(INSTRUMENTED_CALL_KW) // Python 3.13 -> (see CALL_KW)
|
||||||
|
OPCODE_A(INSTRUMENTED_POP_ITER) // Python 3.14 -> (see POP_ITER)
|
||||||
|
OPCODE_A(INSTRUMENTED_NOT_TAKEN) // Python 3.14 -> (see NOT_TAKEN)
|
||||||
|
OPCODE_A(INSTRUMENTED_END_ASYNC_FOR) // Python 3.14 -> (see END_ASYNC_FOR)
|
||||||
|
|||||||
@@ -182,6 +182,12 @@ void PycModule::setVersion(unsigned int magic)
|
|||||||
m_unicode = true;
|
m_unicode = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MAGIC_3_14:
|
||||||
|
m_maj = 3;
|
||||||
|
m_min = 14;
|
||||||
|
m_unicode = true;
|
||||||
|
break;
|
||||||
|
|
||||||
/* Bad Magic detected */
|
/* Bad Magic detected */
|
||||||
default:
|
default:
|
||||||
m_maj = -1;
|
m_maj = -1;
|
||||||
@@ -197,7 +203,7 @@ bool PycModule::isSupportedVersion(int major, int minor)
|
|||||||
case 2:
|
case 2:
|
||||||
return (minor >= 0 && minor <= 7);
|
return (minor >= 0 && minor <= 7);
|
||||||
case 3:
|
case 3:
|
||||||
return (minor >= 0 && minor <= 12);
|
return (minor >= 0 && minor <= 14);
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ enum PycMagic {
|
|||||||
MAGIC_3_11 = 0x0A0D0DA7,
|
MAGIC_3_11 = 0x0A0D0DA7,
|
||||||
MAGIC_3_12 = 0x0A0D0DCB,
|
MAGIC_3_12 = 0x0A0D0DCB,
|
||||||
MAGIC_3_13 = 0x0A0D0DF3,
|
MAGIC_3_13 = 0x0A0D0DF3,
|
||||||
|
MAGIC_3_14 = 0x0A0D0E29,
|
||||||
|
|
||||||
INVALID = 0,
|
INVALID = 0,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user