Skip to content

v0.4.0a1

Pre-release
Pre-release
Compare
Choose a tag to compare
@idavis idavis released this 18 Apr 21:17
· 182 commits to main since this release
4f469b8

What'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 Results 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