Skip to content

v0.8.0a1

Pre-release
Pre-release
Compare
Choose a tag to compare
@idavis idavis released this 27 Dec 16:53
· 103 commits to main since this release
431959b

Notable changes from 0.7 to 0.8.0a1

  • LLVM 14 is now the default target.
  • QIR evaluation has been removed. Simulation of QIR is now available via the qir-runner sparse simulator.
  • BasicQisBuilder is now written in Python.
  • All QIS instructions are available in the pyqir.qis submodule
    • barrier, ccx, cx, cz, h, if_result, mz, reset, rx, ry, rz, s, s_adj, swap, t, t_adj, x, y, z
    • Of these,barrier, ccx, and swap are new.
  • PyQIR can generate QIR compatible with the QIR base profile preliminary spec
    • Module flags can now be generated
    • Attributes on functions can now be added and queried.
    • RT instructions are available in the pyqir.rt submodule
      • Output recording functions are now built-in: array_record_output, result_record_output, and tuple_record_output
    • Execution environment call, initialize, is now built-in
    • EntryPoint attribute is now entry_point
    • requiredQubits attribute is now num_required_qubits
    • requiredResults attribute is now num_required_results
    • __quantum__qis__mz__body signature has been updated. Its result parameter is now marked writeonly and the function call now has the irreversible attribute:
      before:
      declare void @__quantum__qis__mz__body(%Qubit*, %Result*) #1
      after:
      declare void @__quantum__qis__mz__body(%Qubit*, %Result* writeonly) #1
      attributes #1 = { "irreversible" }

Technical Changes

  • Inkwell has been removed as a dependency. Qirlib now uses LLVM-SYS and a custom wrapper around the LLVM C++ APIs.

What's Changed

Full Changelog: v0.7.0...v0.8.0a1