**Release Highlights**
This project is under development for 1.5 years as an internal tool to learn, implement and benchmark quantum error correction using surface code. During this period we've made it a versatile tool that supports multiple different decoders (including
- MWPM decoder
- Offer decoder
- Union-Find decoder
- Distributed Union-Find decoder
) on several variants of surface codes (including
- standard and rotated CSS surface code
- rectangular and rotated XZZX surface code
- rotated tailored surface code
) under different error types (including
- single-qubit Pauli errors (pX, pY, pZ) and erasure errors (pE)
- two-qubit correlated Pauli errors (pXI, pXX, pXZ, pXY, pYI, pYX, ...) and erasure errors (pEI, pIE, pEE)
) with highly configurable error model (including
- code capacity error model (errors only on data qubits, without any measurement errors)
- phenomenological error model (errors only on data qubits and pure measurement errors)
- circuit-level error model (errors on both data qubits and ancilla qubits and between any gates)
- any error model, not limited to i.i.d. ones
). But, when I tried to implement an improved MWPM decoder for tailored surface code, I found I need a major upgrade of the code structure to implement it. Also, we need to isolate the functionality of surface code simulator and decoders, for better code structure and to ease maintenance.