Skip to content

OPENQASM 3.1; is rejected as an unsupported version #397

Description

@TheGupta2012

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.

pyqasm hard-codes the accepted set to {"2", "2.0", "3", "3.0"}, so any program declaring
itself as 3.1 is refused before analysis begins.

Example QASM failure

OPENQASM 3.1;
include "stdgates.inc";
qubit[1] q;
h q[0];
ValidationError: Unsupported OpenQASM version: 3.1.
                 Supported versions are: {'2', '2.0', '3', '3.0'}

The identical program with OPENQASM 3.0; validates and unrolls without issue, so nothing
beyond the header check is involved.

Change Requested

  1. Accept 3.1 alongside 3 and 3.0.
  2. Prefer a comparison over an enumerated set: accept any 3.x and reject 4.x and above with
    a message that names the highest supported major version. That way the next minor release
    does not require another patch.
  3. Preserve the declared version through dumps() — a program that comes in as 3.1 must go out
    as 3.1, since the existing "preserve QASM version" behaviour ([FEATURE] Preserve QASM version #36) is relied on downstream.
  4. Update the README and docs, which currently state OpenQASM 3.0 support.

Implementation Details

  • The check is in src/pyqasm/entrypoint.py:158, against the SUPPORTED_QASM_VERSIONS
    constant.
  • The module classes in src/pyqasm/modules/ (qasm2.py, qasm3.py) dispatch on the parsed
    version; confirm that a 3.1 header routes to Qasm3Module and that the version string is
    stored verbatim for serialisation rather than normalised to 3.0.
  • Worth stating explicitly in the issue resolution: accepting the 3.1 header does not by itself
    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: tests/test_entrypoint.pyOPENQASM 3.1; loads, unrolls, and round-trips with the
    version preserved; OPENQASM 4.0; still raises a ValidationError.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestgood first issueGood for newcomersllm-assistedUsed LLMs to fine tune issue description.no-qc-knowledge-reqdDoes not require knowledge of QC or QISqasm3Related to openqasm3qasm3-coverageAdding support for qasm3 constructs

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions