Skip to content

Releases: quantumlib/Cirq

v1.3.0

01 Dec 22:10
Compare
Choose a tag to compare

Cirq v1.3.0 release

Summary

Deprecation of cirq-ft

The newly created cirq-ft package (from 1.2.0) will be moving to its new home in the qualtran repository. Please pull from that repository to get all your fault-tolerant resource estimation goodness.

Qubit management

Two new qubit managers (GreedyQubitManager and SimpleQubitManager) can help manage creation and allocation of temporarily or borrowed ancilla qubits.

Performance improvements

Many minor performance improvements have been made over the past 6 months to help speed up troublesome corner cases, such as json serialization, transformers, circuit creation, and symbol resolution.

A classical simulator for simulating circuits without superposition (such as Toffoli, CNOT, X, SWAP, etc) has been added.

A Huge Thank You

Thank you to all our contributors for this release:

Andreas Bengtsson, Bram Evert, Cheng Xing, Doug Strain, Dripto Debroy, eliottrosenberg, Emilio Peláez, Fionn Malone, Jon Donovan, Jose Urruticoechea, Matthew Neeley, Nishna Aerabati, Nafay Najam, Noureldin, Ogah Jackreece Ejini, Pavol Juhas, richrines1, Ryan Hill, Sam Burdick, Sanuj Sharma, Seneca Meeks, Shef, Spencer Churchill, Suyash Damle, Tanuj Khattar, yinghui-hu, Yisu Peng

What's Changed

