v0.4.0a1
Pre-releaseWhat's Changed
- Enable qirlib to exist on its own by @idavis in #73
- Adding static result allocation. by @idavis in #103
- Bumping version to 0.4.0 and updating changelog by @idavis in #105
- Changing default value of use_static_result_alloc to
True
by @idavis in #106 - Release 0.4.0a1 by @idavis in #109
Breaking Changes
PR #106 changes the default way Result
s are emitted in emitted QIR.
The previous approach used call %Result* @__quantum__qis__m__body(%Qubit* null)
for measurement saving to a Result
variable. Along with this, branching used __quantum__rt__result_equal(%Result*, %Result*)
along with __quantum__rt__result_get_zero
and __quantum__rt__result_get_one
to perform branching.
The new default usage in 0.4.0a1
uses static Result
identifiers instead of dynamic Result
values. With that, measurement now uses "call void @__quantum__qis__mz__body(%Qubit*, %Result*)
which accepts the static Result
identifier. As a result, the pyqir-evaluator
can now see which Result
is being written to. Branching has also changed to use call i1 @__quantum__qir__read_result(%Result*)
which returns the boolean value of the Result
.
For the pyqir-generator
, the use of static and dynamic Qubit
and Result
can now be
configured via two new methods on the SimpleModule
class:
use_static_qubit_alloc(bool)
use_static_result_alloc(bool)
Full Changelog: v0.3.2a1...v0.4.0a1