-
Notifications
You must be signed in to change notification settings - Fork 29
OPENQASM 3.1; is rejected as an unsupported version #397
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or requestgood first issueGood for newcomersGood for newcomersllm-assistedUsed LLMs to fine tune issue description.Used LLMs to fine tune issue description.no-qc-knowledge-reqdDoes not require knowledge of QC or QISDoes not require knowledge of QC or QISqasm3Related to openqasm3Related to openqasm3qasm3-coverageAdding support for qasm3 constructsAdding support for qasm3 constructs
Description
Activity
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestgood first issueGood for newcomersGood for newcomersllm-assistedUsed LLMs to fine tune issue description.Used LLMs to fine tune issue description.no-qc-knowledge-reqdDoes not require knowledge of QC or QISDoes not require knowledge of QC or QISqasm3Related to openqasm3Related to openqasm3qasm3-coverageAdding support for qasm3 constructsAdding support for qasm3 constructs
Limitation
The current OpenQASM specification is version 3.1, and the
version string section defines the
OPENQASM M.m;header where the minor version is optional.pyqasmhard-codes the accepted set to{"2", "2.0", "3", "3.0"}, so any program declaringitself as 3.1 is refused before analysis begins.
Example QASM failure
The identical program with
OPENQASM 3.0;validates and unrolls without issue, so nothingbeyond the header check is involved.
Change Requested
3.1alongside3and3.0.3.xand reject4.xand above witha message that names the highest supported major version. That way the next minor release
does not require another patch.
dumps()— a program that comes in as 3.1 must go outas 3.1, since the existing "preserve QASM version" behaviour ([FEATURE] Preserve QASM version #36) is relied on downstream.
Implementation Details
src/pyqasm/entrypoint.py:158, against theSUPPORTED_QASM_VERSIONSconstant.
src/pyqasm/modules/(qasm2.py,qasm3.py) dispatch on the parsedversion; confirm that a
3.1header routes toQasm3Moduleand that the version string isstored verbatim for serialisation rather than normalised to
3.0.mean full 3.1 semantic coverage. This change removes a blanket rejection so that 3.1-tagged
programs can be analysed; the remaining coverage gaps are tracked in the companion issues
filed alongside this one.
tests/test_entrypoint.py—OPENQASM 3.1;loads, unrolls, and round-trips with theversion preserved;
OPENQASM 4.0;still raises aValidationError.