microsoft / microsoft/qdk

OpenQASM Missing Language Features

Open
#2,471 0 comments 0 reactions 1 assignee Claimed by @idavis View on GitHub
bug needs triage
Dominant language
Rust
Stars
1k
Forks
212
Avg merge
3d 8h
Merged PRs (30d)
65

Description

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}]`.](https://openqasm.com/language/types.html#register-concatenation-and-slicing)
- need some clarification from the spec. [issue filed](https://github.com/openqasm/openqasm/issues/622)
- [ ] Support for OpenQASM 3.2 with [`nop` instructions](https://openqasm.com/language/insts.html#nop)
- [ ] 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
- [x] Built-in functions (`sin`, `cos`, etc.)
- [x] Foundation and `mod` implementation #2508
- [x] Implementation of builtin functions #2521
- [x] ~~`pow` edge case~~: pow builtin collides with pow gate modifier, so it was removed from the spec
- [x] `box` statement. #2571
- [x] `sizeof` calls. #2586
- [x] Array references (passing arrays as `readonly` parameters). #2586
- [x] [Index into sized types.](https://openqasm.com/language/types.html#classical-value-bit-slicing) #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](https://openqasm.com/language/types.html#register-concatenation-and-slicing)

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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.