OpenQASM Missing Language Features
- 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
Assessment
This issue has not been assessed yet.