XACC provides a system-level software infrastructure for heterogeneous quantum-classical computing architectures. This initial 1.0.0 release provides the first iteration of the core XACC API which decomposes the quantum-classical programming workflow into frontend, middle-end, and backend architectural layers. The frontend contributes interfaces for mapping existing and future quantum languages to a core intermediate representation (IR). The middle-end defines the interfaces that make up this IR as well as optimizations and transformations of it. The backend defines the interfaces necessary for describing backend quantum computers (and simulators/emulators) in a hardware agnostic fashion.
This release also provides implementations of these core XACC interfaces for gate and adiabatic/annealing model quantum computation. We provide support for IBM, Rigetti, and D-Wave quantum computers. We further extend the core XACC API with support for error mitigation, circuit optimization, quantum language transpilers/compilers, quantum observables, and classical optimizers. Moreover, this release provides a prototype Python API wrapping the core C++ infrastructure.