|
| 1 | +--- |
| 2 | +features: |
| 3 | + - | |
| 4 | + `QuantumCircuit::to_qasm3()` now uses a dedicated OpenQASM 3 exporter and |
| 5 | + declares symbolic circuit parameters as OpenQASM 3 `input float[64]` |
| 6 | + values before emitting parameterized gate operations. Generated input and |
| 7 | + register names are adjusted when needed to avoid OpenQASM 3 global symbol |
| 8 | + conflicts, including conflicts with custom gate definitions emitted by the |
| 9 | + exporter. The exporter also emits valid OpenQASM 3 for controlled-U1, |
| 10 | + controlled-U3, and global phase operations. |
| 11 | + - | |
| 12 | + Added `QuantumCircuit::parameter_symbols()`, which returns the sorted list |
| 13 | + of unique parameter symbol names used in the circuit. The OpenQASM 3 |
| 14 | + exporter consumes this list instead of collecting parameters on its own. |
| 15 | + This is currently a stub: the authoritative parameter table lives on the |
| 16 | + Rust side and there is no C-API yet to enumerate the symbols (only |
| 17 | + `qk_circuit_num_param_symbols`, the count), so the names are derived from |
| 18 | + the parameter expressions and the implementation is expected to be replaced |
| 19 | + by a C-API when one becomes available. Until then, parameter names must be |
| 20 | + recoverable as OpenQASM identifier tokens; the stub raises an exception if |
| 21 | + the harvested names do not match the Rust-side parameter count. |
| 22 | +issues: |
| 23 | + - | |
| 24 | + `QuantumCircuit::parameter_symbols()` (and therefore the OpenQASM 3 |
| 25 | + exporter) identifies parameters by their original symbol name. Distinct |
| 26 | + `Parameter` objects that share a name are treated as a single symbol, |
| 27 | + because qiskit-cpp cannot yet disambiguate parameters by UUID through the |
| 28 | + C-API. The Qiskit C-API reports same-name distinct symbols |
| 29 | + with `QkExitCode_ParameterNameConflict`. |
0 commit comments