Skip to content

Cirq v0.14.0

Compare
Choose a tag to compare
@MichaelBroughton MichaelBroughton released this 24 Mar 08:30

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 cirq_google.ConvertToXmonGates and replace with cirq.CZTargetGateset + cirq.optimize_for_target_gateset (#5096)
a7df579 Replace _PhasedFSimConverter in cirq_google with new transformer primitives (#5095)
1f47082 Extend default decomposition of cirq.ControlledGate and cirq.ControlledOperation to end in X/Y/Z/CZ target gateset (#5091)
90e70c6 Order of keys shouldn't matter when comparing cirq.google.KeyValueExecutableSpec (#5073)
b2d8dd9 Add to_dict() to KeyValueExecutableSpec (#5072)
c153664 Serialize QubitPermutationGate. (#5092)
66dd508 Add support for decompositions of parameterized cirq.CCZPowGate (#5087)
ded5d17 Adds default decompositions for cirq.MatrixGate into X/Y/Z/CZ target gateset. (#5088)
098617c Add support for decompositions of parameterized cirq.DiagonalGate (#5085)
2fb5651 Add default decomposition for cirq.TwoQubitDiagonalGate (#5084)
28f90b0 Support decomposition of parameterized gates in cirq.PhasedXPowGate (#5083)
765ccfe Add assert_decompose_ends_at_default_gateset consistency test (#5079)
083d2e5 Remove reference to deprecated readthedocs documentation in Contribute page (#4988)
701f62c Add return type annotation on MeasurementGate.full_invert_mask (#5080)
fa473b4 Allow repetitions to be parameterized (#5043)
7a5c20e Allow partial state vector function to handle qudits (#5077)
9ae8f1e Add SuperconductingQubitsNoiseProperties (#4964)
889e5d2 Add cg.SycamoreTargetGateset and deprecate cg.ConvertToSycamoreGates (#5054)
c76bbc7 Fix state vector factorization validation (#5076)
bfc04b8 Remove public fields from fsim (#5075)
d8652be Remove public fields for pauli ops (#5062)
27f92ae Wrap private fields for DensePauliString (#5064)
097544e Remove public fields from subop gates and ops (#5074)
120f296 Remove public fields for measurement and controlled ops (#5061)
013498f Rename two_qubit_matrix related functions (#5070)
2792f38 Call decompose_once in TaggedOperation (#5071)
d967317 Update getting started notebook (#5046)
785c5c1 Change ValueError to assertion in clifford_optimize (#5060)
9cefed8 [cg.workflow] Consistent get_sampler() (#5030)
3cdf896 Pin sympy version to <1.10 (#5059)
557cdec Adjust runtime estimator for high numbers of qubits (#5049)
cff7a8e Add type annotations to method overrides in child classes (#5051)
d89baa3 Add some types to equals_tester.py (#5053)
4ddcd5f Refactors convert_to_sycamore_gates to abstract out analytical decomposition methods in cirq_google.two_qubit_to_sycamore (#5044)
3c1c802 Add repeat-until functionality to subcircuits (#5018)
d90b09c Move serialize_program and serialize_run_context into EngineContext (#5034)
d5be95f Recursive subop parameter resolution (#5033)
5ff22ce Add functools.cached_property backport (#5031)
d2ae1e4 BooleanHamiltonianGate implementation (#4705)
8d65806 Update Sampler.run_async signature to match Sampler.run (#5036)
8bc6915 Fix subcircuits with zero reps (#5038)
305cc7d Deprecate cirq.ConvertToSqrtIswapGates and cirq.MergeInteractionsToSqrtIswap (#5040)
6c45d9c Add cirq.SqrtIswapTargetGateset for (parameterized & non-parameterized) compilation to sqrt iswaps. (#5025)
47098b6 Use f-strings consistently in engine_client.py helpers (#5037)
d696635 Add show_error_codes option to mypy config (#5032)
853dde3 Fix run_batch results format for SimulatedLocalProcessor (#5026)
a9e6e4e Update quantum_run_stream to not prefetch first result (#5024)
741e93c Deprecate ignore_measurement_results (#4978)
452dbea Add missing Arg in SimulatedLocalProcessor (#5027)
2d6c8bd Fail fast on measurements in has_unitary (#5020)
43b37fa Add better repr for EngineProcessor (#5022)
387187d Add cirq.CZTargetGateset to replace cirq.ConvertToCZAndSingleGates and cirq.MergeInteractions (#5007)
afb62da Use parallel pytest in the CI checks (#5006)
6f9e277 [cg.workflow] Update str(ProcessorRecord) (#5012)
43527c8 Permit 2D _run output for backwards compatibility. (#5014)
d3d44cb Serialize results with repeated measurements (#5019)
32f319d Sets tolerance to 1.0e-8 by default in equivalence assertion (#5017)
bded331 Allow flattening of subcircuits (#4997)
ddefd84 BugFix in cirq.merge_moments to correctly handle new empty moments. (#5013)
3177647 Reject multiplication of cirq.PauliSum inside in cirq.PauliString (#5010)
ca4c8e7 Replace fields with properties in ActOnArgs (#5011)
1bbbc9f Multiple Qubits Clifford Gate (#4791)
59b72a1 Add cirq.convert_to_target_gateset transformer and cirq.CompilationTargetGateset interface (#5005)
3517306 Add isolated qubit functionality for gridmetadata. (#5001)
6c2b376 Update bell_inequality.py (#4998)
a2f04f1 Add caching to CI. (#4999)
a016e52 Add clean_operations flag to cirq.two_qubit_matrix_to_sqrt_iswap_operations (#5002)
7c5ad61 Add cirq.merge_k_qubit_unitaries transformer to replace cirq.MergeSingleQubitGates optimizer (#4986)
0225963 Deprecate qubit_set in cirq-core/devices (#4965)
43955b3 Allow repeated measurement keys (#4899)
72f9a5b Use CIRCUIT_SERIALIZER as default serializer for quantum engine (#4983)
3c89de1 Use google.auth.default() in cirq_google.get_engine (#4985)
7e78526 Bump follow-redirects from 1.14.7 to 1.14.8 in /cirq-web/cirq_ts (#4993)
dd55a86 Support repeated measurement keys in cirq.Result (#4555)
872b22a Update documentation development instructions and codeowners (#4990)
580575c In QCS getting started, only install cirq-google (#4991)
87d3632 Make circuit._prev_moment_available a public method. (#4980)
6dc316d Add Cirq 1.0 tab to TP. (#4984)
7895028 Replace AbstractEngineProcessorShim (#4842)
aad6c57 Add transformer primitive to merge connected component of operations in a circuit op (#4974)
9ab327a Add cirq.toggle_tags helper to apply transformers on specific subsets of operations in a circuit (#4973)
4dc6e25 Rewrite cirq.stratified_circuit following new Transformer API and primitives. (#4944)
169db48 Refactor virtual_engine_factory (#4909)
0bdc9f1 Deferred measurements transformer (#4849)
aed1964 Minor formatting fixes (#4971)
92032c1 Revert "Change TaggedOperation's __pow__ from returning Operation to returning TaggedOperation " (#4966)
aadc56d Deperecate {ion,neutral_atom}.qubit_set. (#4943)
eb15907 Deprecate device.qubit_set in cirq_ionq. (#4942)
c3b1b22 Deprecate device.qubit_set in cirq_google. (#4940)
5eae221 DeviceMetadata docs update. (#4963)
c20c99b Add cirq.eject_phased_paulis transformer to replace cirq.EjectPhasedPaulis (#4958)
2d2226a Refactor [NoiseModelFrom]NoiseProperties (#4866)
5196dff Remove ch-form cyclical dependencies (#4948)
6937e41 Add ClassicalDataStore class to keep track of qubits measured (#4781)
467c68d Move default implementation of Result.data into base class (#4949)
41312e8 Add cirq.eject_z transformer to replace cirq.EjectZ (#4955)
8b64834 Move cirq/ops/moment.py to cirq/circuits/moment.py (#4932)
6806f6a Add deep=True flag to recursively apply transformer primitives to subcircuits. (#4934)
be0429d Use contextlib.contextmanager for assert_logs and assert_deprecated (#4951)
18eba18 Bump simple-get from 3.1.0 to 3.1.1 in /cirq-web/cirq_ts (#4953)
229a9f2 Add expand_composite transformer to replace ExpandComposite optimizer (#4946)
18d19db remove codeowners windows. (#4950)
4042204 deprecate device.qubit_set in cirq_pasqal. (#4938)
f18fde4 Use group_interchangeable_qubits for qubit comparison in GateOperation (#4941)
a57c5ad Missing cirq_google import in command line QCS example (#4939)
84b0a28 Bump @npmcli/arborist from 2.6.2 to 2.10.0 in /cirq-web/cirq_ts (#4937)
8b71890 Fix _compat tests (#4926)
ec44575 Deprecate device.decompose_operation in cirq-core. (#4922)
92878fc Add tags_to_ignore flag to map_operations and merge_operations transformer primitives (#4933)
57e0920 Rename context.ignore_tags to context.tags_to_ignore (#4931)
2f2c7ca Add state conversion logic from _create_partial_act_on_args to the corresponding ActOnArgs (#4847)
c8dc720 Deprecate {ion,neutral_atom}.decompose_operation. (#4930)
610b0d4 Deprecate device.decompose_operation in cirq_ionq. (#4925)
d3a122b Deprecate device.decompose_operation in cirq_pasqal. (#4927)
c57d8bf Deprecate decompose_operation in cirq_google. (#4924)
f0b249f Add verult as cirq/google owner (#4929)
4f354ea Fix submodule attributes and spec after deprecation (#4920)
9fb7e9c Minor cleanup in QCS Getting Started tutorial (#4575)
86c873b Add drop_empty_moments and drop_negligible_operations transformers. (#4915)
35e6d21 Deprecate can_add_operation_into_moment. (#4902)
ab61d7f Add synchronize_terminal_measurements transformer to replace SynchronizeTerminalMeasurements (#4911)
8c8ee43 Add asynchronous ability to simulated engine. (#4811)
d7a3906 Change TaggedOperation's __pow__ from returning Operation to returning TaggedOperation (#4916)
275372e Clean up redundant use of _deprecate_attributes (#4917)
2dc428b Deprecate set_state_vector and set_density_matrix (#4906)
38fcc42 Support adding / deleting operations in (#4912)
2b2a6fe Fix commutation of classical controls (#4872)
4d445c4 Add align_left/align_right transformers to replace AlignLeft/AlignRight (#4891)
fdf85f0 Support additional **kwargs with default arguments in Transformer API. (#4890)
8c71ac8 Change engine_validator_test to be deterministic. (#4908)
fd4e834 Deprecate qid_pairs (#4900)
c4dd879 Add Bravyi-Gosset-Liu sampling (#4848)
6d2221f Move block_overlapping_deps to _compat.py. (#4904)
e0bbfad Upgrade cirq-web deps. (#4905)
2faba7a Update Cirq decomposition to use RZ, RX, CNOT only (#4824)
497cd3d Allow clifford simulator to run as product state (#4844)
b0519b3 Convert cirq.Result to ABC and add ResultDict implementation (#4806)
2c795d2 Update top level module documentation (#4893)
64e2eac Increase atol for sub_state_vector() (#4877)
aa9d184 Bump ipython from 7.22 to 7.31.1 in /dev_tools/requirements/deps (#4898)
37ba271 revert coverage and notebook packages. (#4896)
12ebe83 Add metadata property for cirq_google devices. (#4869)
ee744bd Documentation fix for cirq.Circuit.prev_moment_operating_on (#4895)
4600f58 Add missing import in README example (#4875)
693ceed Use a Protocol for TRANSFORMER to ensure common arg names (#4871)
90679d2 Fix backwards incompatible pandas usage. (#4873)
b2fa642 Add cirq.TensoredConfusionMatrices for readout error mitigation. (#4854)
c2b8691 Update "Compare to Calibration" tutorial into "Identifying Hardware Changes" with Simultaneous Readout and additional context (#4552)
39ce4f0 add "https://" to first link (#4604)
6119620 Add Transformer API Interface and @cirq.transformer decorator (#4797)
394b9cf Add metadata property to device. (#4868)
e29f47c Add / improve CircuitOperation memoizing (#4855)
1be9468 Fix type signature of act_on implementations (#4867)
ee9bd68 Deprecate XmonDevice, Foxtail and Bristlecone. (#4864)
fe80da7 Add default decompositions for XXPowGate and YYPowGate which terminate in CZPowGate. (#4862)
0a0d5f7 Make DensePauliString an iterable (#4861)
a254447 Fix value_equality_values_cls handling in _value_equality_approx_eq (#4860)
a22269d Fix act-on specialization for all the Clifford simulators (#4748)
8a78e10 Make gate_sets actually optional (#4850)
745ee1b Make order of traversal deterministic in merge_operations primitive (#4764)
7ffc77c [runtime] QubitPlacer 2 - RandomDevicePlacer (#4719)
bce3002 Deprecate ciruit.device everywhere. (#4845)
5e12333 Improve consistency between code and docstrings for XEB (#4853)
4cfa845 Add link to dev environment page in CONTRIBUTING.md (#4843)
3513d13 Bump follow-redirects from 1.14.1 to 1.14.7 in /cirq-web/cirq_ts (#4846)
20b577c Avoid copying unnecessary buffers between simulation iterations (#4789)
972b6d4 Remove use of .device from cirq-aqt (#4812)
ca391ca Add GridDeviceMetadata. (#4839)
33a804b Update equalstester in DeviceMetadata. (#4840)
bfa2602 Make PauliMeasurementGate respect sign of the pauli observable. (#4836)
3a6ad87 Add DeviceMetaData class. (#4832)
89f88b0 Remove use of .device in contrib. (#4821)
0a12c88 Remove use of .device in cirq-google. (#4820)
93bbaa8 Do not separate substates when measurements are ignored (#4816)
778d317 Move GateTabulation and friends to cirq-core as requested in #4461 (#4602)
1634589 Close matplotlib figures after testing (#4810)
bbd965e Import transformers/analytical_decompositions/* methods in optimizers/* (#4813)
45e7ddd Make test ordering and parametrization reproducible (#4788)
c739edc Density Matrix plotting is being fixed (#4805)
b00907a Remove uses of .device in cirq-pasqal in preparation for larger circuit.device deprecation (#4757)
19c965b Move two/three qubit decompositions from optimizers/ to transformers/analytical_decompositions (#4809)
979a443 Change Sampler methods to return Sequence instead of List (#4807)
3d111e4 Convert type comments to type annotations (#4808)
c1389ce Retain ordering information in conversion. (#4384)
8192ae7 Move optimizers/decompositions.py to transformers/analytical_decompositions/single_qubit_decompositions.py (#4799)
3d90501 Fix warning on array creation from ragged sequences (#4801)
09a4667 Upgrade glob-parent to 5.1.2 (#4803)
6bb239f Upgrade Ansi-Regex to 5.0.1 (#4802)
5848740 Fix deprecated_submodule conflict with importlib_metadata (#4772)
b60b9f8 Return NotImplemented from Moment._kraus_() if self._has_kraus_() is False (#4794)
4201daa Add exponent to the labels of web 3D gates (#4777)
efa0820 Part-2: Move analytical decompositions from cirq/optimizers/ to cirq/transformers/analytical_decompositions/ (#4785)
1812fdd Thermal noise model (#4673)
7d6ba34 Use NotImplemented instead of None as default value for TaggedOperation._unitary_ (#4795)
1d76e50 Adding files for virtual emulation (#4793)
9512723 Speed up simplification of CNOTs in _simplify_commuting_cnots (#4626)
894d49e Fix the deprecation warning for ClassicallyControlledOperation (#4780)
d58b58b Fix ResetGate to work with MPS, StabilizerSampler (#4765)
58f6a6f Add classes to aid in providing simulated versions of devices (#4747)
01ae51e Move optimizers/two_qubit_state_preparation.py to transformers/analytical_decompositions/two_qubit_state_preparation.py (#4762)
9581e65 Fix ignore_measurement_results=True for subcircuits (#4760)
9aede58 Sanitize type annotations in cirq.circuits (#4776)
ff671ae Allow sympy expressions as classical controls (#4740)
65d783e [cirqflow] Convenience method for loading results (#4720)
5da6335 Unroll circuit_op when validating containment in a gateset (#4770)
e9b6258 Sanitize type annotations in cirq.sim (#4773)
1d27a00 Fix str/repr explosion in separated states (#4518)
4ebfb1c Scoping for control keys (#4736)
e7892c3 Add json resolvers for sympy relational operators (#4767)
1d8d2f3 Implement PauliStringPhasorGate (#4696)
2e60ca1 Add AbstractEngine objects to cirq_google.engine init (#4759)
c33bd9b Add JSON serialization support for QasmUGate (#4750)
645692e Ignore deprecation warnings from protobufs (#4751)
1145722 Bump tar from 6.1.0 to 6.1.11 in /cirq-web/cirq_ts (#4755)
a7ca3e5 Bump path-parse from 1.0.6 to 1.0.7 in /cirq-web/cirq_ts (#4754)
ce1a242 Fix qasm output for bitmasked measurements (#4756)
ac5b7ca Move cirq.vis methods to the outer cirq package (#4752)
807a24d Insertion noise model (#4672)
ca09f4c Upgrade pinned black version (#4753)
3becbbc Move optimizers/transformer_primitives.py to transformers/transformer_primitives.py (#4746)
9cf2748 Fix scipy.linalg import in swap_gates_test (#4749)
876bad4 Allow sourcing of dev_tools/pypath from any path (#4739)
132005a Utilities for approximate hardware noise (#4671)
b7bfb10 QASM parsing for classical controls (#4738)
e207415 Implement GlobalPhaseGate (#4697)
d419ef5 Add merge_operations and merge_moments transformer primitives (#4708)
e97768c Classical control (#4631)
45fd829 Add missing _has_*_ methods (#4735)
5ae8a2e Circuit superoperator (#4550)
5ee7ff6 Support FrozenCircuit incg.Engine (#4731)
a0497a4 Add runtime estimator (#4718)
5cd5662 Change Engine to implement AbstractEngine (#4723)
7bce81d Support serialization of Gatesets (#4724)
ec79736 Efficient 2q state preparation methods using CZ and SQRT_ISWAP (#4707)
fe7fa12 [runtime] QubitPlacer part 1 (#4700)
9053a27 Support serialization of GateFamilies (#4715)
7259925 format-incremental - store modified files in bash array (#4717)
1bf3f57 Fix operator_spaces.py::kron_bases initial value (#4716)
973b2c7 Simulated Engine Implementation (#4638)
5a30119 Always use bash arrays for changed files and directories (#4703)
d7611dc Remove non-deterministic hash from circuit diagram. (#4712)
1d57c81 pylint - enable check for f-string-without-interpolation (#4706)
43a3280 Don't invoke json_cirq_type if cirq_type is defined...for now. (#4711)
48397d6 Move "cirq_type" responsibility to protocols (#4704)
d42e058 Named topology reprs (#4701)
42ac9da Support and test type serialization (#4693)
272350d Add map_operations and map_moments transformer primitives (#4692)
e311059 Rename (qubits+cbits) to labels (#4675)
a75b215 Add Local implementation of abstract engine classes (#4645)
5be2a9b Clarify runtime of gateset contains (#4694)
80e8474 Add double-line diagrams for control keys (#4627)
1d7436f Add Abstract Engine Interface (#4644)
3af7e89 Remove op validation when inserting into Circuit (#4669)
46cb62f Add a test to ensure reset does not collapse density matrix (#4682)
1ea6061 Enforce LineQubit type for IonDevices (#4690)
1ba6046 Fix remaining documentation lint (#4689)
bfe52b5 Unwind some delayed imports using LazyLoader (#4681)
c15af92 Add sxdg, now that it is supported by qiskit (#4688)
1360fb6 Reducing documentation lint errors even further (#4687)
a1b46dd Removing 0.14.0.dev -> 0.14.0
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 cirq_google.ConvertToXmonGates and replace with cirq.CZTargetGateset + cirq.optimize_for_target_gateset (#5096)
a7df579 Replace _PhasedFSimConverter in cirq_google with new transformer primitives (#5095)
1f47082 Extend default decomposition of cirq.ControlledGate and cirq.ControlledOperation to end in X/Y/Z/CZ target gateset (#5091)
90e70c6 Order of keys shouldn't matter when comparing cirq.google.KeyValueExecutableSpec (#5073)
b2d8dd9 Add to_dict() to KeyValueExecutableSpec (#5072)
c153664 Serialize QubitPermutationGate. (#5092)
66dd508 Add support for decompositions of parameterized cirq.CCZPowGate (#5087)
ded5d17 Adds default decompositions for cirq.MatrixGate into X/Y/Z/CZ target gateset. (#5088)
098617c Add support for decompositions of parameterized cirq.DiagonalGate (#5085)
2fb5651 Add default decomposition for cirq.TwoQubitDiagonalGate (#5084)
28f90b0 Support decomposition of parameterized gates in cirq.PhasedXPowGate (#5083)
765ccfe Add assert_decompose_ends_at_default_gateset consistency test (#5079)
083d2e5 Remove reference to deprecated readthedocs documentation in Contribute page (#4988)
701f62c Add return type annotation on MeasurementGate.full_invert_mask (#5080)
fa473b4 Allow repetitions to be parameterized (#5043)
7a5c20e Allow partial state vector function to handle qudits (#5077)
9ae8f1e Add SuperconductingQubitsNoiseProperties (#4964)
889e5d2 Add cg.SycamoreTargetGateset and deprecate cg.ConvertToSycamoreGates (#5054)
c76bbc7 Fix state vector factorization validation (#5076)
bfc04b8 Remove public fields from fsim (#5075)
d8652be Remove public fields for pauli ops (#5062)
27f92ae Wrap private fields for DensePauliString (#5064)
097544e Remove public fields from subop gates and ops (#5074)
120f296 Remove public fields for measurement and controlled ops (#5061)
013498f Rename two_qubit_matrix related functions (#5070)
2792f38 Call decompose_once in TaggedOperation (#5071)
d967317 Update getting started notebook (#5046)
785c5c1 Change ValueError to assertion in clifford_optimize (#5060)
9cefed8 [cg.workflow] Consistent get_sampler() (#5030)
3cdf896 Pin sympy version to <1.10 (#5059)
557cdec Adjust runtime estimator for high numbers of qubits (#5049)
cff7a8e Add type annotations to method overrides in child classes (#5051)
d89baa3 Add some types to equals_tester.py (#5053)
4ddcd5f Refactors convert_to_sycamore_gates to abstract out analytical decomposition methods in cirq_google.two_qubit_to_sycamore (#5044)
3c1c802 Add repeat-until functionality to subcircuits (#5018)
d90b09c Move serialize_program and serialize_run_context into EngineContext (#5034)
d5be95f Recursive subop parameter resolution (#5033)
5ff22ce Add functools.cached_property backport (#5031)
d2ae1e4 BooleanHamiltonianGate implementation (#4705)
8d65806 Update Sampler.run_async signature to match Sampler.run (#5036)
8bc6915 Fix subcircuits with zero reps (#5038)
305cc7d Deprecate cirq.ConvertToSqrtIswapGates and cirq.MergeInteractionsToSqrtIswap (#5040)
6c45d9c Add cirq.SqrtIswapTargetGateset for (parameterized & non-parameterized) compilation to sqrt iswaps. (#5025)
47098b6 Use f-strings consistently in engine_client.py helpers (#5037)
d696635 Add show_error_codes option to mypy config (#5032)
853dde3 Fix run_batch results format for SimulatedLocalProcessor (#5026)
a9e6e4e Update quantum_run_stream to not prefetch first result (#5024)
741e93c Deprecate ignore_measurement_results (#4978)
452dbea Add missing Arg in SimulatedLocalProcessor (#5027)
2d6c8bd Fail fast on measurements in has_unitary (#5020)
43b37fa Add better repr for EngineProcessor (#5022)
387187d Add cirq.CZTargetGateset to replace cirq.ConvertToCZAndSingleGates and cirq.MergeInteractions (#5007)
afb62da Use parallel pytest in the CI checks (#5006)
6f9e277 [cg.workflow] Update str(ProcessorRecord) (#5012)
43527c8 Permit 2D _run output for backwards compatibility. (#5014)
d3d44cb Serialize results with repeated measurements (#5019)
32f319d Sets tolerance to 1.0e-8 by default in equivalence assertion (#5017)
bded331 Allow flattening of subcircuits (#4997)
ddefd84 BugFix in cirq.merge_moments to correctly handle new empty moments. (#5013)
3177647 Reject multiplication of cirq.PauliSum inside in cirq.PauliString (#5010)
ca4c8e7 Replace fields with properties in ActOnArgs (#5011)
1bbbc9f Multiple Qubits Clifford Gate (#4791)
59b72a1 Add cirq.convert_to_target_gateset transformer and cirq.CompilationTargetGateset interface (#5005)
3517306 Add isolated qubit functionality for gridmetadata. (#5001)
6c2b376 Update bell_inequality.py (#4998)
a2f04f1 Add caching to CI. (#4999)
a016e52 Add clean_operations flag to cirq.two_qubit_matrix_to_sqrt_iswap_operations (#5002)
7c5ad61 Add cirq.merge_k_qubit_unitaries transformer to replace cirq.MergeSingleQubitGates optimizer (#4986)
0225963 Deprecate qubit_set in cirq-core/devices (#4965)
43955b3 Allow repeated measurement keys (#4899)
72f9a5b Use CIRCUIT_SERIALIZER as default serializer for quantum engine (#4983)
3c89de1 Use google.auth.default() in cirq_google.get_engine (#4985)
7e78526 Bump follow-redirects from 1.14.7 to 1.14.8 in /cirq-web/cirq_ts (#4993)
dd55a86 Support repeated measurement keys in cirq.Result (#4555)
872b22a Update documentation development instructions and codeowners (#4990)
580575c In QCS getting started, only install cirq-google (#4991)
87d3632 Make circuit._prev_moment_available a public method. (#4980)
6dc316d Add Cirq 1.0 tab to TP. (#4984)
7895028 Replace AbstractEngineProcessorShim (#4842)
aad6c57 Add transformer primitive to merge connected component of operations in a circuit op (#4974)
9ab327a Add cirq.toggle_tags helper to apply transformers on specific subsets of operations in a circuit (#4973)
4dc6e25 Rewrite cirq.stratified_circuit following new Transformer API and primitives. (#4944)
169db48 Refactor virtual_engine_factory (#4909)
0bdc9f1 Deferred measurements transformer (#4849)
aed1964 Minor formatting fixes (#4971)
92032c1 Revert "Change TaggedOperation's __pow__ from returning Operation to returning TaggedOperation " (#4966)
aadc56d Deperecate {ion,neutral_atom}.qubit_set. (#4943)
eb15907 Deprecate device.qubit_set in cirq_ionq. (#4942)
c3b1b22 Deprecate device.qubit_set in cirq_google. (#4940)
5eae221 DeviceMetadata docs update. (#4963)
c20c99b Add cirq.eject_phased_paulis transformer to replace cirq.EjectPhasedPaulis (#4958)
2d2226a Refactor [NoiseModelFrom]NoiseProperties (#4866)
5196dff Remove ch-form cyclical dependencies (#4948)
6937e41 Add ClassicalDataStore class to keep track of qubits measured (#4781)
467c68d Move default implementation of Result.data into base class (#4949)
41312e8 Add cirq.eject_z transformer to replace cirq.EjectZ (#4955)
8b64834 Move cirq/ops/moment.py to cirq/circuits/moment.py (#4932)
6806f6a Add deep=True flag to recursively apply transformer primitives to subcircuits. (#4934)
be0429d Use contextlib.contextmanager for assert_logs and assert_deprecated (#4951)
18eba18 Bump simple-get from 3.1.0 to 3.1.1 in /cirq-web/cirq_ts (#4953)
229a9f2 Add expand_composite transformer to replace ExpandComposite optimizer (#4946)
18d19db remove codeowners windows. (#4950)
4042204 deprecate device.qubit_set in cirq_pasqal. (#4938)
f18fde4 Use group_interchangeable_qubits for qubit comparison in GateOperation (#4941)
a57c5ad Missing cirq_google import in command line QCS example (#4939)
84b0a28 Bump @npmcli/arborist from 2.6.2 to 2.10.0 in /cirq-web/cirq_ts (#4937)
8b71890 Fix _compat tests (#4926)
ec44575 Deprecate device.decompose_operation in cirq-core. (#4922)
92878fc Add tags_to_ignore flag to map_operations and merge_operations transformer primitives (#4933)
57e0920 Rename context.ignore_tags to context.tags_to_ignore (#4931)
2f2c7ca Add state conversion logic from _create_partial_act_on_args to the corresponding ActOnArgs (#4847)
c8dc720 Deprecate {ion,neutral_atom}.decompose_operation. (#4930)
610b0d4 Deprecate device.decompose_operation in cirq_ionq. (#4925)
d3a122b Deprecate device.decompose_operation in cirq_pasqal. (#4927)
c57d8bf Deprecate decompose_operation in cirq_google. (#4924)
f0b249f Add verult as cirq/google owner (#4929)
4f354ea Fix submodule attributes and spec after deprecation (#4920)
9fb7e9c Minor cleanup in QCS Getting Started tutorial (#4575)
86c873b Add drop_empty_moments and drop_negligible_operations transformers. (#4915)
35e6d21 Deprecate can_add_operation_into_moment. (#4902)
ab61d7f Add synchronize_terminal_measurements transformer to replace SynchronizeTerminalMeasurements (#4911)
8c8ee43 Add asynchronous ability to simulated engine. (#4811)
d7a3906 Change TaggedOperation's __pow__ from returning Operation to returning TaggedOperation (#4916)
275372e Clean up redundant use of _deprecate_attributes (#4917)
2dc428b Deprecate set_state_vector and set_density_matrix (#4906)
38fcc42 Support adding / deleting operations in (#4912)
2b2a6fe Fix commutation of classical controls (#4872)
4d445c4 Add align_left/align_right transformers to replace AlignLeft/AlignRight (#4891)
fdf85f0 Support additional **kwargs with default arguments in Transformer API. (#4890)
8c71ac8 Change engine_validator_test to be deterministic. (#4908)
fd4e834 Deprecate qid_pairs (#4900)
c4dd879 Add Bravyi-Gosset-Liu sampling (#4848)
6d2221f Move block_overlapping_deps to _compat.py. (#4904)
e0bbfad Upgrade cirq-web deps. (#4905)
2faba7a Update Cirq decomposition to use RZ, RX, CNOT only (#4824)
497cd3d Allow clifford simulator to run as product state (#4844)
b0519b3 Convert cirq.Result to ABC and add ResultDict implementation (#4806)
2c795d2 Update top level module documentation (#4893)
64e2eac Increase atol for sub_state_vector() (#4877)
aa9d184 Bump ipython from 7.22 to 7.31.1 in /dev_tools/requirements/deps (#4898)
37ba271 revert coverage and notebook packages. (#4896)
12ebe83 Add metadata property for cirq_google devices. (#4869)
ee744bd Documentation fix for cirq.Circuit.prev_moment_operating_on (#4895)
4600f58 Add missing import in README example (#4875)
693ceed Use a Protocol for TRANSFORMER to ensure common arg names (#4871)
90679d2 Fix backwards incompatible pandas usage. (#4873)
b2fa642 Add cirq.TensoredConfusionMatrices for readout error mitigation. (#4854)
c2b8691 Update "Compare to Calibration" tutorial into "Identifying Hardware Changes" with Simultaneous Readout and additional context (#4552)
39ce4f0 add "https://" to first link (#4604)
6119620 Add Transformer API Interface and @cirq.transformer decorator (#4797)
394b9cf Add metadata property to device. (#4868)
e29f47c Add / improve CircuitOperation memoizing (#4855)
1be9468 Fix type signature of act_on implementations (#4867)
ee9bd68 Deprecate XmonDevice, Foxtail and Bristlecone. (#4864)
fe80da7 Add default decompositions for XXPowGate and YYPowGate which terminate in CZPowGate. (#4862)
0a0d5f7 Make DensePauliString an iterable (#4861)
a254447 Fix value_equality_values_cls handling in _value_equality_approx_eq (#4860)
a22269d Fix act-on specialization for all the Clifford simulators (#4748)
8a78e10 Make gate_sets actually optional (#4850)
745ee1b Make order of traversal deterministic in merge_operations primitive (#4764)
7ffc77c [runtime] QubitPlacer 2 - RandomDevicePlacer (#4719)
bce3002 Deprecate ciruit.device everywhere. (#4845)
5e12333 Improve consistency between code and docstrings for XEB (#4853)
4cfa845 Add link to dev environment page in CONTRIBUTING.md (#4843)
3513d13 Bump follow-redirects from 1.14.1 to 1.14.7 in /cirq-web/cirq_ts (#4846)
20b577c Avoid copying unnecessary buffers between simulation iterations (#4789)
972b6d4 Remove use of .device from cirq-aqt (#4812)
ca391ca Add GridDeviceMetadata. (#4839)
33a804b Update equalstester in DeviceMetadata. (#4840)
bfa2602 Make PauliMeasurementGate respect sign of the pauli observable. (#4836)
3a6ad87 Add DeviceMetaData class. (#4832)
89f88b0 Remove use of .device in contrib. (#4821)
0a12c88 Remove use of .device in cirq-google. (#4820)
93bbaa8 Do not separate substates when measurements are ignored (#4816)
778d317 Move GateTabulation and friends to cirq-core as requested in #4461 (#4602)
1634589 Close matplotlib figures after testing (#4810)
bbd965e Import transformers/analytical_decompositions/* methods in optimizers/* (#4813)
45e7ddd Make test ordering and parametrization reproducible (#4788)
c739edc Density Matrix plotting is being fixed (#4805)
b00907a Remove uses of .device in cirq-pasqal in preparation for larger circuit.device deprecation (#4757)
19c965b Move two/three qubit decompositions from optimizers/ to transformers/analytical_decompositions (#4809)
979a443 Change Sampler methods to return Sequence instead of List (#4807)
3d111e4 Convert type comments to type annotations (#4808)
c1389ce Retain ordering information in conversion. (#4384)
8192ae7 Move optimizers/decompositions.py to transformers/analytical_decompositions/single_qubit_decompositions.py (#4799)
3d90501 Fix warning on array creation from ragged sequences (#4801)
09a4667 Upgrade glob-parent to 5.1.2 (#4803)
6bb239f Upgrade Ansi-Regex to 5.0.1 (#4802)
5848740 Fix deprecated_submodule conflict with importlib_metadata (#4772)
b60b9f8 Return NotImplemented from Moment._kraus_() if self._has_kraus_() is False (#4794)
4201daa Add exponent to the labels of web 3D gates (#4777)
efa0820 Part-2: Move analytical decompositions from cirq/optimizers/ to cirq/transformers/analytical_decompositions/ (#4785)
1812fdd Thermal noise model (#4673)
7d6ba34 Use NotImplemented instead of None as default value for TaggedOperation._unitary_ (#4795)
1d76e50 Adding files for virtual emulation (#4793)
9512723 Speed up simplification of CNOTs in _simplify_commuting_cnots (#4626)
894d49e Fix the deprecation warning for ClassicallyControlledOperation (#4780)
d58b58b Fix ResetGate to work with MPS, StabilizerSampler (#4765)
58f6a6f Add classes to aid in providing simulated versions of devices (#4747)
01ae51e Move optimizers/two_qubit_state_preparation.py to transformers/analytical_decompositions/two_qubit_state_preparation.py (#4762)
9581e65 Fix ignore_measurement_results=True for subcircuits (#4760)
9aede58 Sanitize type annotations in cirq.circuits (#4776)
ff671ae Allow sympy expressions as classical controls (#4740)
65d783e [cirqflow] Convenience method for loading results (#4720)
5da6335 Unroll circuit_op when validating containment in a gateset (#4770)
e9b6258 Sanitize type annotations in cirq.sim (#4773)
1d27a00 Fix str/repr explosion in separated states (#4518)
4ebfb1c Scoping for control keys (#4736)
e7892c3 Add json resolvers for sympy relational operators (#4767)
1d8d2f3 Implement PauliStringPhasorGate (#4696)
2e60ca1 Add AbstractEngine objects to cirq_google.engine init (#4759)
c33bd9b Add JSON serialization support for QasmUGate (#4750)
645692e Ignore deprecation warnings from protobufs (#4751)
1145722 Bump tar from 6.1.0 to 6.1.11 in /cirq-web/cirq_ts (#4755)
a7ca3e5 Bump path-parse from 1.0.6 to 1.0.7 in /cirq-web/cirq_ts (#4754)
ce1a242 Fix qasm output for bitmasked measurements (#4756)
ac5b7ca Move cirq.vis methods to the outer cirq package (#4752)
807a24d Insertion noise model (#4672)
ca09f4c Upgrade pinned black version (#4753)
3becbbc Move optimizers/transformer_primitives.py to transformers/transformer_primitives.py (#4746)
9cf2748 Fix scipy.linalg import in swap_gates_test (#4749)
876bad4 Allow sourcing of dev_tools/pypath from any path (#4739)
132005a Utilities for approximate hardware noise (#4671)
b7bfb10 QASM parsing for classical controls (#4738)
e207415 Implement GlobalPhaseGate (#4697)
d419ef5 Add merge_operations and merge_moments transformer primitives (#4708)
e97768c Classical control (#4631)
45fd829 Add missing _has_*_ methods (#4735)
5ae8a2e Circuit superoperator (#4550)
5ee7ff6 Support FrozenCircuit incg.Engine (#4731)
a0497a4 Add runtime estimator (#4718)
5cd5662 Change Engine to implement AbstractEngine (#4723)
7bce81d Support serialization of Gatesets (#4724)
ec79736 Efficient 2q state preparation methods using CZ and SQRT_ISWAP (#4707)
fe7fa12 [runtime] QubitPlacer part 1 (#4700)
9053a27 Support serialization of GateFamilies (#4715)
7259925 format-incremental - store modified files in bash array (#4717)
1bf3f57 Fix operator_spaces.py::kron_bases initial value (#4716)
973b2c7 Simulated Engine Implementation (#4638)
5a30119 Always use bash arrays for changed files and directories (#4703)
d7611dc Remove non-deterministic hash from circuit diagram. (#4712)
1d57c81 pylint - enable check for f-string-without-interpolation (#4706)
43a3280 Don't invoke json_cirq_type if cirq_type is defined...for now. (#4711)
48397d6 Move "cirq_type" responsibility to protocols (#4704)
d42e058 Named topology reprs (#4701)
42ac9da Support and test type serialization (#4693)
272350d Add map_operations and map_moments transformer primitives (#4692)
e311059 Rename (qubits+cbits) to labels (#4675)
a75b215 Add Local implementation of abstract engine classes (#4645)
5be2a9b Clarify runtime of gateset contains (#4694)
80e8474 Add double-line diagrams for control keys (#4627)
1d7436f Add Abstract Engine Interface (#4644)
3af7e89 Remove op validation when inserting into Circuit (#4669)
46cb62f Add a test to ensure reset does not collapse density matrix (#4682)
1ea6061 Enforce LineQubit type for IonDevices (#4690)
1ba6046 Fix remaining documentation lint (#4689)
bfe52b5 Unwind some delayed imports using LazyLoader (#4681)
c15af92 Add sxdg, now that it is supported by qiskit (#4688)
1360fb6 Reducing documentation lint errors even further (#4687)
9fde1b5 Fix check/mypy-next (#4686)
2e3e5f3 Fix mistakes in circuit tutorial and add picture (#4677)
ca0401f Deprecate from_single_parameter_set on Result (#4680)
8374b71 Removing more documentation lint (#4679)
cd4feda Documentation fixes continue (#4670)
a28d601 Fix test that are failing on aarch64-linux due to precision (#4674)
b263acb More documentation fixes (#4668)
21ed680 Small clarification in development.md (#4663)
c647079 Add cirq_google.FSimGateFamily class. (#4586)
dc6f569 Add pretty repr to devices and result types (#4649)
5428606 Add docker and docker compose to dev install (#4661)
3c0ca4b More documentation fixes (#4654)
dcaacd6 Even more documentation lint (#4662)
ca05b0e Bump version of qiskit-aer in dev-tools (#4659)
5fdf764 Add parameter resolution and other utility methods to _InverseCompositeGate (#4656)
c5477cb Update ecosystem (#4651)
e4d0467 Optimize parameter sweeps to cache unparameterized prefixes (#4533)
13e0225 Fix measurement keys in subcircuits with parent_path (#4616)
a4f5561 Add LazyLoader for delayed imports of slow modules (#4653)
83c440f Ensure subcircuit.mapped_circuit applies parent path if no repetitions (#4619)
2f123fb Fix num_qubits property on AsymetricDepolarizing Channel (#4652)
2cfeef0 Remove remaining uses of cirq.google in docs/ . (#4650)
321ce63 Delay import of scipy stats and optimize (#4643)
6fdad5f Remove deprecated use of cirq.google in install guide (#4647)
6f71b55 Fix FSim serialization for zeros and ints (#4646)
1f0fc1d More lint documentation fixes. (#4641)
72f831d Fix importlib.abc and type madness in _import (#4642)
3b2b2d8 Fixes for documentation (#4635)
017e9a7 [cirqflow] Factor out FilesystemSaver (#4614)
cf06adf [cirqflow] Factor out PrintLogger (#4613)
7c36cef Named topologies: support manual placement (#4628)
eb1d903 Fix operator spaces test which fails due to precision (#4636)
aaf95a8 Fix lint errors (#4634)
ab335e6 Pass shell script arguments without splitting (#4629)
d1e7228 pylint - enforce singleton-comparison check (#4625)
00230f0 Add control_keys protocol (simplified) (#4610)
d137a7d Validating Sampler (#4609)
2f7dfde mixture not matrix in noise notebook (#4621)
1851585 Fix SVGCircuit() for cirq.Circuit with empty moments (#4535)
3df15e3 Fix lint bugs with unused imports (#4622)
64df1fc Implement PhasedXZGate.unitary (#4617)
4985a51 Remove EngineTimeSlot (#4608)
bb4468c [cirqflow] Execution Loop I/O (#4599)
74ed369 Add CODEOWNERS for rigetti (#4543)
1bb7554 Add a copyright checker as a pylint plugin (#4577)
21b9be3 Flush v0.14.0 deprecation backlog. (#4601)
c7d420b Json serialize MSGate (#4605)
ec9fc45 Add jobs filtering by executed and scheduled processor IDs (#4589)
009b3da Flush missed v0.13 backlog items. (#4600)
954a7b6 [cirqflow] Quantum runtime skeleton - part 3 (#4584)
ca25c42 Qcircuit exponent (#4593)