Skip to content

v1.3.0

Latest
Compare
Choose a tag to compare
@dstrain115 dstrain115 released this 01 Dec 22:10

Cirq v1.3.0 release

Summary

Deprecation of cirq-ft

The newly created cirq-ft package (from 1.2.0) will be moving to its new home in the qualtran repository. Please pull from that repository to get all your fault-tolerant resource estimation goodness.

Qubit management

Two new qubit managers (GreedyQubitManager and SimpleQubitManager) can help manage creation and allocation of temporarily or borrowed ancilla qubits.

Performance improvements

Many minor performance improvements have been made over the past 6 months to help speed up troublesome corner cases, such as json serialization, transformers, circuit creation, and symbol resolution.

A classical simulator for simulating circuits without superposition (such as Toffoli, CNOT, X, SWAP, etc) has been added.

A Huge Thank You

Thank you to all our contributors for this release:

Andreas Bengtsson, Bram Evert, Cheng Xing, Doug Strain, Dripto Debroy, eliottrosenberg, Emilio Peláez, Fionn Malone, Jon Donovan, Jose Urruticoechea, Matthew Neeley, Nishna Aerabati, Nafay Najam, Noureldin, Ogah Jackreece Ejini, Pavol Juhas, richrines1, Ryan Hill, Sam Burdick, Sanuj Sharma, Seneca Meeks, Shef, Spencer Churchill, Suyash Damle, Tanuj Khattar, yinghui-hu, Yisu Peng

What's Changed