9b65f68 Remote problematic terminology from test (#6368)
dbbca73 Change master to main in documentation (#6365)
ced1383 Restore code coverage (#6364)
3ac43f6 Switch master to main in CI tools and dev tools (#6363)
3c6a305 Deprecate Cirq-FT module in favour of Qualtran (#6362)
cf973a5 Remove leftover dummy terms from the Cirq sources (#6358)
9142f6a Fix MacOS installation instructions for mactex with brew (#6361)
6aa9d0d Cleanup classical simulator code and fix a couple of bugs (#6344)
a55f962 Fix typos in the documentation. (#6359)
a4ba95b Break intermediate measurements on 3+ qubits into single qubit measurements in RouteCQC#6293 (#6349)
7f47e13 Created using Colaboratory (#6360)
b5b3b74 ProcessorSampler: route run_batch to run_sweep (#6357)
2fdb447 Remove dummy from cirq-core (#6356)
3a64ef1 StreamManager: make function params explicit (#6355)
26dbabc Speed up hashing for GridQubit, LineQubit, and NamedQubit (#6350)
3c81961 Update docs/tutorials/google/start.pynb (#6346)
9a8298d Update start.ipynb (#6342)
8d07cab Optimize ParamResolver.value_of (#6341)
392083b StreamManager: retry with get result request on already exist errors (#6345)
0e288a7 Bump @babel/traverse from 7.14.5 to 7.23.2 in /cirq-web/cirq_ts (#6318)
2f702c8 Add classical simulator (#6124)
39bd926 Change default for streaming feature flag to false (#6310)
0b90ed6 Increase coverage of clifford protocols to parity_gates (#6338)
11ae0bd Make RouteCQC errorout on intermediate measurements on 3+ qubits (#6307)
aa312bc Fix flaky behavior of test_xeb_fidelity (#6337)
2f7d732 Cache Circuit properties between mutations (#6322)
5485227 Run unit tests without affecting user browser session (#6333)
fec68ae Fix ci-daily pytest failure (#6335)
34e8dab Extend Clifford protocol for 2+ qubit operations through analytical check and falling back to decompose (#6332)
17313e7 ci - show 20 slowest tests on Linux, Windows and Mac (#6334)
5556e72 ci - skip slow tests on PR, run them in daily ci instead (#6331)
1eced48 Moved rigetti integration test logic to higher level conftest.py file… (#6328)
1549785 remove default values of InternalGate (#6330)
235a0c6 Add documentation for cirq google's support for google internal gates (#6301)
455f50b Build clifford tableau just once during SingleQubitCliffordGate to PhasedXZGate conversion (#6325)
ec84a05 Preserve subcircuits passed to [Frozen]Circuit.from_moments (#6320)
96b3842 Move qubit management transformers from Cirq-FT to Cirq-core (#6319)
105d975 Adds 2q prep for iswap instead of sqrt_iswap (#6314)
a98fc61 Make ancilla for BiQubitsMixer sided too. (#6313)
9b65f68 Remote problematic terminology from test (#6368)
dbbca73 Change master to main in documentation (#6365)
ced1383 Restore code coverage (#6364)
3ac43f6 Switch master to main in CI tools and dev tools (#6363)
3c6a305 Deprecate Cirq-FT module in favour of Qualtran (#6362)
cf973a5 Remove leftover dummy terms from the Cirq sources (#6358)
9142f6a Fix MacOS installation instructions for mactex with brew (#6361)
6aa9d0d Cleanup classical simulator code and fix a couple of bugs (#6344)
a55f962 Fix typos in the documentation. (#6359)
a4ba95b Break intermediate measurements on 3+ qubits into single qubit measurements in RouteCQC#6293 (#6349)
7f47e13 Created using Colaboratory (#6360)
b5b3b74 ProcessorSampler: route run_batch to run_sweep (#6357)
2fdb447 Remove dummy from cirq-core (#6356)
3a64ef1 StreamManager: make function params explicit (#6355)
26dbabc Speed up hashing for GridQubit, LineQubit, and NamedQubit (#6350)
3c81961 Update docs/tutorials/google/start.pynb (#6346)
9a8298d Update start.ipynb (#6342)
8d07cab Optimize ParamResolver.value_of (#6341)
392083b StreamManager: retry with get result request on already exist errors (#6345)
0e288a7 Bump @babel/traverse from 7.14.5 to 7.23.2 in /cirq-web/cirq_ts (#6318)
2f702c8 Add classical simulator (#6124)
39bd926 Change default for streaming feature flag to false (#6310)
0b90ed6 Increase coverage of clifford protocols to parity_gates (#6338)
11ae0bd Make RouteCQC errorout on intermediate measurements on 3+ qubits (#6307)
aa312bc Fix flaky behavior of test_xeb_fidelity (#6337)
2f7d732 Cache Circuit properties between mutations (#6322)
5485227 Run unit tests without affecting user browser session (#6333)
fec68ae Fix ci-daily pytest failure (#6335)
34e8dab Extend Clifford protocol for 2+ qubit operations through analytical check and falling back to decompose (#6332)
17313e7 ci - show 20 slowest tests on Linux, Windows and Mac (#6334)
5556e72 ci - skip slow tests on PR, run them in daily ci instead (#6331)
1eced48 Moved rigetti integration test logic to higher level conftest.py file… (#6328)
1549785 remove default values of InternalGate (#6330)
235a0c6 Add documentation for cirq google's support for google internal gates (#6301)
455f50b Build clifford tableau just once during SingleQubitCliffordGate to PhasedXZGate conversion (#6325)
ec84a05 Preserve subcircuits passed to [Frozen]Circuit.from_moments (#6320)
96b3842 Move qubit management transformers from Cirq-FT to Cirq-core (#6319)
105d975 Adds 2q prep for iswap instead of sqrt_iswap (#6314)
a98fc61 Make ancilla for BiQubitsMixer sided too. (#6313)
fefe350 Make SingleQubitCompare output registers directional (#6312)
fee056e Move GreedyQubitManager from Cirq-FT to Cirq-Core (#6309)
87f77be Create separate unary and streaming RPC tests in engine_test.py (#6311)
4dc36d5 Integrate StreamManager with run_sweep() (#6285)
c6f60bc Apply fix from typo scan of quantumai website, cl/570431484 (#6308)
bef756e Allow specifying settings field from Cirq-ionq (#5817)
fd18da5 Make OpIdentifier serializable for all inputs (#6295)
1948e73 Change signature of cirq_ft.And gate to use directional registers like Qualtran (#6302)
c696323 Rename cirq_ft.Registers to cirq_ft.Signature to match data types in Qualtran (#6300)
61d9671 Fix stream_manager_test type warnings (#6299)
acbc624 Do not allow creating registers with bitsize 0 (#6298)
8e4e7d1 Add bitsize field to Cirq-FT Registers (#6286)
188bb94 Add registry sweep documentation to cirq_google (#6291)
907ec3a Try to make docstring render correctly (#6283)
d805d82 Make InternalGate hashable if all gate args are hashable (#6294)
1366494 Apply minor doc fixes (#6289)
b630298 Fix matplotlib typing (#6290)
f715527 Fix documentation of FSimGate (#6288)
432d57a Add serialization support for InsertionNoiseModel (#6282)
cf005c2 add to ionq code owners (#6273)
6c14cfa StreamManager: Add mechanism to close the request iterator (#6263)
deedb45 Changed FakeQuantumRunStream to support arbitrary response and exception timing (#6253)
6fae409 Delete SelectionRegisters and replace uses of Registers with Tuple[Register, ...] (#6278)
e235642 Variable spacing QROM should depend upon structure of different data sequences and not exact elements (#6280)
eddb2d9 Add caching to value_equality_values decorator for auto generated methods. (#6275)
0e80fa5 v0.3 API + debiasing (#6077)
b70b2fc Add new processor selector parameters in cirq-google/engine run methods (#6267)
b28bfce Speed up parameter resolution for cirq.Duration (#6270)
c7048f5 codecov - exclude protobuf-generated sources from coverage analysis (#6268)
041ce5d Add tags to cirq.FrozenCircuit (#6266)
83609eb Make device parameter units/idx optional (#6264)
8bd2161 Support the new quantum engine processor_selector in engine_client (#6254)
56b5db2 add back add/remove_qubit to density matrix sim state (#6259)
ed26d2f Fix ordering issue in random_rotations_between_grid_interaction_layers_circuit (#6261)
7ed95aa Speed up cirq.map_operations and cirq.map_operations_and_unroll (#6250)
be6218e codecov - tolerate small decrease in coverage (#6258)
5bbdc22 Apply variable-spaced optimization to QROM circuits (#6257)
6abc740 remove extra User-Agent prefix in the ionq API header (#6232)
999fd94 Avoid skipping code lines depending on random seed (#6256)
86f17eb Update documentation to prevent markdown rendering of underscores as italics (#6255)
6e38a27 Fix coverage exclusion syntax (#6241)
6b44704 Check if python starts python3 (#6239)
95cb43f Remove temporary directories after test done (#6236)
30fa6f5 Fix bug in cirq-ft due to which T-complexity fails for gates with an empty decomposition / no-op (#6252)
95c672a Support the deprecated_parameter decorator for asynchronous functions. (#6247)
64e1a7f Fix CI requirements for Changed files test (#6243)
9fbaa05 Fix quoting i...

Read more

v1.2.0

18 Jul 17:50
Compare
Choose a tag to compare

Cirq v1.2.0 release

Summary

This Cirq release focuses on making it easier to express and do resource estimations for Fault Tolerant Quantum Algorithms, with a number of high level improvement summarized as follows:

Improvements to Cirq-Core

  • Cirq protocols (eg: cirq.unitary) and simulators (eg: cirq.Simulator) now support gates that allocate new qubits as part of their decomposition
  • cirq.QubitManager is a new top-level abstraction that defines the interface for a qubit allocator/deallocator which can be used to manage ancilla qubits at the time of circuit construction.
  • cirq.decompose infrastructure is updated s.t. new composite gates can override the _decompose_with_context_ method to gain access to a cirq.DecompositionContext that contains options such as a cirq.QubitManager to help with allocating ancilla qubits at the time of circuit construction.

Cirq-FT: A new sub-package for Fault-Tolerant algorithms

Cirq-FT is a new sub-package for rapid prototyping and resource estimation of fault tolerant algorithms that extends Cirq. Some notable features include

  • A concept of qubit Register / Registers that make it easier for composite gates to express their signature in terms of named groups of logical qubits.
  • A cirq_ft.GateWithRegisters base class, which acts as a SHIM on top of the flat qubits API of cirq.Gate class and helps users define their composite gates using qubit registers.
  • New protocols, like cirq_ft.TComplexity, for macroscopic resource estimation.
  • New compilation transformers for mapping ancilla allocation / deallocation requests in a compute graph (eg: cirq circuit) to physical qubits, supporting both clean and dirty allocations.
  • A well-annotated and well-tested library of hierarchical gate decompositions which implements all the circuit primitives from Encoding Electronic Spectra in Quantum Circuits with Linear T Complexity. Table IV containing resource estimates of circuits with ~10^10 T-gates can be reproduced in under a minute demonstrating the scalability of the framework.

Other notable changes

  • Dropped support for Python 3.7 and Python 3.8 and added support for Python 3.11
  • Performance improvements for parameter resolution and a new __cirq_debug__ flag that provides an option to disable validations at the time of circuit construction.

What's Changed

Read more

Cirq v1.1.0

20 Dec 23:28
Compare
Choose a tag to compare

Cirq v1.1.0 release

Summary

This Cirq release focuses on tracking and improving performance of key workflows like circuit construction, parameter resolution etc. The release also adds a new transformers framework for qubit routing and provides an efficient implementation of the qubit routing algorithm described in arXiv:1902.08091 [quant-ph]

As part of this release, we have also published our new backwards compatibility guidelines.

Backwards Incompatible Changes

7892143 Print multi-qubit circuit with asymmetric depolarizing noise correctly (#5931) by Paige
af1267d Allow repeated measurements in deferred transformer (#5857) by Dax Fohl

What's New

New top level objects in cirq-core:

  • RoutingSwapTag
  • AbstractInitialMapper
  • HardCodedInitialMapper
  • LineInitialMapper
  • MappingManager
  • RouteCQC
  • routed_circuit_with_mapping

What's Changed

Read more

Cirq v1.0.0

18 Jul 22:34
Compare
Choose a tag to compare

What's new

Cirq has officially left alpha and is v1.0. With this release comes new policies on API stability as well as functionality gaurantees for the long term. Along with some minor bug fixes and tweaks, this release focuses on stabilizing the APIs within cirq-core. With cirq-core we intend to follow along with semver and only make breaking changes with moves to new major versions. For the vendor packages we plan to continue to allow developers to iterate at speed and will do best effort on ensuring any API changes come with as little friction as possible. For all the details on this policy please see: release.md.

To make this upgrade as smooth as possible, we recommend first upgrading your installation to Cirq v0.15 to surface any deprecation warnings or upcoming breakages you might experience, once those are resolved, you can safely install Cirq v1.0.0.

Thank you all so much for your hard work.

What's Changed

Read more

Cirq v0.15.0

29 Jun 18:07
f904a09
Compare
Choose a tag to compare

Cirq v0.15.0 release

Summary

This Cirq release focuses on fine tuning user APIs and library organization, with no new major feature additions. This release features lots of deprecations and long standing bug fixes in anticipation of the upcoming Cirq 1.0 release as well as a few refactors. This release fixes over 150 oustanding issues in Cirq and stabilizes many of the rough edges in the library. In upgrading to 1.0 it is recommended to first upgrade to this version to receive deprecation warnings for any changed functionality before moving to Cirq 1.0

Breaking changes

f904a09 Roll back the default on unitary to np.complex64, change default for final_state_vector #5636
4594a1f Add qubits to PauliStringPhasor #5565
61fefe6 Lock down CircuitOperation and ParamResolver #5548
b1a5d23 Deprecate PauliTransform #5498
3c8b036 Use np.complexfloating for dtypes that should be complex #5488
39795e1 Move CircuitDag to contrib #5481
2bff437 Measurement confusion maps #5480
9bead0b Remove special CXPowGate.on. #5471
9f37af1 Pass through None during param resolution #5466
95bebae Reject formulas as keys of ParamResolvers #5384
2d84676 Change qubit str representation #5343

Changes to top level objects

cirq-core

New top level objects

  • is_valid_placement
  • ArithmeticGate
  • ISWAP_INV
  • ms
  • q
  • create_transformer_with_kwargs
  • drop_terminal_measurements
  • two_qubit_matrix_to_ion_operations
  • QuantumStateRepresentation
  • CliffordTableauSimulationState
  • DensityMatrixSimulationState
  • SimulationProductState
  • SimulationState
  • SimulationStateBase
  • StabilizerChFormSimulationState
  • StabilizerSimulationState
  • StabilizerStateChForm
  • StateVectorSimulationState
  • ParamMappingType
  • TParamValComplex

Objects or parameters that are marked as deprecated and will be removed in coming releases (too long to list all individual deprecations)

  • Using cirq.ops.Moment has been deprecated in favor of cirq.circuits.Moment. Recommended use is still cirq.Moment.
  • cirq.QuilOutput has moved to cirq_rigetti.quil_output.QuilOutput and will be removed in a future version.
  • Circuit.tetris_concat is moving to Circuit.concat_ragged.
  • Circuit.final_state_vector will no longer support positional arguments and will no longer support qubits_that_should_be_present, instead identity operations should be placed on existing qubits that one wants included in the state vector.
  • SimulationTrialResult.final_step_result along with class mutators will be deprecated in favor of constructing new SimulationTrialResult objects instead.
  • SparseSimulatorStep will no longer use the simulator argument.
  • OperationTarget will be replaced with cirq.SimulationStateBase.
  • SimulationState and children classes (i.e. StabilizerSimulationState) will no longer support positional args and log_of_measurement_results (replaced by classical_data arg).
  • DensityMatrixStepResult will no longer support simulator parameter.
  • StepResult has had mutators deprecated in favor of constructing new objects.
  • SimulationProductState changed argument names to sim_state.
  • StateVectorSimulatorState no longer used.
  • ActOnArgs (and variants) have been replaced by <variant>SimulationState.
  • StateVectorSimulationState swap_target_tensor_for and subspace_index methods will be made private.
  • SimulatorBase mutators are deprecated in favor of constructing a new class instance.
  • cirq.neutral_atom module will be going away. Optimizing for neutral atom gates can be done with the new cirq.optimize_for_target_gateset with a neutral atom gateset. Devices have moved out to respective vendors.
  • cirq.ion module will be going away. Like neutral atom optimizers and devices were moved out to vendors where appropriate.
  • least_squares_xeb_fidelity_from_expectations and least_squares_xeb_fidelity_from_probabilities deprecated in favor of cirq.experiments.xeb_fitting.
  • generate_boixo_2018_supremacy_circuits_v2, generate_boixo_2018_supremacy_circuits_v2_grid and generate_boixo_2018_supremacy_circuits_v2_bristlecone has moved to recirq.beyond_classical module.
  • CrossEntropyResult, cirq.experiments.xeb_fitting.XEBCharacterizationResult deprecated in favor of cirq.experiments.xeb_fitting.XEBCharacterizationResult.
  • build_entangling_layers deprecated in favor of cirq.experiments.random_quantum_circuit_generation.
  • collect_grid_parallel_two_qubit_xeb_data moved to recirq.benchmarks.xeb.collect_grid_parallel_two_qubit_xeb_data.
  • compute_grid_parallel_two_qubit_xeb_results moved to recirq.benchmarks.xeb.compute_grid_parallel_two_qubit_xeb_results.
  • measurement_key_names protcol will use frozensets.
  • act_on protocol will change argument arg name to sim_state.
  • PauliTransform replaced in favor of DensePauliString.
  • GlobalPhaseOperation use global_phase_operation instead.
  • ArithmeticOperation going away in favor of just ArithmeticGate.
  • Gatesets no longer have accept_global_phase_op argument, instead a user must provide the cirq.GlobalPhaseGate.
  • NoiseModelFromNoiseProperties virtual_predicate renamed to is_virtual.
  • QuirkArithmeticOperation deprecated in favor of cirq.QuirkArithmeticGate.

cirq-google

New top level objects

  • prepare_characterization_for_circuits_moments
  • GoogleNoiseProperties
  • GridDevice
  • NoiseModelFromGoogleNoiseProperties
  • EngineResult
  • ProcessorSampler
  • noise_properties_from_calibration
  • HardcodedQubitPlacer

Objects or parameters that are marked as deprecated and will be removed in coming releases

  • 'XMON','FSIM_GATESET','SQRT_ISWAP_GATESET','SYC_GATESET','NAMED_GATESETS' moved to GridDevice.metadata.gateset` if applicable.
  • GateTabulation has moved to cirq-core.
  • SimulatedLocalProcessor.get_device and EngineProcessor.get_device no longer requires a gate_sets parameter.
  • EngineProcessor.list_calibrations parameter names changed from latest_timestamp_seconds to latest_timestamp and earliest_timestamp_seconds to earliest_timestamp.
  • QuantumEngineSampler deprecated in favor of cirq_google.ProcessorSampler.
  • get_engine_sampler now has no arguments needed.
  • create_noiseless_virtual_processor_from_proto, create_noiseless_virtual_engine_from_proto, create_noiseless_virtual_processor_from_template, create_noiseless_virtual_engine_from_templates now no longer require gate_sets parameter.
  • Engine.sampler replaced with Engine.get_sampler.
  • get_engine_device now no longer requires gate_sets parameter.
  • SerializableDevice and SerializableGateset are going away in favor of CircuitSerializer and GridDevice metadata information.
  • optimize_for_{xmon,sycamore} are going away in favor of cirq.optimize_for_target_gateset using the xmon and sycamore gatesets.

What's Changed

Read more

Cirq v0.14.1

11 Apr 02:09
Compare
Choose a tag to compare

Patch release to fix vendor issue #5210.

No other changes introduced.

Cirq v0.14.0

24 Mar 08:30
Compare
Choose a tag to compare

Cirq v0.14.0 release

Highlights

Transformers

Revamped and deprecated many of the old and buggy optimizers found in cirq.optimizers with new cirq.transformer implementations. New transformers have well defined functionality with CircuitOperations and should be easier to use overall.

Classical Control

Cirq now has support for classical control in NiSQ relevant regimes. Classically controlled operations and measurement feedforward operations are supported. Extension into arbitrary classical logic on top of this is not on the immediate roadmap.

Devices

Devices have undergone a rework. Functionality to: attach a device to a circuit, use a device as a means to decompose a circuit, and exploration related functions have been removed. Devices now validate circuits and carry a DeviceMetaData property if more description of the device is needed.

Misc

In addition to the larger changes mentioned above, this release also includes new experiment utilities for characterizing device readout errors with cirq.measure_confusion_matrix. The cirq.decompose function contract has now been tightened to return a circuit containing just X,Y,Z,C*Z gates (assuming a decomposition is possible). Repeated measurement keys will now store temporal measurements (where previously they would be disallowed). New simulation techniques based on (https://arxiv.org/abs/2112.08499) and more.

Breaking changes

c20c99b Add cirq.eject_phased_paulis transformer to replace cirq.EjectPhasedPaulis (#4958)
bfa2602 Make PauliMeasurementGate respect sign of the pauli observable. (#4836)
89f88b0 Remove use of .device in contrib. (#4821)
b0519b3 Convert cirq.Result to ABC and add ResultDict implementation (#4806)
6937e41 Add ClassicalDataStore class to keep track of qubits measured (#4781)
1d8d2f3 Implement PauliStringPhasorGate (#4696)
4985a51 Remove EngineTimeSlot (#4608)

Changes to top level objects

cirq-core

New top level objects

  • DeviceMetadata
  • GridDeviceMetadata
  • NoiseModelFromNoiseProperties
  • NoiseProperties
  • OpIdentifier
  • SuperconductingQubitsNoiseProperties
  • TensoredConfusionMatrices
  • measure_confusion_matrix
  • density_matrix_kronecker_product
  • state_vector_kronecker_product
  • BooleanHamiltonianGate
  • ClassicallyControlledOperation
  • CliffordGate
  • GlobalPhaseGate
  • global_phase_operation
  • PauliStringPhasorGate
  • SynchronizeTerminalMeasurements

New or renamed top level objects from cirq.transformers

  • align_left
  • align_right
  • CompilationTargetGateset
  • CZTargetGateset
  • compute_cphase_exponents_for_fsim_decomposition
  • decompose_clifford_tableau_to_operations
  • decompose_cphase_into_two_fsim
  • decompose_multi_controlled_x
  • decompose_multi_controlled_rotation
  • decompose_two_qubit_interaction_into_four_fsim_gates
  • defer_measurements
  • dephase_measurements
  • drop_empty_moments
  • drop_negligible_operations
  • eject_phased_paulis
  • eject_z
  • expand_composite
  • is_negligible_turn
  • map_moments
  • map_operations
  • map_operations_and_unroll
  • merge_k_qubit_unitaries
  • merge_k_qubit_unitaries_to_circuit_op
  • merge_moments
  • merge_operations
  • merge_operations_to_circuit_op
  • merge_single_qubit_gates_to_phased_x_and_z
  • merge_single_qubit_gates_to_phxz
  • merge_single_qubit_moments_to_phxz
  • optimize_for_target_gateset
  • parameterized_2q_op_to_sqrt_iswap_operations
  • prepare_two_qubit_state_using_cz
  • prepare_two_qubit_state_using_sqrt_iswap
  • SqrtIswapTargetGateset
  • TRANSFORMER
  • TransformerContext
  • TransformerLogger
  • three_qubit_matrix_to_operations
  • transformer
  • two_qubit_matrix_to_cz_operations
  • two_qubit_matrix_to_diagonal_and_cz_operations
  • two_qubit_matrix_to_operations
  • two_qubit_gate_product_tabulation
  • TwoQubitCompilationTargetGateset
  • TwoQubitGateTabulation
  • TwoQubitGateTabulationResult
  • toggle_tags
  • unroll_circuit_op
  • unroll_circuit_op_greedy_earliest
  • unroll_circuit_op_greedy_frontier
  • StabilizerState
  • ActOnStabilizerArgs
  • SimulationTrialResultBase
  • ResultDict
  • ClassicalDataDictionaryStore
  • ClassicalDataStore
  • ClassicalDataStoreReader
  • Condition
  • KeyCondition
  • MeasurementType
  • SympyCondition
  • cirq_type_from_json
  • control_keys
  • HasJSONNamespace
  • json_cirq_type
  • json_namespace
  • LabelEntity
  • measurement_keys_touched
  • SupportsControlKey
  • with_key_path_prefix
  • with_rescoped_keys

Pre-existing optimizers with the same names as the given transformers have also been deprecated in favor of these newer implementations.

Objects or parameters that are marked as deprecated and will be removed in coming releases (too long to list all individual deprecations)

  • Attaching devices to circuits via Circuit(...) or circuit.with_device.
  • device.{qubit_set, decompose_operation, qid_pairs, can_add_operation_into_moment}
  • SymmetricalQidPair
  • The above changes impact all vendor packages as well as contrib.
  • All old optimizer implementations have been replaced/updated with new transformer implementations.
  • ActOnDensityMatrixArgs (multiple parameters)
  • ActOnStateVectorArgs (multiple parameters)
  • ActOnStabilizerCHFormArgs (multiple parameters)

cirq-google

New top level objects

  • ValidatingSampler
  • FSimGateFamily
  • known_2q_op_to_sycamore_operations
  • two_qubit_matrix_to_sycamore_operations
  • SycamoreTargetGateset
  • CIRCUIT_SERIALIZER
  • ExecutableGroupResultFilesystemRecord
  • execute
  • QubitPlacer
  • CouldNotPlaceError
  • NaiveQubitPlacer
  • RandomDevicePlacer
  • ProcessorRecord
  • EngineProcessorRecord
  • SimulatedProcessorRecord
  • SimulatedProcessorWithLocalDeviceRecord

Objects or parameters that are marked as deprecated and will be removed in coming releases

  • Bristlecone
  • Foxtail
  • XmonDevice
  • EngineProcessor.list_calibrations (latest_timestamp_seconds -> latest_timestamp)
  • EngineProcessor.list_calibrations (earliest_timestamp_seconds ->earliest_timestamp)
  • Engine.sampler (use get_sampler instead)
  • optimized_for_sycamore (new_device is going away)
  • optimized_for_xmon (new_device is going away)
  • ConvertToSycamoreGates (use cirq.optimize_for_target_gateset instead)
  • ConvertToSqrtIswapGates (use cirq.optimize_for_target_gateset instead)
  • TwoQubitGateCompilation (moved to cirq.TwoQubitGateTabulationResult)
  • GateTabulation (moved to cirq.TwoQubitGateTabulation)
  • gate_product_tabulation (moved to cirq.two_qubit_gate_product_tabulation)
  • SerializableDevice.qubit_set (use device.metadata property where applicable)
  • deserialize (removed support for device attachment to circuit)

A Huge Thank You

Thank you to all our contributors for this release:

Abraham Asfaw, Adam Zalcman, Aleksandr Pak, Alex McNamara, Animesh Sinha, Anna Nachesa, Antoine (Tony) Bruguier, augustehirth, Bicheng Ying, Cheng Xing, Dave Bacon, Dax Fohl, dependabot[bot], Doug Strain, Evan Peters, Freyam Mehta, Hosseinberg, Ilja Livenson, Jintao YU, Jon Donovan, Matthew Harrigan, Matthew Neeley, Michael A. Perlin, Michael Broughton, Nathanael Thompson, Orion Martin, Pavol Juhas, Tanuj Khattar, Victory Omole, Zachary Crockett

Full change list

33580bb Rename TestDevice -> FakeDevice to avoid pytest confusion (#5066)
45624ff Add support for deep=True flag in cg.optimized_for_sycamore and cg.SycamoreTargetGateset transformers (#5126)
cdd3f8c DeviceSpecification proto updates (#5056)
091582e Bugfix in handling of deep=True flag in cirq.merge_k_qubit_unitaries transformer (#5125)
89e7210 Add support for deep=True to cirq.optimize_for_target_gateset transformer (#5124)
518d828 Add support for deep=True to merge_single_qubit_gates* transformers (#5123)
92d19f6 Add support for deep=True to cirq.merge_k_qubit_unitaries transformer (#5122)
64a6723 Add support for deep=True to cirq.eject_z transformer (#5115)
04d58c4 Add support for deep=True to cirq.align_left and cirq.align_right transformers (#5112)
ca4bb72 Add support for deep=True to cirq.eject_phased_paulis transformer (#5116)
d2f284d Add support for deep=True to cirq.expand_composite transformer (#5119)
b45e63d Add support for deep=True to cirq.synchronize_terminal_measurements transformer (#5118)
155f607 Add support for deep=True to cirq.stratified_circuit transformer (#5117)
869d83b Add support for deep=True to cirq.drop_negligible_operations transformer (#5114)
fade070 Add support for deep=True to cirq.drop_empty_moments transformer (#5113)
cfa255a Add add_deep_support flag to @cirq.transformer decorator (#5108)
aed4eb8 Bugfixes in handling nested tags_to_ignore + deep=True in cirq.map_moments and cirq.map_operations transformer primitives (#5109)
e0a64dd Extract BufferedDM/SV/MPS from ActOnDM/SV/MPSArgs (#4979)
d3c4853 Add assert_decompose_ends_at_default_gateset to consistent protocols test to ensure all cirq gates decompose to default gateset (#5107)
6af5387 Add support for deep=True flag to remaining transformer primitives (#5106)
2693951 Improve support for recursively applying transformer primitives on circuit operations using deep=True (#5103)
caadb0c Deprectate log_of_measurement_result input (#5100)
848bfde Add default decomposition for cirq.QubitPermutationGate in terms of adjacent swaps (#5093)
e0f7432 Deprecate `cir...

Read more

Cirq v0.13.1

26 Oct 18:07
Compare
Choose a tag to compare

This release removes the measurement_key and measurement_keys protocols. These protocols were supposed to be removed in Cirq 0.13.0, but were missed.

Complete list of changes:

7d74e3c Flush missed v0.13 backlog items. (#4600)

v0.13.0

15 Oct 19:21
Compare
Choose a tag to compare

Cirq v0.13.0 release

Highlights

ProjectorString + ProjectorSum

Added cirq.ProjectorString and cirq.ProjectorSum for compact representations and calculations involving projection operations.

Gatesets

Construct cirq.GateFamily and cirq.Gateset to test gates and operations for membership in well-defined groups.

NamedTopologies

Basic circuit to device placement routines (get_placements, draw_placements) have been added to Cirq, powered by NamedTopology.

Simulator performance improvements

Cirq's built-in simulators now dynamically factorize the simulated state into non-entangled subsets of qubits (when possible). This dramatically improves performance for circuits consisting of disconnected subsystems, and permits simulation of larger numbers of qubits for such circuits.

Clifford Tableau Decomposition

Upgraded existing clifford operations and circuits to make use of Tableau representation where appropriate and implemented baseline tableau to circuit decomposition using methods outlined in this paper.

Breaking changes

  • Retain log_of_measurement_results throughout simulation (#4465):
    • Step results will include all measurements from previous moments in the simulation.
  • Exponent should be drawn on target qubit in CX and CCX gates (#4462):
    • Tests depending upon diagrams of CX and CCX can now fail.
  • Replace isinstance(op, GateOperation) checks in cirq_google optimizers to support other operation types (#4459):
    • Note that TaggedOperations which were earlier ignored by the optimizers would now be considered, and hence this is potentially a breaking change if people were implicitly relying on TaggedOperations not getting compiled by the optimizers.
  • Resolve inconsistencies in using controlled gates & controlled operations (#4167):
    • gate_operation.controlled_by() can now return a cirq.GateOperation instead of cirq.ControlledOperation in cases where the underlying gates have specialized gate.controlled() implementations.
    • This also leads to a change in diagram of the controlled gates with specialized controlled implementations. For eg: Controlled S gate is now plotted as CZPowGate (@ --- @ ** 0.5) instead of ControlledOperation with Z ** 0.5 as subgate(@ ---- S)
    • op.controlled_by for 3Q gates like CCX, CCZ, CSWAP will now return ControlledOperation with sub_operation = <underlying non-controlled gate>. Eg: CCCX (i.e. sub_gate = X) instead of CTOFFOLI (i.e. sub_gate = TOFFOLI) etc.
    • Diagrams for ControlledOperations will now always have the exponent drawn on the target qubit (in case of multi qubit sub_operation, the exponent will always be on the first qubit if not the underlying gate does not explicitly specify a target index).

Changes to top level objects

cirq-core

New top level objects

  • NamedTopology
  • draw_gridlike
  • LineTopology
  • TiltedSquareLattice
  • get_placements
  • draw_placements
  • estimate_parallel_single_qubit_readout_errors
  • AnyIntegerPowerGateFamily
  • AnyUnitaryGateFamily
  • GateFamily
  • Gateset
  • measure_paulistring_terms
  • measure_single_paulistring
  • ParallelGate
  • ParallelGateFamily
  • parallel_gate_op
  • PauliMeasurementGate
  • StatePreparationChannel
  • ProjectorSum
  • decompose_clifford_tableau_to_operations
  • choi_to_kraus
  • choi_to_superoperator
  • kraus_to_superoperator
  • operation_to_superoperator
  • superoperator_to_choi
  • superoperator_to_kraus
  • state_vector_to_probabilities
  • dataclass_json_dict
  • measurement_key_name
  • measurement_key_obj
  • measurement_key_names
  • measurement_key_objs
  • SupportsKraus

Objects or parameters that are marked as deprecated and will be removed in coming releases

  • cirq.SupportsOnEachGate
  • cirq.TwoQubitGate -> Define num_qubits manually
  • cirq.ThreeQubitGate -> Define num_qubits manually
  • cirq.ParallelGateOperation -> Use cirq.ParallelGate(gate, num_copies).on(qubits)
  • cirq.measurement_key_names -> parameter allow_decompose removed
  • cirq.is_measurement -> parameter allow_decompose removed
  • cirq.kraus_to_channel_matrix -> Use cirq.kraus_to_superoperator instead
  • cirq.operation_to_channel_matrix -> Use cirq.operation_to_superoperator instead
  • cirq.CompletionOrderedAsyncWorkPool -> Use duet.AsyncCollector instead
  • cirq.SerializableGateSet.gate_set_name -> Use name instead

cirq-google

New top-level objects

  • Serializer
  • ExecutableSpec
  • KeyValueExecutableSpec
  • QuantumExecutable
  • QuantumExecutableGroup
  • BitstringsMeasurement
  • SharedRuntimeInfo
  • RuntimeInfo
  • ExecutableResult

A Huge Thank You

Thank you to all our contributors for this release:

Adam Zalcman, Alapan Chaudhuri, Ali Panahi, Ana Sofia Uzsoy, Animesh Sinha, Antoine (Tony) Bruguier, Balint Pato, Bicheng Ying, cognigami, Dave Bacon, Dax Fohl, Doug Strain, Eric Hulburd, Guen Prawiroatmodjo, ishmum123, Ishmum Jawad Khan, Mark Daoust, Matthew Harrigan, Matthew Neeley, melonwater211, MichaelBroughton, Nathanael Thompson, Orion Martin, Pieter Eendebak, Ryan LaRose, Shrill Shrestha, Smit Sanghavi, Tanuj Khattar, twojno, Victory Omole, Zeeshan Ahmed

Full change list

8a7d6f8 Removing 0.13.0.dev -> 0.13.0
50271af Made the Density Matrix Plotter (#4493)
aaf969d Allow any qubit type in quimb density matrix (#4547)
e4e9019 GateFamily & Gatesets cleanups and bugfixes (#4569)
686e6b1 Removes sections related to experimental features. (#4573)
5aca52d Roll forward "Enable CircuitOp serialization" (#4511)
1f14edf Fix "tex" -> "text" (#4571)
888aeb7 Make Instance GateFamily check for equality ignoring global phase (#4542)
66c694a [cirqflow] Quantum runtime skeleton - part 1 (#4565)
033c604 Remove v0.13 deprecations. (#4567)
9f3034c Replace isinstance(op, GateOperation) checks in cirq_google optimizers to support other operation types. (#4459)
bd2e63c Boolean Hamiltonian gate yields fewer gates (#4386)
3d50921 [cirqflow] Provide concrete ExecutableSpec (#4559)
978dbac Add measurement_key_obj and measurement_key_objs protocols. (#4497)
f11846e Add copyright notices to conftests (#4561)
e66ac53 Document conversion tools between channel representations (#4554)
09da391 Fix variational algorithm tutorial (#4541)
eaa7f33 [cirqflow] QuantumExecutableGroup (#4551)
7e0d5d2 Add Azure Quantum docs and tutorials (#4530)
0d9eb4e More channel representation conversion tools (#4553)
02b4658 Compute a Kraus representation from the Choi matrix (#4549)
241695a Acctually assert in kraus_protocol_test.py (#4546)
f48efe0 Resolve inconsistencies in using controlled gates & controlled operations (#4167)
9d0ac9c Add Clifford Tableau decomposition function (#4183)
e6dc1e0 Use Gatesets in cirq/neutral_atoms (#4525)
bd1cdbc [cirqflow] Quantum Executable (#4527)
da63524 Fixed test_clifford_circuit_3 (#4534)
5daaec6 Fix resolving integer divisions (#4521)
88be1ef Fix broken path instructions in setting up a dev environment (#4519)
004eed1 Add separators argument to to_json function. (#4537)
6d9bbac Re-add all_measurement_keys and deprecate it (#4540)
34d0f8b Replace the underlying representation of SingleCliffordGate by CliffordTableau (#4165)
44e063b Code Quality Fixes in StatePreparationChannel (#4503)
e256423 [Named Topologies] LineTopology nodes_as_linequbits (#4536)
9591615 Idiomatic use of "segments" in floquet calibration tutorial (#4528)
3a287c2 Use Gatesets in cirq/optimizers/* (#4526)
2868382 Use Gatesets in cirq_ionq/* (#4524)
dfc33a1 Use Gatesets in cirq_pasqal/* (#4523)
61718ca Use Gatesets in cirq/ion (#4522)
4d1b9c0 Add common gate families as part of adopting gatesets across Cirq. (#4517)
f8ffbea Fix docstring for fsim gate (#4520)
f1964e5 Explicitly throw TimeoutError when job times out (#4514)
9f6c359 Exponent should be drawn on target qubit in CX and CCX gates (#4462)
9f371b0 Consolidate SQRT_ISWAP gate defs (#4229)
cf5b45d Little json things (#4506)
7759c05 Add type annotation on FrozenCircuit.to_op (#4505)
0041657 Add cirq.GateFamily and cirq.Gateset (#4491)
464ef04 Fix broken tutorials depending on cirq pre-release (#4504)
f1e676f Fix incorrect index in intro.ipynb (#4502)
3725c6a Implemented State Preparation Gate (#4482)
b80c265 Fix broken Floquet tutorial (#4496)
91bfb5c [Docs] Add calibration FAQ (#4442)
b3fa1bf Abstract out auth+device+sampler boilerplate from cirq_google tutorials (#4286)
578c956 Bump the proto requirements to match the generated data. (#4473)
eb3d84c Replace decomposition in measurement_key_protocol with explicit implementations (#4471)
676431d Adds PauliMeasurementGate (#4444)
9349802 Append list of wrapped finders in sys.meta_path with list of non-wrapped finders (#4467)
3b6ddfb Refactor ActOnArgs.kron/factor/transpose to reduce code duplication (#4463)
7951f84 Deprecate Two/ThreeQubitGate (#4207)
0dce2c1 [Obs] 4.5 - High-level API (#4392)
2988803 Retain log_of_measurement_results throughout simulation (#4465)
9130e2a cirq-google: Export Serializer on top-level cirq_google namespace (#4474)
d8004c6 Enable missing-param-doc pylint rule. (#4457)
6ce9a06 Upgrade notebook (#4468)
b44387a Bring back nest-asyncio to allow running notebooks with latest release (#4472)
de31ee9 Use duet for asynchrony, in particular for Collector (#4009)
58cda7a Serialize SingleQubitCliffordGate (#4421)
932f065 Added r(theta, phi) gate (#4455)
886fc51 dataclass_json_dict (#4391)
6ecaf07 Named Topologies (#4370)
1c2eafb Add missing code for ProjectorSum serialization in TFQ (#4456)
454c1a3 Allow initialization of Measuremen...

Read more

v0.12.0

11 Aug 22:05
Compare
Choose a tag to compare

Cirq v0.12.0 release

Highlights

All Cirq vendor modules have been extracted

Following the example of cirq-google now we have cirq.aqt, cirq.pasqal and cirq.ionq extracted to their corresponding new cirq modules. These are standalone packages that can be installed on their own with pip install cirq-<module>.

Rigetti support

In collaboration with Rigetti, the cirq-rigetti module is now avaiable to access the Rigetti QVM and Rigetti Quantum Computing Service runtimes.

Two-qubit unitary decomposition for (inverse) sqrt-iSWAP

Arbitrary two-qubit unitaries can be now decomposed to single and two-qubit gates using only 3 sqrt-iSWAP gates, compared to the previous 6 sqrt-iSWAP gates. This is an exact analytical compiler based on https://arxiv.org/abs/2105.06074

Typescript development and 3D Circuits

The cirq-web module adds the framework to develop new, interactive, Typescript based widgets for notebook environments. Two new widgets are added as an example: BlochSphere visualization and 3D Circuits.

Python 3.9 support

We now officially support python 3.9, it is included in our testing suite.

Performance boost for low entanglement circuits

Starting with #4100 all simulators now dynamically allocate/deallocate memory when entangling between qubits or measuring/resetting qubits. This allows users to simulate larger number of qubits than otherwise would have been possible, with the requirement that not too much entanglement between qubits exist at any given moment in the circuit.

Breaking changes

  • cirq.MergeInteractions behavior change (#4288):
    • MergeInteractions skips merging CZ gates if there are already equal or fewer in a sequence than the synthesized result (to prevent increasing the gate count). Previously, a tagged partial CZ gate could slip through and not be optimized even if allow_partial_czs=False.
  • changes in mutability of step_result.get_state(copy=False) (#4110):
    • Manual changes made to a step_result.get_state(copy=False) array are no longer preserved by default. If this behavior is required, it will continue to work if split_untangled_qubits=False, but this PR sets split_untangled_qubits=True.

Changes to top level objects

cirq-core

New top level objects

  • SymmetricalQidPair
  • is_cptp
  • BooleanHamiltonian
  • KrausChannel
  • MixedUnitaryChannel
  • ProjectorString
  • reset_each
  • SQRT_ISWAP
  • SQRT_ISWAP_INV
  • MergeInteractionsToSqrtIswap
  • two_qubit_matrix_to_sqrt_iswap_operations
  • entanglement_fidelity
  • kraus_to_channel_matrix
  • kraus_to_choi
  • operation_to_channel_matrix
  • operation_to_choi
  • ActOnArgsContainer
  • OperationTarget
  • StepResultBase
  • GenericMetaImplementAnyOneOf
  • MEASUREMENT_KEY_SEPARATOR
  • has_kraus
  • kraus
  • SupportsActOnQubits

Objects or parameters that are marked as deprecated and will be removed in coming releases

  • cirq.aqt, deadline v0.14
  • cirq.pasqal, deadline v0.14
  • cirq.ionq, deadline v0.14
  • cirq.channel -> cirq.kraus, deadline v0.13
  • cirq.has_channel -> cirq.has_kraus, deadline v0.13
  • cirq.SupportChannel -> cirq.SupportKraus, deadline v0.13
  • cirq.ActOnArgs.axes will be removed, use protocols.act_on instead, deadline v0.13
  • cirq_google.GateOpDeserializer.serialized_gate_id -> serialized_id
  • cirq_google.SerializableGateSet.serialize parameter use_constants_table_for_tokens -> use_constants, deadline v0.13
  • cirq_google.SerializableGateSet.with_added_gates -> with_added_types, deadline v0.13
  • cirq_google.SerializableGateSet.supported_gate_types -> supported_interal_types, deadline v0.13

cirq-google

No changes to top level objects.

New modules

  • cirq-aqt
  • cirq-pasqal
  • cirq-ionq
  • cirq-rigetti
  • cirq-web

A Huge Thank You

Thank you to all our contributors for this release:

Adam Zalcman, Ana Sofia Uzsoy, Antoine (Tony) Bruguier, Balint Pato, Bicheng Ying, Casey Duckering, Craig Gidney, Dax Fohl, Dmytro Fedoriaka, Doug Strain, Eric Hulburd, Jannes Stubbemann, Laurent AJDNIK, madcpf, Malice, Mark Daoust, Martin Leib, Matthew Harrigan, Matthew Neeley, Michael Broughton, MichaelBroughton, Nathanael Thompson, Niko Savola, Noureldin, Orion Martin, Ryan LaRose, Seun Omonije, Smit Sanghavi, Tanuj Khattar, Victory Omole, Wojciech Mruczkiewicz

Full change list

8cba324 Update serialization.md to include deprecation of serializable values (#4411)
1168164 Fix link on jupyter notebook (#4409)
abc7159 Revert "Simultaneous readout" (#4406)
66fd247 implement aspen qubits and devices (#4378)
0d4a31b 3D circuit visualization using Typescript dev environment (#4334)
10c78c9 Add print_version and replace_version to module.py (#4399)
eb72fb5 Simultaneous readout (#4307)
10b15e0 Fix cirq-core dependencies (#4369)
8c505fb update json serialization docs + add module docs (#4397)
9d695c5 Fix BooleanHamiltonian.with_qubits() to work with not only NamedQubits (#4396)
3810349 Reorganize serializers (#4385)
78db102 Add missing import cirq (#4387)
c3f9a5d T1 decay for simulator (#4326)
e56e15d Boolean Hamiltonian gate (#4309)
2466bc3 Throw TypeError around any call in if hasattr(obj, '__iter__') and not isinstance(obj, str): to deal with a numpy special case (#4382)
120eb87 [Obs] 4.4 - Checkpointing (#4352)
b1dc973 Proto serialization v25 (#4333)
fb91578 GeneralizedAmplitudeDampingChannel docstring (#4374)
f7b882c Measureable channels and mixtures (#4194)
409a412 Disallow empty measurement keys and fix tests using empty keys (#4060)
9c23053 Lazily create TrialResult.final_simulator_state (#4317)
9467ad3 Add is_cptp predicate (#4365)
2b1e407 Updated calls to np.prod to use dtype=np.int64. (#4363)
9a38c2d Projectors for TensorFlow quantum (#4331)
2467e39 IdentityGate optimizations for act_on and independent states (S) (#4340)
0f9fa3f Optimize swap gates (#4169)
fb43b84 Fix floquet quirk url (#4347)
bae702c Revert "Enable CircuitOp serialization." (#4355)
809fe66 Revert "Allow CircuitOperations in cirq.optimized_for_sycamore" (#4356)
ecb0202 [Obs] 4.4 - Readout error mitigation (#4323)
187915d Allow CircuitOperations in cirq.optimized_for_sycamore (#4336)
0209c65 Complete implementation of the permit_mixed_moments option (#4342)
4d956c5 Enable CircuitOp serialization. (#4344)
055db68 Allow intercepting decomposer while preserving structure. (#4343)
912110f Adds cirq-rigetti (#4302)
7a27917 Floquet notebook missed review nits (#4341)
093c171 Fix citation and explanation in Floquet calibration example (#4335)
b92f379 Make (cirq.X, cirq.Y, cirq.Z)**1 returned type as _Pauli{X,Y,Z} instead of {X,Y,Z}PowGate (#4330)
dc01372 Attempt to Fix PauliSumCollector.collect_async warning under notebook(short-term solution) (#4004)
16dd1bb better error messaging when deprecated module can't be imported (#4324)
c629c38 Re-alias TrialResult to Result in json. (#4319)
b8e0587 Fix cirq_web README from large Typescript development PR merge (#4314)
a3109a7 pauli_sum_collector.estimate_energy() should return float when energy.imag == 0 (#4313)
0d8bf31 Add missing quote in circuits.ipynb (#4320)
68f7698 T1 constant calculation (#4290)
d9e1f93 Fix NameError in visualizing calibration metrics tutorial (#4316)
d624a55 Add docstyle rule to the linter and subsequent refactor. (#4311)
7407a28 Test deserializer on infinite recursion. (#4315)
c28646f Sample independent qubit sets without merging state space (#4110)
5ca4ab6 Move on_each to Gate, and deprecate SupportsOnEachGate (#4303)
4852c46 Fix automerge checks (#4308)
ada1b09 Add an option to build a PauliSum from a Sympy Boolean expression (#4282)
b1a35bf Revert "Switch to using the incremental pylint. Turn on documentation linters. (#4267)" (#4306)
52aba59 Switch to using the incremental pylint. Turn on documentation linters. (#4267)
cea9eec Return self in Operation.with_tags if adding no tags (#4301)
c8be206 Add reset_each function by analogy with measure_each (#4294)
418d067 Remove bazel from repo (#4297)
4ec906d Allow on_each for multi-qubit gates (#4281)
e2b4477 Use partial_trace to factor density matrix (#4300)
6cfdda7 [XEB] Cycle depths during analysis (#4278)
5c3125e Add py39 testing to CI test matrix. (#4296)
d850bd0 Add Circuit Optimizer for sqrt-iSWAP (#4224)
504bdbb Fix behavior of MergeInteractions for tagged partial CZ gates (#4288)
c80e463 Add two-qubit unitary decomposition for (inverse) sqrt-iSWAP (#4213)
24bac55 Typescript development in Cirq and prototype Bloch sphere implementation (#4171)
6282c06 SimulatorBase independent qubits optimization (#4100)
6b6fc98 fix for issue #4087 (#4103)
680f897 Revert "Support qubits in MeasurementKey and update JSON serialization of keys" (#4277)
1433621 Fix docker (#4230)
55417ee Extract cirq-pasqal (#4241)
608e678 Remove cirq.IonDevice.can_add_operation_into_moment (#4271)
534b951 Add qubits as a param of PauliSum.matrix() (#4203)
d379571 Refactor private static methods to module functions. (#4231)
b1801ab Add coupler pulse gate (#4130)
6d2cd16 No DeprecationWarning deduping during testing (#4239)
ff230df Update tutorials on calibration (#4258)
36e5f60 Add method to get "mapped_circuit" from CircuitOperations (#4188)
09a2ea5 Support sqrt(iSWAP) and Sycamore gates in Floquet calibration (#4248)
aba9fa9 [Docs] Fix dev group link on support page (#4259)
2f07cc9 Fix the CZ ops on the Clifford Tableau Implementation (#4182)
700a6c0 add cancel workflow (#4256)
418e08d Propagate channel from GateOperation to its Gate (...

Read more