All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Added for new features.
- Changed for changes in existing functionality.
- Fixed for any bug fixes.
- Removed for now removed features.
- Add
MIPMapperdocumentation - Add Single Gate Multi Qubit (SGMQ) notation to the
CircuitBuilder - The cycle time [seconds] can be set when instantiating the
QuantifySchedulerExporterthrough thecycle_timeparameter CircuitBuilderaccepts multiple (qu)bit registers throughadd_registermethod- Docstrings added to (user facing) public methods
- Add
interaction_graphas a property of theCircuit - Add
mappingas an attribute of theCircuit, which contains an identity mapping, prior to any arbitrarily applied mapper pass. - The measure instruction accepts an axis parameter
MeasureDecomposerto decompose arbitrary measurements to a decomposition of single-qubit gates and a +Z measurementCircuitAnalyzeranalyzer pass for computing structural circuit metrics (size, interaction graph, gate dependency graph, density)- Metrics computed by the
CircuitAnalyzercan be (de)selected through themetricsandexclude_metricsparameters, and a configurable per-metric time-out can be set through thetimeoutparameter Can2CZDecomposerto decompose arbitrary two-qubit gates.- The following 2-qubit gates:
CV,CY,DCNOT,ECR,ISWAP,InvSqrtSWAP,M,MS,SqrtISWAP, andSqrtSWAP - Add
add_instructionmethod to theCircuitBuilder - libQASM parser accepts measure instruction aliases:
measureX,measureY, andmeasureZ - The following 3-qubit gates:
CCX(aliasCCNOT) andCSWAP ThreeQubitGateDecomposerto decompose the 3-qubit gates into CZ gates and single-qubit gates- The
CqasmV1Exporterexports the Toffoli gate
QGymMappermapper passU(theta, phi, lambda) gate to default single-qubit gatesZ90andmZ90pi-half rotation gates (equivalent toSandSdaggates)- Operation duration in terms of execution cycles can be specified for the
QuantifySchedulerExporter measurement_to_bit_mapproperty added to the Circuit class
Circuit.exportexpects anExporterinstance as input argument (instead of anExportFormat)- Moved Bloch sphere rotation composition from the merger pass interface to Bloch sphere rotation semantic module
- Refactor gate semantics as attributes of gates
- The
QuantifySchedulerExporterno longer returns abit_register_mapping(useCircuit.measurement_to_bit_mapproperty instead), it only returns a quantify-schedulerSchedule - The
ExportFormathas been deprecated (exporters can be specified by providing an instance as input argument toCircuit.export)
- Processing of control instructions (Barrier, Wait) added to quantify-scheduler exporter
- Refactor of visitor functionality of IR components and implementations
- Improved SWAP placement and refactor of common functionalities in existing router passes
- Support for Python 3.13 added
- Support for Python 3.9 dropped
instruction_countproperty toCircuit
- Autocompletion for
Circuitbuildergates - Re-mapper properly handles remapping of target qubits
MIPMappermapper pass- OpenSquirrel's
__version__attribute exposed
RoutingValidatorchanged toInteractionValidator
ShortestPathRouterandAStarRouternow correctly propagate SWAP gate insertion effects throughout the circuit- The values for parameters
thetaandphistay within the domain(-pi, pi]throughout parse- and compile-time (note: gate modifiers have precedence over normalization) - Mapping of the target qubits of controlled gates
asm_filtermethod to theCircuitclass to filter out assembly declarations by backend name
RoutingValidatorignores assembly declarations
- Default gate identification check refactored (now including check for phase)
McKayDecomposerchecks X90 on BSR semantic instead of name
- Assembly declaration
Rnunitary instructionSWAP2CZDecomposerdecomposer passCZDecomposerdecomposer passShortestPathRouterrouter passRandomMappermapper passAStarRouterrouter pass
- libQASM 1.1.0 integrated (updated from 0.6.9)
- Refactor: removed generators
- Changed the
RoutingCheckerpass to aRoutingValidatorpass - Changed use of
nativetoprimitive, e.g.NativeGateValidatoris nowPrimitiveGateValidator - Compilation passes accept
kwargsas input
- Bug in the writing of SWAP instructions
NativeGateValidatorvalidator pass
- Relaxed NumPy version requirement to
>=1.26for all supported Python versions
- Fixed order of merging Bloch sphere rotations
initnon-unitary instructionSWAPtwo-qubit unitary instructionbarrierandwaitcontrol instructionsSingleQubitGatesMergermerger passSWAP2CNOTDecomposerdecomposer passCNOT2CZDecomposerdecomposer passRoutingCheckerrouting pass- Restore SGMQ notation for barrier groups in cQASMv1 Exporter
- Importing modules, classes, and functionalities simplified
merge_single_qubit_gatesmethod ofCircuitclass, changed to generalmergemethod that accepts custom merger passes- libQASM 0.6.9 integrated (updated from 0.6.7)
- Refactor: code base adheres to the PEP8 style guide
- Refactor: instruction library simplified
- Refactor: comment nodes removed from IR
- Bug in ABA-decomposer
- Bug in McKay-decomposer (all single-qubit Clifford gates are verified)