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 ofcirq.circuits.Moment
. Recommended use is stillcirq.Moment
. cirq.QuilOutput
has moved tocirq_rigetti.quil_output.QuilOutput
and will be removed in a future version.Circuit.tetris_concat
is moving toCircuit.concat_ragged
.Circuit.final_state_vector
will no longer support positional arguments and will no longer supportqubits_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 newSimulationTrialResult
objects instead.SparseSimulatorStep
will no longer use thesimulator
argument.OperationTarget
will be replaced withcirq.SimulationStateBase
.SimulationState
and children classes (i.e.StabilizerSimulationState
) will no longer support positional args and log_of_measurement_results (replaced byclassical_data
arg).DensityMatrixStepResult
will no longer supportsimulator
parameter.StepResult
has had mutators deprecated in favor of constructing new objects.SimulationProductState
changed argument names tosim_state
.StateVectorSimulatorState
no longer used.ActOnArgs
(and variants) have been replaced by<variant>SimulationState
.StateVectorSimulationState
swap_target_tensor_for
andsubspace_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 newcirq.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
andleast_squares_xeb_fidelity_from_probabilities
deprecated in favor ofcirq.experiments.xeb_fitting
.generate_boixo_2018_supremacy_circuits_v2
,generate_boixo_2018_supremacy_circuits_v2_grid
andgenerate_boixo_2018_supremacy_circuits_v2_bristlecone
has moved torecirq.beyond_classical
module.CrossEntropyResult
,cirq.experiments.xeb_fitting.XEBCharacterizationResult
deprecated in favor ofcirq.experiments.xeb_fitting.XEBCharacterizationResult
.build_entangling_layers
deprecated in favor ofcirq.experiments.random_quantum_circuit_generation
.collect_grid_parallel_two_qubit_xeb_data
moved torecirq.benchmarks.xeb.collect_grid_parallel_two_qubit_xeb_data
.compute_grid_parallel_two_qubit_xeb_results
moved torecirq.benchmarks.xeb.compute_grid_parallel_two_qubit_xeb_results
.measurement_key_names
protcol will use frozensets.act_on
protocol will change argumentarg
name tosim_state
.PauliTransform
replaced in favor ofDensePauliString
.GlobalPhaseOperation
useglobal_phase_operation
instead.ArithmeticOperation
going away in favor of justArithmeticGate
.Gatesets
no longer haveaccept_global_phase_op
argument, instead a user must provide thecirq.GlobalPhaseGate
.NoiseModelFromNoiseProperties
virtual_predicate
renamed tois_virtual
.QuirkArithmeticOperation
deprecated in favor ofcirq.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 tocirq-core
.SimulatedLocalProcessor.get_device
andEngineProcessor.get_device
no longer requires agate_sets
parameter.EngineProcessor.list_calibrations
parameter names changed fromlatest_timestamp_seconds
tolatest_timestamp
andearliest_timestamp_seconds
toearliest_timestamp
.QuantumEngineSampler
deprecated in favor ofcirq_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 requiregate_sets
parameter.Engine.sampler
replaced withEngine.get_sampler
.get_engine_device
now no longer requiresgate_sets
parameter.SerializableDevice
andSerializableGateset
are going away in favor ofCircuitSerializer
andGridDevice
metadata information.optimize_for_{xmon,sycamore}
are going away in favor ofcirq.optimize_for_target_gateset
using the xmon and sycamore gatesets.
What's Changed
- Add iterator support for AbstractJob by @dstrain115 in #5136
- Pin Jinja2 version for build_docs CI. by @MichaelBroughton in #5138
- Bump cirq version to 0.15.0 by @MichaelBroughton in #5134
- Bump minimist from 1.2.5 to 1.2.6 in /cirq-web/cirq_ts by @dependabot in #5140
- Remove deprecated two_qubit_matrix_to_diagonal_and_operations and two_qubit_matrix_to_operations by @tonybruguier in #5102
- Fix broken caching in CliffordGate and add test by @dabacon in #5142
- Cleanup docs/noise.ipynb in preparation for Cirq 1.0 launch by @tanujkhattar in #5147
- Speed up a slow transformer test by @dabacon in #5146
- Make pylint parallel by @dabacon in #5144
- [workflow] Preliminary timing information by @mpharrigan in #5021
- Add docstring for
cirq.TRANSFORMER
public object by @tanujkhattar in #5149 - Base class for quantum states by @daxfohl in #5065
- Allow any object with supporting protocols to be the action in act_on by @daxfohl in #5111
- Fix raiser is not callable. by @MichaelBroughton in #5155
- Corrected result.data implementation. by @MichaelBroughton in #5153
- Support specific IonQ targets (qpu.generation) by @Cynocracy in #5141
- Upgrade black to stable version with format stability guarantees by @maffoo in #5157
- Format cirq-core with latest version of black by @maffoo in #5159
- Clarify virtual tag docstring by @dabacon in #5161
- Format cirq-google with latest version of black by @maffoo in #5160
- Ignore large-scale formatting changes for git blame by @maffoo in #5162
- Remove --pre from notebooks after release. by @MichaelBroughton in #5135
- Update to pylint 2.13 by @maffoo in #5156
- Update educators/intro.ipynb in preparation for Cirq 1.0 launch by @tanujkhattar in #5163
- Disable broken symbols. by @MichaelBroughton in #5165
- Autoformat all of engine_client_test.py by @maffoo in #5164
- Allow specifying timeout_seconds when constructing an ionq Sampler by @Cynocracy in #5133
- Remove reservation colab by @dstrain115 in #5168
- Add Google-specific variant for noise properties. by @95-martin-orion in #5082
- Update docs/transform.ipynb based on new transformer framework. by @tanujkhattar in #5154
- Enforce same control order in ControlledGate equality check by @daxfohl in #5131
- Fix gates.ipynb formatting by @dstrain115 in #5175
- Cleaning up cirq/install docs by @verult in #5178
- Fix docs/circuits.ipynb as part of docs cleanup for Cirq 1.0 by @tanujkhattar in #5177
- Update simulator docs by @95-martin-orion in #5182
- Fix broken link from cirq/tutorials page as part of docs cleanup by @tanujkhattar in #5174
- Convert start.md to start.ipynb. by @MichaelBroughton in #5176
- Update google concepts doc. by @dstrain115 in #5186
- Fix docs/qubits.ipynb as part of docs cleanup for Cirq 1.0 by @tanujkhattar in #5179
- Minor cleanup of QCS tutorial by @verult in #5184
- Link fix on start page. by @MichaelBroughton in #5191
- Neutral atom update by @MichaelBroughton in #5192
- Remove use of deprecated device behavior from quantum_volume_errors. by @MichaelBroughton in #5198
- Remove BooleanHamiltonian object by @tonybruguier in #5099
- Refactor qcs_notebook to use application default creds by @maffoo in #5045
- Cirq web supports LineQubits by @tonybruguier in #5211
- Import new gapic generated code for quantum engine API by @maffoo in #5139
- Fix basics by @MichaelBroughton in #5180
- Deprecate
gate_set
parameter on engine classes. by @maffoo in #5207 - Tweak quantum walks doc by @dstrain115 in #5212
- Deprecate json_serializable_dataclass by @maffoo in #5208
- Fix error and add test for mutable pauli string by @dabacon in #5213
- Fix tutorials/state_histograms.ipynb as part of docs cleanup for Cirq 1.0 by @tanujkhattar in #5206
- Fix tutorials/heatmaps.ipynb as part of docs cleanup for Cirq 1.0 by @tanujkhattar in #5205
- Remove some 0.15 items from cirq.sim by @daxfohl in #5137
- Add Cynocracy to owners of cirq-ionq by @dabacon in #5145
- Fix educators/qaoa_ising.ipynb as part of docs cleanup for Cirq 1.0 by @tanujkhattar in #5204
- Improve documentation about writing type annotations by @maffoo in #5218
- custom_gates.ipynb - minor content cleanup by @verult in #5215
- Make commutes consistent by @dstrain115 in #5217
- Fix numpy annotations np.array -> np.ndarray by @maffoo in #5227
- Delete the target_tensor parameter that was deprecated in 0.15 by @daxfohl in #5225
- Deprecate the ActOnArgs.on* methods by @daxfohl in #5224
- Allow specifying initial state vector in DensityMatrixSimulator by @maffoo in #5223
- Unquote example code in ArithmeticOperation by @maffoo in #5230
- Document CircuitOp optimizer best practices by @95-martin-orion in #5221
- Remove the deprecated mutators in cirq/ops by @daxfohl in #5201
- Allow server-side warnings from IonQ by @Cynocracy in #5222
- Fix educators/textbook_algorithms.ipynb as part of docs cleanup for Cirq 1.0 by @tanujkhattar in #5199
- Fix qcvv/xeb_theory.ipynb as part of docs cleanup for Cirq 1.0 by @tanujkhattar in #5202
- Cleaning up tutorials/variational_algorithm.ipynb by @verult in #5185
- Document CIRCUIT_TYPE and hide other typevars/aliases in circuits.py by @maffoo in #5229
- Make check scripts run pytest in parallel by @dabacon in #5143
- cirq-ionq: Retry non-standard cloudflare errors by @Cynocracy in #5237
- Add q helper function for constructing common qubit types. by @maffoo in #5181
- Unpin sympy and ignore sympy type errors by @maffoo in #5226
- Add calibration-to-noise pipeline by @95-martin-orion in #5187
- Remove device from circuits by @MichaelBroughton in #5189
- Bump tensorflow-docs version by @maffoo in #5250
- Fix tutorials/qaoa.ipynb as part of docs cleanup for Cirq 1.0 by @tanujkhattar in #5200
- Remove custom cirq_type by @dabacon in #5249
- Skip "magic trailing comma" when formatting with black by @maffoo in #5170
- Remove deprecated log_of_measurement_results parameters by @daxfohl in #5233
- Make the quantum state generic by @daxfohl in #5255
- Migrate google/best_practices.md to google/best_practices.ipynb as part of docs cleanup for Cirq 1.0 by @tanujkhattar in #5236
- Format cirq-google with skip-magic-trailing-comma by @maffoo in #5171
- Format according to new black rules by @dabacon in #5259
- Ignore skip-magic-trailing-comma formatting with git blame by @maffoo in #5257
- Use sorted instead of set for random.sample by @dabacon in #5248
- Fix Docs: cirq/tutorials/educators/chemistry by @TimoEckstein in #5251
- Convenience methods for modifying GoogleNoiseProperties by @95-martin-orion in #5188
- Deprecate Gateset.accept_global_phase_op by @daxfohl in #5239
- Exclude TYPE_CHECKING from docs by @tonybruguier in #5261
- Refactor the single qubit Clifford gate by @ybc1991 in #5069
- Re-introduce less idiomatic code for
_group_interchangeable_qubits
implementation by @vtomole in #5273 - Enable CI checks on master push event. by @MichaelBroughton in #5275
- Fix push event to fallback to run_id in ci by @MichaelBroughton in #5277
- Update readme file to use new build badge. by @MichaelBroughton in #5278
- Extract SV/DM/CliffordSimState from simulators by @daxfohl in #5260
- Bump async from 2.6.3 to 2.6.4 in /cirq-web/cirq_ts by @dependabot in #5276
- Serialize datetime by @mpharrigan in #5274
- Deprecate
cirq.SingleQubitGate
by @vtomole in #5272 - Update ops notebook by @MichaelBroughton in #5245
- [cirqflow] Hardcoded qubit placement by @mpharrigan in #5194
- Fix default QuantumStateRepresentation sampler for qudits by @daxfohl in #5234
- [WIP] Expose GoogleNoiseProperties at top level by @95-martin-orion in #5209
- Deprecate the final_step_result parameter of TrialResult by @daxfohl in #5281
- Add parameters for PauliString and GlobalPhase by @daxfohl in #5089
- Check that control and target qubits disjoint in ControlledOperations by @daxfohl in #5286
- Bump types so that SimulatesIntermediateState isn't bound to ActOnArgs by @daxfohl in #5283
- Support complex params in
work
module by @daxfohl in #5285 - Fix one qubit gate docstrings to single standard, start gate zoo by @dabacon in #5246
- Use Boolean Hamiltonian gates for QAOA example by @tonybruguier in #5098
- GateFamily: tag validation by @verult in #5101
- GridDeviceMetadata: allow qubit pairs in both directions by @verult in #5241
- format-incremental: Print black version by @verult in #5295
- Rename ActOnArgs to SimulationState by @daxfohl in #5293
- Fix sympy 1.10 related mypy typing issues by @dstrain115 in #5263
- Fix call signature on Gate to show that it takes Qids. by @dabacon in #5235
- [cirqflow] run_start_time and run_end_time by @mpharrigan in #5289
- Remove qid_pairs deprecation. by @MichaelBroughton in #5290
- Adjust protocols document by @dstrain115 in #5297
- Generalize X and Z to Weyl–Heisenberg gates by @daxfohl in #4919
- EngineResult by @mpharrigan in #5152
- docfixit: interop format by @95-martin-orion in #5305
- create_device_from_processor_id by @95-martin-orion in #5303
- Minor cleanup of rabi oscillation tutorial. by @verult in #5308
- Rename create_act_on_args to create_simulation_state by @daxfohl in #5299
- GridDeviceMetadata: Allow to gate duration keys to be a strict subset of gateset by @verult in #5309
- Update Pasqal Tutorial Documentation by @dstrain115 in #5316
- Update Neutral Atoms to Transformers by @dstrain115 in #5311
- Add json serialization to SycamoreTargetGateset. by @verult in #5314
- Gateset: fix invalid repr when gateset is empty by @verult in #5322
- Check controlled subgate/op has mixture by @daxfohl in #5294
- CompilationTargetGateset support in GridDeviceMetadata by @verult in #5195
- Remove qubit_set v0.15 deprecation. by @MichaelBroughton in #5304
- Remove ids from notebooks by @dabacon in #5325
- Pad inhomogenous result arrays by @daxfohl in #5319
- Fix Qubit Placement docs by @dstrain115 in #5321
- GateFamily: add tags to str representation by @verult in #5312
- Add
global_shift
parameter toPhasedISwapPowGate
by @vtomole in #5328 - ArithmeticGate implementation by @daxfohl in #4702
- Prevent implicit package search from top level setup.py by @pavoljuhas in #5330
- Minor (cosmetic changes) by @qcc4cp in #5329
- Add native gates for IonQ by @Cynocracy in #5313
- Speed up circuit building by not forgetting about cached objects by @dabacon in #5280
- Properly use links in docs for external urls by @dabacon in #5220
- cirq_google.GridDevice, minus gateset and gate durations by @verult in #5203
- Consistent final_state_vector by @95-martin-orion in #5267
- Api docs simulators by @dstrain115 in #5333
- Median device calibrations by @95-martin-orion in #5338
- [cirqflow] Add
target_gateset
to QuantumRuntimeConfiguration by @mpharrigan in #5336 - Add median calibrations to package by @95-martin-orion in #5340
- init for calibrations package by @95-martin-orion in #5342
- Add ability for circuit diagram symbols to depend on transpose by @dabacon in #5269
- Update documentation on qudits by @dabacon in #5196
- Handle inverse for Quil's SWAP gate by @vtomole in #5341
- Encap public fields in cirq.sim by @daxfohl in #5320
- Update unitary for IonQ MS Gate by @Cynocracy in #5335
- Fix (and test) Diagramming IonQ native circuits by @Cynocracy in #5346
- IonQ: Explicitly select lang by @Cynocracy in #5348
- Deprecate random circuits in experiments by @dstrain115 in #5334
- IonQ: Handle loss of precision in floats by @Cynocracy in #5350
- IonQ: Log POST body for job submission when requests fail by @Cynocracy in #5347
- Complete gate zoo and fix gate docs by @dabacon in #5344
- Minor updates to calibration_faq page by @dstrain115 in #5357
- Minor aqt doc fixes by @dstrain115 in #5358
- IonQ: Fixup unitary calculation for GPI by @Cynocracy in #5365
- Make QASM as consistent as possible by @dabacon in #5366
- Add json serialization for PauliSum by @dabacon in #5367
- Avoid np._bool by @dabacon in #5368
- Change qubit str representation by @dstrain115 in #5343
- Add
cg.ProcessorSampler
by @mpharrigan in #5361 - Fix some type errors from mypy --next by @dabacon in #5369
- Add missing raises documentation to
two_qubit_gate_product_tabulation
by @dabacon in #5351 - Add json serialization to diagonal gates by @dabacon in #5356
- Add entangler errors to median data by @95-martin-orion in #5364
- Re-add in pylint plugin by @smadhuk in #5374
- Test round trip of gate to operation to gate by @dabacon in #5354
- Add testing helper for consistent channel/mixture by @dabacon in #5247
- Add missing docstrings for miscellaenous functions and classes by @dstrain115 in #5363
- Fix lint failure by @dabacon in #5382
- Add json serialization for PauliInteractionGate by @dabacon in #5381
- verbosify cirq_type deprecation by @95-martin-orion in #5339
- Remove can_add_operation_into_moment deprecation. by @MichaelBroughton in #5379
- Reject formulas as keys of ParamResolvers by @dstrain115 in #5384
- Keep --pre from installing protobuf 4.x by @dabacon in #5385
- Remove decompose_operation deprecation from device. by @MichaelBroughton in #5380
- Ignore operations on more than 10 qubits in drop_negligible_operations transformer by @tanujkhattar in #5386
- Remove stale condition from assert_controlled_and_controlled_by_identical test by @tanujkhattar in #5391
- Change Pasqal to use transformers by @dstrain115 in #5377
- Fix CCO related nits in
cirq.Operation
andcirq.TaggedOperation
by @tanujkhattar in #5390 - Fix more mypy --next type errors by @dabacon in #5392
- Fix typo in docs/tutorials/state_histograms.ipynb by @tanujkhattar in #5396
- Fix typos and nits in docs/transform.ipynb by @tanujkhattar in #5398
- Drop support for python 3.6 by @maffoo in #5373
- Fix protobuf version specifiers in cirq-google/requirements.txt by @maffoo in #5408
- Major organizational restructure of top level tabs by @augustehirth in #5394
- Change switch_to_new condition in
TwoQubitCompilationTargetGateset
to switch only when it's optimal in terms of 2q gate counts by @tanujkhattar in #5405 - Improve support for CCOs in
cirq.merge_operations
by @tanujkhattar in #5393 - Fix docstrings in gate(set|family) by @dabacon in #5415
- Make all non-analytical gate decompositions respect global phase by @tanujkhattar in #5420
- Update release instructions to include Zenodo citation update by @dstrain115 in #5421
- Remove unused parameter in test by @dabacon in #5423
- Do not generate default repetition ids if use_repetition_ids=False by @maffoo in #5419
- Support prepending noise by @95-martin-orion in #5410
- Deprecating cross_entropy_benchmarking and grid_parallel_two_qubit_xeb by @dstrain115 in #5424
- Deprecate least_squares functions in fidelity_estimation by @dstrain115 in #5428
- Fix from_diagram docstring on GridQubit. by @MichaelBroughton in #5307
- Custom-state-representation simulator infra by @daxfohl in #5417
- Simplify cd to the executing script directory by @pavoljuhas in #5412
- Removing GateSpecification.valid_targets and deprecating some target types by @verult in #5376
- Deprecate implementation of _base_iterator by @daxfohl in #5402
- Rigetti Getting Started Docs Cleanup by @dstrain115 in #5372
- Fix tests that break python-repeat by @dabacon in #5431
- Bump npm from 7.16.0 to 8.11.0 in /cirq-web/cirq_ts by @dependabot in #5435
- Revert "Bump npm from 7.16.0 to 8.11.0 in /cirq-web/cirq_ts" by @MichaelBroughton in #5439
- Avoid subshell executions for $(pwd) by @pavoljuhas in #5436
- Add CircuitOperation blurb by @95-martin-orion in #5399
- Add an icon for Heatmaps in Noise overview by @augustehirth in #5433
- Deprecate QuantumEngineSampler by @dstrain115 in #5432
- Phrasing pass for Circuits by @augustehirth in #5441
- Add outputs back into rigetti getting started guide. by @dstrain115 in #5443
- Update repr of pauli strings by @dstrain115 in #5444
- GridDevice gateset, gate_duration, and compilation_target_gateset support by @verult in #5315
- Fix minor grammar issue on specification page. by @dstrain115 in #5446
- GridDeviceMetadata gate durations: docstring for looking up gate duration via searching through GateFamilies by @verult in #5438
- Document classical control by @95-martin-orion in #5403
- Add numpy support for Google serialization by @dstrain115 in #5451
- Make IonQ native gate docstring format correctly by @dabacon in #5416
- IonQ: Include json body of error response when possible by @Cynocracy in #5349
- DeviceSpecification serialization implementation by @verult in #5375
- cirq.measure - accept list arguments by @pavoljuhas in #5411
- pr_monitor: post empty string as commit message if PR body is empty by @verult in #5458
- Fix more check/mypy --next errors by @dabacon in #5450
- Adds missing consistent mixture tests. by @dabacon in #5454
- Fix circuit api rendering issues by @dabacon in #5462
- Lazily load scipy.linalg by @dabacon in #5461
- Remove execution result from notebooks by @dabacon in #5326
- The number of exponents is too damn high by @dabacon in #5456
- OpenFermion tutorial moved to recirq, delete it by @augustehirth in #5453
- Delete QAOA docs moved to ReCirq, remove links by @augustehirth in #5452
- Pass through None during param resolution by @dstrain115 in #5466
- Remove deprecated qubit_set. by @MichaelBroughton in #5464
- Allow choice of subdimension in cirq.apply_unitary by @daxfohl in #4910
- Add Visualizing Results section to Basics tutorial, other minor improvements. by @augustehirth in #5406
- Remove unnecessary state copy by @daxfohl in #5469
- Publish sample Z phase errors by @95-martin-orion in #5378
- Add private_map to cirq api docs gen. by @MichaelBroughton in #5468
- Cleanup cirq.Circuit api docs. by @MichaelBroughton in #5467
- Remove special CXPowGate.on. by @MichaelBroughton in #5471
- Create a notebook describing parameter sweeps by @dabacon in #5437
- Add supported sympy expressions to Google devices documentation by @verult in #5472
- Add clarification to notebook external deps in docs by @dstrain115 in #5473
- Setup for disabling state_vector copy by @95-martin-orion in #5324
- Fix WaitGate parameter resolution with multiple qubits by @maffoo in #5478
- Prefer range(x) not range(0, x) by @dabacon in #5484
- Union[None, X] is Optional[X] by @dabacon in #5489
- Add IonQTargetGateset and use it for circuit compilations. by @tanujkhattar in #5479
- Split the Transformers page into Transformers and Custom Transformers by @augustehirth in #5414
- Add information on new vendor setup by @dstrain115 in #5485
- Move CircuitDag to contrib by @dstrain115 in #5481
- Remove stale comment from json_serialization_test.py by @tanujkhattar in #5494
- Update error message when invalid sympy arg is serialized by @verult in #5487
- Updated cirq.ionq to cirq_ionq throughout by @dwiddows in #5496
- Move
cirq.contrib.quil_import
tocirq_rigetti.quil_input
by @vtomole in #5493 - Create a
quil_output.py
incirq-rigetti
that doesn't call thequil
protocol by @vtomole in #5490 - [API docs] line_qubit api format. by @MichaelBroughton in #5501
- Dont include global phase gate in decomposition of parameterized CCZPow gate when global_shift is 0 by @tanujkhattar in #5504
- [API docs] Fix Moment API docs. by @MichaelBroughton in #5506
- [API docs] Gate api docs cleanup. by @MichaelBroughton in #5503
- Move cirq.ion.ion_gates.MSGate to cirq.ops module by @tanujkhattar in #5508
- Make _create_transformer_with_kwargs a public method by @tanujkhattar in #5492
- Move
two_qubit_matrix_to_ion_operations
to cirq/transformers/analytical_decompositions by @tanujkhattar in #5509 - The simulate overview page is missing a button. by @augustehirth in #5513
- cirq_google GridDevice: set JSON namespace to cirq.google by @verult in #5512
- Parameter sweeps polish by @augustehirth in #5515
- Deprecate
QUIL
functionality fromcirq-core
by @vtomole in #5511 - Rabi content has been moved to ReCirq: Delete the items in Cirq by @augustehirth in #5448
- Device tutorial rework. by @MichaelBroughton in #5395
- Use new quimb TN string format by @95-martin-orion in #5525
- Measurement confusion maps by @95-martin-orion in #5480
- Make CircuitOp.fromjson more efficient by @daxfohl in #5527
- Set default unitary precision np.complex64 by @dabacon in #5426
- Test substring for quimb objects by @95-martin-orion in #5529
- Deprecate optimize_for_sycamore and optimize_for_xmon by @verult in #5531
- Use async grpc client in EngineClient by @maffoo in #5526
- Classical control phrasing by @augustehirth in #5514
- Increase test tolerances on some analytical decomposition tests by @maffoo in #5535
- Add async support in EngineClient, EngineSampler, etc. by @maffoo in #5219
- Move QuantumStateRepresentation to its own file by @dstrain115 in #5538
- Phrasing pass for devices by @augustehirth in #5523
- Remove Bristlecone and Foxtail deprecated XmonDevices. by @MichaelBroughton in #5483
- Deprecate PauliTransform by @dstrain115 in #5498
- Add new function shell_tools.run by @pavoljuhas in #5528
- Guard confusion_map usage by @95-martin-orion in #5534
- Fix type check of SerializableDevice gate_definitions by @pavoljuhas in #5447
- Replace shell_tools.run_shell --> shell_tools.run by @pavoljuhas in #5545
- Remove ion and NA tutorials from educators. by @MichaelBroughton in #5539
- Downgrade master CI checks to nightly cadence. by @MichaelBroughton in #5540
- Fix more flakes by @dabacon in #5537
- Tools to disable op validation by @95-martin-orion in #5530
- Change output_of to execute commands with shell_tools.run by @pavoljuhas in #5541
- cirq-core target gatesets: accept additional gates to keep untouched. by @verult in #5445
- Move Sycamore and Sycamore23 to GridDevice. by @verult in #5544
- Phrasing updates to new vendor doc by @dstrain115 in #5549
- Move Engine interfaces to GridDevice by @verult in #5558
- Replace shell_tools.run_cmd --> shell_tools.run by @pavoljuhas in #5550
- Treat default gate families with tags_to_ignore or tags_to_accept as custom gate families in Gatesets by @tanujkhattar in #5553
- Purge shell_tools functions by @pavoljuhas in #5566
- Overview updates by @augustehirth in #5567
- Restructure file relocation by @augustehirth in #5442
- Datetime serialization and advice by @mpharrigan in #5422
- Deprecate cirq.ion module by @tanujkhattar in #5563
- Deprecate cirq.neutral_atoms module by @tanujkhattar in #5519
- Move virtual engine processor to GridDevice by @verult in #5561
- Deprecate SerializableDevice by @verult in #5522
- Bayesian Networks by @tonybruguier in #5094
- Add method to get a Clifford gate and phase global phase from unitary by @maffoo in #5568
- Remove deprecated gate_set parameter on various engine classes by @maffoo in #5551
- Document policy for python version support. by @maffoo in #5575
- Lock down CircuitOperation and ParamResolver by @95-martin-orion in #5548
- Fix mypy --next complaint on pytest.TempdirFactory by @pavoljuhas in #5576
- Remove XmonDevice. by @MichaelBroughton in #5562
- Rename tetris_concat by @daxfohl in #5559
- Fixing some 404ing links and anchors by @augustehirth in #5580
- Fix some mypy --next numpy typing errors by @pavoljuhas in #5581
- Remove deprecated qubits in contrib graphdevice. by @MichaelBroughton in #5582
- Document noise representations by @95-martin-orion in #5495
- Fix up types of common clifford gates by @maffoo in #5585
- SerializableGateSet deprecation by @verult in #5573
- Use list comprehensions instead of
list(filter(...))
by @maffoo in #5578 - Raise error instead of warning when downcasting from complex in
apply_unitary
by @vtomole in #5542 - Use np.complexfloating for dtypes that should be complex by @dabacon in #5488
- Use LaTeX for r(x|y|z) by @95-martin-orion in #5594
- backquotes for decompose args by @95-martin-orion in #5595
- Document CircuitOperation methods. by @95-martin-orion in #5597
- Deprecate create_device_proto_for_qubits by @verult in #5592
- All single-qubit Cliffords by @viathor in #5584
- Remove deprecated json functions. by @MichaelBroughton in #5586
- Add cached_method decorator for per-instance method caches by @maffoo in #5570
- review ionq/getting_started tutorial notebook by @pavoljuhas in #5598
- Add a deprecation cycle for ArithmeticOp by @daxfohl in #5599
- Use frozensets for key protocols by @daxfohl in #5560
- Add qubits to PauliStringPhasor by @dabacon in #5565
- String or MeasurementKey in measure by @95-martin-orion in #5603
- Make transformers use higher precision by @dabacon in #5601
- Temporary GridDevice.qubits property by @verult in #5593
- Deprecate Program.language.gate_set proto field by @verult in #5591
- Even more link fixes for 404ing links by @augustehirth in #5587
- Serializers deprecation by @verult in #5589
- GateFamily: do not serialize gates_to_accept and gates_to_ignore when empty by @verult in #5532
- Add user best practices documentation by @dstrain115 in #5604
- Minor updates for the IonQ Service page by @dstrain115 in #5607
- Use mapping in cirq/work by @95-martin-orion in #5609
- Make with_measurement_key_mapping live up to its name by @95-martin-orion in #5610
- Add ISWAP_INV constant by @dabacon in #5613
- Use more accurate complex128 for testing non-public method by @dabacon in #5616
- Engine validator: rename validate_gate_set to validate_program by @verult in #5600
- Speed up some over parameterized tests by @dabacon in #5606
- Make moment str/text diagrams stable (independent of insertion order) by @tanujkhattar in #5474
- Add ISWAP_INV to zoo by @dabacon in #5619
- Tiny changes to a couple of URLs by @pavoljuhas in #5614
- FSim calibration to Z phase data by @95-martin-orion in #5499
- Raise value error if pauli string passed to cirq.measure_single_paulistring does not have a coefficient of +1 by @tanujkhattar in #5623
PauliString
andMutablePauliString
docs and inconsistencies fixes by @tanujkhattar in #5621- Deprecate common serializers by @verult in #5611
- Import cirq after installation in calibration tutorials by @pavoljuhas in #5625
- Update readme CI badge to nightly ci status. by @MichaelBroughton in #5626
- Type some methods in
noise_model.py
by @vtomole in #5612 - Fix more mypy --next errors by @dabacon in #5608
- Remove Result deprecations by @MichaelBroughton in #5627
- Fix qasm generation/parsing for classical controls by @daxfohl in #5434
- More fixes for next version of mypy by @dabacon in #5628
- Remove Rigetti from local checks by @dabacon in #5632
- Remove deprecations in _json_dict_with_cirq_type. by @MichaelBroughton in #5630
- Roll back the default on unitary to np.complex64, change default for final_state_vector by @dabacon in #5636
New Contributors
- @TimoEckstein made their first contribution in #5251
- @qcc4cp made their first contribution in #5329
- @smadhuk made their first contribution in #5374
- @dwiddows made their first contribution in #5496
Full Changelog: v0.14.1...v0.15.0
A Huge Thank You
Thank you to all our contributors for this release:
Adam Zalcman, Antoine (Tony) Bruguier, augustehirth, Bicheng Ying, Cheng Xing, Dave Bacon, Dax Fohl, Dominic Widdows, Doug Strain, Jon Donovan, Matthew Harrigan, Matthew Neeley, MichaelBroughton, Orion Martin, Pavol Juhas, Robert Hundt, smadhuk, Tanuj Khattar, Timo Eckstein, Victory Omole