Cirq v0.15.0
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_placementArithmeticGateISWAP_INVmsqcreate_transformer_with_kwargsdrop_terminal_measurementstwo_qubit_matrix_to_ion_operationsQuantumStateRepresentationCliffordTableauSimulationStateDensityMatrixSimulationStateSimulationProductStateSimulationStateSimulationStateBaseStabilizerChFormSimulationStateStabilizerSimulationStateStabilizerStateChFormStateVectorSimulationStateParamMappingTypeTParamValComplex
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.Momenthas been deprecated in favor ofcirq.circuits.Moment. Recommended use is stillcirq.Moment. cirq.QuilOutputhas moved tocirq_rigetti.quil_output.QuilOutputand will be removed in a future version.Circuit.tetris_concatis moving toCircuit.concat_ragged.Circuit.final_state_vectorwill 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_resultalong with class mutators will be deprecated in favor of constructing newSimulationTrialResultobjects instead.SparseSimulatorStepwill no longer use thesimulatorargument.OperationTargetwill be replaced withcirq.SimulationStateBase.SimulationStateand children classes (i.e.StabilizerSimulationState) will no longer support positional args and log_of_measurement_results (replaced byclassical_dataarg).DensityMatrixStepResultwill no longer supportsimulatorparameter.StepResulthas had mutators deprecated in favor of constructing new objects.SimulationProductStatechanged argument names tosim_state.StateVectorSimulatorStateno longer used.ActOnArgs(and variants) have been replaced by<variant>SimulationState.StateVectorSimulationStateswap_target_tensor_forandsubspace_indexmethods will be made private.SimulatorBasemutators are deprecated in favor of constructing a new class instance.cirq.neutral_atommodule will be going away. Optimizing for neutral atom gates can be done with the newcirq.optimize_for_target_gatesetwith a neutral atom gateset. Devices have moved out to respective vendors.cirq.ionmodule will be going away. Like neutral atom optimizers and devices were moved out to vendors where appropriate.least_squares_xeb_fidelity_from_expectationsandleast_squares_xeb_fidelity_from_probabilitiesdeprecated in favor ofcirq.experiments.xeb_fitting.generate_boixo_2018_supremacy_circuits_v2,generate_boixo_2018_supremacy_circuits_v2_gridandgenerate_boixo_2018_supremacy_circuits_v2_bristleconehas moved torecirq.beyond_classicalmodule.CrossEntropyResult,cirq.experiments.xeb_fitting.XEBCharacterizationResultdeprecated in favor ofcirq.experiments.xeb_fitting.XEBCharacterizationResult.build_entangling_layersdeprecated in favor ofcirq.experiments.random_quantum_circuit_generation.collect_grid_parallel_two_qubit_xeb_datamoved torecirq.benchmarks.xeb.collect_grid_parallel_two_qubit_xeb_data.compute_grid_parallel_two_qubit_xeb_resultsmoved torecirq.benchmarks.xeb.compute_grid_parallel_two_qubit_xeb_results.measurement_key_namesprotcol will use frozensets.act_onprotocol will change argumentargname tosim_state.PauliTransformreplaced in favor ofDensePauliString.GlobalPhaseOperationuseglobal_phase_operationinstead.ArithmeticOperationgoing away in favor of justArithmeticGate.Gatesetsno longer haveaccept_global_phase_opargument, instead a user must provide thecirq.GlobalPhaseGate.NoiseModelFromNoisePropertiesvirtual_predicaterenamed tois_virtual.QuirkArithmeticOperationdeprecated in favor ofcirq.QuirkArithmeticGate.
cirq-google
New top level objects
prepare_characterization_for_circuits_momentsGoogleNoisePropertiesGridDeviceNoiseModelFromGoogleNoisePropertiesEngineResultProcessorSamplernoise_properties_from_calibrationHardcodedQubitPlacer
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 toGridDevice.metadata.gateset` if applicable.GateTabulationhas moved tocirq-core.SimulatedLocalProcessor.get_deviceandEngineProcessor.get_deviceno longer requires agate_setsparameter.EngineProcessor.list_calibrationsparameter names changed fromlatest_timestamp_secondstolatest_timestampandearliest_timestamp_secondstoearliest_timestamp.QuantumEngineSamplerdeprecated in favor ofcirq_google.ProcessorSampler.get_engine_samplernow 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_templatesnow no longer requiregate_setsparameter.Engine.samplerreplaced withEngine.get_sampler.get_engine_devicenow no longer requiresgate_setsparameter.SerializableDeviceandSerializableGatesetare going away in favor ofCircuitSerializerandGridDevicemetadata information.optimize_for_{xmon,sycamore}are going away in favor ofcirq.optimize_for_target_gatesetusing 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.TRANSFORMERpublic 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_setparameter 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_qubitsimplementation 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.SingleQubitGateby @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
workmodule 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_shiftparameter toPhasedISwapPowGateby @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_gatesetto 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.ProcessorSamplerby @mpharrigan in #5361 - Fix some type errors from mypy --next by @dabacon in #5369
- Add missing raises documentation to
two_qubit_gate_product_tabulationby @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.Operationandcirq.TaggedOperationby @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
TwoQubitCompilationTargetGatesetto switch only when it's optimal in terms of 2q gate counts by @tanujkhattar in #5405 - Improve support for CCOs in
cirq.merge_operationsby @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_importtocirq_rigetti.quil_inputby @vtomole in #5493 - Create a
quil_output.pyincirq-rigettithat doesn't call thequilprotocol 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_operationsto 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
QUILfunctionality fromcirq-coreby @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_unitaryby @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
PauliStringandMutablePauliStringdocs 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.pyby @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