9b65f68 Remote problematic terminology from test (#6368)
dbbca73 Change master to main in documentation (#6365)
ced1383 Restore code coverage (#6364)
3ac43f6 Switch master to main in CI tools and dev tools (#6363)
3c6a305 Deprecate Cirq-FT module in favour of Qualtran (#6362)
cf973a5 Remove leftover dummy terms from the Cirq sources (#6358)
9142f6a Fix MacOS installation instructions for mactex with brew (#6361)
6aa9d0d Cleanup classical simulator code and fix a couple of bugs (#6344)
a55f962 Fix typos in the documentation. (#6359)
a4ba95b Break intermediate measurements on 3+ qubits into single qubit measurements in RouteCQC#6293 (#6349)
7f47e13 Created using Colaboratory (#6360)
b5b3b74 ProcessorSampler: route run_batch to run_sweep (#6357)
2fdb447 Remove dummy from cirq-core (#6356)
3a64ef1 StreamManager: make function params explicit (#6355)
26dbabc Speed up hashing for GridQubit, LineQubit, and NamedQubit (#6350)
3c81961 Update docs/tutorials/google/start.pynb (#6346)
9a8298d Update start.ipynb (#6342)
8d07cab Optimize ParamResolver.value_of (#6341)
392083b StreamManager: retry with get result request on already exist errors (#6345)
0e288a7 Bump @babel/traverse from 7.14.5 to 7.23.2 in /cirq-web/cirq_ts (#6318)
2f702c8 Add classical simulator (#6124)
39bd926 Change default for streaming feature flag to false (#6310)
0b90ed6 Increase coverage of clifford protocols to parity_gates (#6338)
11ae0bd Make RouteCQC errorout on intermediate measurements on 3+ qubits (#6307)
aa312bc Fix flaky behavior of test_xeb_fidelity (#6337)
2f7d732 Cache Circuit properties between mutations (#6322)
5485227 Run unit tests without affecting user browser session (#6333)
fec68ae Fix ci-daily pytest failure (#6335)
34e8dab Extend Clifford protocol for 2+ qubit operations through analytical check and falling back to decompose (#6332)
17313e7 ci - show 20 slowest tests on Linux, Windows and Mac (#6334)
5556e72 ci - skip slow tests on PR, run them in daily ci instead (#6331)
1eced48 Moved rigetti integration test logic to higher level conftest.py file… (#6328)
1549785 remove default values of InternalGate (#6330)
235a0c6 Add documentation for cirq google's support for google internal gates (#6301)
455f50b Build clifford tableau just once during SingleQubitCliffordGate to PhasedXZGate conversion (#6325)
ec84a05 Preserve subcircuits passed to [Frozen]Circuit.from_moments (#6320)
96b3842 Move qubit management transformers from Cirq-FT to Cirq-core (#6319)
105d975 Adds 2q prep for iswap instead of sqrt_iswap (#6314)
a98fc61 Make ancilla for BiQubitsMixer sided too. (#6313)
9b65f68 Remote problematic terminology from test (#6368)
dbbca73 Change master to main in documentation (#6365)
ced1383 Restore code coverage (#6364)
3ac43f6 Switch master to main in CI tools and dev tools (#6363)
3c6a305 Deprecate Cirq-FT module in favour of Qualtran (#6362)
cf973a5 Remove leftover dummy terms from the Cirq sources (#6358)
9142f6a Fix MacOS installation instructions for mactex with brew (#6361)
6aa9d0d Cleanup classical simulator code and fix a couple of bugs (#6344)
a55f962 Fix typos in the documentation. (#6359)
a4ba95b Break intermediate measurements on 3+ qubits into single qubit measurements in RouteCQC#6293 (#6349)
7f47e13 Created using Colaboratory (#6360)
b5b3b74 ProcessorSampler: route run_batch to run_sweep (#6357)
2fdb447 Remove dummy from cirq-core (#6356)
3a64ef1 StreamManager: make function params explicit (#6355)
26dbabc Speed up hashing for GridQubit, LineQubit, and NamedQubit (#6350)
3c81961 Update docs/tutorials/google/start.pynb (#6346)
9a8298d Update start.ipynb (#6342)
8d07cab Optimize ParamResolver.value_of (#6341)
392083b StreamManager: retry with get result request on already exist errors (#6345)
0e288a7 Bump @babel/traverse from 7.14.5 to 7.23.2 in /cirq-web/cirq_ts (#6318)
2f702c8 Add classical simulator (#6124)
39bd926 Change default for streaming feature flag to false (#6310)
0b90ed6 Increase coverage of clifford protocols to parity_gates (#6338)
11ae0bd Make RouteCQC errorout on intermediate measurements on 3+ qubits (#6307)
aa312bc Fix flaky behavior of test_xeb_fidelity (#6337)
2f7d732 Cache Circuit properties between mutations (#6322)
5485227 Run unit tests without affecting user browser session (#6333)
fec68ae Fix ci-daily pytest failure (#6335)
34e8dab Extend Clifford protocol for 2+ qubit operations through analytical check and falling back to decompose (#6332)
17313e7 ci - show 20 slowest tests on Linux, Windows and Mac (#6334)
5556e72 ci - skip slow tests on PR, run them in daily ci instead (#6331)
1eced48 Moved rigetti integration test logic to higher level conftest.py file… (#6328)
1549785 remove default values of InternalGate (#6330)
235a0c6 Add documentation for cirq google's support for google internal gates (#6301)
455f50b Build clifford tableau just once during SingleQubitCliffordGate to PhasedXZGate conversion (#6325)
ec84a05 Preserve subcircuits passed to [Frozen]Circuit.from_moments (#6320)
96b3842 Move qubit management transformers from Cirq-FT to Cirq-core (#6319)
105d975 Adds 2q prep for iswap instead of sqrt_iswap (#6314)
a98fc61 Make ancilla for BiQubitsMixer sided too. (#6313)
fefe350 Make SingleQubitCompare output registers directional (#6312)
fee056e Move GreedyQubitManager from Cirq-FT to Cirq-Core (#6309)
87f77be Create separate unary and streaming RPC tests in engine_test.py (#6311)
4dc36d5 Integrate StreamManager with run_sweep() (#6285)
c6f60bc Apply fix from typo scan of quantumai website, cl/570431484 (#6308)
bef756e Allow specifying settings field from Cirq-ionq (#5817)
fd18da5 Make OpIdentifier serializable for all inputs (#6295)
1948e73 Change signature of cirq_ft.And gate to use directional registers like Qualtran (#6302)
c696323 Rename cirq_ft.Registers to cirq_ft.Signature to match data types in Qualtran (#6300)
61d9671 Fix stream_manager_test type warnings (#6299)
acbc624 Do not allow creating registers with bitsize 0 (#6298)
8e4e7d1 Add bitsize field to Cirq-FT Registers (#6286)
188bb94 Add registry sweep documentation to cirq_google (#6291)
907ec3a Try to make docstring render correctly (#6283)
d805d82 Make InternalGate hashable if all gate args are hashable (#6294)
1366494 Apply minor doc fixes (#6289)
b630298 Fix matplotlib typing (#6290)
f715527 Fix documentation of FSimGate (#6288)
432d57a Add serialization support for InsertionNoiseModel (#6282)
cf005c2 add to ionq code owners (#6273)
6c14cfa StreamManager: Add mechanism to close the request iterator (#6263)
deedb45 Changed FakeQuantumRunStream to support arbitrary response and exception timing (#6253)
6fae409 Delete SelectionRegisters and replace uses of Registers with Tuple[Register, ...] (#6278)
e235642 Variable spacing QROM should depend upon structure of different data sequences and not exact elements (#6280)
eddb2d9 Add caching to value_equality_values decorator for auto generated methods. (#6275)
0e80fa5 v0.3 API + debiasing (#6077)
b70b2fc Add new processor selector parameters in cirq-google/engine run methods (#6267)
b28bfce Speed up parameter resolution for cirq.Duration (#6270)
c7048f5 codecov - exclude protobuf-generated sources from coverage analysis (#6268)
041ce5d Add tags to cirq.FrozenCircuit (#6266)
83609eb Make device parameter units/idx optional (#6264)
8bd2161 Support the new quantum engine processor_selector in engine_client (#6254)
56b5db2 add back add/remove_qubit to density matrix sim state (#6259)
ed26d2f Fix ordering issue in random_rotations_between_grid_interaction_layers_circuit (#6261)
7ed95aa Speed up cirq.map_operations and cirq.map_operations_and_unroll (#6250)
be6218e codecov - tolerate small decrease in coverage (#6258)
5bbdc22 Apply variable-spaced optimization to QROM circuits (#6257)
6abc740 remove extra User-Agent prefix in the ionq API header (#6232)
999fd94 Avoid skipping code lines depending on random seed (#6256)
86f17eb Update documentation to prevent markdown rendering of underscores as italics (#6255)
6e38a27 Fix coverage exclusion syntax (#6241)
6b44704 Check if python starts python3 (#6239)
95cb43f Remove temporary directories after test done (#6236)
30fa6f5 Fix bug in cirq-ft due to which T-complexity fails for gates with an empty decomposition / no-op (#6252)
95c672a Support the deprecated_parameter decorator for asynchronous functions. (#6247)
64e1a7f Fix CI requirements for Changed files test (#6243)
9fbaa05 Fix quoting in shell scripts per shellcheck-0.9 (#6245)
13f05fd Revert "Integrate StreamManager with run_sweep() (#6233)" (#6242)
2fcdeb8 codecov - fix syntax for excluding code lines from coverage (#6240)
c193c48 Fix bug in controlled() method of CCX and CCZ gates (#6237)
5e342c2 codecov - evaluate coverage at 0.1% resolution (#6238)
86479ae Integrate StreamManager with run_sweep() (#6233)
5c36dc0 fix ms gate equality (#6231)
081afab Add decomposition for CCZ gate and IonQTargetGateset when qubits are all-to-all connected (#6095)
14baaa5 Add StreamManager (#6199)
c5afcce Fix Isolated pytest (#6229)
701538c Support empty invert_mask in measument gate deserialization (#6224)
c510fff Update requirements.txt (#6226)
c15dd03 Fix typo and add more helpful assertion message. (#6221)
1c038c3 Pin mypy-protobuf version and fix failing qasm test (#6222)
91f690d Add cirq specific environment variables to ionq (#6216)
d81d07c Move AsyncioExecutor to separate file. (#6192)
c4a2b93 Add Codecov coverage badge to the main README file (#6220)
43f6a7f create cirq_google.api.v2.InternalGate proto (#6212)
db1b37b Fix notebook failure in CI tests (#6218)
76b8a96 Integrate CI with codecov coverage reports (#6193)
43d0372 Use f-strings in the pr_monitor tool (#6208)
6e562e6 Add ResponseDemux (#6190)
e16fbf4 Bump word-wrap from 1.2.3 to 1.2.4 in /cirq-web/cirq_ts (#6209)
8241c4e Bump cirq version to 1.3.0 (#6207)
edc820a Remove flynt dependency (#6205)
344d020 Simplify StatePreparationAliasSampling tests by relying on Cirq simulators to simulate operations allocating ancillas (#6204)
83ede36 Make Cirq-FT registers multi-dimensional (#6200)
a076858 Add Python 3.11 tests to CI (#6191)
45ed228 Ignore string updates for consider-using-f-string (#6203)
5f5f513 Fix flaky test to make Windows CI runs consistent (#6202)
084e273 Use f-strings instead of percent operator or str.format() (#6198)
b72a532 Create cirq_google.InternalGate (#6194)
c93224e Implemented 8n T complexity decomposition of LessThanEqual gate (#6156)
cb05a69 Create consistency check for unitary with ancilla (#6196)
8e70f77 Remove dependency on the flynt tool (#6164)
3fe3438 Speed up execution time of merge_single_qubit_moments_to_phxz transformer by avoiding redundant calls to unitary protocol (#6174)
d98be50 Delete dependencies pinning done over 2 years ago (#6189)
60508bc Update pr_monitor/Dockerfile to Python 3.9 (#6188)
a041ef8 Handle shape mismatch for cirq.dirac_notation (#6179)
9dff011 Fix failing tests for Python 3.11 (#6181)
5d3e681 Remove unused warnings filter for pytest (#6186)
56259e4 Clean up after getting compatibility with numpy-1.24 (#6187)
8a41b4a added ci-daily (#6177)
221d675 Retire unused Dockerfile (#6184)
5db4af7 Remove references to cirq_qubitization in cirq_ft (#6183)
508677a Create a unitary to pauli string transformer (#6100)
ad6e649 Handle qubits in the str of StateVectorTrialResult (#6180)
9849695 Decompose protocol must create a context when given None and SimpleQubitManager must add a prefix to its qubits (#6172)
7b753f6 Remove invalid extra commas from json data (#6176)
bc09047 Bump minimum python version to 3.9 (#6167)
74cee7e Add support for > 32 qudits to cirq.sample_state_vector. Fix for #6031 (#6090)
af4688d Skip utility sims (#6170)
421d492 copied colabs (#6169)
6565fc5 CI - run pylint checks with dependencies installed (#6163)
228c7e6 Fix LaTeX formatting for arbitrary-angle MS gate (#6166)
f4605da Set cachetools min version to 5.3 (#6161)
dfedcd6 Delete redundant setup.cfg files (#6122)
374947d Remove overwrite_existing fields in CreateQuantumProgramRequest and CreateQuantumJobRequest (#6160)
6c251a3 Remove numpy<1.24 restriction from requirements.txt (#6149)
f3965e8 Add Device Parameter metadata serialization to cirq_google (#6113)
3b699a4 BugFix in cirq.map_operations (#6155)
b337659 CI - update GitHub actions (#6153)
1bae543 Try to fix _bz2 issue. (#6151)
d236276 Add units to device parameter (#6140)
c5dbb11 Launch Cirq-FT: Cirq for Fault Tolerant Algorithms sub-package (#6138)
26af12e Allow measure_single_paulistring to have negative coefficient (#6143)
9a1609c Make cirq.FREDKIN gate self-inverse (#6135)
c08649f added resolver for Sympy.Float to improve performance (#6128)
d7fb8ec Replace usage of functions deprecated in NumPy 1.25 (#6133)
092b996 Fail early in _strat_has_stabilizer_effect_from_unitary (#6131)
24abfa1 Pin cirq_rigetti pyquil dependency to pyquil-3.* (#6129)
0ef302f Changed simulators fallback to decompose_once and removed ancilla support from DensityMatrixSimulator (#6127)
ebc52d5 Remove references to cirq_google.Foxtail (#6126)
3ac3c30 Inconsistent ordering of tags (#6123)
cb89f3a Update Density Matrix and State Vector Simulators to work when an operation allocates new qubits as part of its decomposition (#6108)
3393439 Add new subpackage cirq-ft (#6121)
49b2cfb Add modulo to equal_up_to_global_phase (#6058)
1ed879d Quantum Shannon Decomposition (#6020)
20b3d93 Add _decompose_with_context_ protocol to enable passing qubit manager within decompose (#6118)
9177708 Add support for allocating qubits in decompose to cirq.unitary (#6112)
99e8a13 Ensure that cirq.decompose traverses the yielded OP-TREE in dfs ordering (#6117)
b1e09a9 Update cirq.decompose protocol to perform a DFS instead of a BFS on the decomposed OP-TREE (#6116)
ebec38b Add Parameter to cirq_google (#6102)
36d67c1 Make Collector and PauliSumCollector work with AbstractCircuit (#6109)
16ed00d Loosen networkx requirements (#6105)
50a49a9 Bump requests from 2.24.0 to 2.31.0 in /dev_tools/pr_monitor (#6104)
97e8b98 Accept all_qubits in GridDevice._from_device_information() to allow isolated qubits (#6103)
683286b Add metadata to sweeps (#6099)
0066a53 GridDevice serialization refactor (#6094)
091688d Fix typos in notebooks.md and a plenty of relative links (#6089)
da9c412 Unblock test that requires sympy-1.12 (#6096)
a95f009 Override gate.controlled() for GlobalPhaseGate to return a ZPowGate (#6073)
f2cd706 Fix image links (#6085)
df3acbe Remove deprecated argument of pyplot.stem (#6086)
dc23f87 Keep up with quimb-1.5.0 (#6087)
6d3f27e Fix cirqdev gitter URL (#6084)
d292dcc Apply suggestions from CommonTypos checker (#6082)
c5367eb Add Moment.from_ops to more efficiently construct moments (#6078)
ae336a6 Fix Default InsertStrategy in Circuits Notebook (#6079)
c1d6451 Add ZipLongest to cirq_google (#6074)
2a57894 Access attributes directly in GridQubit instead of using properties (#6075)
03405d1 Fix matplotlib deprecation warning (#6072)
66ae2bc Removing Obsolete json files (#6071)
f9ce9ba document json_namespace usage (#6069)
a96a98c Adds User-Agent header to requests (#6065)
79286a1 Restore weekly cadence for the CI-weekly workflow (#6066)
ee2d32a add phase_by method to ZZPowGate (#6062)
8ac690d Bump webpack from 5.40.0 to 5.76.0 in /cirq-web/cirq_ts (#6035)
5c2bcda Use PEP-673 Self type annotations (#6057)
1445f12 Verify error reporting from the CI-weekly run (#6060)
e7ef9d4 Update to mypy 1.2 (#6059)
6a5b3ea Use hash of all requirements files in cache keys for ci (#6061)
31bf1ac Add weekly CI workflow to test all notebooks (#6046)
ae62250 Escape both <> characters in SVG test labels (#6056)
cde65be Update cirq.contrib.svg to escape < and > characters (#6055)
6a97cca Refactor and speed up cirq.transformers.stratify (#6013)
663d404 Change dtype repr for Numpy 1.24 (#5991)
6b0c098 Fix failing CI after Pandas 2.0 update (#6051)
f114996 Install recent version of ply in interop.ipynb (#6033)
0cc0458 Prevent notebook tests from changing the pytest Python environment (#6032)
611edee pytest - keep "slow" tests deselected after -k EXPRESSION (#6034)
2c51eca Ensure compatible version of numpy in isolated_notebook_test.py (#6038)
402260c Update and correct pow function for PauliSum (#6019)
4607dd1 Remove outdated workaround for a bug in black formatter (#6045)
cc8fc31 Fixed type annotations in _BaseLineQid and _BaseGridQid (#6043)
7335e71 Fixed type annotations in _BaseLineQid and _BaseGridQid (#6043)
f636c5f Simplify dev_tools.notebooks.utils.rewrite_notebook (#6030)
8b97aa5 Bump node-fetch and puppeteer in /cirq-web/cirq_ts (#5998)
c8f7a02 MatrixGate names don't survive serialization (#6026)
18991b5 Speed up parameter resolution by checking if val is parameterized and caching the boolean (#6023)
f6a92a0 Adding dimension property to comparison of XPowGate and ZPowGate (#6005)
a827583 Correct invalid URLs found in notebook files (#6022)
af6624d Bump ipython from 7.31.1 to 8.10.0 in /dev_tools/requirements/deps (#6015)
08fee59 IonQ: Handle 409 errors that are injected by Cloudflare (#5292)
1ad63aa Pin Node version (#6014)
93545be Fix an error in qvm_stabilizer_example.ipynb (#6010)
27dd607 Add __cirq_debug__ flag and conditionally disable qid validations in gates and operations (#6000)
fd491e0 Retry bad_gateway in cirq-ionq (#6006)
dd2667a Reducing some code by cleaning up some logic (#6003)
3dc9629 Removing unnecessary return statement in cirq-core/cirq/circuits/moment.py (#6004)
a3520bc Bump http-cache-semantics from 4.1.0 to 4.1.1 in /cirq-web/cirq_ts (#5997)
0c523d4 Add M and R aliases for cirq.measure and cirq.reset (#5993)
24a0d2e Fix link to noise models (#5990)
25ecba9 Fix bug in documentation of phase_flip and bit_flip methods (#5977)
7f0c278 Bump json5 and tsconfig-paths in /cirq-web/cirq_ts (#5975)
b014036 Add single-qubit detuning parameters to CouplerPulse (#5971)
0c4f742 Make AsyncioExecutor a shared resource across EngineClients (#5976)