Cirq v1.1.0 release
Summary
This Cirq release focuses on tracking and improving performance of key workflows like circuit construction, parameter resolution etc. The release also adds a new transformers framework for qubit routing and provides an efficient implementation of the qubit routing algorithm described in arXiv:1902.08091 [quant-ph]
As part of this release, we have also published our new backwards compatibility guidelines.
Backwards Incompatible Changes
7892143 Print multi-qubit circuit with asymmetric depolarizing noise correctly (#5931) by Paige
af1267d Allow repeated measurements in deferred transformer (#5857) by Dax Fohl
What's New
New top level objects in cirq-core:
- RoutingSwapTag
- AbstractInitialMapper
- HardCodedInitialMapper
- LineInitialMapper
- MappingManager
- RouteCQC
- routed_circuit_with_mapping
What's Changed
- Support multi-qubit measurements in deferred measurement transformer by @daxfohl in #5787
- Avoid warning on complex-to-float conversion by @pavoljuhas in #5795
- Post 1.0 version policy and release process by @verult in #5747
- Add Observables and PauliStrings by @augustehirth in #5750
- Add QVM pages and mentions in other pages by @augustehirth in #5794
- Update pasqal getting started tutorial to 1.0 by @dstrain115 in #5798
- Links and titles by @augustehirth in #5799
- Bump Cirq version to v1.1.0 by @MichaelBroughton in #5796
- Revert "Add Cirq 1.0 tab to TP." by @MichaelBroughton in #5797
- Fix README links by @95-martin-orion in #5802
- Document fix by @thisisjaymehta in #5807
- Minor style changes to qvm builder code notebook by @augustehirth in #5808
- Add
{Frozen}Circuit.from_moments
to construct circuit by moments. by @maffoo in #5805 - Remove alpha notice. by @MichaelBroughton in #5811
- No qudit Y gate by @viathor in #5814
- Convert iterator to list to list before looping through moments in
def insert
by @vtomole in #5820 - Add binary literal example to methods of SimulatesAmplitudes class by @Caffetaria in #5818
- Add nodes_to_linequbits method to LineTopology by @Caffetaria in #5821
- Created routing utilities subdirectory in cirq-core/transformers and added MappingManager module by @ammareltigani in #5823
- Added str and repr for MappingManager and pushed name 'MappingMananger' to 'cirq' namespace by @ammareltigani in #5828
- Adds AbstractInitialMapper base class and IdentityInitialMapper by @ammareltigani in #5829
- Creates fake grid device for testing qubit connectivity in routing by @ammareltigani in #5830
- Fix mypy type check errors due to sympy update by @tanujkhattar in #5836
- Reduce
atol
in two qubit isometry analytical decompositions to fix failing tests on CI by @tanujkhattar in #5837 - Implements the LineInititialMapper strategy by @ammareltigani in #5831
- Changed mapping manager to use floyd warshall by @ammareltigani in #5843
- Added a public routing swap tag by @ammareltigani in #5844
- Potential fix for unclickable sidebar heading by @augustehirth in #5842
- Fix docstring for
cirq.map_operations
by @tanujkhattar in #5849 - Fix phase in factor by @daxfohl in #5847
- Restrict numpy version to unblock inflight PRs from failing by @tanujkhattar in #5853
- Adds unitary testing for routed circuits by @ammareltigani in #5846
- Adds the main transformer to do routing in Cirq by @ammareltigani in #5838
- Enable testing of cirq_google notebooks. by @dstrain115 in #5766
- Fix typing complaints showing at numpy 1.23 by @pavoljuhas in #5856
- Change to use virtual engine in cirq_google docs by @dstrain115 in #5858
- Fix asv setup and add benchmarks for circuit construction by @tanujkhattar in #5845
- Fix mypy error on master by @tanujkhattar in #5865
- Add benchmarks for parameter resolution by @tanujkhattar in #5864
- Remove TODO markers for fixed issues by @pavoljuhas in #5871
- Add performance benchmarks for CQC circuit routing by @tanujkhattar in #5869
- Added visualization for qubit permutations for routed circuits by @ammareltigani in #5848
- Replace pure python loops with numpy where possible in channels.py. by @MichaelBroughton in #5839
- Tell git to ignore build directories from distutils by @pavoljuhas in #5875
- Fix docstring typos in cirq.devices submodule by @pavoljuhas in #5876
- Adds tutorial ipynb for routing as a transformer by @ammareltigani in #5877
- Speeds up RouteCQC by encoding qubits as integers by @tanujkhattar in #5872
AbstractCircuit.freeze
should not reallocate moments by @vtomole in #5878- Use pytest-randomly for reproducible random test parameters by @pavoljuhas in #5868
- Bump got and gts in /cirq-web/cirq_ts by @dependabot in #5881
- Remove a few debug prints from tests by @vtomole in #5879
- Use GitHub tarball for tensorflow-docs dependency by @pavoljuhas in #5882
- Add performance benchmarks for single qubit randomized benchmarking by @tanujkhattar in #5866
- Generalize filtration of dev requirements that can't be uploaded to pypi by @vtomole in #5886
- Bump node-forge and webpack-dev-server in /cirq-web/cirq_ts by @dependabot in #5854
- Bump json-schema and jsprim in /cirq-web/cirq_ts by @dependabot in #5887
- Address nits in Single Qubit Randomized Benchmarking benchmarks: by @tanujkhattar in #5885
- Fix failing imports from httpcore by @pavoljuhas in #5891
- Bump up the minimum required version of ply by @pavoljuhas in #5890
- untangle entangled tests by @pavoljuhas in #5892
- Optimize circuit/moment resolution to reuse instances if possible by @maffoo in #5894
- Implement the inverse of IonQ native gates by @yitchen-tim in #5889
- Speed up circuit construction when contents are a list of moments by @tanujkhattar in #5898
- Fix test failure on differing precision of float in proto string by @pavoljuhas in #5911
- Small housekeeping in check/pytest by @pavoljuhas in #5899
- Fix issues reported by shellcheck by @pavoljuhas in #5910
- Allow qudits in deferred measurements by @daxfohl in #5850
- Handle confusion matrices in deferred measurements by @daxfohl in #5851
- Add version compatibility policy guidelines for Cirq by @tanujkhattar in #5897
- Add apply_channel optimizations for reset and confusion by @daxfohl in #5917
- Remove checks so that
hold_time
is sweepable by @eliottrosenberg in #5919 - Remove
id
from top-level notebook structure. by @markmcd in #5874 - Add support for arbitrary angles to IonQ native MS Gate by @gmauricio in #5920
- Add support for repeated keys in result protos by @maffoo in #5907
- Allow symbol for coupling_mhz in CouplerPulse gate by @maffoo in #5908
- Fix sympy error by @dstrain115 in #5930
- Fix typo by @viathor in #5935
- Simplify controlled gate for SumOfProducts by @daxfohl in #5873
- Bump terser from 5.7.0 to 5.15.1 in /cirq-web/cirq_ts by @dependabot in #5936
- Bump ansi-regex in /cirq-web/cirq_ts by @dependabot in #5937
- Fix docstring indentation of cirq.PauliString by @tanujkhattar in #5940
- Add handling for sympy conditions in deferred measurement transformer by @daxfohl in #5824
- Add MatrixGate.with_name method. by @maffoo in #5941
- Document units expected by QasmUGate by @viathor in #5945
- Fix bug in synchronize_terminal_measurements transformer by @tanujkhattar in #5947
- fixed XPowGate matrix description by @michaelontiveros in #5946
- CI - add job for shellcheck by @pavoljuhas in #5948
- Mark to_json arguments as optional by @andbe91 in #5950
- Fix lint in pylintrc by @pavoljuhas in #5952
- Bump decode-uri-component from 0.2.0 to 0.2.2 in /cirq-web/cirq_ts by @dependabot in #5955
- Bump qs from 6.5.2 to 6.10.3 in /cirq-web/cirq_ts by @dependabot in #5956
- CI - check consistency of requirements with pip-compile by @pavoljuhas in #5954
- Remove redundant 'while True' condition. by @chasesadri in #5958
- Fix typos in LaTeX by @viathor in #5964
- Restrict numpy version to 1.23 by @tanujkhattar in #5968
- Add benchmarks for transformer primitives and json serialization by @tanujkhattar in #5957
- Allow repeated measurements in deferred transformer by @daxfohl in #5857
- Print multi-qubit circuit with asymmetric depolarizing noise correctly by @paaige in #5931
- Make sure the closefigures fixture is defined by @pavoljuhas in #5970
New Contributors
- @thisisjaymehta made their first contribution in #5807
- @Caffetaria made their first contribution in #5818
- @yitchen-tim made their first contribution in #5889
- @markmcd made their first contribution in #5874
- @gmauricio made their first contribution in #5920
- @michaelontiveros made their first contribution in #5946
- @chasesadri made their first contribution in #5958
- @paaige made their first contribution in #5931
Full Changelog: v1.0.0...v1.1.0
A Huge Thank You
Thank you to all our contributors for this release:
Adam Zalcman, Ammar Eltigani, Andreas Bengtsson, Aria, Cheng Xing, Dax Fohl, Doug Strain, Germán Mauricio Muñoz, Jay Mehta, Mark McDonald, Matthew Neeley, MichaelBroughton, Orion Martin, Paige, Pavol Juhas, Tanuj Khattar, Tim (Yi-Ting), Victory Omole, augustehirth, chasesadri, dependabot[bot], eliottrosenberg, michael