Since the 1.2 and 1.3 release we have an increasing amount of Qiskit's internal data model expose to rust. This has led to anything not defined as a rust-native object with a python interface on top as becoming a potential bottleneck as it limits what we're able to do in pure rust. For example, creating bit objects is often the bottleneck for circuit construction/synthesis and in #13238 creating UnitaryGate objects is taking ~60% of the time to construct the circuit (and those are just containers that wrap a numpy array we already created). This issue is for tracking the last pieces necessary to fully create a circuit through a default transpilation pipeline without needing to call Python. The current list of work items is:
It should be noted this doesn't preclude extending the data model from Python as is supported now, we have provisions in place already for things where the data model supported this like custom instructions and gates, and we should still support these use cases. It's more about ensuring we have a complete core data model in rust so that we can do manipulations of the qiskit defined pieces in rust without needing Python.
Since the 1.2 and 1.3 release we have an increasing amount of Qiskit's internal data model expose to rust. This has led to anything not defined as a rust-native object with a python interface on top as becoming a potential bottleneck as it limits what we're able to do in pure rust. For example, creating bit objects is often the bottleneck for circuit construction/synthesis and in #13238 creating
UnitaryGateobjects is taking ~60% of the time to construct the circuit (and those are just containers that wrap a numpy array we already created). This issue is for tracking the last pieces necessary to fully create a circuit through a default transpilation pipeline without needing to call Python. The current list of work items is:ParameterExpression#13267QuantumRegisterandClassicalRegister#13270Vartype #13274UnitaryGateclass #13272It should be noted this doesn't preclude extending the data model from Python as is supported now, we have provisions in place already for things where the data model supported this like custom instructions and gates, and we should still support these use cases. It's more about ensuring we have a complete core data model in rust so that we can do manipulations of the qiskit defined pieces in rust without needing Python.