  Quantum compiling fills the gap between the computing layer of high-level
quantum algorithms and the layer of physical qubits with their specific
properties and constraints. Quantum compiling is a hybrid between the
general-purpose compilers of computers, transforming high-level language to
assembly language and hardware synthesis by hardware description language,
where functions are automatically synthesized into customized hardware. Here we
review the quantum compiling stack of both gate model quantum computers and the
adiabatic quantum computers, respectively. The former involves low level qubit
control, quantum error correction, synthesis of short quantum circuits,
transpiling, while the latter involves the virtualization of qubits by
embedding of QUBO and HUBO problems on constrained graphs of physical qubits
and both quantum error suppression and correction. Commercial initiatives and
quantum compiling products are reviewed, including explicit programming
examples.
