Release Notes¶
spec/v3.1.0-57¶
New Features¶
The types
booland (scalar)bitare now explicitly described as being completely interchangeable in expression (r-value) positions, and thatbitandbit[1]are distinct types. The difference between the typesboolandbitis only in their intended storage mechanisms;bitis the scalar of the register-typebit[n], which is explicitly a bit-packed type, so cannot be used as the base type of anarray, whileboolis a byte-aligned single-bit integer-like type.bit[1]is a register (sequence) type that happens to be of length one.
Adds a recommendation that pragmas and annotations start with a namespaced identifier to avoid naming collisions between pragmas and annotations specified by different implementations. To support namespaced annotations, the annotations keyword may now include a dotted (‘.’) list of identifiers.
Added an explicit no-operation statement
nop <qubits>;, which can be used to mark qubits as “used” by a scope (such as abox) without implying any operations on them. See Explicit no-operation for full details.
Known Issues¶
Clarified that
sizeof()does not operate on bit or qubit registers.
Removed the pow function from the built-in arithmetic functions list in the specification. The pow function could not be parsed by the reference grammar because it conflicted with the pow gate modifier. It was also not mentioned in the OpenQASM 3 paper. Use the ** operator instead.
Upgrade Notes¶
It has been clarified that arrays and registers of size zero are allowed; however, integers and angles must have size greater than zero.
The
qubittype is no longer a valid base type for anarray, and it is no longer stated that the register typequbit[n]is equivalent to anarray; there is no need for these semantics, and they clashed with the classical considerations and alignment concerns of arrays in general.
Bug Fixes¶
Fix a typo in a example of the
durationofkeyword.
Clarify that array type variables are supported as inputs.
Other Notes¶
Update copyright notices.