qdk icon indicating copy to clipboard operation
qdk copied to clipboard

OpenQASM Missing Language Features

Open orpuente-MS opened this issue 6 months ago • 0 comments

The following features are missing in our OpenQASM implementation, and we plan to implement them in the near future:

  • [ ] Index sets arr[{2, 6, 8}].
  • [ ] Support for OpenQASM 3.2 with nop instructions
  • [ ] Extern functions. #2680
  • [x] input arrays. [Array type variables are clarified to be supported as inputs.] #2678 (https://openqasm.com/release_notes.html#bug-fixes)
    • [x] Parser and Lowerer
    • [x] Compiler
    • [x] Python
  • [x] Array concatenation #2676
  • [x] durationof calls. #2611
  • [x] Mutable array references as parameters allowed by lowerer and used accordingly. (See below as they aren't supported past the lowerer) #2616
  • [x] Alias declarations for qubits. #2665
  • [ ] Built-in functions (sin, cos, etc.)
    • [x] Foundation and mod implementation #2508
    • [x] Implementation of builtin functions #2521
    • [ ] pow edge case: pow builtin collides with pow gate modifier.
  • [x] box statement. #2571
  • [x] sizeof calls. #2586
  • [x] Array references (passing arrays as readonly parameters). #2586
  • [x] Index into sized types. #2564
  • [x] Importing files other than "stdgates.inc". #2512
  • [x] Ranges with open start or end: [:1:5], [0:1:]. #2472

These features require work in the Q# compiler and we may implement them at some point, but not in the near future:

  • [ ] break keyword.
  • [ ] continue keyword.
  • [ ] Array references (passing arrays as mutable parameters).
  • [ ] alias declarations for bitarrays
  • [ ] register concatenation

These features are not planned for full compilation support:

  • Hardware qubit ids.
  • Duration type value, this includes supplying durations on gate and box instructions.
  • Stretch type values.
  • Calibration statements.
  • Calibration grammar statements.
  • Defcal statements.
  • Delay statements.

orpuente-MS avatar May 29 '25 15:05 orpuente-MS