Skip to content

Cirq v0.9.0

Compare
Choose a tag to compare
@balopat balopat released this 01 Oct 21:47

Major usability changes:

  • Batching support in Google's Quantum Engine API as well as in Samplers in general
  • Faster parameter resolution for a wider set of types
  • You can now use cirq.parameter_names, cirq.parameter_symbols to extract parameter names from your circuit
  • Default values for Arg serializers are being introduced in two steps: first the deserializer (#3280), later the serializer will be introduced
  • Extensive documentation on Pasqal
  • Extensive documentation on Google's Quantum Computing Service
  • Google Quantum Engine can list jobs and programs
  • Python 3.7 and 3.8 are now continuously tested and dependency issues are resolved
  • Experimental support for Quimb Tensor Network Simulators (#3129)
  • We removed wavefunction, wave_function, or state - now, state_vector is consistently used instead

Breaking changes:

  • cirq.approx_eq now raises an AttributeError if the symbolic evaluation can't unambiguously decide the equality, before it returned False #3195
  • cirq.google.Engine methods run, run_sweep and create_program now raise ValueError if gate_set is not specified #3138
  • cirq.google.Engine constructor signature change: context is now last to signal that direct usage isn't recommended #3151
  • cirq.google.is_native_xmon_gate, cirq.google.is_native_xmon_op, cirq.google.pack_results, cirq.google.unpack_results are now removed, they are still accessible but through the deprecated cirq.google.api.v1.programs module #3204
  • circuit + gate behavior changed, it won't create an extra moment, instead packs the new gate efficiently #3364

New protocols:

  • cirq.act_on
  • cirq.pauli_expansion

New top level objects:

Top level objects that are marked as deprecated and will be removed in coming releases:

  • cirq.QFT
  • cirq.final_wavefunction
  • cirq.has_mixture_channel
  • cirq.mixture_channel
  • cirq.subwavefunction
  • cirq.validate_normalized_state
  • cirq.wavefunction_partial_trace_as_mixture
  • cirq.SimulatesIntermediateWaveFunction
  • cirq.TrialResult
  • cirq.WaveFunctionSimulatorState
  • cirq.WaveFunctionStepResult
  • cirq.WaveFunctionTrialResult
  • cirq.google.engine_from_environment

A Huge Thank You to all our contributors for this release:

  • AJ Hanus
  • Abhik Banerjee
  • Adam Zalcman
  • Alexis Shaw
  • Animesh Sinha
  • Billy Lamberta
  • Bálint Pató
  • Craig Gidney
  • Dave Bacon
  • David Yonge-Mallo
  • Dmytro Fedoriaka
  • Doug Strain
  • Henrique Silvério
  • Kevin J. Sung
  • KevinVillela
  • Mark Daoust
  • Matteo Pompili
  • Matthew Harrigan
  • Matthew Neeley
  • MichaelBroughton
  • Oliver O'Brien
  • Orion Martin
  • Peter Karalekas
  • Ryan LaRose
  • Samarth Vadia
  • Seb Grijalva
  • Shadab Hussain
  • Shaswata Das
  • Tanuj Khattar
  • Tony Bruguier
  • Yash Katariya
  • Yusheng Zhao
  • Zachary Crockett
  • crystalzhaizhai
  • karlunho
  • smitsanghavi
  • tonybruguier-google
  • yourball

Full change list:

65abd00 releasing v0.9.0
2c0c481 Fix quimb version checking (#3378)
ddb4071 Fix np.pad issue in numpy 1.16 (#3377)
67444ea Fixing sympy imports (#3376)
8d5a3af Improve GridQubit dictionary lookup performance 3x (#3375)
8802685 Un-invert B gate (#3373)
5029af4 Do not perform extra optimizations in "via B" decomposition (#3370)
0d961ad Python 3.8 support (#3365)
0bb9239 Change names of focused calibration protos for consistency. (#3369)
be1d024 Greedy router (#3360)
46f8df7 Extending types for symbol resolution fast pass-through (#3366)
fa80d4c Add extensions to document public constants (#3367)
e852d58 Add cirq.StabilizerSampler (#3355)
b65e0b4 Adjust Circuit.__add__ behavior to match Circuit.__iadd__ (#3364)
83c1f23 Docs for listing jobs and programs (#3362)
fb164bb Adds cirq.num_cnots_required and cirq.to_special (#2892)
bba0153 Execute TODO to have the prob mass auto added (#3363)
fa99585 Add symmetric depol (#3361)
730cc24 Adding default values to op serializers and deserializers (#3280)
fa433c3 s|TrialResult|Result (#3344)
43aed78 ignore q in gridqubit ids (#3357)
e0a078a Fix NumPy 0.19 related issues (#3358)
89d3383 feat(cirq): Add greedy implementation of aligning 1-qubit, and 2-qubit gates optimizer (#2869)
37f5cb2 Generalize asymmetric depolarization channel to multiple qubits (#3262)
8a69e8e Make PauliString's key type generic (#3325)
4406b2d Various updates to automerge script deployment (#3334)
9bb96d2 adds pasqal pages to devsite (#3352)
b73a53b adding 3.7 to the tests (#3348)
7c63a42 Added Moment operation at (#3339)
4298a97 Refactor to_resolvers to use to_sweeps (#3343)
77eed43 added NamedQid and GridQid to the qudit concept page (#3338)
64939e5 Explaining Engine API access (#3337)
0105808 Add methods for converting dict to product or zip sweep and deprecate implicit cartesian product (#3333)
b5a4269 pygment 2.6.1 to fix readthedocs (#3336)
8511426 Moving style.md to the developer documentation (#3335)
896c03a Add ActOnStabilizerCHFormArgs (#3326)
d95682b Implement cphase (#3332)
c2c7d60 Automerge bot on GCP (#3317)
1a3c53c Fix link to RFC process in CONTRIBUTING.md (#3331)
11933d1 Improve parameter-related types and documentation (#3330)
946665d Change _book.yaml to point to /reference/python (#3328)
50eba00 Add TensorProductState, a state-vector-like object (#3171)
b0f42a1 List Engine jobs (#3322)
a024787 Update book for api gen changes (cl/331666270) (#3321)
dd3df77 Change MutablePauliString from private to public (#3299)
bfedcbc List programs (#3320)
0f29fae cleanup engine docstrings (#3319)
c53ef33 Improve initial_state handling for CliffordTableau and StabilizerStateChForm (#3309)
20df07e Add cirq.QubitPermutationGate (#3298)
054fa07 Add CPMG to T2 experiment (#3255)
e2f1ec5 Add docs for batched_result (#3314)
01ae472 Implement speckle purity benchmarking as part of grid XEB (#3291)
a98808a Add run_batch to Sampler and QuantumEngineSampler (#3265)
09dc178 moving cirq-unstable publishing to Github Actions (#3311)
c652c88 Update gates.ipynb (#3312)
6b1422a Add parameter_names and parameter_symbols protocols. (#3273)
ae59093 Adjust docs for Getting started guide (#3307)
f0666bf Adding documentation on Request for proposals (#3097)
dca2cb4 Fix a bug in validating computational basis limits (#3306)
55502f1 Split right multiplication into separate methods in StabilizerStateCHForm (#3259)
ecd5326 Add batched_results() to retrieve BatchResult (#3303)
6132129 Add Moment.with_operations and use in Circuit.batch_insert_into (#3282)
60b4ad3 Fix command-line engine start up guide (#3304)
e61e277 Add information on downloading historical results (#3300)
a97479e Add a few extra links to documentation (#3301)
0c17bc9 Add information about batching restrictions (#3296)
0fc057a Update documentation on bell_inequality.py example (#3281)
e04187c Quantum Engine documentation (#3283)
1a41835 Add more information about gates and best practices (#3287)
a62ed8b removing readthedocs.io references (#3294)
65876a9 fix hanging docs build + bad cleanup logic (#3284)
1699cb3 Minimum required version of quimb. (#3272)
431d986 Add SupportsPauliExpansion (#3270)
39e6fb8 docstrings for type aliases in devsite API docs (#3275)
749468b Update book/index (#3268)
52a2c49 Give mypy a hint (#3271)
898a1ff Add allow_decompose flag on has_channel (#3249)
77d0170 Fix copyright notes: Google LLC -> The Cirq Developers (#3264)
4041362 Added qid version of Named Qubit (#3187)
e0fbadc [automerge/cirqbot] paging for PR events (#3251)
dbf0bcf Calibration proto fixes (#3261)
b38b8d1 Add shortcut for get_engine_calibration (#3258)
df755d9 Use num_qubits protocol in ActOnCliffordTableauArgs (#3260)
3a08c52 Add protos for Focused Calibration (#3222)
2a4222e Fix documentation of [Engine, EngineProgram].run_batch (#3254)
ac21df5 Fixing a bunch of typos (#3252)
826db47 [qpolish] dev-site & readthedocs hybrid (#3227)
140fb95 Add pow function to arg_func_lang (#3218)
a77bec6 Feature request template (#3236)
b9c4702 Upgrade to sphinx 3.2.* and fix warnings (#3247)
1e2c30e Add get_engine_device shortcut (#3225)
3e00896 A example of Qec using Shor's Code (#2922)
656e388 Escape special characters in Jupyter circuit diagram (#3221)
29e6c52 Add JsonResolver mypy type for custom json resolvers (#3223)
aff27b8 Add Moment.sub and generalize Moment.add (#3216)
72c2a9f Minor Correction to Dev Docs. (#3217)
d244bf7 Disable cirq v1 api docs (#3215)
1aabcb7 Add initial support for converting Quil programs into Cirq circuits (#3211)
193c35d Add jupyter-compatible repr for SerializableDevice (#3207)
b878d06 Add missing factor of pi to parameterized Quil gate output (#3206)
0caaeb5 Remove cirq v1 programs from namespace (#3204)
9de4390 Rewrite sympy in 20 lines (#3205)
059006d Qc render fix (#3186)
4bab2d2 Approximately equal circuits with symbols not detected by cirq.approx_eq (#3195)
3c7fc5d Document matrices for parity gates (#3199)
4e9681f Fix docs build (#3201)
143ac08 Quimb Tensor Network Simulators (#3129)
4539bb9 Adding Pasqal documentation (#3193)
335aba8 Cosmetics: e.g. vs i.e. (#3191)
d848611 [Pasqal updates] Adding PasqalVirtualDevice (#3181)
cf27230 Fix signs of rotation gates in gate tutorial (#3180)
b21baea [Pasqal updates] Updated gate set (#3160)
4f30b57 Fixed Issue #3178 (#3179)
f3acfbd Adding a DFE Jupyter notebook (#2932)
c5584c0 adding rstcheck for rst files (#3177)
2bc9973 Fix readme section headers (#3176)
53fe161 fixing broken deprecation namings (#3174)
d16f3a1 Preserve (and resolve) tags when resolving TaggedOperation (#3172)
3577ea2 Add Hidden Shift Algorithm example (#3052)
a7a8689 cirq-dev and other updates to README.rst (#3167)
75e5f74 Unit test for Clifford check skipping multi-qubit unitaries (#3168)
7bf16e1 Use device instead of gateset validation in ZerosSampler (#3142)
6f24531 Test the right order finder (#3166)
7a4ccaf Skip unitary in Clifford check (#3165)
0952958 Remove q from calibrations.py (#3163)
74c0aa8 Add get_engine and deprecate engine_from_environment (#3151)
3076bba [Pasqal updates] Removing ThreeDGridQubit (#3161)
a7b1317 Adding Quantum Chess tutorial (#3162)
a16824f CI check for uncommitted generated proto files (#3159)
4bf14c1 Fix calibration metric names in docs (#3155)
65f2b16 fix bug in deprecated collapse_wavefunction (#3156)
ea20a18 Adding documentation about big endian values (#3146)
d1b374c checkout@v1 to v2 (#3158)
4f20b00 [Pasqal updates] PasqalDevice class generalization (#3141)
4abff18 Propose a bug report issue (#3119)
ee35ee9 Remove ProtoVersion.V1 from Engine (#3147)
88779d4 Create double_val in oneof for program (#3140)
8ad5186 get_engine_sampler (#2767)
8ccca1b Modify PointOptimizer to handle multiple modified gates acting on the same qubit in a moment (#3016)
12a2a9a std dev on fidelity (#2977)
8afb02c Add ZerosSampler (#2912)
b3728aa release process nits (#3137)
72808f3 [Pasqal updates] New qubit classes (#3133)
8071b0c Remove XMON as engine default (#3138)
1249276 Add docs for circuit batching (#3134)
fb9fbac Add ActOnCliffordTableauArgs. Support it in act_on for common gates and measurements. (#3063)
adc8964 Bump protobuf requirement to 3.12.x (#3132)
c869e0e Support adding numpy arrays to GridQubits (#3131)
190e842 Add getitem to EngineJob (#3128)
1a6c6f6 Add grid parallel two-qubit XEB (#2834)
62ef7f7 Fix some test incompatibilities with latest numpy (#3107)
b21294b Add batch support to cirq Engine client (#3114)
df52d1c Add KakDecomposition.decompose by fixing factor of 2 error in exp(PauliString) (#3125)
4e44446 Add MeasurementGate.with_key to change measurement key (#3123)
b37f226 Improve docstrings for controlled common gate overrides (#3117)
76472fd Add a code of conduct (#3118)
a06be71 Defensively copy state vector in simulator (#3115)
a610aab Only override control when global phase is zero (#3113)
5934b5a Defensively copy density matrices in simulator (#3109)
bbd8a2d Change Operation.with_qubits return type to match self type (#3112)
7cfef7a Preserve external simulator recommendations. (#3108)
f3fec91 Expose methods in contrib.noise_models (#3102)
a69b82f Reduce numpy version
d75467d Implement unitary protocol for linear combinations (#3096)
b0a4599 Fix split_into_unitary_then_general not spreading blocks across operation (#3095)
037afff Fix cirq.Simulator assuming a reset is safe to cache before sampling (#3093)
b0b398e Add circuit_diagram_info to cirq.PauliString (#3094)
7f0bb62 Api builds (#3090)
c866d23 Fix Quirk import extra gates bug
d3ce7cc Fix flakes in random_circuit_test (#3084)
2b5e176 Add generated code for batch.proto (#3086)
f55090a Support multi-qubit measurement in plot_state_histogram (#3054)
20fb717 [SVG] Noise hack and font fix (#3076)
e1e0038 Make LinearDict json serializable (#3072)
c69af97 Fix build-doc github action failure (#3082)
8cc7d93 Add Circuit.zip method (#3075)
2b8b085 Fix IdentityGate.on_each failing when given a qubit that is iterable (#3036)
03a7dc8 Disentangle MS gate and XXPowGate. (#3015)
d998b3a Add Batched requests to Google's cirq messages (#3064)
4860f5c Add missing methods to cirq namespace (#3070)
369ed54 Use FromString classmethod for protos (#3066)
d9c0221 Add .gitattributes file to hide proto generated code in PRs (#3065)
7191cb5 Adds pylint on only changed files. (#3038)
008eab4 Fix VirtualTag (#3051)
caab356 Fix methods missing from doc strings (#3048)
eb4ad79 Add a docstring to testing default gate domain constant (#3047)
fd62530 Fix empty gate domain problem in random_circuit (#3037)
b45b7ef Heed deprecation notice for has_mixture_channel (#3040)
e301b40 Add support for monte carlo channel simulation (quantum trajectories) (#3043)
79d83e0 Add mixture support to Controlled{Operation,Gate} (#3042)
0068c4e Deprecate QFT to qft (#3039)
9f0b49b Add increment proto build and use in CI (#3012)
804c8e5 Deprecate mixture_channel in favor of just mixture (#3026)
28962e6 Updates random_circuit for single qubit circuits (#3029)
127fdae Fix Gate.on_each failing when a Qid class has an iter method (#3030)
e9ac2ba Deprecation: State_vector not wavefunction, wave_function, or state. (#3022)
e697284 Add with_probability modifier to Gate and Operation (#3024)
a344fb7 Add act_on protocol (#3019)
77efcbc Add support for PhasedXZ in EjectZ optimizer (#2951)
3631460 Fix local lint warnings in text_diagram_drawer.py (#3025)
f48e0c6 ContextManager for testing logs (#3009)
5c76c2c Generalize measurement_key to measurement_keys protocol (#2944)
70dc5ef No longer need to install asteroid in CI
505ee1f Bump pytest-asyncio version to remove warning (#3014)
93ecd24 [SVG Circuits] Give up gracefully on gates with big labels (#3007)
5d6b8bc Fix an equation which does not display correctly in nbsphinx. (#3008)
1d21e96 Fixes obvious typo (#3005)
e907109 Update contributing markdown links
6d72b98 Fix some documentation for engine
3d645b7 Enable serialization of non-GridQubits. (#2966)
6bdcb1c Initial T2 experiment (#2725)
c7a8c19 Add the release procedure to the markdown file in cirq (#2992)
17e27e6 Add timeout to engine object (#2996)
8e30cf6 Add tests for module wrapping in _compat
047421d set dict when wrapping module
e5af689 Fix PauliString exponentiation (#2989)
f532a86 Harden arg function serialization
03a91fe Enforce argument types in engine client
a98041d First iteration of the outputting to Quil. (#2903)
4a0ded7 Add TwoQubitDiagonalGate (#2891)
f0be329 Doctest fix. (#2987)
32c769f Make circuit rendering of swap-like gates consistent (#2945)
502a5f3 Decompose cphase to two fSim gates (#2955)
6aa0a02 Update protobuf version
720ea34 Pipe seed into quantum teleportation example
2899c1f Update asteroid version (#2976)
78fc4c2 Cleanup TODOs and corresponding Github issues
0915ac2 Fix Problem with Y gates in Clifford Simulator (#2960)
8e980fd Bump version of master to 0.9.0.dev