From 54c79dc2004566dd660a841108e142914aa91597 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Fri, 15 Nov 2024 14:27:07 -0500 Subject: [PATCH 01/38] Initial: Change version to 3.0 - Move loose release notes. --- docs/conf.py | 2 +- docs/release_notes.rst | 2 +- qiskit/VERSION.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 224fde83a1b7..c2ff621c5dec 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -32,7 +32,7 @@ # The short X.Y version version = "1.3" # The full version, including alpha/beta/rc tags -release = "1.3.0rc2" +release = "1.3.0" language = "en" diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 37e1127c5d8b..d16512924330 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -10,4 +10,4 @@ Qiskit |version| release notes `:earliest-version:` should be set to the rc1 release for the current minor release series. For example, the stable/1.1 branch should set it to 1.1.0rc1. If on `main`, set to the prior minor version's rc1, like `1.0.0rc1`. .. release-notes:: - :earliest-version: 1.1.0rc1 + :earliest-version: 1.3.0rc1 diff --git a/qiskit/VERSION.txt b/qiskit/VERSION.txt index 3cc9007eeb05..f0bb29e76388 100644 --- a/qiskit/VERSION.txt +++ b/qiskit/VERSION.txt @@ -1 +1 @@ -1.3.0rc2 +1.3.0 From 7182a2760d4ca4f9948710da0514b5e96a59ad42 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Fri, 15 Nov 2024 15:08:53 -0500 Subject: [PATCH 02/38] Update cargo dependencies in `Cargo.lock` --- Cargo.lock | 96 +++++++++++++++++++++++++++--------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e5ca18b7bf44..81ed6660fbf0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -37,9 +37,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" [[package]] name = "approx" @@ -126,7 +126,7 @@ checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -181,9 +181,9 @@ checksum = "0570650661aa447e7335f1d5e4f499d8e58796e617bedc9267d971e51c8b49d4" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "0ca741a962e1b0bff6d724a1a0958b686406e853bb14061f218562e1896f95e6" dependencies = [ "libc", ] @@ -276,7 +276,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -305,7 +305,7 @@ checksum = "3bf679796c0322556351f287a51b49e48f7c4986e727b5dd78c972d30e2e16cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -316,7 +316,7 @@ checksum = "5322a90066ddae2b705096eb9e10c465c0498ae93bf9bdd6437415327c88e3bb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -558,9 +558,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "heck" @@ -581,7 +581,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", "rayon", ] @@ -637,15 +637,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.162" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "matrixcompare" @@ -931,9 +931,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pest" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", "thiserror", @@ -942,9 +942,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" +checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" dependencies = [ "pest", "pest_generator", @@ -952,22 +952,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" +checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "pest_meta" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" +checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" dependencies = [ "once_cell", "pest", @@ -1036,9 +1036,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.87" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -1064,7 +1064,7 @@ checksum = "d315b3197b780e4873bc0e11251cb56a33f65a6032a3d39b8d1405c255513766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1132,7 +1132,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1145,7 +1145,7 @@ dependencies = [ "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1350,9 +1350,9 @@ checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -1362,9 +1362,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -1409,9 +1409,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "rustworkx-core" @@ -1450,22 +1450,22 @@ checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1507,9 +1507,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -1544,22 +1544,22 @@ checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233" [[package]] name = "thiserror" -version = "1.0.65" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.65" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1828,5 +1828,5 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] From 618ec15144f5a0fbf20c4f6eaf3c9f1c22d76467 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Mon, 18 Nov 2024 16:08:28 -0500 Subject: [PATCH 03/38] 1st round (to be rebased) --- ...-gates-to-collect-clifford-af88dd8f7a2a4bf9.yaml | 2 +- .../add-identity-pass-builtin-2061b29b53b928d3.yaml | 4 ++-- .../notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml | 2 +- .../1.3/add-more-sabre-trials-9b421f05d2f48d18.yaml | 13 +++++++------ .../notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml | 9 +-------- ...parameters-perf-regression-fc8c9db134b1763d.yaml | 10 +++++----- ...kend-estimator-v2-variance-905c953415ad0e29.yaml | 4 ++-- .../backend-sampler-v2-level1-dc13af460cd38454.yaml | 2 +- ...basicsimulator-config-copy-5ecdfdf161e488f2.yaml | 6 +++--- .../binary-arithmetic-gates-6cd2b1c8112febe0.yaml | 4 ++-- .../notes/1.3/clib-grover-op-cb032144e899ed0d.yaml | 2 +- 11 files changed, 26 insertions(+), 32 deletions(-) diff --git a/releasenotes/notes/1.3/add-gates-to-collect-clifford-af88dd8f7a2a4bf9.yaml b/releasenotes/notes/1.3/add-gates-to-collect-clifford-af88dd8f7a2a4bf9.yaml index 05de0af70528..82313e93258c 100644 --- a/releasenotes/notes/1.3/add-gates-to-collect-clifford-af88dd8f7a2a4bf9.yaml +++ b/releasenotes/notes/1.3/add-gates-to-collect-clifford-af88dd8f7a2a4bf9.yaml @@ -1,7 +1,7 @@ --- features_transpiler: - | - Add an argument ``matrix_based`` to the :class:`.CollectCliffords()` transpiler pass. + Add argument ``matrix_based`` to the :class:`.CollectCliffords()` transpiler pass. If the new parameter ``matrix_based=True``, the :class:`.CollectCliffords()` transpiler pass can collect :class:`.RZGate(np.pi/2)` gates and other unitary gates that are :class:`.Clifford()` gates for certain parameters. diff --git a/releasenotes/notes/1.3/add-identity-pass-builtin-2061b29b53b928d3.yaml b/releasenotes/notes/1.3/add-identity-pass-builtin-2061b29b53b928d3.yaml index 0cf3d503aeea..bc83ec6bb526 100644 --- a/releasenotes/notes/1.3/add-identity-pass-builtin-2061b29b53b928d3.yaml +++ b/releasenotes/notes/1.3/add-identity-pass-builtin-2061b29b53b928d3.yaml @@ -2,7 +2,7 @@ features_transpiler: - | The :class:`.RemoveIdentityEquivalent` transpiler pass is now run as part - of the preset pass managers at optimization levels 2 and 3. The pass is - run in the ``init`` stage and the ``optimization`` stage, because the + of the preset pass managers at optimization levels 2 and 3. The pass runs + during the ``init`` and ``optimization`` stages, because the optimizations it applies are valid in both stages and the pass is fast to execute. diff --git a/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml b/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml index 84ec35942d0a..8e7373984d90 100644 --- a/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml +++ b/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml @@ -17,7 +17,7 @@ features_transpiler: * :class:`.MCXSynthesisNoAuxV24`, based on :func:`.synth_mcx_noaux_v24`. * :class:`.MCXSynthesisGrayCode`, based on :func:`.synth_mcx_gray_code`. - As well: + As well as: * :class:`.MCXSynthesisDefault`, choosing the most efficient synthesis method based on the number of clean and dirty ancilla qubits available. diff --git a/releasenotes/notes/1.3/add-more-sabre-trials-9b421f05d2f48d18.yaml b/releasenotes/notes/1.3/add-more-sabre-trials-9b421f05d2f48d18.yaml index c91244c944d6..f4ffb5293803 100644 --- a/releasenotes/notes/1.3/add-more-sabre-trials-9b421f05d2f48d18.yaml +++ b/releasenotes/notes/1.3/add-more-sabre-trials-9b421f05d2f48d18.yaml @@ -2,10 +2,11 @@ features_transpiler: - | The :class:`.SabreLayout` transpiler pass has been updated to run an - additional 2 or 3 layout trials by default independently of the - ``layout_trials`` keyword argument's value. A trivial - layout and its reverse are included for all backends, just like the :class:`.DenseLayout` + additional 2 or 3 layout trials by default, independently from the + ``layout_trials`` keyword argument's value. A trivial layout and its + reverse are included for all backends, just like the :class:`.DenseLayout` trial that was added in 1.2.0. In addition to this, the largest rings on - an IBM backend heavy hex connectivity graph are added if the backends are 127, - 133, or 156 qubits. This can provide a good starting point for some circuits on these commonly run - backends, while for all others it's just an additional "random trial". + an IBM backend heavy hex connectivity graph are added if the backends are + 127, 133, or 156 qubits. This can provide a good starting point for some + circuits on these commonly run backends, while for all others it's just + an additional "random trial". diff --git a/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml b/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml index 3cc80adc0b5c..0bb54f828a21 100644 --- a/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml +++ b/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml @@ -23,11 +23,4 @@ upgrade_qpy: be compatible with Qiskit >= 1.3.0. If you need for the payload to be loaded by a older version of Qiskit you can use the ``version`` flag on :func:`.qpy.dump` to emit a version compatible with earlier releases of - Qiskit. You can refer to :ref:`qpy_compatibility` for more details on this. -# security: -# - | -# Add security notes here, or remove this section. All of the list items in -# this section are combined when the release notes are rendered, so the text -# needs to be worded so that it does not depend on any information only -# available in another section, such as the prelude. This may mean repeating -# some details. + Qiskit. You can refer to :ref:`qpy_compatibility` for more details on this. \ No newline at end of file diff --git a/releasenotes/notes/1.3/assign-parameters-perf-regression-fc8c9db134b1763d.yaml b/releasenotes/notes/1.3/assign-parameters-perf-regression-fc8c9db134b1763d.yaml index 28f29b63ea2a..f8ebcfa94335 100644 --- a/releasenotes/notes/1.3/assign-parameters-perf-regression-fc8c9db134b1763d.yaml +++ b/releasenotes/notes/1.3/assign-parameters-perf-regression-fc8c9db134b1763d.yaml @@ -2,8 +2,8 @@ fixes: - | Fixed a performance regression in :meth:`.QuantumCircuit.assign_parameters` introduced in Qiskit - 1.2.0 when calling the method in a tight loop, binding only a small number of parameters out of - a heavily parametric circuit on each iteration. If possible, it is still more performant to - call :meth:`~.QuantumCircuit.assign_parameters` only once, with all assignments at the same - time, as this reduces the proportion of time spent on input normalization and error-checking - overhead. + 1.2.0 when calling the method in a tight loop, resulting in the binding only a small number of + parameters out of a heavily parametric circuit on each iteration. If possible, it is still + more performant to call :meth:`~.QuantumCircuit.assign_parameters` only once, with all + assignments at the same time, as this reduces the proportion of time spent on input normalization + and error-checking overhead. diff --git a/releasenotes/notes/1.3/backend-estimator-v2-variance-905c953415ad0e29.yaml b/releasenotes/notes/1.3/backend-estimator-v2-variance-905c953415ad0e29.yaml index ba672a327daa..32aa48bdfd31 100644 --- a/releasenotes/notes/1.3/backend-estimator-v2-variance-905c953415ad0e29.yaml +++ b/releasenotes/notes/1.3/backend-estimator-v2-variance-905c953415ad0e29.yaml @@ -1,5 +1,5 @@ --- fixes: - | - Changes the way in which the :class:`.BackendEstimatorV2` class calculates the ``std`` to ensure that - it matches the correct formula. + A fix has been introduced to the :class:`.BackendEstimatorV2` class that ensures the calculation of + ``std`` matches the correct formula. diff --git a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml index 594e610939cf..e6b15759d1db 100644 --- a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml +++ b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml @@ -1,7 +1,7 @@ --- features: - | - Support for level 1 data was added to :class:`~.BackendSamplerV2` as was + Support for level 1 data was added to :class:`~.BackendSamplerV2`, as was support for passing options through to the ``run()`` method of the wrapped :class:`~.BackendV2`. The run options can be specified using a ``"run_options"`` entry inside of the ``options`` dicitonary passed to diff --git a/releasenotes/notes/1.3/basicsimulator-config-copy-5ecdfdf161e488f2.yaml b/releasenotes/notes/1.3/basicsimulator-config-copy-5ecdfdf161e488f2.yaml index b5ec0112004e..c6757ece06a6 100644 --- a/releasenotes/notes/1.3/basicsimulator-config-copy-5ecdfdf161e488f2.yaml +++ b/releasenotes/notes/1.3/basicsimulator-config-copy-5ecdfdf161e488f2.yaml @@ -2,6 +2,6 @@ fixes: - | For :class:`~.BasicSimulator`, the ``basis_gates`` entry in the - configuration instance returned by the ``configuration()`` is now a list - rather than a ``dict_keys`` instance, matching the expected type and - allowing for configuration instance to be deep copied. + configuration instance returned by the ``configuration()`` method is + now a list rather than a ``dict_keys`` instance, matching the expected + type and allowing for configuration instance to be deep copied. diff --git a/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml b/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml index a082a98389ad..9e1042996ba0 100644 --- a/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml +++ b/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml @@ -5,7 +5,7 @@ features_circuits: :math:`|a\rangle |b\rangle \mapsto |a\rangle |a+b\rangle`. The :class:`.ModularAdderGate` implements addition modulo :math:`2^n`, the :class:`.AdderGate` implements standard addition including a carry-out, and the - :class:`.FullAdderGate` includes a carry-in qubit. See the respective documentations for + :class:`.FullAdderGate` includes a carry-in qubit. See the respective documentation for details and examples. In contrast to the existing library circuits, such as :class:`.CDKMRippleCarryAdder`, @@ -14,7 +14,7 @@ features_circuits: - | Added the :class:`.MultiplierGate` for multiplication of two :math:`n`-qubit registers, that is :math:`|a\rangle |b\rangle \mapsto |a\rangle |b\rangle |a \cdot b\rangle`. - See the class documentations for details and examples. + See the class documentation for details and examples. features_synthesis: - | Added :func:`.adder_qft_d00`, :func:`.adder_ripple_c04`, and :func:`.adder_ripple_v95` diff --git a/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml b/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml index 93629bb1fa9a..1d4bb00de6b3 100644 --- a/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml +++ b/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml @@ -4,7 +4,7 @@ features_circuits: Added :func:`.grover_operator` to construct a Grover operator circuit, used in e.g. Grover's algorithm and amplitude estimation/amplification. This function is similar to :class:`.GroverOperator`, but does not require choosing the implementation of the - multi-controlled X gate a-priori and let's the compiler choose the optimal decomposition + multi-controlled X gate a-priori and lets the compiler choose the optimal decomposition instead. In addition to this, it does not wrap the circuit into an opaque gate and is faster as less decompositions are required to transpile. From 8aa81dbe27ea58af3fe539b8346a3433f518b608 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Tue, 19 Nov 2024 11:24:04 -0500 Subject: [PATCH 04/38] Apply suggestions from code review Co-authored-by: Rebecca Dimock <66339736+beckykd@users.noreply.github.com> --- .../notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml | 2 +- .../1.3/add-more-sabre-trials-9b421f05d2f48d18.yaml | 2 +- .../notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml | 6 +++--- ...-parameters-perf-regression-fc8c9db134b1763d.yaml | 4 ++-- .../backend-sampler-v2-level1-dc13af460cd38454.yaml | 4 ++-- .../basicsimulator-config-copy-5ecdfdf161e488f2.yaml | 2 +- .../notes/1.3/clib-grover-op-cb032144e899ed0d.yaml | 12 ++++++------ 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml b/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml index 8e7373984d90..5c2822b266c8 100644 --- a/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml +++ b/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml @@ -19,7 +19,7 @@ features_transpiler: As well as: - * :class:`.MCXSynthesisDefault`, choosing the most efficient synthesis + * :class:`.MCXSynthesisDefault`, for choosing the most efficient synthesis method based on the number of clean and dirty ancilla qubits available. As an example, consider how the transpilation of the following circuit:: diff --git a/releasenotes/notes/1.3/add-more-sabre-trials-9b421f05d2f48d18.yaml b/releasenotes/notes/1.3/add-more-sabre-trials-9b421f05d2f48d18.yaml index f4ffb5293803..735380a2eb6f 100644 --- a/releasenotes/notes/1.3/add-more-sabre-trials-9b421f05d2f48d18.yaml +++ b/releasenotes/notes/1.3/add-more-sabre-trials-9b421f05d2f48d18.yaml @@ -2,7 +2,7 @@ features_transpiler: - | The :class:`.SabreLayout` transpiler pass has been updated to run an - additional 2 or 3 layout trials by default, independently from the + additional two or three layout trials by default, independently from the ``layout_trials`` keyword argument's value. A trivial layout and its reverse are included for all backends, just like the :class:`.DenseLayout` trial that was added in 1.2.0. In addition to this, the largest rings on diff --git a/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml b/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml index 0bb54f828a21..d57e4bb95a41 100644 --- a/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml +++ b/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml @@ -20,7 +20,7 @@ upgrade_qpy: - | The :func:`.qpy.dump` function will now emit format version 13 by default. This means payloads generated with this function by default will only - be compatible with Qiskit >= 1.3.0. If you need for the payload to be - loaded by a older version of Qiskit you can use the ``version`` flag on + be compatible with Qiskit >= 1.3.0. If the payload needs to be + loaded by an earlier version of Qiskit, use the ``version`` flag on :func:`.qpy.dump` to emit a version compatible with earlier releases of - Qiskit. You can refer to :ref:`qpy_compatibility` for more details on this. \ No newline at end of file + Refer to :ref:`qpy_compatibility` for more details. \ No newline at end of file diff --git a/releasenotes/notes/1.3/assign-parameters-perf-regression-fc8c9db134b1763d.yaml b/releasenotes/notes/1.3/assign-parameters-perf-regression-fc8c9db134b1763d.yaml index f8ebcfa94335..53d636da1040 100644 --- a/releasenotes/notes/1.3/assign-parameters-perf-regression-fc8c9db134b1763d.yaml +++ b/releasenotes/notes/1.3/assign-parameters-perf-regression-fc8c9db134b1763d.yaml @@ -2,8 +2,8 @@ fixes: - | Fixed a performance regression in :meth:`.QuantumCircuit.assign_parameters` introduced in Qiskit - 1.2.0 when calling the method in a tight loop, resulting in the binding only a small number of - parameters out of a heavily parametric circuit on each iteration. If possible, it is still + 1.2.0 when calling the method in a tight loop, that caused only a small number of + parameters from a heavily parametric circuit to be bound on each iteration. If possible, it is still more performant to call :meth:`~.QuantumCircuit.assign_parameters` only once, with all assignments at the same time, as this reduces the proportion of time spent on input normalization and error-checking overhead. diff --git a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml index e6b15759d1db..f9d83e40e6da 100644 --- a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml +++ b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml @@ -3,8 +3,8 @@ features: - | Support for level 1 data was added to :class:`~.BackendSamplerV2`, as was support for passing options through to the ``run()`` method of the wrapped - :class:`~.BackendV2`. The run options can be specified using a - ``"run_options"`` entry inside of the ``options`` dicitonary passed to + :class:`~.BackendV2`. The run options can be specified by using a + ``"run_options"`` entry inside the ``options`` dictionary passed to :class:`~.BackendSamplerV2`. The ``"run_options"`` entry should be a dictionary mapping argument names to values for passing to the backend's ``run()`` method. When a ``"meas_level"`` option with a value of 1 is set diff --git a/releasenotes/notes/1.3/basicsimulator-config-copy-5ecdfdf161e488f2.yaml b/releasenotes/notes/1.3/basicsimulator-config-copy-5ecdfdf161e488f2.yaml index c6757ece06a6..851ac6644b40 100644 --- a/releasenotes/notes/1.3/basicsimulator-config-copy-5ecdfdf161e488f2.yaml +++ b/releasenotes/notes/1.3/basicsimulator-config-copy-5ecdfdf161e488f2.yaml @@ -3,5 +3,5 @@ fixes: - | For :class:`~.BasicSimulator`, the ``basis_gates`` entry in the configuration instance returned by the ``configuration()`` method is - now a list rather than a ``dict_keys`` instance, matching the expected + now a list instead of a ``dict_keys`` instance, matching the expected type and allowing for configuration instance to be deep copied. diff --git a/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml b/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml index 1d4bb00de6b3..5b1248bc1c13 100644 --- a/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml +++ b/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml @@ -1,12 +1,12 @@ --- features_circuits: - | - Added :func:`.grover_operator` to construct a Grover operator circuit, used in e.g. - Grover's algorithm and amplitude estimation/amplification. This function is similar to - :class:`.GroverOperator`, but does not require choosing the implementation of the - multi-controlled X gate a-priori and lets the compiler choose the optimal decomposition - instead. In addition to this, it does not wrap the circuit into an opaque gate and is - faster as less decompositions are required to transpile. + Added :func:`.grover_operator` to construct a Grover operator circuit, used in + Grover's algorithm and amplitude estimation/amplification, for example. This function is similar to + :class:`.GroverOperator`, but does not require you to choose the implementation of the + multi-controlled X gate, but instead lets the compiler determine the optimal decomposition. + Additionally, it does not wrap the circuit into an opaque gate and is + faster because fewer decompositions are required for transpilation. Example:: From a35e090dbbf86292a76766f2f15f2dcb52fd8cfb Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Tue, 19 Nov 2024 15:43:30 -0500 Subject: [PATCH 05/38] Apply suggestions from code review Co-authored-by: Julien Gacon --- .../1.3/add-gates-to-collect-clifford-af88dd8f7a2a4bf9.yaml | 2 +- .../notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/releasenotes/notes/1.3/add-gates-to-collect-clifford-af88dd8f7a2a4bf9.yaml b/releasenotes/notes/1.3/add-gates-to-collect-clifford-af88dd8f7a2a4bf9.yaml index 82313e93258c..d0d4ca9d59ef 100644 --- a/releasenotes/notes/1.3/add-gates-to-collect-clifford-af88dd8f7a2a4bf9.yaml +++ b/releasenotes/notes/1.3/add-gates-to-collect-clifford-af88dd8f7a2a4bf9.yaml @@ -1,7 +1,7 @@ --- features_transpiler: - | - Add argument ``matrix_based`` to the :class:`.CollectCliffords()` transpiler pass. + Add argument ``matrix_based`` to the :class:`.CollectCliffords` transpiler pass. If the new parameter ``matrix_based=True``, the :class:`.CollectCliffords()` transpiler pass can collect :class:`.RZGate(np.pi/2)` gates and other unitary gates that are :class:`.Clifford()` gates for certain parameters. diff --git a/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml b/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml index 9e1042996ba0..47a5330822ff 100644 --- a/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml +++ b/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml @@ -13,7 +13,7 @@ features_circuits: synthesis, depending on the circuit's context. - | Added the :class:`.MultiplierGate` for multiplication of two :math:`n`-qubit registers, that is - :math:`|a\rangle |b\rangle \mapsto |a\rangle |b\rangle |a \cdot b\rangle`. + :math:`|a\rangle |b\rangle |0\rangle \mapsto |a\rangle |b\rangle |a \cdot b\rangle`. See the class documentation for details and examples. features_synthesis: - | From 5d874adf3782d931c357e86c4a80d1b20b8bdbb1 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez Date: Tue, 19 Nov 2024 15:55:44 -0500 Subject: [PATCH 06/38] Check for typos in any release notes. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Rebecca Dimock <66339736+beckykd@users.noreply.github.com> Co-authored-by: Julien Gacon Co-authored-by: Elena Peña Tapia <57907331+ElePT@users.noreply.github.com> --- ...-commutation-checker-8a78a4715bf78b4e.yaml | 2 +- .../1.3/add-qpy-v13-3b22ae33045af6c1.yaml | 30 +++++++++---------- ...nd-sampler-v2-level1-dc13af460cd38454.yaml | 6 ++-- ...ary-arithmetic-gates-6cd2b1c8112febe0.yaml | 4 +-- .../clib-evolved-ops-e91c00964c0209ce.yaml | 2 +- .../notes/1.3/dag-oxide-60b3d7219cb21703.yaml | 26 ++++++++-------- ...ecate-condition_c_if-9548e5522814fe9c.yaml | 4 +-- ...asis-gates-transpile-e4b5893377f23acb.yaml | 2 +- ...deprecate-mitigation-f5f6ef3233b3d726.yaml | 4 +-- ...recate-pulse-package-07a621be1db7fa30.yaml | 13 ++++---- .../fix-decompose-hls-5019793177136024.yaml | 2 +- .../fix-estimator-reset-9e7539776df4cac4.yaml | 6 ++-- ...op-apply-layout-zero-43b9e70f0d1536a6.yaml | 2 +- .../1.3/fix-var-wires-4ebc40e0b19df253.yaml | 4 +-- ...xes_GenericBackendV2-668e40596e1f070d.yaml | 5 +++- .../hls-with-ancillas-d6792b41dfcf4aac.yaml | 4 +-- ...e-hls-qubit-tracking-6b6288d556e3af9d.yaml | 2 +- .../notes/1.3/mcmt-gate-a201d516f05c7d56.yaml | 4 +-- ...r_probabilities_dict-e53f524d115bbcfc.yaml | 4 +-- .../pauli-evo-plugins-612850146c3f7d49.yaml | 2 +- ...nary-as-entanglement-02037cb2d46e1c41.yaml | 4 +-- ...epth-line-mr-to-rust-1376d5a41948112a.yaml | 9 ++++-- .../rust-consolidation-a791a00380fc78b8.yaml | 2 +- .../1.3/storage-var-a00a33fcf9a71f3f.yaml | 2 +- 24 files changed, 76 insertions(+), 69 deletions(-) diff --git a/releasenotes/notes/1.3/Parameterized-commutation-checker-8a78a4715bf78b4e.yaml b/releasenotes/notes/1.3/Parameterized-commutation-checker-8a78a4715bf78b4e.yaml index 72bd9aefe726..5e8213891568 100644 --- a/releasenotes/notes/1.3/Parameterized-commutation-checker-8a78a4715bf78b4e.yaml +++ b/releasenotes/notes/1.3/Parameterized-commutation-checker-8a78a4715bf78b4e.yaml @@ -8,7 +8,7 @@ features_circuits: :class:`.U1Gate`,:class:`.CRXGate`,:class:`.CRYGate`,:class:`.CRZGate`, :class:`.CPhaseGate`. - Before these were only supported with bound parameters. + Before, these were only supported with bound parameters. diff --git a/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml b/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml index d57e4bb95a41..58069c1c06d9 100644 --- a/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml +++ b/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml @@ -5,22 +5,22 @@ features_qpy: of :class:`.ParameterExpression` objects. issues: - | - When using QPY formats 10, 11, or 12 there is a dependency on the version - of ``symengine`` installed in the payload for serialized - :class:`.ParamerExpression` if there is mismatched version of the installed - ``symengine`` package between the environment that generated the payload with - :func:`.qpy.dump` and the installed version that is trying to load the payload - with :func:`.qpy.load`. If this is encountered you will need to install the - symengine version from the error message emitted to load the payload. QPY - format version >= 13 (or < 10) will not have this issue and it is recommended - if you're serializing :class:`.ParameterExpression` objects as part of your - circuit or any :class:`.ScheduleBlock` objects you use version 13 to avoid + When using QPY formats 10, 11, or 12 with circuits that contain + :class:`.ParamerExpression`s, if the version of the ``symengine`` package + installed in the environment that generated the payload (:func:.qpy.dump) does + not match the version of ``symengine`` installed in the enviroment where the + payload is loaded (:func:.qpy.load), you will get an error. If you encounter + this error, install the ``symengine`` version from the error message + before calling :func:.qpy.load. QPY format versions 13 or later + (or prior to 10) will not have this issue. Therefore, if you're serializing + :class:`.ParameterExpression` objects as part of your circuit or any + :class:`.ScheduleBlock` objects, it is recommended that you use version 13 to avoid this issue in the future. upgrade_qpy: - | - The :func:`.qpy.dump` function will now emit format version 13 by default. - This means payloads generated with this function by default will only - be compatible with Qiskit >= 1.3.0. If the payload needs to be + The :func:`.qpy.dump` function now emits format version 13 by default. + This means payloads generated with this function by default are only + compatible with Qiskit 1.3.0 or later. If the payload needs to be loaded by an earlier version of Qiskit, use the ``version`` flag on - :func:`.qpy.dump` to emit a version compatible with earlier releases of - Refer to :ref:`qpy_compatibility` for more details. \ No newline at end of file + :func:`.qpy.dump` to emit the appropriate version. Refer to + :ref:`qpy_compatibility` for more details. \ No newline at end of file diff --git a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml index f9d83e40e6da..ce531476a2c9 100644 --- a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml +++ b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml @@ -6,10 +6,10 @@ features: :class:`~.BackendV2`. The run options can be specified by using a ``"run_options"`` entry inside the ``options`` dictionary passed to :class:`~.BackendSamplerV2`. The ``"run_options"`` entry should be a - dictionary mapping argument names to values for passing to the backend's - ``run()`` method. When a ``"meas_level"`` option with a value of 1 is set + dictionary that maps argument names to values to be passed to the backend's + ``run()`` method. When a ``"meas_level = 1 "`` is set in the run options, the results from the backend will be treated as level 1 - results rather as bit arrays (the level 2 format). + results instead of bit arrays (the level 2 format). upgrade: - | When using :class:`~.BackendSamplerV2`, circuit metadata is no longer diff --git a/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml b/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml index 47a5330822ff..8415f32a5a07 100644 --- a/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml +++ b/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml @@ -1,8 +1,8 @@ --- features_circuits: - | - Added binary arithmetic gates for inplace addition two :math:`n`-qubit registers, that is - :math:`|a\rangle |b\rangle \mapsto |a\rangle |a+b\rangle`. + Added binary arithmetic gates for inplace addition of two :math:`n`-qubit registers, + that is :math:`|a\rangle |b\rangle \mapsto |a\rangle |a+b\rangle`. The :class:`.ModularAdderGate` implements addition modulo :math:`2^n`, the :class:`.AdderGate` implements standard addition including a carry-out, and the :class:`.FullAdderGate` includes a carry-in qubit. See the respective documentation for diff --git a/releasenotes/notes/1.3/clib-evolved-ops-e91c00964c0209ce.yaml b/releasenotes/notes/1.3/clib-evolved-ops-e91c00964c0209ce.yaml index 64d81b5e01ed..d8917d2a44d6 100644 --- a/releasenotes/notes/1.3/clib-evolved-ops-e91c00964c0209ce.yaml +++ b/releasenotes/notes/1.3/clib-evolved-ops-e91c00964c0209ce.yaml @@ -2,7 +2,7 @@ features_circuits: - | Added :func:`.evolved_operator_ansatz`, :func:`.hamiltonian_variational_ansatz`, and - :func:`.qaoa_ansatz` to the circuit library to implement variational circuits based on + :func:`.qaoa_ansatz` into the circuit library to implement variational circuits based on operator evolutions. :func:`.evolved_operator_ansatz` and :func:`.qaoa_ansatz` are functionally equivalent to :class:`.EvolvedOperatorAnsatz` and :class:`.QAOAAnsatz`, but generally more performant. diff --git a/releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml b/releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml index 090a8226c111..44921a8531e3 100644 --- a/releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml +++ b/releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml @@ -1,25 +1,23 @@ --- features_transpiler: - | - The implementation of the :class:`.DAGCircuit` has been rewritten in Rust. This rewrite of - the Python class should be fully API compatible with the previous Python implementation of - the class. While the class was previously implemented using - `rustworkx `__ and its underlying data graph structure existed - in Rust, the implementation of the class and all the data was stored in Python. This new - version of :class:`.DAGCircuit` stores a Rust native representation for all its data and - is fully implemented in Rust. This new implementation should be more efficient in memory - usage as it compresses the qubit and clbit representation for instructions at rest. - It also enables speed up for transpiler passes as they can fully manipulate a - :class:`.DAGCircuit` from Rust. + The :class:`.DAGCircuit` has been reimplemented in Rust. This rewrite of the Python class + should be fully API compatible with the previous Python implementation. While the class + was previously implemented using `rustworkx `__, for which + the underlying data graph structure exists in Rust, the implementation of the class and + all the data was lived in Python. This new version of :class:`.DAGCircuit` stores Rust friendly + datatypes and is more memory-efficient due to the compressed qubit and clbit representation + designed for instructions at rest. It also enables transpiler passes to fully manipulate a + :class:`.DAGCircuit` from Rust, enabling potential improvements in performance. upgrade_transpiler: - | :class:`.DAGNode` objects (and its subclasses :class:`.DAGInNode`, :class:`.DAGOutNode`, and :class:`.DAGOpNode`) no longer return references to the same underlying object from :class:`.DAGCircuit` methods. This was never a guarantee before that all returned nodes would - be shared reference to the same object, but with the migration of the :class:`.DAGCircuit` to - Rust when a :class:`.DAGNode` a new :class:`.DAGNode` instance is generated on the fly when - a node is returned to Python. These objects will evaluate as equal using ``==`` or similar - checks that rely on ``__eq__`` but will no longer identify as the same object. + be shared reference to the same object. However, with the migration of the :class:`.DAGCircuit` to + Rust, a new :class:`.DAGNode` instance is generated on the fly when a node is returned to Python. + These objects will evaluate as equal using ``==`` or similar checks that rely on ``__eq__`` + but will no longer identify as the same object. - | The :class:`.DAGOpNode` instances returned from the :class:`.DAGCircuit` are no longer shared references to the underlying data stored on the DAG. In previous release it was possible to diff --git a/releasenotes/notes/1.3/deprecate-condition_c_if-9548e5522814fe9c.yaml b/releasenotes/notes/1.3/deprecate-condition_c_if-9548e5522814fe9c.yaml index e096273f3c8e..0676d6f1ad6e 100644 --- a/releasenotes/notes/1.3/deprecate-condition_c_if-9548e5522814fe9c.yaml +++ b/releasenotes/notes/1.3/deprecate-condition_c_if-9548e5522814fe9c.yaml @@ -21,9 +21,9 @@ deprecations_circuits: qc = QuantumCircuit(2, 2) qc.h(0) - with expected.if_test((expected.clbits[0], True)): + with qc.if_test((qc.clbits[0], True)): qc.x(0) - with expected.if_test((expected.clbits[1], False)): + with qc.if_test((qc.clbits[1], False)): qc.z(1) qc.measure(0, 0) qc.measure(1, 1) diff --git a/releasenotes/notes/1.3/deprecate-custom-basis-gates-transpile-e4b5893377f23acb.yaml b/releasenotes/notes/1.3/deprecate-custom-basis-gates-transpile-e4b5893377f23acb.yaml index e2e794e96708..1ef61ce9a52c 100644 --- a/releasenotes/notes/1.3/deprecate-custom-basis-gates-transpile-e4b5893377f23acb.yaml +++ b/releasenotes/notes/1.3/deprecate-custom-basis-gates-transpile-e4b5893377f23acb.yaml @@ -2,7 +2,7 @@ deprecations_transpiler: - | Providing custom gates through the ``basis_gates`` argument is deprecated - for both :func:`.transpile` and :func:`generate_preset_pass_manager`, this functionality + for both :func:`.transpile` and :func:`generate_preset_pass_manager`. This functionality will be removed in Qiskit 2.0. Custom gates are still supported in the :class:`.Target` model, and can be provided through the ``target`` argument. One can build a :class:`.Target` instance from scratch or use the :meth:`.Target.from_configuration` method with the ``custom_name_mapping`` diff --git a/releasenotes/notes/1.3/deprecate-mitigation-f5f6ef3233b3d726.yaml b/releasenotes/notes/1.3/deprecate-mitigation-f5f6ef3233b3d726.yaml index 850b84f1fb17..9d5d0c02f762 100644 --- a/releasenotes/notes/1.3/deprecate-mitigation-f5f6ef3233b3d726.yaml +++ b/releasenotes/notes/1.3/deprecate-mitigation-f5f6ef3233b3d726.yaml @@ -1,7 +1,7 @@ --- deprecations_misc: - | - The ``qiskit.result.mitigation`` module has been deprecated and will be removed in the 2.0 release. + The ``qiskit.result.mitigation`` module has been deprecated and will be removed in Qiskit 2.0. The deprecation includes the ``LocalReadoutMitigator`` and ``CorrelatedReadoutMitigator`` classes - as well as the associated utils. + as well as the associated utility functions. Their functionality has been superseded by the mthree package, found in https://github.com/Qiskit/qiskit-addon-mthree. diff --git a/releasenotes/notes/1.3/deprecate-pulse-package-07a621be1db7fa30.yaml b/releasenotes/notes/1.3/deprecate-pulse-package-07a621be1db7fa30.yaml index 479c31556eb5..15b45368dd61 100644 --- a/releasenotes/notes/1.3/deprecate-pulse-package-07a621be1db7fa30.yaml +++ b/releasenotes/notes/1.3/deprecate-pulse-package-07a621be1db7fa30.yaml @@ -1,8 +1,9 @@ --- deprecations: - | - The Qiskit Pulse package is being deprecated and will be removed in Qiskit 2.0.0. Pulse-level - access is currently only supported on a subset of Eagle devices and not supported on the Heron architecture. Furthermore, newer IBM Quantum architectures will not support pulse-level access. + The Qiskit Pulse package is now deprecated and will be removed in Qiskit 2.0.0. Pulse-level + access is currently only supported on a subset of Eagle devices and not supported on the Heron architecture. + Furthermore, newer IBM Quantum architectures will not support pulse-level access. As a consequence, supporting Pulse as a first-class citizen frontend in the Qiskit SDK itself makes little sense going forward. The deprecation includes all pulse code in :mod:`qiskit.pulse` as well as functionality dependant or related to pulse such as pulse visualization, serialization and custom calibration support. For @@ -23,9 +24,9 @@ deprecations_circuits: * :attr:`qiskit.dagcircuit.DAGDependency.calibrations` deprecations_qpy: - | - As part of the Qiskit Pulse package deprecation, serializing a :class:`qiskit.pulse.ScheduleBlock`-based payloads - is being deprecated. In particular, passing :class:`qiskit.pulse.ScheduleBlock` objects to the `programs` argument in - the :func:`qiskit.qpy.dump` function is being deprecated. + As part of the Qiskit Pulse package deprecation, serializing :class:`qiskit.pulse.ScheduleBlock`-based payloads + is also being deprecated. Particularly the passing of :class:`qiskit.pulse.ScheduleBlock` objects to the `programs` + argument in the :func:`qiskit.qpy.dump`. deprecations_transpiler: - | As part of the Qiskit Pulse package deprecation, pulse-related aspects in the :class:`qiskit.transpiler.Target` class are being deprecated. These include: @@ -35,7 +36,7 @@ deprecations_transpiler: * :meth:`~qiskit.transpiler.Target.get_calibration` * :meth:`~qiskit.transpiler.Target.instruction_schedule_map` - In addition the following transpiler passer are also being deprecated: + In addition the following transpiler passes are also being deprecated: * :class:`~qiskit.transpiler.passes.PulseGates` * :class:`~qiskit.transpiler.passes.ValidatePulseGates` * :class:`~qiskit.transpiler.passes.RXCalibrationBuilder` diff --git a/releasenotes/notes/1.3/fix-decompose-hls-5019793177136024.yaml b/releasenotes/notes/1.3/fix-decompose-hls-5019793177136024.yaml index f6161ea72f80..820bd56ea1a9 100644 --- a/releasenotes/notes/1.3/fix-decompose-hls-5019793177136024.yaml +++ b/releasenotes/notes/1.3/fix-decompose-hls-5019793177136024.yaml @@ -23,7 +23,7 @@ fixes: - | Fixed a bug in :meth:`.QuantumCircuit.decompose` where objects that could be synthesized with :class:`.HighLevelSynthesis` were first synthesized and then decomposed immediately - (i.e., they were decomposed twice instead of once). This affected, e.g., :class:`.MCXGate` + (i.e., they were decomposed twice instead of once). This affected gates such as :class:`.MCXGate` or :class:`.Clifford`, among others. - | Fixed a bug in :meth:`.QuantumCircuit.decompose`, where high-level objects without a definition diff --git a/releasenotes/notes/1.3/fix-estimator-reset-9e7539776df4cac4.yaml b/releasenotes/notes/1.3/fix-estimator-reset-9e7539776df4cac4.yaml index dba0d8f1c22b..8a7d21af80cf 100644 --- a/releasenotes/notes/1.3/fix-estimator-reset-9e7539776df4cac4.yaml +++ b/releasenotes/notes/1.3/fix-estimator-reset-9e7539776df4cac4.yaml @@ -3,9 +3,9 @@ features_primitives: - | :class:`.Estimator` and :class:`.StatevectorEstimator` return expectation values in a stochastic way if the input circuit includes - a reset for a some subsystems. - The result was not reproducible, but it is now reproducible - if a random seed is set. For example:: + a reset for some subsystems. + The result was previously not reproducible, but now it can be if a + random seed is set. For example:: from qiskit.primitives import StatevectorEstimator diff --git a/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml b/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml index 117230aee53c..6e7465509206 100644 --- a/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml +++ b/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml @@ -1,7 +1,7 @@ fixes: - | Fixed :meth:`.SparsePauliOp.apply_layout` to work correctly with zero-qubit operators. - For example, if you previously created a 0 qubit and applied a layout like:: + For example, if you previously created a zero-qubit operator and applied a layout like:: op = SparsePauliOp("") op.apply_layout(None, 3) diff --git a/releasenotes/notes/1.3/fix-var-wires-4ebc40e0b19df253.yaml b/releasenotes/notes/1.3/fix-var-wires-4ebc40e0b19df253.yaml index 7cd1e74806b0..648c6506ab6e 100644 --- a/releasenotes/notes/1.3/fix-var-wires-4ebc40e0b19df253.yaml +++ b/releasenotes/notes/1.3/fix-var-wires-4ebc40e0b19df253.yaml @@ -3,6 +3,6 @@ fixes: - | Fixed an issue with :func:`.dag_drawer` and :meth:`.DAGCircuit.draw` when attempting to visualize a :class:`.DAGCircuit` instance that contained - :class:`.Var` wires. The visualizer would raise an exception trying to - do this which has been fixed so the expected visualization will be + :class:`.Var` wires, for which the visualizer would raise an exception. + This behavior has been fixed and the expected visualization will be generated. diff --git a/releasenotes/notes/1.3/fixes_GenericBackendV2-668e40596e1f070d.yaml b/releasenotes/notes/1.3/fixes_GenericBackendV2-668e40596e1f070d.yaml index 9d297125e3c2..d96c21d16332 100644 --- a/releasenotes/notes/1.3/fixes_GenericBackendV2-668e40596e1f070d.yaml +++ b/releasenotes/notes/1.3/fixes_GenericBackendV2-668e40596e1f070d.yaml @@ -1,4 +1,7 @@ --- fixes: - | - The constructor :class:`.GenericBackendV2` was allowing to create malformed backends because it accepted basis gates that couldn't be allocated in the backend size . That is, a backend with a single qubit should not accept a basis with two-qubit gates. + The constructor :class:`.GenericBackendV2` was allowing to create malformed + backends because it accepted basis gates that couldn't be allocated in the + backend size . That is, a backend with a single qubit should not accept a + basis with two-qubit gates. diff --git a/releasenotes/notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml b/releasenotes/notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml index b70a032733c4..ef00acfe637d 100644 --- a/releasenotes/notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml +++ b/releasenotes/notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml @@ -6,8 +6,8 @@ features_transpiler: If set to ``True``, the qubits are assumed to be initially in the state :math:`|0\rangle`, potentially allowing additional optimization opportunities for individual transpiler passes. - | - The constructor for :class:`.HighLevelSynthesis` transpiler pass now accepts an - additional argument ``qubits_initially_zero``. If set to ``True``, the pass assumes that the + The constructor for the :class:`.HighLevelSynthesis` transpiler pass now accepts an + additional argument: ``qubits_initially_zero``. If set to ``True``, the pass assumes that the qubits are initially in the state :math:`|0\rangle`. In addition, the pass keeps track of clean and dirty auxiliary qubits throughout the run, and passes this information to plugins via kwargs ``num_clean_ancillas`` and ``num_dirty_ancillas``. diff --git a/releasenotes/notes/1.3/improve-hls-qubit-tracking-6b6288d556e3af9d.yaml b/releasenotes/notes/1.3/improve-hls-qubit-tracking-6b6288d556e3af9d.yaml index f832fed1b72d..881d6794e100 100644 --- a/releasenotes/notes/1.3/improve-hls-qubit-tracking-6b6288d556e3af9d.yaml +++ b/releasenotes/notes/1.3/improve-hls-qubit-tracking-6b6288d556e3af9d.yaml @@ -4,5 +4,5 @@ features_transpiler: Improved handling of ancilla qubits in the :class:`.HighLevelSynthesis` transpiler pass. For example, a circuit may have custom gates whose definitions include :class:`.MCXGate`\s. Now the synthesis algorithms - for the inner MCX-gates can use the ancilla qubits available on the + for the inner :class:`.MCXGate`\s can use the ancilla qubits available on the global circuit but outside the custom gates' definitions. diff --git a/releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml b/releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml index a9c839e4352c..a1a0c0881ad8 100644 --- a/releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml +++ b/releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml @@ -21,8 +21,8 @@ features_circuits: synthesized = transpile(circuit, hls_config=config) - The :class:`.MCMTGate` in addition also supports custom (i.e., open) control states of - the control qubits. + Additionally, the :class:`.MCMTGate` also supports custom (i.e., open) control states + of the control qubits. features_synthesis: - | diff --git a/releasenotes/notes/1.3/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml b/releasenotes/notes/1.3/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml index d0466b8f75d8..d373e3bc6acc 100644 --- a/releasenotes/notes/1.3/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml +++ b/releasenotes/notes/1.3/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml @@ -3,11 +3,11 @@ features: - | The :class:`.StabilizerState` class now has a new method :meth:`~.StabilizerState.probabilities_dict_from_bitstring` allowing the - user to pass single bitstring to measure an outcome for. Previouslly the + user to pass single bitstring to measure an outcome for. Previously the :meth:`~.StabilizerState.probabilities_dict` would be utilized and would at worst case calculate (2^n) number of probability calculations (depending on the state), even if a user wanted a single result. With this new method the user can calculate just the single outcome bitstring value a user passes to measure the probability for. As the number of qubits increases, the more - prevelant the performance enhancement may be (depending on the state) as only + prevalent the performance enhancement may be (depending on the state) as only 1 bitstring result is measured. diff --git a/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml b/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml index c84b4a1646af..abceb0613fdc 100644 --- a/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml +++ b/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml @@ -26,7 +26,7 @@ features_synthesis: now constructed ~9.4x faster. The new plugin, :class:`.PauliEvolutionSynthesisRustiq`, uses the synthesis algorithm that is described in the paper "Faster and shorter synthesis of - Hamiltonian simulation circuits" by de Brugière and Martiel (https://arxiv.org/abs/2404.03280) + Hamiltonian simulation circuits" by (de) Brugière and Martiel (https://arxiv.org/abs/2404.03280) and is implemented in https://github.com/smartiel/rustiq-core. For example:: diff --git a/releasenotes/notes/1.3/paulifeaturemap-takes-dictionary-as-entanglement-02037cb2d46e1c41.yaml b/releasenotes/notes/1.3/paulifeaturemap-takes-dictionary-as-entanglement-02037cb2d46e1c41.yaml index 8acfe5439a50..cb347c6da3ba 100644 --- a/releasenotes/notes/1.3/paulifeaturemap-takes-dictionary-as-entanglement-02037cb2d46e1c41.yaml +++ b/releasenotes/notes/1.3/paulifeaturemap-takes-dictionary-as-entanglement-02037cb2d46e1c41.yaml @@ -1,9 +1,9 @@ --- fixes: - | - Fixed that the entanglement in :class:`.PauliFeatureMap` and :class:`.ZZFeatureMap` + Previously, the entanglement in :class:`.PauliFeatureMap` and :class:`.ZZFeatureMap` could be given as ``List[int]`` or ``List[List[int]]``, which was incompatible with the fact - that entanglement blocks of different sizes are used. Instead, the entanglement can be + that entanglement blocks of different sizes are used. Now, the entanglement can be given as dictionary with ``{block_size: entanglement}`` pairs. features_circuits: - | diff --git a/releasenotes/notes/1.3/port-synth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml b/releasenotes/notes/1.3/port-synth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml index ee4c6933a269..4a7f7d9cecc0 100644 --- a/releasenotes/notes/1.3/port-synth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml +++ b/releasenotes/notes/1.3/port-synth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml @@ -1,6 +1,11 @@ --- features_synthesis: - | - Port :func: `.synth_cz_depth_line_mr` to Rust. This function synthesizes a CZ circuit for linear nearest neighbor (LNN) connectivity, based on the Maslov and Roetteler method. On a 350x350 binary matrix, the Rust implementation yields a speedup of about 30 times. + Port :func: `.synth_cz_depth_line_mr` to Rust. This function synthesizes a CZ + circuit for linear nearest neighbor (LNN) connectivity, based on the Maslov + and Roetteler method. On a 350x350 binary matrix, the Rust implementation + yields a speedup of about 30 times. - | - Port :func: `.synth_permutation_reverse_lnn_kms` to Rust, which synthesizes a reverse permutation for linear nearest-neighbor architecture using the Kutin, Moulton, Smithline method. + Port :func: `.synth_permutation_reverse_lnn_kms` to Rust, which synthesizes a + reverse permutation for linear nearest-neighbor architecture using the Kutin, + Moulton, Smithline method. diff --git a/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml b/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml index c84128888951..e47d6d413b4b 100644 --- a/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml +++ b/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml @@ -1,7 +1,7 @@ --- features_transpiler: - | - The :class:`.ConsolidateGates` pass will now run the equivalent of the + The :class:`.ConsolidateBlocks` pass will now run the equivalent of the :class:`.Collect2qBlocks` pass internally if it was not run in a pass manager prior to the pass. Previously it was required that :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` were run prior to diff --git a/releasenotes/notes/1.3/storage-var-a00a33fcf9a71f3f.yaml b/releasenotes/notes/1.3/storage-var-a00a33fcf9a71f3f.yaml index b3b18be2fc1a..dd9eff9b2815 100644 --- a/releasenotes/notes/1.3/storage-var-a00a33fcf9a71f3f.yaml +++ b/releasenotes/notes/1.3/storage-var-a00a33fcf9a71f3f.yaml @@ -117,6 +117,6 @@ upgrade_providers: classical variables (see :mod:`qiskit.circuit.classical`) and the :class:`.Store` instruction, if they do not have support for them. The new :class:`.Store` instruction is treated by the transpiler as an always-available "directive" (like :class:`.Barrier`); if your backends do not - support this won't be caught by the :mod:`~qiskit.transpiler`. + support it, this won't be caught by the :mod:`~qiskit.transpiler`. See :ref:`providers-guide-real-time-variables` for more information. From dc2491ae76afafe397c640bbaac4c08f9985bc49 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez Date: Tue, 19 Nov 2024 16:09:49 -0500 Subject: [PATCH 07/38] Add missing release note for #13237 --- .../1.3/rust-commutation-checker-c738e67efa9d292f.yaml | 2 +- .../notes/oxidize-basis-translator-e246a99118bd9486.yaml | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/oxidize-basis-translator-e246a99118bd9486.yaml diff --git a/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml b/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml index bcfcbe18caf0..ca7312359901 100644 --- a/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml +++ b/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml @@ -1,6 +1,6 @@ --- features_transpiler: - | - The the :class:`.CommutationChecker` class has been reimplemented in + The :class:`.CommutationChecker` class has been reimplemented in Rust. This retains the same functionality as before but is now significantly in most cases. diff --git a/releasenotes/notes/oxidize-basis-translator-e246a99118bd9486.yaml b/releasenotes/notes/oxidize-basis-translator-e246a99118bd9486.yaml new file mode 100644 index 000000000000..0036d080bca3 --- /dev/null +++ b/releasenotes/notes/oxidize-basis-translator-e246a99118bd9486.yaml @@ -0,0 +1,7 @@ +features_transpiler: + - | + The :class:`.BasisTranslator` transpiler pass has been reimplemented + to work purely in Rust, taking advantage of all the other structures + that currently live there such as the :class:`.Target`, :class:`.EquivalenceLibrary`, + and the :class:`.DAGCircuit`. The pass itself now runs anywhere from + 3x to 5x faster than it did in Python. \ No newline at end of file From 6c06b6054cc19564a4ec72778dd8463ed1c3641a Mon Sep 17 00:00:00 2001 From: Raynel Sanchez Date: Tue, 19 Nov 2024 16:13:00 -0500 Subject: [PATCH 08/38] Move new missing release note to 1.3 folder --- .../{ => 1.3}/oxidize-basis-translator-e246a99118bd9486.yaml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename releasenotes/notes/{ => 1.3}/oxidize-basis-translator-e246a99118bd9486.yaml (100%) diff --git a/releasenotes/notes/oxidize-basis-translator-e246a99118bd9486.yaml b/releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml similarity index 100% rename from releasenotes/notes/oxidize-basis-translator-e246a99118bd9486.yaml rename to releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml From db2fe35fa3205f2733d5d8f8c99a25f14ff45d33 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Thu, 21 Nov 2024 11:42:05 -0500 Subject: [PATCH 09/38] Apply suggestions from code review Co-authored-by: Rebecca Dimock <66339736+beckykd@users.noreply.github.com> --- .../1.3/deprecate-pulse-package-07a621be1db7fa30.yaml | 11 +++++------ .../1.3/fix-estimator-reset-9e7539776df4cac4.yaml | 2 +- ...e-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml | 2 +- .../1.3/fixes_GenericBackendV2-668e40596e1f070d.yaml | 4 ++-- .../notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml | 2 +- .../notes/1.3/mcmt-gate-a201d516f05c7d56.yaml | 2 +- ...arget_for_probabilities_dict-e53f524d115bbcfc.yaml | 8 ++++---- .../oxidize-basis-translator-e246a99118bd9486.yaml | 4 ++-- ...nth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml | 4 ++-- .../rust-commutation-checker-c738e67efa9d292f.yaml | 2 +- .../1.3/rust-consolidation-a791a00380fc78b8.yaml | 4 ++-- 11 files changed, 22 insertions(+), 23 deletions(-) diff --git a/releasenotes/notes/1.3/deprecate-pulse-package-07a621be1db7fa30.yaml b/releasenotes/notes/1.3/deprecate-pulse-package-07a621be1db7fa30.yaml index 15b45368dd61..05a93eba3f05 100644 --- a/releasenotes/notes/1.3/deprecate-pulse-package-07a621be1db7fa30.yaml +++ b/releasenotes/notes/1.3/deprecate-pulse-package-07a621be1db7fa30.yaml @@ -1,12 +1,11 @@ --- deprecations: - | - The Qiskit Pulse package is now deprecated and will be removed in Qiskit 2.0.0. Pulse-level - access is currently only supported on a subset of Eagle devices and not supported on the Heron architecture. + The Qiskit Pulse package is now deprecated and will be removed in Qiskit 2.0.0. This is because pulse-level + access is currently only supported on a subset of Eagle devices and is not supported on the Heron architecture. Furthermore, newer IBM Quantum architectures will not support pulse-level access. - As a consequence, supporting Pulse as a first-class citizen frontend in the Qiskit SDK itself makes little - sense going forward. The deprecation includes all pulse code in :mod:`qiskit.pulse` as well as functionality - dependant or related to pulse such as pulse visualization, serialization and custom calibration support. For + The deprecation includes all pulse code in :mod:`qiskit.pulse` as well as functionality + dependent on or related to pulse, such as pulse visualization, serialization, and custom calibration support. For more details see the deprecation sections. The Pulse package as a whole, along with directly related components in Qiskit, will be moved to the @@ -36,7 +35,7 @@ deprecations_transpiler: * :meth:`~qiskit.transpiler.Target.get_calibration` * :meth:`~qiskit.transpiler.Target.instruction_schedule_map` - In addition the following transpiler passes are also being deprecated: + In addition, the following transpiler passes are also being deprecated: * :class:`~qiskit.transpiler.passes.PulseGates` * :class:`~qiskit.transpiler.passes.ValidatePulseGates` * :class:`~qiskit.transpiler.passes.RXCalibrationBuilder` diff --git a/releasenotes/notes/1.3/fix-estimator-reset-9e7539776df4cac4.yaml b/releasenotes/notes/1.3/fix-estimator-reset-9e7539776df4cac4.yaml index 8a7d21af80cf..d24a56ee02f6 100644 --- a/releasenotes/notes/1.3/fix-estimator-reset-9e7539776df4cac4.yaml +++ b/releasenotes/notes/1.3/fix-estimator-reset-9e7539776df4cac4.yaml @@ -4,7 +4,7 @@ features_primitives: :class:`.Estimator` and :class:`.StatevectorEstimator` return expectation values in a stochastic way if the input circuit includes a reset for some subsystems. - The result was previously not reproducible, but now it can be if a + The result was previously not reproducible, but now it can be reproduced if a random seed is set. For example:: from qiskit.primitives import StatevectorEstimator diff --git a/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml b/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml index 6e7465509206..1fe1d30f1283 100644 --- a/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml +++ b/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml @@ -1,7 +1,7 @@ fixes: - | Fixed :meth:`.SparsePauliOp.apply_layout` to work correctly with zero-qubit operators. - For example, if you previously created a zero-qubit operator and applied a layout like:: + For example, previously if you created a zero-qubit operator and applied a layout like the following, it would have raised an error:: op = SparsePauliOp("") op.apply_layout(None, 3) diff --git a/releasenotes/notes/1.3/fixes_GenericBackendV2-668e40596e1f070d.yaml b/releasenotes/notes/1.3/fixes_GenericBackendV2-668e40596e1f070d.yaml index d96c21d16332..ac7955b7cbda 100644 --- a/releasenotes/notes/1.3/fixes_GenericBackendV2-668e40596e1f070d.yaml +++ b/releasenotes/notes/1.3/fixes_GenericBackendV2-668e40596e1f070d.yaml @@ -1,7 +1,7 @@ --- fixes: - | - The constructor :class:`.GenericBackendV2` was allowing to create malformed + The constructor :class:`.GenericBackendV2` was allowing you to create malformed backends because it accepted basis gates that couldn't be allocated in the - backend size . That is, a backend with a single qubit should not accept a + specified backend size. That is, a backend with a single qubit should not accept a basis with two-qubit gates. diff --git a/releasenotes/notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml b/releasenotes/notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml index ef00acfe637d..f551d2bc34be 100644 --- a/releasenotes/notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml +++ b/releasenotes/notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml @@ -10,7 +10,7 @@ features_transpiler: additional argument: ``qubits_initially_zero``. If set to ``True``, the pass assumes that the qubits are initially in the state :math:`|0\rangle`. In addition, the pass keeps track of clean and dirty auxiliary qubits throughout the run, and passes this information to plugins - via kwargs ``num_clean_ancillas`` and ``num_dirty_ancillas``. + by using kwargs ``num_clean_ancillas`` and ``num_dirty_ancillas``. upgrade_transpiler: - | The :func:`~qiskit.compiler.transpile` now assumes that the qubits are initially in the state diff --git a/releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml b/releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml index a1a0c0881ad8..2a7fa956208d 100644 --- a/releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml +++ b/releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml @@ -21,7 +21,7 @@ features_circuits: synthesized = transpile(circuit, hls_config=config) - Additionally, the :class:`.MCMTGate` also supports custom (i.e., open) control states + Additionally, the :class:`.MCMTGate` also supports custom (that is, open) control states of the control qubits. features_synthesis: diff --git a/releasenotes/notes/1.3/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml b/releasenotes/notes/1.3/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml index d373e3bc6acc..eb281cb7f12a 100644 --- a/releasenotes/notes/1.3/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml +++ b/releasenotes/notes/1.3/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml @@ -3,11 +3,11 @@ features: - | The :class:`.StabilizerState` class now has a new method :meth:`~.StabilizerState.probabilities_dict_from_bitstring` allowing the - user to pass single bitstring to measure an outcome for. Previously the - :meth:`~.StabilizerState.probabilities_dict` would be utilized and would - at worst case calculate (2^n) number of probability calculations (depending + user to pass a single bitstring to measure an outcome for. Previously, the + :meth:`~.StabilizerState.probabilities_dict` would be utilized and would, + in the worst case, calculate (2^n) probability calculations (depending on the state), even if a user wanted a single result. With this new method the user can calculate just the single outcome bitstring value a user passes to measure the probability for. As the number of qubits increases, the more prevalent the performance enhancement may be (depending on the state) as only - 1 bitstring result is measured. + one bitstring result is measured. diff --git a/releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml b/releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml index 0036d080bca3..5bbf1bdb18df 100644 --- a/releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml +++ b/releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml @@ -2,6 +2,6 @@ features_transpiler: - | The :class:`.BasisTranslator` transpiler pass has been reimplemented to work purely in Rust, taking advantage of all the other structures - that currently live there such as the :class:`.Target`, :class:`.EquivalenceLibrary`, - and the :class:`.DAGCircuit`. The pass itself now runs anywhere from + that currently exist there, such as the :class:`.Target`, :class:`.EquivalenceLibrary`, + and the :class:`.DAGCircuit`. The pass itself now runs 3x to 5x faster than it did in Python. \ No newline at end of file diff --git a/releasenotes/notes/1.3/port-synth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml b/releasenotes/notes/1.3/port-synth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml index 4a7f7d9cecc0..eb3bd4804830 100644 --- a/releasenotes/notes/1.3/port-synth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml +++ b/releasenotes/notes/1.3/port-synth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml @@ -4,8 +4,8 @@ features_synthesis: Port :func: `.synth_cz_depth_line_mr` to Rust. This function synthesizes a CZ circuit for linear nearest neighbor (LNN) connectivity, based on the Maslov and Roetteler method. On a 350x350 binary matrix, the Rust implementation - yields a speedup of about 30 times. + yields a speedup of about 30x. - | Port :func: `.synth_permutation_reverse_lnn_kms` to Rust, which synthesizes a - reverse permutation for linear nearest-neighbor architecture using the Kutin, + reverse permutation for LNN architecture using the Kutin, Moulton, Smithline method. diff --git a/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml b/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml index ca7312359901..df337c4b0916 100644 --- a/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml +++ b/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml @@ -3,4 +3,4 @@ features_transpiler: - | The :class:`.CommutationChecker` class has been reimplemented in Rust. This retains the same functionality as before but is now - significantly in most cases. + significantly faster in most cases. diff --git a/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml b/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml index e47d6d413b4b..7d5f83954b7d 100644 --- a/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml +++ b/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml @@ -3,8 +3,8 @@ features_transpiler: - | The :class:`.ConsolidateBlocks` pass will now run the equivalent of the :class:`.Collect2qBlocks` pass internally if it was not run in a pass - manager prior to the pass. Previously it was required that - :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` were run prior to + manager prior to the pass. Previously, + :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` had to be run before :class:`.ConsolidateBlocks` for :class:`.ConsolidateBlocks` to do anything. By doing the collection internally the overhead of the pass is reduced. If :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` are From 6cb31f3bc8784999d16e8b1549de778b715cbbfb Mon Sep 17 00:00:00 2001 From: Raynel Sanchez Date: Thu, 21 Nov 2024 11:43:39 -0500 Subject: [PATCH 10/38] Apply code suggestions from code review Co-authored-by: Rebecca Dimock <66339736+beckykd@users.noreply.github.com> Co-authored-by: Julien Gacon --- releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml | 2 +- .../notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml | 2 +- ...ix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml | 2 +- releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml | 2 +- .../notes/1.3/rust-consolidation-a791a00380fc78b8.yaml | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml b/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml index 5c2822b266c8..6ad03c3a4703 100644 --- a/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml +++ b/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml @@ -22,7 +22,7 @@ features_transpiler: * :class:`.MCXSynthesisDefault`, for choosing the most efficient synthesis method based on the number of clean and dirty ancilla qubits available. - As an example, consider how the transpilation of the following circuit:: + As an example, consider the transpilation of the following circuit:: from qiskit.circuit import QuantumCircuit from qiskit.compiler import transpile diff --git a/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml b/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml index 8415f32a5a07..b8f2bfb62228 100644 --- a/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml +++ b/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml @@ -18,7 +18,7 @@ features_circuits: features_synthesis: - | Added :func:`.adder_qft_d00`, :func:`.adder_ripple_c04`, and :func:`.adder_ripple_v95` - to synthesize the adder gates, :class:`.ModularAdderGate`, :class:`.AdderGate`, and + to synthesize the adder gates, :class:`.ModularAdderGate`, :class:`.HalfAdderGate`, and :class:`.FullAdderGate`. - | Added :func:`.multiplier_cumulative_h18` and :func:`.multiplier_qft_r17` diff --git a/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml b/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml index 1fe1d30f1283..0bbdaa869603 100644 --- a/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml +++ b/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml @@ -6,5 +6,5 @@ fixes: op = SparsePauliOp("") op.apply_layout(None, 3) - this would have previously raised an error. Now this will correctly return an operator of the form: + Now, the above code correctly returns an operator of the following form:: ``SparsePauliOp(['III'], coeffs=[1.+0.j])`` diff --git a/releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml b/releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml index 2a7fa956208d..15530ed95053 100644 --- a/releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml +++ b/releasenotes/notes/1.3/mcmt-gate-a201d516f05c7d56.yaml @@ -6,7 +6,7 @@ features_circuits: circuit allows the compiler to select the best available implementation according to the number and the state of auxiliary qubits present in the circuit. - Specific implementation can be chosen by specifying the high-level synthesis plugin:: + The desired implementation can be chosen by specifying the high-level synthesis plugin:: from qiskit import QuantumCircuit, transpile from qiskit.circuit.library import MCMTGate, HGate diff --git a/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml b/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml index 7d5f83954b7d..a7cecf92e5c7 100644 --- a/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml +++ b/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml @@ -6,8 +6,8 @@ features_transpiler: manager prior to the pass. Previously, :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` had to be run before :class:`.ConsolidateBlocks` for :class:`.ConsolidateBlocks` to do - anything. By doing the collection internally the overhead of the pass + anything. By doing the collection internally, the overhead from the pass is reduced. If :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` are - run prior to :class:`.ConsolidateBlocks` the collected runs by those + run prior to :class:`.ConsolidateBlocks,` the collected runs by those passes from the property set are used and there is no change in behavior for the pass. From 52acb479d030baeca3f2b806ac8060b7c267e7d2 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez Date: Thu, 21 Nov 2024 12:16:20 -0500 Subject: [PATCH 11/38] More code review comments Co-authored-by: Rebecca Dimock <66339736+beckykd@users.noreply.github.com> --- .../pauli-evo-plugins-612850146c3f7d49.yaml | 14 +++++----- .../1.3/storage-var-a00a33fcf9a71f3f.yaml | 28 +++++++++---------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml b/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml index abceb0613fdc..49926b074a1e 100644 --- a/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml +++ b/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml @@ -15,13 +15,13 @@ features_quantum_info: features_synthesis: - | - Added :meth:`.ProductFormula.expand` which allows to view the expansion of a product formula + Added :meth:`.ProductFormula.expand`, which lets you view the expansion of a product formula in a sparse Pauli format. - | Added the plugin structure for the :class:`.PauliEvolutionGate`. The default plugin, - :class:`.PauliEvolutionSynthesisDefault`, constructs circuit as before, but faster as it - internally uses Rust. The larger the circuit (e.g. by the Hamiltonian size, the number - of timesteps, or the Suzuki-Trotter order), the higher the speedup. For example, + :class:`.PauliEvolutionSynthesisDefault`, constructs circuit as before, but faster, as it + internally uses Rust. The larger the circuit (for example. by the Hamiltonian size, the number + of timesteps, or the Suzuki-Trotter order), the greater the speedup. For example, a 100-qubit Heisenberg Hamiltonian with 10 timesteps and a 4th-order Trotter formula is now constructed ~9.4x faster. The new plugin, :class:`.PauliEvolutionSynthesisRustiq`, uses @@ -45,14 +45,14 @@ features_synthesis: This code snippet uses the ``"rustiq"`` plugin to synthesize :class:`.PauliEvolutionGate` objects in the quantum circuit `qc`. The plugin is called with the additional option - ``"upto_phase" = False`` allowing to obtain smaller circuits at the expense of possibly - not preserving the global phase. For the full list of supported options, see + ``"upto_phase" = False``, allowing you to obtain smaller circuits at the expense of possibly + not preserving the global phase. For the full list of supported options, see the documentation for :class:`.PauliEvolutionSynthesisRustiq`. upgrade: - | The following classes now use the :math:`\sqrt{X}` operation to diagonalize the Pauli-Y - operator: :class:`.PauliEvolutionGate`, :class:`.EvolvedOperatorAnsatz`, + operator: :class:`.PauliEvolutionGate`, :class:`.EvolvedOperatorAnsatz`, and :class:`.PauliFeatureMap`. Previously, these classes used either :math:`H S` or :math:`R_X(-\pi/2)` as basis transformation. Using the :math:`\sqrt{X}` operation, represented by the :class:`.SXGate` is more efficient as it uses only a single gate diff --git a/releasenotes/notes/1.3/storage-var-a00a33fcf9a71f3f.yaml b/releasenotes/notes/1.3/storage-var-a00a33fcf9a71f3f.yaml index dd9eff9b2815..434d63a6dfd2 100644 --- a/releasenotes/notes/1.3/storage-var-a00a33fcf9a71f3f.yaml +++ b/releasenotes/notes/1.3/storage-var-a00a33fcf9a71f3f.yaml @@ -6,7 +6,7 @@ features_circuits: See :ref:`circuit-real-time-methods` for more in-depth discussion on all of these. - The new methods are: + The new methods are:: * :meth:`~.QuantumCircuit.add_var` * :meth:`~.QuantumCircuit.add_input` @@ -21,7 +21,7 @@ features_circuits: * :meth:`~.QuantumCircuit.store` In addition, there are several new dynamic attributes on :class:`.QuantumCircuit` surrounding - these variables: + these variables:: * :attr:`~.QuantumCircuit.num_vars` * :attr:`~.QuantumCircuit.num_input_vars` @@ -37,7 +37,7 @@ features_circuits: that the :class:`.DAGCircuit` ones are optimized for programmatic access with already defined objects, while the :class:`.QuantumCircuit` methods are more focussed on interactive human use. - The new methods are: + The new methods are:: * :meth:`~.DAGCircuit.add_input_var` * :meth:`~.DAGCircuit.add_captured_var` @@ -48,7 +48,7 @@ features_circuits: * :meth:`~.DAGCircuit.iter_captured_vars` * :meth:`~.DAGCircuit.iter_input_vars` - There are also new public attributes: + There are also new public attributes:: * :attr:`~.DAGCircuit.num_vars` * :attr:`~.DAGCircuit.num_input_vars` @@ -58,10 +58,10 @@ features_circuits: :attr:`.DAGCircuit.wires` will now also contain any :class:`.Var` manual variables in the circuit as well, as these are also classical data flow. - | - A new method, :meth:`.Var.new`, is added to manually construct a real-time classical variable + A new method, :meth:`.Var.new`, was added to manually construct a real-time classical variable that owns its memory. - | - :meth:`.QuantumCircuit.compose` has two need keyword arguments, ``var_remap`` and ``inline_captures`` + :meth:`.QuantumCircuit.compose` has two required keyword arguments, var_remap and inline_captures to better support real-time classical variables. ``var_remap`` can be used to rewrite :class:`.Var` nodes in the circuit argument as its @@ -74,8 +74,8 @@ features_circuits: a circuit layer by layer, containing variables. - | :meth:`.DAGCircuit.compose` has a new keyword argument, ``inline_captures``, which can be set to - ``True`` to inline "captured" :class:`.Var` nodes on the argument circuit onto the base circuit - without redeclaring them. In conjunction with the ``vars_mode="captures"`` option to several + ``True`` to inline "capture" :class:`.Var` nodes on the argument circuit onto the base circuit + without redeclaring them. Combined with the ``vars_mode="captures"`` option available on several :class:`.DAGCircuit` methods, this can be used to combine DAGs that operate on the same variables. - | :meth:`.QuantumCircuit.copy_empty_like` and :meth:`.DAGCircuit.copy_empty_like` have a new @@ -85,7 +85,7 @@ features_circuits: variables to captures (useful with :meth:`~.QuantumCircuit.compose`) or ``"drop"`` to remove them. - | - A new ``vars_mode`` keyword argument has been added to the :class:`.DAGCircuit` methods: + A new ``vars_mode`` keyword argument has been added to the :class:`.DAGCircuit` methods:: * :meth:`~.DAGCircuit.separable_circuits` * :meth:`~.DAGCircuit.layers` @@ -98,7 +98,7 @@ features_qasm: features_qpy: - | QPY (:mod:`qiskit.qpy`) format version 12 has been added, which includes support for memory-owning - :class:`.Var` variables. See :ref:`qpy_version_12` for more detail on the format changes. + :class:`.Var` variables. See :ref:`qpy_version_12` for more details on the format changes. features_visualization: - | The text and `Matplotlib `__ circuit drawers (:meth:`.QuantumCircuit.draw`) @@ -112,10 +112,10 @@ upgrade_qpy: unchanged at 10. upgrade_providers: - | - Implementations of :class:`.BackendV2` (and :class:`.BackendV1`) may desire to update their - :meth:`~.BackendV2.run` methods to eagerly reject inputs containing typed - classical variables (see :mod:`qiskit.circuit.classical`) and the :class:`.Store` instruction, - if they do not have support for them. The new :class:`.Store` instruction is treated by the + Implementations of :class:`.BackendV2` (and :class:`.BackendV1`) should update their + :meth:`~.BackendV2.run` methods to reject inputs that contain typed + classical variables (see :mod:`qiskit.circuit.classical`) and the :class:`.Store` instruction + if such input is not supported. The new :class:`.Store` instruction is treated by the transpiler as an always-available "directive" (like :class:`.Barrier`); if your backends do not support it, this won't be caught by the :mod:`~qiskit.transpiler`. From 69cb13fe5832ad1852dcc1dce81a049fa4dcf53d Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Mon, 25 Nov 2024 14:17:45 -0500 Subject: [PATCH 12/38] Add prelude note --- .../notes/prepare-1.3.0-7c45598775fc2bbf.yaml | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml diff --git a/releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml new file mode 100644 index 000000000000..c4d023cb7573 --- /dev/null +++ b/releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -0,0 +1,24 @@ +--- +prelude: > + Qiskit version 1.3.0 brings in major performance and quality improvements + for the transpiler. The minimum required Python version is now 3.9. + + There have been many new features, fixes and improvements introduced in this + new version of Qiskit, some of which include: + + * The majority of the transpiler passes used by the preset pass + manager have been ported into Rust, resulting in a 6x overall runtime + improvement compared to Qiskit 1.2.4. The ported passes include :class:`.BasisTranslator`, + :class:`.CommutationAnalysis`, :class:`.ConsolidateBlocks`, :class:`.UnitarySynthesis`, + and others. + + * Improvements to the circuit library that improve compilation quality and + construction speed. These changes include improvements such as improved qubit + tracking for :class:`.HighLevelSynthesis`, structural circuits as part of the library + such as IQP, and the addition of :class:`.PauliEvolutionGate` and its operability with + `Rusqiq `_. + + * The deprecation of the Qiskit pulse module and all of its related components. + The pulse module and its functionality will be part of `Qiskit Dynamics ` + + \ No newline at end of file From 491a0230c0ff0b794db3a25c65cf6b25a412fff4 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Mon, 25 Nov 2024 14:39:29 -0500 Subject: [PATCH 13/38] Fix: Incorrent indentation of prelude release note. --- .../notes/prepare-1.3.0-7c45598775fc2bbf.yaml | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml index c4d023cb7573..b947515dcf43 100644 --- a/releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml +++ b/releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -7,18 +7,16 @@ prelude: > new version of Qiskit, some of which include: * The majority of the transpiler passes used by the preset pass - manager have been ported into Rust, resulting in a 6x overall runtime - improvement compared to Qiskit 1.2.4. The ported passes include :class:`.BasisTranslator`, - :class:`.CommutationAnalysis`, :class:`.ConsolidateBlocks`, :class:`.UnitarySynthesis`, - and others. + manager have been ported into Rust, resulting in a 6x overall runtime + improvement compared to Qiskit 1.2.4. The ported passes include :class:`.BasisTranslator`, + :class:`.CommutationAnalysis`, :class:`.ConsolidateBlocks`, :class:`.UnitarySynthesis`, + and others. * Improvements to the circuit library that improve compilation quality and - construction speed. These changes include improvements such as improved qubit - tracking for :class:`.HighLevelSynthesis`, structural circuits as part of the library - such as IQP, and the addition of :class:`.PauliEvolutionGate` and its operability with - `Rusqiq `_. + construction speed. These changes include improvements such as improved qubit + tracking for :class:`.HighLevelSynthesis`, structural circuits as part of the library + such as IQP, and the addition of :class:`.PauliEvolutionGate` and its operability with + `Rusqiq `_. * The deprecation of the Qiskit pulse module and all of its related components. - The pulse module and its functionality will be part of `Qiskit Dynamics ` - - \ No newline at end of file + The pulse module and its functionality will be part of `Qiskit Dynamics ` From a3632735cd5fe34eb09f32f60278987abe0c5782 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Mon, 25 Nov 2024 14:42:48 -0500 Subject: [PATCH 14/38] Fix: Spelling errors and broken links. --- releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml index b947515dcf43..6d0bb7c2be51 100644 --- a/releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml +++ b/releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -16,7 +16,7 @@ prelude: > construction speed. These changes include improvements such as improved qubit tracking for :class:`.HighLevelSynthesis`, structural circuits as part of the library such as IQP, and the addition of :class:`.PauliEvolutionGate` and its operability with - `Rusqiq `_. + `Rustiq `_. * The deprecation of the Qiskit pulse module and all of its related components. - The pulse module and its functionality will be part of `Qiskit Dynamics ` + The pulse module and its functionality will be part of `Qiskit Dynamics `_. From eeb9d3c9f00cf9242e4333d7e6c0c74f565e8a11 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Mon, 25 Nov 2024 14:52:56 -0500 Subject: [PATCH 15/38] Move release note to 1.3 folder --- releasenotes/notes/{ => 1.3}/prepare-1.3.0-7c45598775fc2bbf.yaml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename releasenotes/notes/{ => 1.3}/prepare-1.3.0-7c45598775fc2bbf.yaml (100%) diff --git a/releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml similarity index 100% rename from releasenotes/notes/prepare-1.3.0-7c45598775fc2bbf.yaml rename to releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml From 75cd4f32e2525a4dbf8513705ddcd633f7aca9af Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Tue, 26 Nov 2024 07:53:46 -0500 Subject: [PATCH 16/38] Update prepare-1.3.0-7c45598775fc2bbf.yaml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Elena Peña Tapia <57907331+ElePT@users.noreply.github.com> --- releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml index 6d0bb7c2be51..bfdd5cfbacb2 100644 --- a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml +++ b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -12,8 +12,8 @@ prelude: > :class:`.CommutationAnalysis`, :class:`.ConsolidateBlocks`, :class:`.UnitarySynthesis`, and others. - * Improvements to the circuit library that improve compilation quality and - construction speed. These changes include improvements such as improved qubit + * Improvements to the circuit library that increase compilation quality and + construction speed. These changes include developments such as improved qubit tracking for :class:`.HighLevelSynthesis`, structural circuits as part of the library such as IQP, and the addition of :class:`.PauliEvolutionGate` and its operability with `Rustiq `_. From 4b6289a464cc822a1f244ca1e9797679debf47a2 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Tue, 26 Nov 2024 22:40:05 -0500 Subject: [PATCH 17/38] Move release notes from 1.1, 1.2 into their respective folders. --- ...-apply-layout-duplicate-negative-indices-cf5517921fe52706.yaml | 0 .../fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml | 0 .../{1.3 => 1.1}/fix-swap-router-layout-f28cf0a2de7976a8.yaml | 0 .../{1.3 => 1.1}/fix-symbolic-unit-scaling-c3eb4d9be674dfd6.yaml | 0 .../notes/{1.3 => 1.1}/parallel-check-8186a8f074774a1f.yaml | 0 .../notes/{1.3 => 1.1}/plot-circuit-layout-5935646107893c12.yaml | 0 .../notes/{1.3 => 1.1}/qasm2-bigint-8eff42acb67903e6.yaml | 0 releasenotes/notes/{1.3 => 1.1}/storage-var-a00a33fcf9a71f3f.yaml | 0 .../{1.3 => 1.2}/add-random-clifford-util-5358041208729988.yaml | 0 .../backend-estimator-v2-variance-905c953415ad0e29.yaml | 0 .../{1.3 => 1.2}/barebone-backend-option-675c86df4382a443.yaml | 0 .../{1.3 => 1.2}/circuit-draw-warn-justify-03434d30cccda452.yaml | 0 .../{1.3 => 1.2}/extended-random-circuits-049b67cce39003f4.yaml | 0 ..._bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml | 0 .../product-formula-improvements-1bc40650151cf107.yaml | 0 .../{1.3 => 1.2}/uniform-superposition-gate-3bd95ffdf05ef18c.yaml | 0 16 files changed, 0 insertions(+), 0 deletions(-) rename releasenotes/notes/{1.3 => 1.1}/fix-apply-layout-duplicate-negative-indices-cf5517921fe52706.yaml (100%) rename releasenotes/notes/{1.3 => 1.1}/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml (100%) rename releasenotes/notes/{1.3 => 1.1}/fix-swap-router-layout-f28cf0a2de7976a8.yaml (100%) rename releasenotes/notes/{1.3 => 1.1}/fix-symbolic-unit-scaling-c3eb4d9be674dfd6.yaml (100%) rename releasenotes/notes/{1.3 => 1.1}/parallel-check-8186a8f074774a1f.yaml (100%) rename releasenotes/notes/{1.3 => 1.1}/plot-circuit-layout-5935646107893c12.yaml (100%) rename releasenotes/notes/{1.3 => 1.1}/qasm2-bigint-8eff42acb67903e6.yaml (100%) rename releasenotes/notes/{1.3 => 1.1}/storage-var-a00a33fcf9a71f3f.yaml (100%) rename releasenotes/notes/{1.3 => 1.2}/add-random-clifford-util-5358041208729988.yaml (100%) rename releasenotes/notes/{1.3 => 1.2}/backend-estimator-v2-variance-905c953415ad0e29.yaml (100%) rename releasenotes/notes/{1.3 => 1.2}/barebone-backend-option-675c86df4382a443.yaml (100%) rename releasenotes/notes/{1.3 => 1.2}/circuit-draw-warn-justify-03434d30cccda452.yaml (100%) rename releasenotes/notes/{1.3 => 1.2}/extended-random-circuits-049b67cce39003f4.yaml (100%) rename releasenotes/notes/{1.3 => 1.2}/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml (100%) rename releasenotes/notes/{1.3 => 1.2}/product-formula-improvements-1bc40650151cf107.yaml (100%) rename releasenotes/notes/{1.3 => 1.2}/uniform-superposition-gate-3bd95ffdf05ef18c.yaml (100%) diff --git a/releasenotes/notes/1.3/fix-apply-layout-duplicate-negative-indices-cf5517921fe52706.yaml b/releasenotes/notes/1.1/fix-apply-layout-duplicate-negative-indices-cf5517921fe52706.yaml similarity index 100% rename from releasenotes/notes/1.3/fix-apply-layout-duplicate-negative-indices-cf5517921fe52706.yaml rename to releasenotes/notes/1.1/fix-apply-layout-duplicate-negative-indices-cf5517921fe52706.yaml diff --git a/releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml b/releasenotes/notes/1.1/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml similarity index 100% rename from releasenotes/notes/1.3/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml rename to releasenotes/notes/1.1/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml diff --git a/releasenotes/notes/1.3/fix-swap-router-layout-f28cf0a2de7976a8.yaml b/releasenotes/notes/1.1/fix-swap-router-layout-f28cf0a2de7976a8.yaml similarity index 100% rename from releasenotes/notes/1.3/fix-swap-router-layout-f28cf0a2de7976a8.yaml rename to releasenotes/notes/1.1/fix-swap-router-layout-f28cf0a2de7976a8.yaml diff --git a/releasenotes/notes/1.3/fix-symbolic-unit-scaling-c3eb4d9be674dfd6.yaml b/releasenotes/notes/1.1/fix-symbolic-unit-scaling-c3eb4d9be674dfd6.yaml similarity index 100% rename from releasenotes/notes/1.3/fix-symbolic-unit-scaling-c3eb4d9be674dfd6.yaml rename to releasenotes/notes/1.1/fix-symbolic-unit-scaling-c3eb4d9be674dfd6.yaml diff --git a/releasenotes/notes/1.3/parallel-check-8186a8f074774a1f.yaml b/releasenotes/notes/1.1/parallel-check-8186a8f074774a1f.yaml similarity index 100% rename from releasenotes/notes/1.3/parallel-check-8186a8f074774a1f.yaml rename to releasenotes/notes/1.1/parallel-check-8186a8f074774a1f.yaml diff --git a/releasenotes/notes/1.3/plot-circuit-layout-5935646107893c12.yaml b/releasenotes/notes/1.1/plot-circuit-layout-5935646107893c12.yaml similarity index 100% rename from releasenotes/notes/1.3/plot-circuit-layout-5935646107893c12.yaml rename to releasenotes/notes/1.1/plot-circuit-layout-5935646107893c12.yaml diff --git a/releasenotes/notes/1.3/qasm2-bigint-8eff42acb67903e6.yaml b/releasenotes/notes/1.1/qasm2-bigint-8eff42acb67903e6.yaml similarity index 100% rename from releasenotes/notes/1.3/qasm2-bigint-8eff42acb67903e6.yaml rename to releasenotes/notes/1.1/qasm2-bigint-8eff42acb67903e6.yaml diff --git a/releasenotes/notes/1.3/storage-var-a00a33fcf9a71f3f.yaml b/releasenotes/notes/1.1/storage-var-a00a33fcf9a71f3f.yaml similarity index 100% rename from releasenotes/notes/1.3/storage-var-a00a33fcf9a71f3f.yaml rename to releasenotes/notes/1.1/storage-var-a00a33fcf9a71f3f.yaml diff --git a/releasenotes/notes/1.3/add-random-clifford-util-5358041208729988.yaml b/releasenotes/notes/1.2/add-random-clifford-util-5358041208729988.yaml similarity index 100% rename from releasenotes/notes/1.3/add-random-clifford-util-5358041208729988.yaml rename to releasenotes/notes/1.2/add-random-clifford-util-5358041208729988.yaml diff --git a/releasenotes/notes/1.3/backend-estimator-v2-variance-905c953415ad0e29.yaml b/releasenotes/notes/1.2/backend-estimator-v2-variance-905c953415ad0e29.yaml similarity index 100% rename from releasenotes/notes/1.3/backend-estimator-v2-variance-905c953415ad0e29.yaml rename to releasenotes/notes/1.2/backend-estimator-v2-variance-905c953415ad0e29.yaml diff --git a/releasenotes/notes/1.3/barebone-backend-option-675c86df4382a443.yaml b/releasenotes/notes/1.2/barebone-backend-option-675c86df4382a443.yaml similarity index 100% rename from releasenotes/notes/1.3/barebone-backend-option-675c86df4382a443.yaml rename to releasenotes/notes/1.2/barebone-backend-option-675c86df4382a443.yaml diff --git a/releasenotes/notes/1.3/circuit-draw-warn-justify-03434d30cccda452.yaml b/releasenotes/notes/1.2/circuit-draw-warn-justify-03434d30cccda452.yaml similarity index 100% rename from releasenotes/notes/1.3/circuit-draw-warn-justify-03434d30cccda452.yaml rename to releasenotes/notes/1.2/circuit-draw-warn-justify-03434d30cccda452.yaml diff --git a/releasenotes/notes/1.3/extended-random-circuits-049b67cce39003f4.yaml b/releasenotes/notes/1.2/extended-random-circuits-049b67cce39003f4.yaml similarity index 100% rename from releasenotes/notes/1.3/extended-random-circuits-049b67cce39003f4.yaml rename to releasenotes/notes/1.2/extended-random-circuits-049b67cce39003f4.yaml diff --git a/releasenotes/notes/1.3/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml b/releasenotes/notes/1.2/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml similarity index 100% rename from releasenotes/notes/1.3/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml rename to releasenotes/notes/1.2/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml diff --git a/releasenotes/notes/1.3/product-formula-improvements-1bc40650151cf107.yaml b/releasenotes/notes/1.2/product-formula-improvements-1bc40650151cf107.yaml similarity index 100% rename from releasenotes/notes/1.3/product-formula-improvements-1bc40650151cf107.yaml rename to releasenotes/notes/1.2/product-formula-improvements-1bc40650151cf107.yaml diff --git a/releasenotes/notes/1.3/uniform-superposition-gate-3bd95ffdf05ef18c.yaml b/releasenotes/notes/1.2/uniform-superposition-gate-3bd95ffdf05ef18c.yaml similarity index 100% rename from releasenotes/notes/1.3/uniform-superposition-gate-3bd95ffdf05ef18c.yaml rename to releasenotes/notes/1.2/uniform-superposition-gate-3bd95ffdf05ef18c.yaml From b9f2bc1101d7108e0198c431b3cf4299f263acc7 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Tue, 26 Nov 2024 23:11:36 -0500 Subject: [PATCH 18/38] Apply suggestions from code review Co-authored-by: Matthew Treinish --- releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml | 6 +++--- releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml | 2 +- releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml b/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml index 58069c1c06d9..f421ba2c8053 100644 --- a/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml +++ b/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml @@ -7,11 +7,11 @@ issues: - | When using QPY formats 10, 11, or 12 with circuits that contain :class:`.ParamerExpression`s, if the version of the ``symengine`` package - installed in the environment that generated the payload (:func:.qpy.dump) does + installed in the environment that generated the payload (:func:`.qpy.dump`) does not match the version of ``symengine`` installed in the enviroment where the - payload is loaded (:func:.qpy.load), you will get an error. If you encounter + payload is loaded (:func:`.qpy.load`), you will get an error. If you encounter this error, install the ``symengine`` version from the error message - before calling :func:.qpy.load. QPY format versions 13 or later + before calling :func:`.qpy.load`. QPY format versions 13 or later (or prior to 10) will not have this issue. Therefore, if you're serializing :class:`.ParameterExpression` objects as part of your circuit or any :class:`.ScheduleBlock` objects, it is recommended that you use version 13 to avoid diff --git a/releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml b/releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml index 44921a8531e3..dbc9dd65fdc0 100644 --- a/releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml +++ b/releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml @@ -8,7 +8,7 @@ features_transpiler: all the data was lived in Python. This new version of :class:`.DAGCircuit` stores Rust friendly datatypes and is more memory-efficient due to the compressed qubit and clbit representation designed for instructions at rest. It also enables transpiler passes to fully manipulate a - :class:`.DAGCircuit` from Rust, enabling potential improvements in performance. + :class:`.DAGCircuit` from Rust, enabling improvements in performance. upgrade_transpiler: - | :class:`.DAGNode` objects (and its subclasses :class:`.DAGInNode`, :class:`.DAGOutNode`, and diff --git a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml index bfdd5cfbacb2..068f45dbef18 100644 --- a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml +++ b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -4,7 +4,7 @@ prelude: > for the transpiler. The minimum required Python version is now 3.9. There have been many new features, fixes and improvements introduced in this - new version of Qiskit, some of which include: + new version of Qiskit, the highlights are: * The majority of the transpiler passes used by the preset pass manager have been ported into Rust, resulting in a 6x overall runtime From 89977c38a4e8159c95bfe73611f9078dca14fe6a Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Tue, 26 Nov 2024 23:28:51 -0500 Subject: [PATCH 19/38] Apply suggestions from code review Co-authored-by: Matthew Treinish --- .../notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml | 2 +- releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml index ce531476a2c9..b4363b066e69 100644 --- a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml +++ b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml @@ -1,5 +1,5 @@ --- -features: +features_primitives: - | Support for level 1 data was added to :class:`~.BackendSamplerV2`, as was support for passing options through to the ``run()`` method of the wrapped diff --git a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml index 068f45dbef18..578bfbc13dbb 100644 --- a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml +++ b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -15,7 +15,7 @@ prelude: > * Improvements to the circuit library that increase compilation quality and construction speed. These changes include developments such as improved qubit tracking for :class:`.HighLevelSynthesis`, structural circuits as part of the library - such as IQP, and the addition of :class:`.PauliEvolutionGate` and its operability with + such as :func:`.iqp`. Additionally the :class:`.PauliEvolutionGate` has been updated to leverage high level synthesis plugins including a new plugin that leverages the circuit synthesis library `Rustiq `_. * The deprecation of the Qiskit pulse module and all of its related components. From d02a12fe419ccb8bf7c1c11273bef58a8def9022 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 00:03:13 -0500 Subject: [PATCH 20/38] More review comments Co-authored-by: Matthew Treinish --- ...kend-sampler-v2-level1-dc13af460cd38454.yaml | 2 +- .../notes/1.3/dag-oxide-60b3d7219cb21703.yaml | 8 ++++---- .../1.3/prepare-1.3.0-7c45598775fc2bbf.yaml | 17 +++++++++++------ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml index b4363b066e69..074d93560d17 100644 --- a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml +++ b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml @@ -10,7 +10,7 @@ features_primitives: ``run()`` method. When a ``"meas_level = 1 "`` is set in the run options, the results from the backend will be treated as level 1 results instead of bit arrays (the level 2 format). -upgrade: +upgrade_primitives: - | When using :class:`~.BackendSamplerV2`, circuit metadata is no longer cleared before passing circuits to the ``run()`` method of the wrapped diff --git a/releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml b/releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml index dbc9dd65fdc0..0963c10ed006 100644 --- a/releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml +++ b/releasenotes/notes/1.3/dag-oxide-60b3d7219cb21703.yaml @@ -5,10 +5,10 @@ features_transpiler: should be fully API compatible with the previous Python implementation. While the class was previously implemented using `rustworkx `__, for which the underlying data graph structure exists in Rust, the implementation of the class and - all the data was lived in Python. This new version of :class:`.DAGCircuit` stores Rust friendly - datatypes and is more memory-efficient due to the compressed qubit and clbit representation - designed for instructions at rest. It also enables transpiler passes to fully manipulate a - :class:`.DAGCircuit` from Rust, enabling improvements in performance. + all the data was lived in Python. This new version of :class:`.DAGCircuit` stores Rust native + representations for all its data and is more memory-efficient due to the compressed qubit + and clbit representation designed for instructions at rest. It also enables transpiler passes + to fully manipulate a :class:`.DAGCircuit` from Rust, enabling improvements in performance. upgrade_transpiler: - | :class:`.DAGNode` objects (and its subclasses :class:`.DAGInNode`, :class:`.DAGOutNode`, and diff --git a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml index 578bfbc13dbb..8a7542448239 100644 --- a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml +++ b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -1,11 +1,16 @@ --- prelude: > Qiskit version 1.3.0 brings in major performance and quality improvements - for the transpiler. The minimum required Python version is now 3.9. + for the transpiler. There have been many new features, fixes and improvements introduced in this new version of Qiskit, the highlights are: + * Essential features of Qiskit have either been ported into Rust + or have an implementation with Rust-native datatypes. Some of these + components include the :class:`.DAGCircuit`, the :class:`.Target`, + the :class:`.EquivalenceLibrary`. + * The majority of the transpiler passes used by the preset pass manager have been ported into Rust, resulting in a 6x overall runtime improvement compared to Qiskit 1.2.4. The ported passes include :class:`.BasisTranslator`, @@ -15,8 +20,8 @@ prelude: > * Improvements to the circuit library that increase compilation quality and construction speed. These changes include developments such as improved qubit tracking for :class:`.HighLevelSynthesis`, structural circuits as part of the library - such as :func:`.iqp`. Additionally the :class:`.PauliEvolutionGate` has been updated to leverage high level synthesis plugins including a new plugin that leverages the circuit synthesis library - `Rustiq `_. - - * The deprecation of the Qiskit pulse module and all of its related components. - The pulse module and its functionality will be part of `Qiskit Dynamics `_. + such as :func:`.iqp`. Additionally the :class:`.PauliEvolutionGate` has been updated + to leverage high level synthesis plugins including a new plugin that leverages the + circuit synthesis library `Rustiq `_. + + * The minimum required Python version is now 3.9. From 2bb25b319f24406db13dee970ee812ad2103b3fb Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 00:05:34 -0500 Subject: [PATCH 21/38] Move latest release note --- .../{ => 1.3}/fix-cached-params-update-4d2814b698fa76b4.yaml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename releasenotes/notes/{ => 1.3}/fix-cached-params-update-4d2814b698fa76b4.yaml (100%) diff --git a/releasenotes/notes/fix-cached-params-update-4d2814b698fa76b4.yaml b/releasenotes/notes/1.3/fix-cached-params-update-4d2814b698fa76b4.yaml similarity index 100% rename from releasenotes/notes/fix-cached-params-update-4d2814b698fa76b4.yaml rename to releasenotes/notes/1.3/fix-cached-params-update-4d2814b698fa76b4.yaml From e3bb6bf07f5addfc926f576d8f696c32dcdb671a Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 00:52:07 -0500 Subject: [PATCH 22/38] Fix a couple of sphinx formatting errors --- .../1.2/fix-qft-plugins-7106029d33c44b96.yaml | 2 +- ...zed-commutation-checker-8a78a4715bf78b4e.yaml | 6 +++--- .../1.3/add-qv-function-a8990e248d5e7e1a.yaml | 5 ++--- ...simulator-configuration-9d782925196993e9.yaml | 6 +++--- .../1.3/pauli-evo-plugins-612850146c3f7d49.yaml | 16 ++++++++-------- ...o-to-matrix-determinism-554389d6fc98627c.yaml | 2 +- 6 files changed, 18 insertions(+), 19 deletions(-) diff --git a/releasenotes/notes/1.2/fix-qft-plugins-7106029d33c44b96.yaml b/releasenotes/notes/1.2/fix-qft-plugins-7106029d33c44b96.yaml index 3024432af714..37f58c60862a 100644 --- a/releasenotes/notes/1.2/fix-qft-plugins-7106029d33c44b96.yaml +++ b/releasenotes/notes/1.2/fix-qft-plugins-7106029d33c44b96.yaml @@ -1,7 +1,7 @@ --- fixes: - | - The ``HighLevelSynthesis`` transpiler pass no longer raises an exception when + The :class:`.HighLevelSynthesis` transpiler pass no longer raises an exception when encountering a custom gate that is called "qft" but is not an instance of :class:`~qiskit.circuit.library.QFTGate`. Instead, the synthesis plugins for QFT gates ignore such a gate, and the gate's definition is used (if provided). diff --git a/releasenotes/notes/1.3/Parameterized-commutation-checker-8a78a4715bf78b4e.yaml b/releasenotes/notes/1.3/Parameterized-commutation-checker-8a78a4715bf78b4e.yaml index 5e8213891568..f0965deb0b06 100644 --- a/releasenotes/notes/1.3/Parameterized-commutation-checker-8a78a4715bf78b4e.yaml +++ b/releasenotes/notes/1.3/Parameterized-commutation-checker-8a78a4715bf78b4e.yaml @@ -3,9 +3,9 @@ features_circuits: - | Improved the functionality of :class:`.CommutationChecker` to include support for the following parameterized gates with free parameters: - :class:`.RXXGate`,:class:`.RYYGate`,:class:`.RZZGate`,:class:`.RZXGate`, - :class:`.RXGate`,:class:`.RYGate`,:class:`.RZGate`,:class:`.PhaseGate`, - :class:`.U1Gate`,:class:`.CRXGate`,:class:`.CRYGate`,:class:`.CRZGate`, + :class:`.RXXGate`, :class:`.RYYGate`, :class:`.RZZGate`, :class:`.RZXGate`, + :class:`.RXGate`, :class:`.RYGate`, :class:`.RZGate`, :class:`.PhaseGate`, + :class:`.U1Gate`, :class:`.CRXGate`, :class:`.CRYGate`, :class:`.CRZGate`, :class:`.CPhaseGate`. Before, these were only supported with bound parameters. diff --git a/releasenotes/notes/1.3/add-qv-function-a8990e248d5e7e1a.yaml b/releasenotes/notes/1.3/add-qv-function-a8990e248d5e7e1a.yaml index 689c5e4623b0..eb5d41a02dd3 100644 --- a/releasenotes/notes/1.3/add-qv-function-a8990e248d5e7e1a.yaml +++ b/releasenotes/notes/1.3/add-qv-function-a8990e248d5e7e1a.yaml @@ -3,8 +3,7 @@ features_circuits: - | Added a new function :func:`.quantum_volume` for generating a quantum volume :class:`.QuantumCircuit` object as defined in A. Cross et al. Validating quantum computers - using randomized model circuits, Phys. Rev. A 100, 032328 (2019) - `https://link.aps.org/doi/10.1103/PhysRevA.100.032328 `__. + using randomized model circuits, `Phys. Rev. A 100, 032328 (2019) `__. This new function differs from the existing :class:`.QuantumVolume` class in that it returns a :class:`.QuantumCircuit` object instead of building a subclass object. The second is that this new function is multithreaded and implemented in rust so it generates the output @@ -13,7 +12,7 @@ features_circuits: Improved the runtime performance of constructing the :class:`.QuantumVolume` class with the ``classical_permutation`` argument set to ``True``. Internally it now calls the :func:`.quantum_volume` - function which is written in Rust which is ~10x faster to generate a + function which is written in Rust and is ~10x faster when generating a quantum volume circuit. upgrade_circuits: diff --git a/releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml b/releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml index 59b00df0cf5a..30686f80f569 100644 --- a/releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml +++ b/releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml @@ -8,7 +8,7 @@ deprecations_providers: (``backend.target``). Here is a quick guide for accessing the most common ``BackendConfiguration`` attributes in the - :class:`BackendV2` model:"" + :class:`BackendV2` model: BackendV1 model (deprecated) ------------> BackendV2 model ---------------------------- --------------- @@ -25,8 +25,8 @@ deprecations_providers: backend.configuration().memory No representation backend.configuration().max_shots No representation - (*) Note that ``backend.target.operation_names`` includes ``basis_gates`` and additional + (*) Note that :meth:`.Backend.target.operation_names` includes ``basis_gates`` and additional non-gate instructions, in some implementations it might be necessary to filter the output. See `this guide `__ - for more information on migrating to the ``BackendV2`` model. + for more information on migrating to the :class:`.BackendV2` model. diff --git a/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml b/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml index 49926b074a1e..386285ecd0cb 100644 --- a/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml +++ b/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml @@ -25,9 +25,9 @@ features_synthesis: a 100-qubit Heisenberg Hamiltonian with 10 timesteps and a 4th-order Trotter formula is now constructed ~9.4x faster. The new plugin, :class:`.PauliEvolutionSynthesisRustiq`, uses - the synthesis algorithm that is described in the paper "Faster and shorter synthesis of - Hamiltonian simulation circuits" by (de) Brugière and Martiel (https://arxiv.org/abs/2404.03280) - and is implemented in https://github.com/smartiel/rustiq-core. + the synthesis algorithm that is described in the paper "`Faster and shorter synthesis of + Hamiltonian simulation circuits" by (de) Brugière and Martiel `__" + and is implemented in `Rustiq `__. For example:: from qiskit.circuit import QuantumCircuit @@ -43,11 +43,11 @@ features_synthesis: tqc = transpile(qc, basis_gates=["cx", "u"], hls_config=config) tqc.draw(output='mpl') - This code snippet uses the ``"rustiq"`` plugin to synthesize :class:`.PauliEvolutionGate` - objects in the quantum circuit `qc`. The plugin is called with the additional option - ``"upto_phase" = False``, allowing you to obtain smaller circuits at the expense of possibly - not preserving the global phase. For the full list of supported options, see the - documentation for :class:`.PauliEvolutionSynthesisRustiq`. + This code snippet uses the `Rustiq `__ plugin + to synthesize :class:`.PauliEvolutionGate` objects in the quantum circuit `qc`. The plugin + is called with the additional option ``upto_phase = False``, allowing you to obtain + smaller circuits at the expense of possibly not preserving the global phase. For the full + list of supported options, see the documentation for :class:`.PauliEvolutionSynthesisRustiq`. upgrade: - | diff --git a/releasenotes/notes/1.3/spo-to-matrix-determinism-554389d6fc98627c.yaml b/releasenotes/notes/1.3/spo-to-matrix-determinism-554389d6fc98627c.yaml index 61961d492e72..401ea31e40b8 100644 --- a/releasenotes/notes/1.3/spo-to-matrix-determinism-554389d6fc98627c.yaml +++ b/releasenotes/notes/1.3/spo-to-matrix-determinism-554389d6fc98627c.yaml @@ -1,6 +1,6 @@ --- fixes: - | - Fixed a per-process based non-determinism in `SparsePauliOp.to_matrix`. The exact order of the + Fixed a per-process based non-determinism in :meth:`.SparsePauliOp.to_matrix`. The exact order of the floating-point operations in the summation would previously vary per process, but will now be identical between different invocations of the same script. See `#13413 `__. From 364be17d27c04ff5f1b00e3f0a085650d92cf7e9 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 00:54:36 -0500 Subject: [PATCH 23/38] Change wording on prelude --- releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml index 8a7542448239..4a69d5bdd22c 100644 --- a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml +++ b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -7,7 +7,7 @@ prelude: > new version of Qiskit, the highlights are: * Essential features of Qiskit have either been ported into Rust - or have an implementation with Rust-native datatypes. Some of these + or have a representation with Rust-native datatypes. Some of these components include the :class:`.DAGCircuit`, the :class:`.Target`, the :class:`.EquivalenceLibrary`. From 12f895cf239b517ae6e3b2799d58adae3972cdc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elena=20Pe=C3=B1a=20Tapia?= <57907331+ElePT@users.noreply.github.com> Date: Wed, 27 Nov 2024 11:41:48 +0100 Subject: [PATCH 24/38] Update releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml --- ...eprecate-basic-simulator-configuration-9d782925196993e9.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml b/releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml index 30686f80f569..9e4051a46ad5 100644 --- a/releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml +++ b/releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml @@ -8,7 +8,7 @@ deprecations_providers: (``backend.target``). Here is a quick guide for accessing the most common ``BackendConfiguration`` attributes in the - :class:`BackendV2` model: + :class:`BackendV2` model:: BackendV1 model (deprecated) ------------> BackendV2 model ---------------------------- --------------- From f5ed24dfe57e8e31ce447643ad5d0c223341465e Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 09:05:20 -0500 Subject: [PATCH 25/38] Update releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml Co-authored-by: Julien Gacon --- .../pauli-evo-plugins-612850146c3f7d49.yaml | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml b/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml index 386285ecd0cb..b2adae868fc0 100644 --- a/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml +++ b/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml @@ -16,7 +16,25 @@ features_quantum_info: features_synthesis: - | Added :meth:`.ProductFormula.expand`, which lets you view the expansion of a product formula - in a sparse Pauli format. + in a sparse Pauli format. For example, we can query the format of a second-order Trotter expansion + of a Hamiltonian as:: + + from qiskit.quantum_info import SparsePauliOp + from qiskit.circuit.library import PauliEvolutionGate + from qiskit.synthesis.evolution import SuzukiTrotter + + hamiltonian = SparsePauliOp(["IX", "XI", "ZZ"], coeffs=[-1, -1, 1]) + evo = PauliEvolutionGate(hamiltonian, time=3.14) + trotter = SuzukiTrotter(order=2) + print(trotter.expand(evo)) + + which will print + + .. parsed-literal:: + + [('X', [0], -3.14), ('X', [1], -3.14), ('ZZ', [0, 1], 6.28), + ('X', [1], -3.14), ('X', [0], -3.14)] + - | Added the plugin structure for the :class:`.PauliEvolutionGate`. The default plugin, :class:`.PauliEvolutionSynthesisDefault`, constructs circuit as before, but faster, as it From c3a993b1034cbecbff59ef9cdf0895a746783b0b Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 09:46:19 -0500 Subject: [PATCH 26/38] More corrections on release notes Co-authored-by: Julien Gacon Co-authored-by: Alexander Ivrii --- ...-commutation-checker-8a78a4715bf78b4e.yaml | 4 +-- .../hls-with-ancillas-d6792b41dfcf4aac.yaml | 15 +++++++--- ...nary-as-entanglement-02037cb2d46e1c41.yaml | 6 ---- .../1.3/prepare-1.3.0-7c45598775fc2bbf.yaml | 28 ++++++++++++------- 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/releasenotes/notes/1.3/Parameterized-commutation-checker-8a78a4715bf78b4e.yaml b/releasenotes/notes/1.3/Parameterized-commutation-checker-8a78a4715bf78b4e.yaml index f0965deb0b06..796640479e0d 100644 --- a/releasenotes/notes/1.3/Parameterized-commutation-checker-8a78a4715bf78b4e.yaml +++ b/releasenotes/notes/1.3/Parameterized-commutation-checker-8a78a4715bf78b4e.yaml @@ -6,9 +6,7 @@ features_circuits: :class:`.RXXGate`, :class:`.RYYGate`, :class:`.RZZGate`, :class:`.RZXGate`, :class:`.RXGate`, :class:`.RYGate`, :class:`.RZGate`, :class:`.PhaseGate`, :class:`.U1Gate`, :class:`.CRXGate`, :class:`.CRYGate`, :class:`.CRZGate`, - :class:`.CPhaseGate`. - - Before, these were only supported with bound parameters. + :class:`.CPhaseGate`. Before, these were only supported with bound parameters. diff --git a/releasenotes/notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml b/releasenotes/notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml index f551d2bc34be..6f4c9eba978c 100644 --- a/releasenotes/notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml +++ b/releasenotes/notes/1.3/hls-with-ancillas-d6792b41dfcf4aac.yaml @@ -1,10 +1,17 @@ --- features_transpiler: - | - A new argument ``qubits_initially_zero`` has been added to :func:`qiskit.compiler.transpile`, - :func:`.generate_preset_pass_manager`, and to :class:`~.PassManagerConfig`. - If set to ``True``, the qubits are assumed to be initially in the state :math:`|0\rangle`, - potentially allowing additional optimization opportunities for individual transpiler passes. + A new argument ``qubits_initially_zero`` has been added to :func:`qiskit.compiler.transpile`, + :func:`.generate_preset_pass_manager`, and to :class:`~.PassManagerConfig`. + If set to the default value of ``True``, the qubits are assumed to be initially in the state + :math:`|0\rangle`, potentially allowing additional optimization opportunities for individual + transpiler passes. In particular, the :class:`.HighLevelSynthesis` transpiler pass will choose + a better decomposition for each :class:`.MCXGate` gate in a circuit when an idle auxiliary qubit + in the state :math:`|0\rangle` is available. + + However, there are cases when ``qubits_initially_zero`` should be set to ``False``, such + as when transpiling for backends that do not properly initialize qubits, or when manually + calling transpiler passes on subcircuits of a larger quantum circuit. - | The constructor for the :class:`.HighLevelSynthesis` transpiler pass now accepts an additional argument: ``qubits_initially_zero``. If set to ``True``, the pass assumes that the diff --git a/releasenotes/notes/1.3/paulifeaturemap-takes-dictionary-as-entanglement-02037cb2d46e1c41.yaml b/releasenotes/notes/1.3/paulifeaturemap-takes-dictionary-as-entanglement-02037cb2d46e1c41.yaml index cb347c6da3ba..fc45f3ed3d29 100644 --- a/releasenotes/notes/1.3/paulifeaturemap-takes-dictionary-as-entanglement-02037cb2d46e1c41.yaml +++ b/releasenotes/notes/1.3/paulifeaturemap-takes-dictionary-as-entanglement-02037cb2d46e1c41.yaml @@ -1,10 +1,4 @@ --- -fixes: - - | - Previously, the entanglement in :class:`.PauliFeatureMap` and :class:`.ZZFeatureMap` - could be given as ``List[int]`` or ``List[List[int]]``, which was incompatible with the fact - that entanglement blocks of different sizes are used. Now, the entanglement can be - given as dictionary with ``{block_size: entanglement}`` pairs. features_circuits: - | :class:`.PauliFeatureMap` and :class:`.ZZFeatureMap` now support specifying the diff --git a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml index 4a69d5bdd22c..ab31d49e27a8 100644 --- a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml +++ b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -9,19 +9,27 @@ prelude: > * Essential features of Qiskit have either been ported into Rust or have a representation with Rust-native datatypes. Some of these components include the :class:`.DAGCircuit`, the :class:`.Target`, - the :class:`.EquivalenceLibrary`. + the :class:`.EquivalenceLibrary`, and others. * The majority of the transpiler passes used by the preset pass manager have been ported into Rust, resulting in a 6x overall runtime improvement compared to Qiskit 1.2.4. The ported passes include :class:`.BasisTranslator`, - :class:`.CommutationAnalysis`, :class:`.ConsolidateBlocks`, :class:`.UnitarySynthesis`, - and others. + :class:`.CommutationAnalysis`, :class:`.ConsolidateBlocks`, and :class:`.UnitarySynthesis`. + + * Improvements to the circuit library that increase compilation quality and circuit + construction speed. Operations are now distinguished into: + + * Structural operations, that have a unique decomposition, and are represented as + functions that return a :class:`.QuantumCircuit` (for example: :func:`.real_amplitudes`). + Most of these functions are built in Rust, resulting in significantly faster circuit + construction runtime. + * Abstract operations, that can be implemented using different decompositions, are + represented as :class:`.Gate` or :class:`qiskit.circuit.Instruction` (for example: + :class:`.PauliEvolutionGate`). This allows building an abstract quantum circuit + and letting the compiler choose the optimal decomposition. + + Using an abstract circuit description is especially powerful in combination with + improvements to the :class:`.HighLevelSynthesis` transpiler pass, which can now take + into account idle auxiliary qubits to find the best available decomposition for a given gate. - * Improvements to the circuit library that increase compilation quality and - construction speed. These changes include developments such as improved qubit - tracking for :class:`.HighLevelSynthesis`, structural circuits as part of the library - such as :func:`.iqp`. Additionally the :class:`.PauliEvolutionGate` has been updated - to leverage high level synthesis plugins including a new plugin that leverages the - circuit synthesis library `Rustiq `_. - * The minimum required Python version is now 3.9. From d3d3085d0e64ce4457007b98d1d01be956bfa0b9 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 10:42:58 -0500 Subject: [PATCH 27/38] Apply suggestions to prelude note Co-authored-by: Matthew Treinish --- .../1.3/prepare-1.3.0-7c45598775fc2bbf.yaml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml index ab31d49e27a8..bc7a71c88b5c 100644 --- a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml +++ b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -6,15 +6,20 @@ prelude: > There have been many new features, fixes and improvements introduced in this new version of Qiskit, the highlights are: - * Essential features of Qiskit have either been ported into Rust - or have a representation with Rust-native datatypes. Some of these - components include the :class:`.DAGCircuit`, the :class:`.Target`, - the :class:`.EquivalenceLibrary`, and others. + * The core data structures for transpilation in Qiskit have been ported + to Rust internally. This includes components such as the + :class:`.DAGCircuit`, :class:`.Target`, :class:`.EquivalenceLibrary`, + and others. The public APIs for all of these data structures remains + unchanged but the performance after the rewrites has improved. * The majority of the transpiler passes used by the preset pass - manager have been ported into Rust, resulting in a 6x overall runtime - improvement compared to Qiskit 1.2.4. The ported passes include :class:`.BasisTranslator`, + manager have been ported into Rust, resulting in an average 6x overall runtime + improvement compared to Qiskit 1.2.4 when running the + `benchpress benchmarks `__. + Some of the particularly impactful passes that greatly benefited from + the rewrites were the :class:`.BasisTranslator`, :class:`.CommutationAnalysis`, :class:`.ConsolidateBlocks`, and :class:`.UnitarySynthesis`. + You can refer to the feature release notes for a full list of the ported passes. * Improvements to the circuit library that increase compilation quality and circuit construction speed. Operations are now distinguished into: @@ -32,4 +37,4 @@ prelude: > improvements to the :class:`.HighLevelSynthesis` transpiler pass, which can now take into account idle auxiliary qubits to find the best available decomposition for a given gate. - * The minimum required Python version is now 3.9. + * The minimum supported Python version is now 3.9 as Python 3.8 went end of life in 2024-10. Official support for Python 3.13 support was also added in this release. From eae5da289850318fc30dc86c9b0cf0437c7c60f3 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:13:52 -0500 Subject: [PATCH 28/38] Consolidate transpiler pass port related release notes --- ...-gates-decomposition-ce111961b6782ee0.yaml | 4 -- ...ize-basis-translator-e246a99118bd9486.yaml | 7 --- ...commutation-analysis-d2fc81feb6ca80aa.yaml | 4 -- ...ze-transpiler-passes-16f2f1c57612e74a.yaml | 53 +++++++++++++++++++ ...t-elide-permutations-ed91c3d9cef2fec6.yaml | 5 -- .../1.3/prepare-1.3.0-7c45598775fc2bbf.yaml | 3 +- ...-commutation-checker-c738e67efa9d292f.yaml | 6 --- .../rust-consolidation-a791a00380fc78b8.yaml | 13 ----- .../1.3/rust-paulifm-1dc7b1c2dc756614.yaml | 16 ------ 9 files changed, 55 insertions(+), 56 deletions(-) delete mode 100644 releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml delete mode 100644 releasenotes/notes/1.3/oxidize-commutation-analysis-d2fc81feb6ca80aa.yaml create mode 100644 releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml delete mode 100644 releasenotes/notes/1.3/port-elide-permutations-ed91c3d9cef2fec6.yaml delete mode 100644 releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml delete mode 100644 releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml delete mode 100644 releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml diff --git a/releasenotes/notes/1.3/optimize-1q-gates-decomposition-ce111961b6782ee0.yaml b/releasenotes/notes/1.3/optimize-1q-gates-decomposition-ce111961b6782ee0.yaml index dbb095827b00..eebc80fa586b 100644 --- a/releasenotes/notes/1.3/optimize-1q-gates-decomposition-ce111961b6782ee0.yaml +++ b/releasenotes/notes/1.3/optimize-1q-gates-decomposition-ce111961b6782ee0.yaml @@ -6,7 +6,3 @@ features_transpiler: contain a :class:`.ControlFlowOp`. This was possible before using the :meth:`.DAGCircuit.op_nodes` method and passing the :class:`.ControlFlowOp` class as a filter, but this new function will perform the operation faster. - - | - Ported the entirety of the :class:`.Optimize1qGatesDecomposition` transpiler - pass to Rust. This improves the runtime performance of the pass between 5x - to 10x. diff --git a/releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml b/releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml deleted file mode 100644 index 5bbf1bdb18df..000000000000 --- a/releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml +++ /dev/null @@ -1,7 +0,0 @@ -features_transpiler: - - | - The :class:`.BasisTranslator` transpiler pass has been reimplemented - to work purely in Rust, taking advantage of all the other structures - that currently exist there, such as the :class:`.Target`, :class:`.EquivalenceLibrary`, - and the :class:`.DAGCircuit`. The pass itself now runs - 3x to 5x faster than it did in Python. \ No newline at end of file diff --git a/releasenotes/notes/1.3/oxidize-commutation-analysis-d2fc81feb6ca80aa.yaml b/releasenotes/notes/1.3/oxidize-commutation-analysis-d2fc81feb6ca80aa.yaml deleted file mode 100644 index 967a65bcebab..000000000000 --- a/releasenotes/notes/1.3/oxidize-commutation-analysis-d2fc81feb6ca80aa.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -features_transpiler: - - | - Added a Rust implementation of :class:`.CommutationAnalysis` in :func:`.analyze_commutations`. diff --git a/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml b/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml new file mode 100644 index 000000000000..82bd98b12444 --- /dev/null +++ b/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml @@ -0,0 +1,53 @@ +--- +features_transpiler: + - | + Most of the transpiler passes required by the preset pass manager have + been ported into Rust. + + * The :class:`.ConsolidateBlocks` pass will now run the equivalent of the + :class:`.Collect2qBlocks` pass internally if it was not run in a pass + manager prior to the pass. Previously, + :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` had to be run before + :class:`.ConsolidateBlocks` for :class:`.ConsolidateBlocks` to do + anything. By doing the collection internally, the overhead from the pass + is reduced. If :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` are + run prior to :class:`.ConsolidateBlocks,` the collected runs by those + passes from the property set are used and there is no change in behavior + for the pass. The pass now runs up to 3x faster than it did with Python. + + * The :class:`.BasisTranslator` transpiler pass has been reimplemented + to work purely from Rust, taking advantage of all the other structures + that currently exist there, such as the :class:`.Target`, :class:`.EquivalenceLibrary`, + and the :class:`.DAGCircuit`. The pass itself now runs + 3x to 5x faster than it did in Python. + + * Added a Rust implementation of :class:`.CommutationAnalysis` in :func:`.analyze_commutations`. + Testing on ASV benchmarks reveals increased performance of up to 3x compared to Python. + + * Port most of the logic of the transpiler pass :class:`~.ElidePermutations` + to Rust. On certain tests the demostrated speedup is between 5x and 10x from + its previous Python implementation. + + * Ported the entirety of the :class:`.Optimize1qGatesDecomposition` transpiler + pass to Rust. This improves the runtime performance of the pass between 5x + to 10x. + + * The :class:`.CommutationChecker` class has been reimplemented in + Rust. This retains the same functionality as before but is now + significantly faster in most cases. Depending on the circuit type + we can observe a speedup of 5x. + + * Added circuit library functions :func:`.pauli_feature_map`, :func:`.z_feature_map`, + :func:`.zz_feature_map` to construct Pauli feature map circuits. These functions + are approximately 8x faster than the current circuit library objects, + :class:`.PauliFeatureMap`, :class:`.ZFeatureMap`, and :class:`.ZZFeatureMap`, + and will replace them in the future. Note, that the new functions return a plain + :class:`.QuantumCircuit` instead of a :class:`.BlueprintCircuit`. From multiple benchmarks + a speedup of up to 8x was observed, in comparison to Python. + + The functions can be used as drop-in replacement:: + + from qiskit.circuit.library import pauli_feature_map, PauliFeatureMap + + fm = pauli_feature_map(20, paulis=["z", "xx", "yyy"]) + also_fm = PauliFeatureMap(20, paulis=["z", "xx", "yyy"]).decompose() diff --git a/releasenotes/notes/1.3/port-elide-permutations-ed91c3d9cef2fec6.yaml b/releasenotes/notes/1.3/port-elide-permutations-ed91c3d9cef2fec6.yaml deleted file mode 100644 index 705e82f0fb6e..000000000000 --- a/releasenotes/notes/1.3/port-elide-permutations-ed91c3d9cef2fec6.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -features_transpiler: - - | - Port most of the logic of the transpiler pass :class:`~.ElidePermutations` - to Rust. diff --git a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml index bc7a71c88b5c..16007a719c5b 100644 --- a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml +++ b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -37,4 +37,5 @@ prelude: > improvements to the :class:`.HighLevelSynthesis` transpiler pass, which can now take into account idle auxiliary qubits to find the best available decomposition for a given gate. - * The minimum supported Python version is now 3.9 as Python 3.8 went end of life in 2024-10. Official support for Python 3.13 support was also added in this release. + * The minimum supported Python version is now 3.9 as Python 3.8 went end of life in 2024-10. + Official support for Python 3.13 support was also added in this release. diff --git a/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml b/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml deleted file mode 100644 index df337c4b0916..000000000000 --- a/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -features_transpiler: - - | - The :class:`.CommutationChecker` class has been reimplemented in - Rust. This retains the same functionality as before but is now - significantly faster in most cases. diff --git a/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml b/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml deleted file mode 100644 index a7cecf92e5c7..000000000000 --- a/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -features_transpiler: - - | - The :class:`.ConsolidateBlocks` pass will now run the equivalent of the - :class:`.Collect2qBlocks` pass internally if it was not run in a pass - manager prior to the pass. Previously, - :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` had to be run before - :class:`.ConsolidateBlocks` for :class:`.ConsolidateBlocks` to do - anything. By doing the collection internally, the overhead from the pass - is reduced. If :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` are - run prior to :class:`.ConsolidateBlocks,` the collected runs by those - passes from the property set are used and there is no change in behavior - for the pass. diff --git a/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml b/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml deleted file mode 100644 index 103e792381ab..000000000000 --- a/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -features_circuits: - - | - Added circuit library functions :func:`.pauli_feature_map`, :func:`.z_feature_map`, - :func:`.zz_feature_map` to construct Pauli feature map circuits. These functions - are approximately 8x faster than the current circuit library objects, - :class:`.PauliFeatureMap`, :class:`.ZFeatureMap`, and :class:`.ZZFeatureMap`, - and will replace them in the future. Note, that the new functions return a plain - :class:`.QuantumCircuit` instead of a :class:`.BlueprintCircuit`. - - The functions can be used as drop-in replacement:: - - from qiskit.circuit.library import pauli_feature_map, PauliFeatureMap - - fm = pauli_feature_map(20, paulis=["z", "xx", "yyy"]) - also_fm = PauliFeatureMap(20, paulis=["z", "xx", "yyy"]).decompose() From 1acf8c79e0b847aa6157820e0a74c72d9085625c Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:20:21 -0500 Subject: [PATCH 29/38] Move in new release note --- .../{ => 1.3}/fix-inverse-cancellation-c7f4debcde4a705a.yaml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename releasenotes/notes/{ => 1.3}/fix-inverse-cancellation-c7f4debcde4a705a.yaml (100%) diff --git a/releasenotes/notes/fix-inverse-cancellation-c7f4debcde4a705a.yaml b/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml similarity index 100% rename from releasenotes/notes/fix-inverse-cancellation-c7f4debcde4a705a.yaml rename to releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml From b7a7955d777d4fc027462a514a1095fb0b19a910 Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:20:36 -0500 Subject: [PATCH 30/38] Modify new release note --- .../notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml b/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml index 7d6999677b2b..d0bbe4e4bd0f 100644 --- a/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml +++ b/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml @@ -1,3 +1,6 @@ fixes: - | - The transpilation pass :class`.InverseCancellation` now runs inside of flow controlled blocks. Previously, it ignores the pairs of gates in classical blocks that can be cancelled. Refer to `#13437 ` for more details. + The transpilation pass :class`.InverseCancellation` now will recurse into :class`.ControlFlowOp` + operations present in a :class:`.QuantumCircuit`. Previously, the pass would ignorez + inverse gate pairs inside control flow blocks that could have been cancelled. Refer to + `#13437 ` for more details. From bc60d22910f27cb6383c984ba20b5bdaa887ec6f Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 16:25:55 -0500 Subject: [PATCH 31/38] Add missing transpiler passes to the Rust epic - Restored some deleted release notes. - Fix formatting issues. --- ...ulator-configuration-9d782925196993e9.yaml | 2 +- ...ze-transpiler-passes-16f2f1c57612e74a.yaml | 69 +++++++++---------- ...nary-as-entanglement-02037cb2d46e1c41.yaml | 9 +-- .../1.3/prepare-1.3.0-7c45598775fc2bbf.yaml | 6 +- .../rust-consolidation-a791a00380fc78b8.yaml | 13 ++++ .../1.3/rust-paulifm-1dc7b1c2dc756614.yaml | 16 +++++ 6 files changed, 68 insertions(+), 47 deletions(-) create mode 100644 releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml create mode 100644 releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml diff --git a/releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml b/releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml index 9e4051a46ad5..e4f20e549e75 100644 --- a/releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml +++ b/releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml @@ -25,7 +25,7 @@ deprecations_providers: backend.configuration().memory No representation backend.configuration().max_shots No representation - (*) Note that :meth:`.Backend.target.operation_names` includes ``basis_gates`` and additional + (*) Note that :attr:`.Backend.target.operation_names` includes ``basis_gates`` and additional non-gate instructions, in some implementations it might be necessary to filter the output. See `this guide `__ diff --git a/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml b/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml index 82bd98b12444..14e9c9606a12 100644 --- a/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml +++ b/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml @@ -2,52 +2,45 @@ features_transpiler: - | Most of the transpiler passes required by the preset pass manager have - been ported into Rust. - - * The :class:`.ConsolidateBlocks` pass will now run the equivalent of the - :class:`.Collect2qBlocks` pass internally if it was not run in a pass - manager prior to the pass. Previously, - :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` had to be run before - :class:`.ConsolidateBlocks` for :class:`.ConsolidateBlocks` to do - anything. By doing the collection internally, the overhead from the pass - is reduced. If :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` are - run prior to :class:`.ConsolidateBlocks,` the collected runs by those - passes from the property set are used and there is no change in behavior - for the pass. The pass now runs up to 3x faster than it did with Python. + been ported into Rust, these include: + + * :class:`.ConsolidateBlocks`: the pass now runs up to 3x faster than it did with Python. - * The :class:`.BasisTranslator` transpiler pass has been reimplemented - to work purely from Rust, taking advantage of all the other structures - that currently exist there, such as the :class:`.Target`, :class:`.EquivalenceLibrary`, - and the :class:`.DAGCircuit`. The pass itself now runs - 3x to 5x faster than it did in Python. + * :class:`.BasisTranslator`: it now runs 3x to 5x faster than it did in Python. - * Added a Rust implementation of :class:`.CommutationAnalysis` in :func:`.analyze_commutations`. + * :class:`.CommutationAnalysis`: exists in rust as :func:`.analyze_commutations`. Testing on ASV benchmarks reveals increased performance of up to 3x compared to Python. - * Port most of the logic of the transpiler pass :class:`~.ElidePermutations` - to Rust. On certain tests the demostrated speedup is between 5x and 10x from + * :class:`~.ElidePermutations`: On certain tests the demostrated speedup is between 5x and 10x from its previous Python implementation. - * Ported the entirety of the :class:`.Optimize1qGatesDecomposition` transpiler - pass to Rust. This improves the runtime performance of the pass between 5x - to 10x. + * :class:`.Optimize1qGatesDecomposition`: the runtime performance of the pass has + improved between 5x to 10x. - * The :class:`.CommutationChecker` class has been reimplemented in - Rust. This retains the same functionality as before but is now - significantly faster in most cases. Depending on the circuit type - we can observe a speedup of 5x. + * :class:`.CommutationChecker`: Depending on the circuit type we can observe a speedup of + up to 5x in comparison to Python. - * Added circuit library functions :func:`.pauli_feature_map`, :func:`.z_feature_map`, - :func:`.zz_feature_map` to construct Pauli feature map circuits. These functions - are approximately 8x faster than the current circuit library objects, - :class:`.PauliFeatureMap`, :class:`.ZFeatureMap`, and :class:`.ZZFeatureMap`, - and will replace them in the future. Note, that the new functions return a plain - :class:`.QuantumCircuit` instead of a :class:`.BlueprintCircuit`. From multiple benchmarks - a speedup of up to 8x was observed, in comparison to Python. + * The circuit library functions rust-native functions :func:`.pauli_feature_map`, + :func:`.z_feature_map`, and :func:`.zz_feature_map` will replace the current + circuit library objects: :class:`.PauliFeatureMap`, :class:`.ZFeatureMap`, and + :class:`.ZZFeatureMap`. From multiple benchmark runs, a speedup of up to 8x was + observed, in comparison to Python. + + * :class:`.UnitarySynthesis`: the pass seems to run about 1.5x faster than it did in Python. + + * :class:`.GateDirection`: runs between 9x and 16x faster than it did in Python. - The functions can be used as drop-in replacement:: + * :class:`.CheckGateDirection`: runs an average of 12x faster than it did in Python. - from qiskit.circuit.library import pauli_feature_map, PauliFeatureMap + * :class:`.RemoveDiagonalGatesBeforeMeasure`: runs an average of 23x faster than it did + in Python. - fm = pauli_feature_map(20, paulis=["z", "xx", "yyy"]) - also_fm = PauliFeatureMap(20, paulis=["z", "xx", "yyy"]).decompose() + * :class:`.CheckMap`: Runs up to 50x faster than in Python. + + * :class:`.Split2QUnitaties`: Runs about 1.5x faster than in Python. + + * :class:`.StarPrerouting`: Runs about 1.2x faster than in Python. + + Other ported passes include: :class:`.FilterOpNodes`, :class:`.Depth`, :class:`.Size`, + :class:`.GatesInBasis`, and :class:`.InverseCancellation`. + \ No newline at end of file diff --git a/releasenotes/notes/1.3/paulifeaturemap-takes-dictionary-as-entanglement-02037cb2d46e1c41.yaml b/releasenotes/notes/1.3/paulifeaturemap-takes-dictionary-as-entanglement-02037cb2d46e1c41.yaml index fc45f3ed3d29..3bac463541f3 100644 --- a/releasenotes/notes/1.3/paulifeaturemap-takes-dictionary-as-entanglement-02037cb2d46e1c41.yaml +++ b/releasenotes/notes/1.3/paulifeaturemap-takes-dictionary-as-entanglement-02037cb2d46e1c41.yaml @@ -1,10 +1,10 @@ --- features_circuits: - | - :class:`.PauliFeatureMap` and :class:`.ZZFeatureMap` now support specifying the - entanglement as a dictionary where the keys represent the number of qubits, and + :class:`.PauliFeatureMap` and :class:`.ZZFeatureMap` now support specifying the + entanglement as a dictionary where the keys represent the number of qubits, and the values are lists of integer tuples that define which qubits are entangled with one another. This - allows for more flexibility in constructing feature maps tailored to specific quantum algorithms. + allows for more flexibility in constructing feature maps tailored to specific quantum algorithms. Example usage:: from qiskit.circuit.library import PauliFeatureMap @@ -15,6 +15,3 @@ features_circuits: } qc = PauliFeatureMap(3, reps=2, paulis=['Z', 'ZZ', 'ZZZ'], entanglement=entanglement, insert_barriers=True) qc.decompose().draw('mpl') - - - diff --git a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml index 16007a719c5b..02e93357cce7 100644 --- a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml +++ b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -7,8 +7,8 @@ prelude: > new version of Qiskit, the highlights are: * The core data structures for transpilation in Qiskit have been ported - to Rust internally. This includes components such as the - :class:`.DAGCircuit`, :class:`.Target`, :class:`.EquivalenceLibrary`, + to Rust internally. This includes components such as the + :class:`.DAGCircuit`, :class:`.Target`, :class:`.EquivalenceLibrary`, and others. The public APIs for all of these data structures remains unchanged but the performance after the rewrites has improved. @@ -28,6 +28,7 @@ prelude: > functions that return a :class:`.QuantumCircuit` (for example: :func:`.real_amplitudes`). Most of these functions are built in Rust, resulting in significantly faster circuit construction runtime. + * Abstract operations, that can be implemented using different decompositions, are represented as :class:`.Gate` or :class:`qiskit.circuit.Instruction` (for example: :class:`.PauliEvolutionGate`). This allows building an abstract quantum circuit @@ -39,3 +40,4 @@ prelude: > * The minimum supported Python version is now 3.9 as Python 3.8 went end of life in 2024-10. Official support for Python 3.13 support was also added in this release. + diff --git a/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml b/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml new file mode 100644 index 000000000000..a7cecf92e5c7 --- /dev/null +++ b/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml @@ -0,0 +1,13 @@ +--- +features_transpiler: + - | + The :class:`.ConsolidateBlocks` pass will now run the equivalent of the + :class:`.Collect2qBlocks` pass internally if it was not run in a pass + manager prior to the pass. Previously, + :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` had to be run before + :class:`.ConsolidateBlocks` for :class:`.ConsolidateBlocks` to do + anything. By doing the collection internally, the overhead from the pass + is reduced. If :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` are + run prior to :class:`.ConsolidateBlocks,` the collected runs by those + passes from the property set are used and there is no change in behavior + for the pass. diff --git a/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml b/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml new file mode 100644 index 000000000000..103e792381ab --- /dev/null +++ b/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml @@ -0,0 +1,16 @@ +--- +features_circuits: + - | + Added circuit library functions :func:`.pauli_feature_map`, :func:`.z_feature_map`, + :func:`.zz_feature_map` to construct Pauli feature map circuits. These functions + are approximately 8x faster than the current circuit library objects, + :class:`.PauliFeatureMap`, :class:`.ZFeatureMap`, and :class:`.ZZFeatureMap`, + and will replace them in the future. Note, that the new functions return a plain + :class:`.QuantumCircuit` instead of a :class:`.BlueprintCircuit`. + + The functions can be used as drop-in replacement:: + + from qiskit.circuit.library import pauli_feature_map, PauliFeatureMap + + fm = pauli_feature_map(20, paulis=["z", "xx", "yyy"]) + also_fm = PauliFeatureMap(20, paulis=["z", "xx", "yyy"]).decompose() From 7f94f9b7b85e5efb40bada0b31a15911f884d44b Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 16:30:49 -0500 Subject: [PATCH 32/38] Remove stray release notes --- ...ate-negative-indices-cf5517921fe52706.yaml | 6 - ...op-apply-layout-zero-43b9e70f0d1536a6.yaml | 10 -- ...x-swap-router-layout-f28cf0a2de7976a8.yaml | 7 - ...ymbolic-unit-scaling-c3eb4d9be674dfd6.yaml | 8 -- .../1.1/parallel-check-8186a8f074774a1f.yaml | 5 - .../plot-circuit-layout-5935646107893c12.yaml | 5 - .../1.1/qasm2-bigint-8eff42acb67903e6.yaml | 9 -- .../1.1/storage-var-a00a33fcf9a71f3f.yaml | 122 ------------------ ...random-clifford-util-5358041208729988.yaml | 14 -- ...stimator-v2-variance-905c953415ad0e29.yaml | 5 - ...ebone-backend-option-675c86df4382a443.yaml | 8 -- ...it-draw-warn-justify-03434d30cccda452.yaml | 13 -- ...nded-random-circuits-049b67cce39003f4.yaml | 21 --- .../1.2/fix-qft-plugins-7106029d33c44b96.yaml | 9 -- ...r_probabilities_dict-e53f524d115bbcfc.yaml | 13 -- ...formula-improvements-1bc40650151cf107.yaml | 25 ---- ...m-superposition-gate-3bd95ffdf05ef18c.yaml | 27 ---- 17 files changed, 307 deletions(-) delete mode 100644 releasenotes/notes/1.1/fix-apply-layout-duplicate-negative-indices-cf5517921fe52706.yaml delete mode 100644 releasenotes/notes/1.1/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml delete mode 100644 releasenotes/notes/1.1/fix-swap-router-layout-f28cf0a2de7976a8.yaml delete mode 100644 releasenotes/notes/1.1/fix-symbolic-unit-scaling-c3eb4d9be674dfd6.yaml delete mode 100644 releasenotes/notes/1.1/parallel-check-8186a8f074774a1f.yaml delete mode 100644 releasenotes/notes/1.1/plot-circuit-layout-5935646107893c12.yaml delete mode 100644 releasenotes/notes/1.1/qasm2-bigint-8eff42acb67903e6.yaml delete mode 100644 releasenotes/notes/1.1/storage-var-a00a33fcf9a71f3f.yaml delete mode 100644 releasenotes/notes/1.2/add-random-clifford-util-5358041208729988.yaml delete mode 100644 releasenotes/notes/1.2/backend-estimator-v2-variance-905c953415ad0e29.yaml delete mode 100644 releasenotes/notes/1.2/barebone-backend-option-675c86df4382a443.yaml delete mode 100644 releasenotes/notes/1.2/circuit-draw-warn-justify-03434d30cccda452.yaml delete mode 100644 releasenotes/notes/1.2/extended-random-circuits-049b67cce39003f4.yaml delete mode 100644 releasenotes/notes/1.2/fix-qft-plugins-7106029d33c44b96.yaml delete mode 100644 releasenotes/notes/1.2/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml delete mode 100644 releasenotes/notes/1.2/product-formula-improvements-1bc40650151cf107.yaml delete mode 100644 releasenotes/notes/1.2/uniform-superposition-gate-3bd95ffdf05ef18c.yaml diff --git a/releasenotes/notes/1.1/fix-apply-layout-duplicate-negative-indices-cf5517921fe52706.yaml b/releasenotes/notes/1.1/fix-apply-layout-duplicate-negative-indices-cf5517921fe52706.yaml deleted file mode 100644 index 9fbe0ffd9c79..000000000000 --- a/releasenotes/notes/1.1/fix-apply-layout-duplicate-negative-indices-cf5517921fe52706.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -fixes: - - | - Fixed :meth:`.SparsePauliOp.apply_layout` and :meth:`.Pauli.apply_layout` - to raise :exc:`.QiskitError` if duplicate indices or negative indices are provided - as part of a layout. diff --git a/releasenotes/notes/1.1/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml b/releasenotes/notes/1.1/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml deleted file mode 100644 index 0bbdaa869603..000000000000 --- a/releasenotes/notes/1.1/fix-sparse-pauli-op-apply-layout-zero-43b9e70f0d1536a6.yaml +++ /dev/null @@ -1,10 +0,0 @@ -fixes: - - | - Fixed :meth:`.SparsePauliOp.apply_layout` to work correctly with zero-qubit operators. - For example, previously if you created a zero-qubit operator and applied a layout like the following, it would have raised an error:: - - op = SparsePauliOp("") - op.apply_layout(None, 3) - - Now, the above code correctly returns an operator of the following form:: - ``SparsePauliOp(['III'], coeffs=[1.+0.j])`` diff --git a/releasenotes/notes/1.1/fix-swap-router-layout-f28cf0a2de7976a8.yaml b/releasenotes/notes/1.1/fix-swap-router-layout-f28cf0a2de7976a8.yaml deleted file mode 100644 index 834d7986ab85..000000000000 --- a/releasenotes/notes/1.1/fix-swap-router-layout-f28cf0a2de7976a8.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -fixes: - - | - Fixed an oversight in the :class:`.Commuting2qGateRouter` transpiler pass where the qreg permutations - were not added to the pass property set, so they would have to be tracked manually by the user. Now it's - possible to access the permutation through the output circuit's ``layout`` property and plug the pass - into any transpilation pipeline without loss of information. diff --git a/releasenotes/notes/1.1/fix-symbolic-unit-scaling-c3eb4d9be674dfd6.yaml b/releasenotes/notes/1.1/fix-symbolic-unit-scaling-c3eb4d9be674dfd6.yaml deleted file mode 100644 index 5ca00904a9ae..000000000000 --- a/releasenotes/notes/1.1/fix-symbolic-unit-scaling-c3eb4d9be674dfd6.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -fixes: - - | - Fixed a floating-point imprecision when scaling certain pulse units - between seconds and nanoseconds. If the pulse was symbolically defined, - an unnecessary floating-point error could be introduced by the scaling - for certain builds of ``symengine``, which could manifest in unexpected - results once the symbols were fully bound. See `#12392 `__. diff --git a/releasenotes/notes/1.1/parallel-check-8186a8f074774a1f.yaml b/releasenotes/notes/1.1/parallel-check-8186a8f074774a1f.yaml deleted file mode 100644 index d3266b2aa5f2..000000000000 --- a/releasenotes/notes/1.1/parallel-check-8186a8f074774a1f.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -fixes: - - | - :meth:`.PassManager.run` will no longer waste time serializing itself when given multiple inputs - if it is only going to work in serial. diff --git a/releasenotes/notes/1.1/plot-circuit-layout-5935646107893c12.yaml b/releasenotes/notes/1.1/plot-circuit-layout-5935646107893c12.yaml deleted file mode 100644 index 72f2c95962a5..000000000000 --- a/releasenotes/notes/1.1/plot-circuit-layout-5935646107893c12.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -fixes: - - | - Fixed a bug in :func:`plot_coupling_map` that caused the edges of the coupling map to be colored incorrectly. - See https://github.com/Qiskit/qiskit/pull/12369 for details. diff --git a/releasenotes/notes/1.1/qasm2-bigint-8eff42acb67903e6.yaml b/releasenotes/notes/1.1/qasm2-bigint-8eff42acb67903e6.yaml deleted file mode 100644 index 2fb1b4dcc5a1..000000000000 --- a/releasenotes/notes/1.1/qasm2-bigint-8eff42acb67903e6.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -fixes: - - | - The OpenQASM 2.0 parser (:func:`.qasm2.load` and :func:`.qasm2.loads`) can now evaluate - gate-angle expressions including integer operands that would overflow the system-size integer. - These will be evaluated in a double-precision floating-point context, just like the rest of the - expression always has been. Beware: an arbitrarily large integer will not necessarily be - exactly representable in double-precision floating-point, so there is a chance that however the - circuit was generated, it had already lost all numerical precision modulo :math:`2\pi`. diff --git a/releasenotes/notes/1.1/storage-var-a00a33fcf9a71f3f.yaml b/releasenotes/notes/1.1/storage-var-a00a33fcf9a71f3f.yaml deleted file mode 100644 index 434d63a6dfd2..000000000000 --- a/releasenotes/notes/1.1/storage-var-a00a33fcf9a71f3f.yaml +++ /dev/null @@ -1,122 +0,0 @@ ---- -features_circuits: - - | - :class:`.QuantumCircuit` has several new methods to work with and inspect manual :class:`.Var` - variables. - - See :ref:`circuit-real-time-methods` for more in-depth discussion on all of these. - - The new methods are:: - - * :meth:`~.QuantumCircuit.add_var` - * :meth:`~.QuantumCircuit.add_input` - * :meth:`~.QuantumCircuit.add_capture` - * :meth:`~.QuantumCircuit.add_uninitialized_var` - * :meth:`~.QuantumCircuit.get_var` - * :meth:`~.QuantumCircuit.has_var` - * :meth:`~.QuantumCircuit.iter_vars` - * :meth:`~.QuantumCircuit.iter_declared_vars` - * :meth:`~.QuantumCircuit.iter_captured_vars` - * :meth:`~.QuantumCircuit.iter_input_vars` - * :meth:`~.QuantumCircuit.store` - - In addition, there are several new dynamic attributes on :class:`.QuantumCircuit` surrounding - these variables:: - - * :attr:`~.QuantumCircuit.num_vars` - * :attr:`~.QuantumCircuit.num_input_vars` - * :attr:`~.QuantumCircuit.num_captured_vars` - * :attr:`~.QuantumCircuit.num_declared_vars` - - | - :class:`.ControlFlowOp` and its subclasses now have a :meth:`~.ControlFlowOp.iter_captured_vars` - method, which will return an iterator over the unique variables captured in any of its immediate - blocks. - - | - :class:`.DAGCircuit` has several new methods to work with and inspect manual :class:`.Var` - variables. These are largely equivalent to their :class:`.QuantumCircuit` counterparts, except - that the :class:`.DAGCircuit` ones are optimized for programmatic access with already defined - objects, while the :class:`.QuantumCircuit` methods are more focussed on interactive human use. - - The new methods are:: - - * :meth:`~.DAGCircuit.add_input_var` - * :meth:`~.DAGCircuit.add_captured_var` - * :meth:`~.DAGCircuit.add_declared_var` - * :meth:`~.DAGCircuit.has_var` - * :meth:`~.DAGCircuit.iter_vars` - * :meth:`~.DAGCircuit.iter_declared_vars` - * :meth:`~.DAGCircuit.iter_captured_vars` - * :meth:`~.DAGCircuit.iter_input_vars` - - There are also new public attributes:: - - * :attr:`~.DAGCircuit.num_vars` - * :attr:`~.DAGCircuit.num_input_vars` - * :attr:`~.DAGCircuit.num_captured_vars` - * :attr:`~.DAGCircuit.num_declared_vars` - - | - :attr:`.DAGCircuit.wires` will now also contain any :class:`.Var` manual variables in the - circuit as well, as these are also classical data flow. - - | - A new method, :meth:`.Var.new`, was added to manually construct a real-time classical variable - that owns its memory. - - | - :meth:`.QuantumCircuit.compose` has two required keyword arguments, var_remap and inline_captures - to better support real-time classical variables. - - ``var_remap`` can be used to rewrite :class:`.Var` nodes in the circuit argument as its - instructions are inlined onto the base circuit. This can be used to avoid naming conflicts. - - ``inline_captures`` can be set to ``True`` (defaults to ``False``) to link all :class:`.Var` - nodes tracked as "captures" in the argument circuit with the same :class:`.Var` nodes in the - base circuit, without attempting to redeclare the variables. This can be used, in combination - with :meth:`.QuantumCircuit.copy_empty_like`'s ``vars_mode="captures"`` handling, to build up - a circuit layer by layer, containing variables. - - | - :meth:`.DAGCircuit.compose` has a new keyword argument, ``inline_captures``, which can be set to - ``True`` to inline "capture" :class:`.Var` nodes on the argument circuit onto the base circuit - without redeclaring them. Combined with the ``vars_mode="captures"`` option available on several - :class:`.DAGCircuit` methods, this can be used to combine DAGs that operate on the same variables. - - | - :meth:`.QuantumCircuit.copy_empty_like` and :meth:`.DAGCircuit.copy_empty_like` have a new - keyword argument, ``vars_mode`` which controls how any memory-owning :class:`.Var` nodes are - tracked in the output. By default (``"alike"``), the variables are declared in the same - input/captured/local mode as the source. This can be set to ``"captures"`` to convert all - variables to captures (useful with :meth:`~.QuantumCircuit.compose`) or ``"drop"`` to remove - them. - - | - A new ``vars_mode`` keyword argument has been added to the :class:`.DAGCircuit` methods:: - - * :meth:`~.DAGCircuit.separable_circuits` - * :meth:`~.DAGCircuit.layers` - * :meth:`~.DAGCircuit.serial_layers` - - which has the same meaning as it does for :meth:`~.DAGCircuit.copy_empty_like`. -features_qasm: - - | - The OpenQASM 3 exporter supports manual-storage :class:`.Var` nodes on circuits. -features_qpy: - - | - QPY (:mod:`qiskit.qpy`) format version 12 has been added, which includes support for memory-owning - :class:`.Var` variables. See :ref:`qpy_version_12` for more details on the format changes. -features_visualization: - - | - The text and `Matplotlib `__ circuit drawers (:meth:`.QuantumCircuit.draw`) - have minimal support for displaying expressions involving manual real-time variables. The - :class:`.Store` operation and the variable initializations are not yet supported; for large-scale - dynamic circuits, we recommend using the OpenQASM 3 export capabilities (:func:`.qasm3.dumps`) to - get a textual representation of a circuit. -upgrade_qpy: - - | - The value of :attr:`qiskit.qpy.QPY_VERSION` is now 12. :attr:`.QPY_COMPATIBILITY_VERSION` is - unchanged at 10. -upgrade_providers: - - | - Implementations of :class:`.BackendV2` (and :class:`.BackendV1`) should update their - :meth:`~.BackendV2.run` methods to reject inputs that contain typed - classical variables (see :mod:`qiskit.circuit.classical`) and the :class:`.Store` instruction - if such input is not supported. The new :class:`.Store` instruction is treated by the - transpiler as an always-available "directive" (like :class:`.Barrier`); if your backends do not - support it, this won't be caught by the :mod:`~qiskit.transpiler`. - - See :ref:`providers-guide-real-time-variables` for more information. diff --git a/releasenotes/notes/1.2/add-random-clifford-util-5358041208729988.yaml b/releasenotes/notes/1.2/add-random-clifford-util-5358041208729988.yaml deleted file mode 100644 index 7f2e20db6522..000000000000 --- a/releasenotes/notes/1.2/add-random-clifford-util-5358041208729988.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -features_circuits: - - | - Added a new function to ``qiskit.circuit.random`` that allows to generate a pseudo-random - Clifford circuit with gates from the standard library: :func:`.random_clifford_circuit`. - Example usage: - - .. plot:: - :include-source: - - from qiskit.circuit.random import random_clifford_circuit - - circ = random_clifford_circuit(num_qubits=2, num_gates=6) - circ.draw(output='mpl') diff --git a/releasenotes/notes/1.2/backend-estimator-v2-variance-905c953415ad0e29.yaml b/releasenotes/notes/1.2/backend-estimator-v2-variance-905c953415ad0e29.yaml deleted file mode 100644 index 32aa48bdfd31..000000000000 --- a/releasenotes/notes/1.2/backend-estimator-v2-variance-905c953415ad0e29.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -fixes: - - | - A fix has been introduced to the :class:`.BackendEstimatorV2` class that ensures the calculation of - ``std`` matches the correct formula. diff --git a/releasenotes/notes/1.2/barebone-backend-option-675c86df4382a443.yaml b/releasenotes/notes/1.2/barebone-backend-option-675c86df4382a443.yaml deleted file mode 100644 index 912970845042..000000000000 --- a/releasenotes/notes/1.2/barebone-backend-option-675c86df4382a443.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -features: - - | - Added two parameters to :class:`.GenericBackendV2` to exclude error (`noise_info`) and - pulse channel information (`pulse_channels`) from the construction of the backend. These parameters - are true by default, replicating the initial default behavior of the constructor. A memory-sensitive - user may set these options to `False` to reduce the memory overhead by 40x when transpiling on large- - scale :class:`.GenericBackendV2`. diff --git a/releasenotes/notes/1.2/circuit-draw-warn-justify-03434d30cccda452.yaml b/releasenotes/notes/1.2/circuit-draw-warn-justify-03434d30cccda452.yaml deleted file mode 100644 index 9ae15212fd56..000000000000 --- a/releasenotes/notes/1.2/circuit-draw-warn-justify-03434d30cccda452.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -deprecations_visualization: - - | - The ``justify`` argument of :func:`circuit_drawer` or :meth:`QuantumCircuit.draw`, will - no longer support invalid values (previously changing them to the default), and in a future - release they will error. Valid justify values are ``"left"``, ``"right"`` or ``"none"``. -fixes: - - | - Fixed an issue where :func:`circuit_drawer` or the :meth:`QuantumCircuit.draw` method would - not raise a warning when an invalid value was passed to the ``justify`` argument, before - changing it to the default. Now, it will raise a warning if an invalid value is passed. - Valid justify values are ``"left"``, ``"right"`` or ``"none"``. Refer to - `#12089 ` for more details. diff --git a/releasenotes/notes/1.2/extended-random-circuits-049b67cce39003f4.yaml b/releasenotes/notes/1.2/extended-random-circuits-049b67cce39003f4.yaml deleted file mode 100644 index f4bb585053bc..000000000000 --- a/releasenotes/notes/1.2/extended-random-circuits-049b67cce39003f4.yaml +++ /dev/null @@ -1,21 +0,0 @@ ---- -features_circuits: - - | - The `random_circuit` function from `qiskit.circuit.random.utils` has a new feature where - users can specify a distribution `num_operand_distribution` (a dict) that specifies the - ratio of 1-qubit, 2-qubit, 3-qubit, and 4-qubit gates in the random circuit. For example, - if `num_operand_distribution = {1: 0.25, 2: 0.25, 3: 0.25, 4: 0.25}` is passed to the function - then the generated circuit will have approximately 25% of 1-qubit, 2-qubit, 3-qubit, and - 4-qubit gates (The order in which the dictionary is passed does not matter i.e. you can specify - `num_operand_distribution = {3: 0.5, 1: 0.0, 4: 0.3, 2: 0.2}` and the function will still work - as expected). Also it should be noted that the if `num_operand_distribution` is not specified - then `max_operands` will default to 4 and a random circuit with a random gate distribution will - be generated. If both `num_operand_distribution` and `max_operands` are specified at the same - time then `num_operand_distribution` will be used to generate the random circuit. - Example usage:: - - from qiskit.circuit.random import random_circuit - - circ = random_circuit(num_qubits=6, depth=5, num_operand_distribution = {1: 0.25, 2: 0.25, 3: 0.25, 4: 0.25}) - circ.draw(output='mpl') - diff --git a/releasenotes/notes/1.2/fix-qft-plugins-7106029d33c44b96.yaml b/releasenotes/notes/1.2/fix-qft-plugins-7106029d33c44b96.yaml deleted file mode 100644 index 37f58c60862a..000000000000 --- a/releasenotes/notes/1.2/fix-qft-plugins-7106029d33c44b96.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -fixes: - - | - The :class:`.HighLevelSynthesis` transpiler pass no longer raises an exception when - encountering a custom gate that is called "qft" but is not an instance of - :class:`~qiskit.circuit.library.QFTGate`. Instead, the synthesis plugins for - QFT gates ignore such a gate, and the gate's definition is used (if provided). - - diff --git a/releasenotes/notes/1.2/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml b/releasenotes/notes/1.2/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml deleted file mode 100644 index eb281cb7f12a..000000000000 --- a/releasenotes/notes/1.2/outcome_bitstring_target_for_probabilities_dict-e53f524d115bbcfc.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -features: - - | - The :class:`.StabilizerState` class now has a new method - :meth:`~.StabilizerState.probabilities_dict_from_bitstring` allowing the - user to pass a single bitstring to measure an outcome for. Previously, the - :meth:`~.StabilizerState.probabilities_dict` would be utilized and would, - in the worst case, calculate (2^n) probability calculations (depending - on the state), even if a user wanted a single result. With this new method - the user can calculate just the single outcome bitstring value a user passes - to measure the probability for. As the number of qubits increases, the more - prevalent the performance enhancement may be (depending on the state) as only - one bitstring result is measured. diff --git a/releasenotes/notes/1.2/product-formula-improvements-1bc40650151cf107.yaml b/releasenotes/notes/1.2/product-formula-improvements-1bc40650151cf107.yaml deleted file mode 100644 index fc9713e7a436..000000000000 --- a/releasenotes/notes/1.2/product-formula-improvements-1bc40650151cf107.yaml +++ /dev/null @@ -1,25 +0,0 @@ ---- -features_circuits: - - | - Added the ``insert_barriers`` keyword argument to the - :meth:`~.QuantumCircuit.repeat` method. Setting it to ``True`` will insert - barriers between circuit repetitions. -features_synthesis: - - | - Added the ``wrap`` keyword argument to the :class:`.ProductFormula` classes - which (when enabled) wraps individual Pauli evolution terms. This can be - useful when visualizing circuits. -upgrade_synthesis: - - | - The ``atomic_evolution`` argument to :class:`.ProductFormula` (and its - subclasses) has a new function signature. Rather than taking some Pauli - operator and time coefficient and returning the evolution circuit, the new - function takes in an existing circuit and should append the evolution of the - provided Pauli and given time to this circuit. This new implementation - benefits from significantly better performance. - - | - :class:`.LieTrotter` and :class:`.SuzukiTrotter` no longer wrap the - individually evolved Pauli terms into gate definitions. If you rely on a - certain decomposition level of your circuit, you have to remove one level of - :meth:`~.QuantumCircuit.decompose` or add the ``wrap=True`` keyword argument - to your synthesis object. diff --git a/releasenotes/notes/1.2/uniform-superposition-gate-3bd95ffdf05ef18c.yaml b/releasenotes/notes/1.2/uniform-superposition-gate-3bd95ffdf05ef18c.yaml deleted file mode 100644 index 6017979748ea..000000000000 --- a/releasenotes/notes/1.2/uniform-superposition-gate-3bd95ffdf05ef18c.yaml +++ /dev/null @@ -1,27 +0,0 @@ ---- -features: - - | - Implemented :class:`.UniformSuperpositionGate` class, which allows - the creation of a uniform superposition state using - the Shukla-Vedula algorithm. This feature facilitates the - creation of quantum circuits that produce a uniform superposition - state :math:`\frac{1}{\sqrt{M}} \sum_{j=0}^{M-1} |j\rangle`, where - :math:`M` is a positive integer representing the number of - computational basis states with an amplitude of - :math:`\frac{1}{\sqrt{M}}`. This implementation supports the - efficient creation of uniform superposition states, - requiring only :math:`O(\log_2 (M))` qubits and - :math:`O(\log_2 (M))` gates. Usage example: - - .. code-block:: python - - from qiskit import QuantumCircuit - from qiskit.circuit.library.data_preparation import UniformSuperpositionGate - - M = 5 - num_qubits = 3 - usp_gate = UniformSuperpositionGate(M, num_qubits) - qc = QuantumCircuit(num_qubits) - qc.append(usp_gate, list(range(num_qubits))) - - qc.draw() From a1d34c242792022436fb1dbc71950f453a7e981c Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 17:05:53 -0500 Subject: [PATCH 33/38] Fix: Use plot directive effectively --- .../1.3/add-mcx-plugins-85e5b248692a36db.yaml | 7 +++++-- ...backend-sampler-v2-level1-dc13af460cd38454.yaml | 4 +++- .../notes/1.3/clib-grover-op-cb032144e899ed0d.yaml | 5 +++-- .../notes/1.3/iqp-function-6594f7cf1521499c.yaml | 14 +++++++++----- .../1.3/pauli-evo-plugins-612850146c3f7d49.yaml | 5 ++++- .../reorder-trotter-terms-c8a6eb3cdb831f77.yaml | 7 +++++-- 6 files changed, 29 insertions(+), 13 deletions(-) diff --git a/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml b/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml index 6ad03c3a4703..824e2fc283ab 100644 --- a/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml +++ b/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml @@ -22,7 +22,10 @@ features_transpiler: * :class:`.MCXSynthesisDefault`, for choosing the most efficient synthesis method based on the number of clean and dirty ancilla qubits available. - As an example, consider the transpilation of the following circuit:: + As an example, consider the transpilation of the following circuit: + + .. plot:: + :include-source: from qiskit.circuit import QuantumCircuit from qiskit.compiler import transpile @@ -33,7 +36,7 @@ features_transpiler: qc.mcx([0, 1, 2, 3, 4], [5]) qc.mcx([0, 1, 2, 3, 4, 5], [6]) - transpile(qc) + transpile(qc).draw('mpl') For the first MCX gate, qubits ``5`` and ``6`` can be used as clean ancillas, and the best available synthesis method ``synth_mcx_n_clean_m15`` diff --git a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml index 074d93560d17..d5df94aa0ef8 100644 --- a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml +++ b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml @@ -14,4 +14,6 @@ upgrade_primitives: - | When using :class:`~.BackendSamplerV2`, circuit metadata is no longer cleared before passing circuits to the ``run()`` method of the wrapped - :class:`~.BackendV2` instance. + :class:`~.BackendV2` instance. If you were previously + relying on this behavior you can manually clear the metadata before + calling :meth:`.BackendSamplerV2.run` by calling `circuit.metadata.clear()` diff --git a/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml b/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml index 5b1248bc1c13..16aa5b0ff9e2 100644 --- a/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml +++ b/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml @@ -8,7 +8,8 @@ features_circuits: Additionally, it does not wrap the circuit into an opaque gate and is faster because fewer decompositions are required for transpilation. - Example:: + .. plot:: + :include-source: from qiskit.circuit import QuantumCircuit from qiskit.circuit.library import grover_operator @@ -16,4 +17,4 @@ features_circuits: oracle = QuantumCircuit(2) oracle.z(0) # good state = first qubit is |1> grover_op = grover_operator(oracle, insert_barriers=True) - print(grover_op.draw()) + grover_op.draw('mpl') diff --git a/releasenotes/notes/1.3/iqp-function-6594f7cf1521499c.yaml b/releasenotes/notes/1.3/iqp-function-6594f7cf1521499c.yaml index a33b70c32a33..4ff64ed8dfcf 100644 --- a/releasenotes/notes/1.3/iqp-function-6594f7cf1521499c.yaml +++ b/releasenotes/notes/1.3/iqp-function-6594f7cf1521499c.yaml @@ -4,9 +4,13 @@ features_circuits: Added the :func:`~qiskit.circuit.library.iqp` function to construct Instantaneous Quantum Polynomial time (IQP) circuits. In addition to the existing :class:`.IQP` class, the function also allows construction of random - IQP circuits:: + IQP circuits: + + .. plot:: + :include-source: + + from qiskit.circuit.library import random_iqp - from qiskit.circuit.library import iqp - - random_iqp = iqp(num_qubits=4) - print(random_iqp.draw()) \ No newline at end of file + random_iqp = random_iqp(num_qubits=4) + random_iqp.draw('mpl') + \ No newline at end of file diff --git a/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml b/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml index b2adae868fc0..d8faf596dbeb 100644 --- a/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml +++ b/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml @@ -46,7 +46,10 @@ features_synthesis: the synthesis algorithm that is described in the paper "`Faster and shorter synthesis of Hamiltonian simulation circuits" by (de) Brugière and Martiel `__" and is implemented in `Rustiq `__. - For example:: + For example: + + .. plot:: + :include-source: from qiskit.circuit import QuantumCircuit from qiskit.quantum_info import SparsePauliOp diff --git a/releasenotes/notes/1.3/reorder-trotter-terms-c8a6eb3cdb831f77.yaml b/releasenotes/notes/1.3/reorder-trotter-terms-c8a6eb3cdb831f77.yaml index 4f77f09e7ab2..2b1fc2dd55eb 100644 --- a/releasenotes/notes/1.3/reorder-trotter-terms-c8a6eb3cdb831f77.yaml +++ b/releasenotes/notes/1.3/reorder-trotter-terms-c8a6eb3cdb831f77.yaml @@ -18,7 +18,10 @@ features_synthesis: which will lead to the ``RZZ`` and ``RYY`` rotations being applied in parallel, instead of three sequential rotations in the first part. - This option can be set via the plugin interface:: + This option can be set via the plugin interface: + + .. plot:: + :include-source: from qiskit import QuantumCircuit, transpile from qiskit.circuit.library import PauliEvolutionGate @@ -36,5 +39,5 @@ features_synthesis: circuit.append(PauliEvolutionGate(op, time), circuit.qubits) tqc = transpile(circuit, basis_gates=["u", "cx"], hls_config=hls_config) - print(tqc.draw()) + tqc.draw('mpl') From e606c04537e26cc9664048900f988bf57bf5210f Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Wed, 27 Nov 2024 17:23:13 -0500 Subject: [PATCH 34/38] Remove all 1.2 release notes and build from 1.3.0b1 Due to how we end up branching 1.2.0 without a tag this is confusing reno's version detection because on the stable/1.3 branch there is no tag before 1.3.0b1 associated with any of the release notes for 1.2.0. This commit just removes all the release notes to fix this. Additionally, this corrects the earliest-version field in the sphinx directive for reno so we include the notes associated with 1.3.0b1. --- docs/release_notes.rst | 2 +- ...set-pm-global-import-efb12f185f3f738b.yaml | 14 ---- .../1.2/add-qft-gate-fd4e08f6721a9da4.yaml | 22 ------ ...e-all-threads-option-ad4ff7a4d045cb2b.yaml | 26 ------ ...djust-neato-settings-3adcc0ae9e245ce9.yaml | 6 -- .../annotated-params-116288d5628f7ee8.yaml | 30 ------- .../avoid-op-creation-804c0bed6c408911.yaml | 17 ---- .../notes/1.2/backendv1-d0d0642ed38fed3c.yaml | 14 ---- .../bitarray-postselect-659b8f7801ccaa60.yaml | 11 --- .../circuit-gates-rust-5c6ab6c58f7fd2c9.yaml | 79 ------------------- ...e-preset-passmanager-ec758ddc896ae2d6.yaml | 44 ----------- ...uit-internal-helpers-ee65fbac455de47c.yaml | 11 --- ...-circuit-instruction-8a332ab09de73766.yaml | 23 ------ .../notes/1.2/deprecate-primitives-v1.yaml | 32 -------- ...visualize_transition-8c1d257b7f37aa58.yaml | 7 -- .../deprecate_assemble-67486b4d0a8d4f96.yaml | 7 -- ...arametric-controlled-1a495f6f7ce89397.yaml | 8 -- ...ser-non-std-kak-gate-edc69ffb5d9ef302.yaml | 5 -- ...InstructionDurations-b47a9770b424d7a0.yaml | 5 -- ...ay-fromcounts-nobits-82958a596b3489ec.yaml | 7 -- ...ray-slice-bits-shots-c9cb7e5d907722f5.yaml | 11 --- ...ustom-gate-no-target-e2d1e0b0ee7ace11.yaml | 9 --- .../1.2/fix-cu-rust-6464b6893ecca1b3.yaml | 9 --- ...-dd-misalignment-msg-76fe16e5eb4ae670.yaml | 7 -- ...x-elide-permutations-1b9e1d10c3abb2a4.yaml | 5 -- .../1.2/fix-hoare-opt-56d1ca6a07f07a2d.yaml | 5 -- ...-validation-BitArray-1bf542a1fb5c15c6.yaml | 4 - .../fix-mcx-performance-de86bcc9f969b81e.yaml | 6 -- ...fix-negative-seed-pm-2813a62a020da115.yaml | 4 - ...rminism-dense-layout-da66de0217121146.yaml | 9 --- .../fix-qpy-parsing-123-75357c3709e35963.yaml | 10 --- ...qpy-symengine-compat-858970a9a1d6bc14.yaml | 62 --------------- ...x-sabre-releasevalve-7f9af9bfc0482e04.yaml | 7 -- ...nitaries-custom-gate-d10f7670a35548f4.yaml | 6 -- ...-stateprep-normalize-a8057c339ba619bd.yaml | 6 -- ...evector-sampler-c_if-9753f8f97a3d0ff5.yaml | 5 -- .../1.2/fix-synth-qregs-7662681c0ff02511.yaml | 7 -- ...e_gates_to_uncompute-d0dba6a642d07f30.yaml | 4 - ...-quantum-causal-cone-f63eaaa9ab658811.yaml | 5 -- ...ry-matrix-utils-rust-c48b5577749c34ab.yaml | 8 -- ...ursive_clean_ancilla-2b0f6956e0f4cbbd.yaml | 5 -- ...hain_dirty_auxiliary-5ea4037557209f6e.yaml | 10 --- ...o-elide-routing-none-7c1bebf1283d48c0.yaml | 16 ---- .../1.2/oxidize-acg-0294a87c0d5974fa.yaml | 5 -- .../oxidize-permbasic-be27578187ac472f.yaml | 4 - .../1.2/oxidize-pmh-ec74e4002510eaad.yaml | 17 ---- ...ze-synth-clifford-bm-91d8b974ca0522b7.yaml | 7 -- ...ynth-clifford-greedy-0739e9688bc4eedd.yaml | 6 -- ...phole-before-routing-c3d184b740bb7a8b.yaml | 20 ----- ...port_star_prerouting-13fae3ff78feb5e3.yaml | 11 --- .../qasm2-builtin-gate-d80c2868cdf5f958.yaml | 7 -- ...-basis-gates-keyword-c5998bff1e178715.yaml | 5 -- .../1.2/qasm3-includes-ceb56f49b8c190ff.yaml | 11 --- .../qasm3-symbol-table-efad35629639c77d.yaml | 18 ----- ...lgorithm-by-isometry-41f9ffa58f72ece5.yaml | 7 -- .../restrict-split2q-d51d840cc7a7a482.yaml | 8 -- .../1.2/sabre_level0-1524f01965257f3f.yaml | 13 --- ...tation_depth_lnn_kms-c444f3a363f3a903.yaml | 4 - ..._parameterexpression-6421421b6dc20fbb.yaml | 4 - ...rimitive-v2-metadata-cf1226e2d6477688.yaml | 13 --- .../update-qasm3-lib-40e15bc24234970d.yaml | 7 -- ...ustworkx-min-version-4f07aacfebccae80.yaml | 7 -- ...n-generate-preset-pm-5215e00d22d0205c.yaml | 20 ----- .../1.2/workaroud_12361-994d0ac2d2a6ed41.yaml | 14 ---- 64 files changed, 1 insertion(+), 797 deletions(-) delete mode 100644 releasenotes/notes/1.2/add-generate-preset-pm-global-import-efb12f185f3f738b.yaml delete mode 100644 releasenotes/notes/1.2/add-qft-gate-fd4e08f6721a9da4.yaml delete mode 100644 releasenotes/notes/1.2/add-sabre-all-threads-option-ad4ff7a4d045cb2b.yaml delete mode 100644 releasenotes/notes/1.2/adjust-neato-settings-3adcc0ae9e245ce9.yaml delete mode 100644 releasenotes/notes/1.2/annotated-params-116288d5628f7ee8.yaml delete mode 100644 releasenotes/notes/1.2/avoid-op-creation-804c0bed6c408911.yaml delete mode 100644 releasenotes/notes/1.2/backendv1-d0d0642ed38fed3c.yaml delete mode 100644 releasenotes/notes/1.2/bitarray-postselect-659b8f7801ccaa60.yaml delete mode 100644 releasenotes/notes/1.2/circuit-gates-rust-5c6ab6c58f7fd2c9.yaml delete mode 100644 releasenotes/notes/1.2/default-level-2-generate-preset-passmanager-ec758ddc896ae2d6.yaml delete mode 100644 releasenotes/notes/1.2/deprecate-circuit-internal-helpers-ee65fbac455de47c.yaml delete mode 100644 releasenotes/notes/1.2/deprecate-legacy-circuit-instruction-8a332ab09de73766.yaml delete mode 100644 releasenotes/notes/1.2/deprecate-primitives-v1.yaml delete mode 100644 releasenotes/notes/1.2/deprecate-visualize_transition-8c1d257b7f37aa58.yaml delete mode 100644 releasenotes/notes/1.2/deprecate_assemble-67486b4d0a8d4f96.yaml delete mode 100644 releasenotes/notes/1.2/extract-standard-parametric-controlled-1a495f6f7ce89397.yaml delete mode 100644 releasenotes/notes/1.2/fix-2q-basis-decomposer-non-std-kak-gate-edc69ffb5d9ef302.yaml delete mode 100644 releasenotes/notes/1.2/fix-InstructionDurations-b47a9770b424d7a0.yaml delete mode 100644 releasenotes/notes/1.2/fix-bitarray-fromcounts-nobits-82958a596b3489ec.yaml delete mode 100644 releasenotes/notes/1.2/fix-bitarray-slice-bits-shots-c9cb7e5d907722f5.yaml delete mode 100644 releasenotes/notes/1.2/fix-consolidate-blocks-custom-gate-no-target-e2d1e0b0ee7ace11.yaml delete mode 100644 releasenotes/notes/1.2/fix-cu-rust-6464b6893ecca1b3.yaml delete mode 100644 releasenotes/notes/1.2/fix-dd-misalignment-msg-76fe16e5eb4ae670.yaml delete mode 100644 releasenotes/notes/1.2/fix-elide-permutations-1b9e1d10c3abb2a4.yaml delete mode 100644 releasenotes/notes/1.2/fix-hoare-opt-56d1ca6a07f07a2d.yaml delete mode 100644 releasenotes/notes/1.2/fix-kwarg-validation-BitArray-1bf542a1fb5c15c6.yaml delete mode 100644 releasenotes/notes/1.2/fix-mcx-performance-de86bcc9f969b81e.yaml delete mode 100644 releasenotes/notes/1.2/fix-negative-seed-pm-2813a62a020da115.yaml delete mode 100644 releasenotes/notes/1.2/fix-potential-non-determinism-dense-layout-da66de0217121146.yaml delete mode 100644 releasenotes/notes/1.2/fix-qpy-parsing-123-75357c3709e35963.yaml delete mode 100644 releasenotes/notes/1.2/fix-qpy-symengine-compat-858970a9a1d6bc14.yaml delete mode 100644 releasenotes/notes/1.2/fix-sabre-releasevalve-7f9af9bfc0482e04.yaml delete mode 100644 releasenotes/notes/1.2/fix-split-2q-unitaries-custom-gate-d10f7670a35548f4.yaml delete mode 100644 releasenotes/notes/1.2/fix-stateprep-normalize-a8057c339ba619bd.yaml delete mode 100644 releasenotes/notes/1.2/fix-statevector-sampler-c_if-9753f8f97a3d0ff5.yaml delete mode 100644 releasenotes/notes/1.2/fix-synth-qregs-7662681c0ff02511.yaml delete mode 100644 releasenotes/notes/1.2/fix_initialize_gates_to_uncompute-d0dba6a642d07f30.yaml delete mode 100644 releasenotes/notes/1.2/improve-quantum-causal-cone-f63eaaa9ab658811.yaml delete mode 100644 releasenotes/notes/1.2/linear-binary-matrix-utils-rust-c48b5577749c34ab.yaml delete mode 100644 releasenotes/notes/1.2/mcx_recursive_clean_ancilla-2b0f6956e0f4cbbd.yaml delete mode 100644 releasenotes/notes/1.2/mcxvchain_dirty_auxiliary-5ea4037557209f6e.yaml delete mode 100644 releasenotes/notes/1.2/no-elide-routing-none-7c1bebf1283d48c0.yaml delete mode 100644 releasenotes/notes/1.2/oxidize-acg-0294a87c0d5974fa.yaml delete mode 100644 releasenotes/notes/1.2/oxidize-permbasic-be27578187ac472f.yaml delete mode 100644 releasenotes/notes/1.2/oxidize-pmh-ec74e4002510eaad.yaml delete mode 100644 releasenotes/notes/1.2/oxidize-synth-clifford-bm-91d8b974ca0522b7.yaml delete mode 100644 releasenotes/notes/1.2/oxidize-synth-clifford-greedy-0739e9688bc4eedd.yaml delete mode 100644 releasenotes/notes/1.2/peephole-before-routing-c3d184b740bb7a8b.yaml delete mode 100644 releasenotes/notes/1.2/port_star_prerouting-13fae3ff78feb5e3.yaml delete mode 100644 releasenotes/notes/1.2/qasm2-builtin-gate-d80c2868cdf5f958.yaml delete mode 100644 releasenotes/notes/1.2/qasm3-basis-gates-keyword-c5998bff1e178715.yaml delete mode 100644 releasenotes/notes/1.2/qasm3-includes-ceb56f49b8c190ff.yaml delete mode 100644 releasenotes/notes/1.2/qasm3-symbol-table-efad35629639c77d.yaml delete mode 100644 releasenotes/notes/1.2/replace-initialization-algorithm-by-isometry-41f9ffa58f72ece5.yaml delete mode 100644 releasenotes/notes/1.2/restrict-split2q-d51d840cc7a7a482.yaml delete mode 100644 releasenotes/notes/1.2/sabre_level0-1524f01965257f3f.yaml delete mode 100644 releasenotes/notes/1.2/synth_permutation_depth_lnn_kms-c444f3a363f3a903.yaml delete mode 100644 releasenotes/notes/1.2/unary_pos_for_parameterexpression-6421421b6dc20fbb.yaml delete mode 100644 releasenotes/notes/1.2/update-primitive-v2-metadata-cf1226e2d6477688.yaml delete mode 100644 releasenotes/notes/1.2/update-qasm3-lib-40e15bc24234970d.yaml delete mode 100644 releasenotes/notes/1.2/update-rustworkx-min-version-4f07aacfebccae80.yaml delete mode 100644 releasenotes/notes/1.2/use-target-in-generate-preset-pm-5215e00d22d0205c.yaml delete mode 100644 releasenotes/notes/1.2/workaroud_12361-994d0ac2d2a6ed41.yaml diff --git a/docs/release_notes.rst b/docs/release_notes.rst index d16512924330..2657defd6672 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -10,4 +10,4 @@ Qiskit |version| release notes `:earliest-version:` should be set to the rc1 release for the current minor release series. For example, the stable/1.1 branch should set it to 1.1.0rc1. If on `main`, set to the prior minor version's rc1, like `1.0.0rc1`. .. release-notes:: - :earliest-version: 1.3.0rc1 + :earliest-version: 1.3.0b1 diff --git a/releasenotes/notes/1.2/add-generate-preset-pm-global-import-efb12f185f3f738b.yaml b/releasenotes/notes/1.2/add-generate-preset-pm-global-import-efb12f185f3f738b.yaml deleted file mode 100644 index 98c9f64cf2ae..000000000000 --- a/releasenotes/notes/1.2/add-generate-preset-pm-global-import-efb12f185f3f738b.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -features_transpiler: - - | - Added a new import path option for :func:`.generate_preset_pass_manager`, so that it can now be imported as:: - - from qiskit import generate_preset_pass_manager - - instead of having to type the full path:: - - from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager - - The function is also importable from the :mod:`qiskit.transpiler` module as:: - - from qiskit.transpiler import generate_preset_pass_manager \ No newline at end of file diff --git a/releasenotes/notes/1.2/add-qft-gate-fd4e08f6721a9da4.yaml b/releasenotes/notes/1.2/add-qft-gate-fd4e08f6721a9da4.yaml deleted file mode 100644 index 46b60c8b7025..000000000000 --- a/releasenotes/notes/1.2/add-qft-gate-fd4e08f6721a9da4.yaml +++ /dev/null @@ -1,22 +0,0 @@ ---- -features: - - | - Added a new class :class:`~qiskit.circuit.library.QFTGate` for - natively representing Quantum Fourier Transforms (QFTs). The older way - of representing QFTs via quantum circuits, see - :class:`~qiskit.circuit.library.QFT`, remains for backward compatibility. - The new way of representing a QFT via a gate avoids synthesizing its - definition circuit when the gate is declared, delaying the actual synthesis to - the transpiler. It also allows to easily choose between several different - algorithms for synthesizing QFTs, which are available as high-level-synthesis - plugins. - - | - Added a synthesis method :func:`.synth_qft_full` for constructing a QFT circuit - assuming a fully-connected architecture. - - | - Added two high-level-synthesis plugins for synthesizing a - :class:`~qiskit.circuit.library.QFTGate`. - The class :class:`.QFTSynthesisFull` is based on :func:`.synth_qft_full` and synthesizes - a QFT gate assuming all-to-all connectivity. - The class :class:`.QFTSynthesisLine` is based on :func:`.synth_qft_line` and synthesizes - a QFT gate assuming linear nearest neighbor connectivity. diff --git a/releasenotes/notes/1.2/add-sabre-all-threads-option-ad4ff7a4d045cb2b.yaml b/releasenotes/notes/1.2/add-sabre-all-threads-option-ad4ff7a4d045cb2b.yaml deleted file mode 100644 index 24b64a28703e..000000000000 --- a/releasenotes/notes/1.2/add-sabre-all-threads-option-ad4ff7a4d045cb2b.yaml +++ /dev/null @@ -1,26 +0,0 @@ ---- -features_transpiler: - - | - Added a new user config file option ``sabre_all_threads`` and a - corresponding environment variable ``QISKIT_SABRE_ALL_THREADS``. When this - flag is set the preset pass managers will run the :class:`.SabreLayout` - and :class:`.SabreSwap` transpiler passes using all the available - CPUs on the local system. Using this option is a tradeoff between - determinism of output between different computers and potentially better - output with fewer :class:`.SwapGate`\s. - - These transpiler passes run multiple random trials in parallel and pick - the output which results in the fewest :class:`.SwapGate`\s. As a rule of - thumb, if you run more trials, this provides the algorithm more opportunities - to find a better result. By default, the preset pass managers use a fixed - number of trials, in this release 5 trials for levels 0 and 1, and 20 - trials for levels 2 and 3, but these numbers may change in future releases - (and were different in historical releases). Using a fixed number of - trials results in deterministic results regardless of the local system, - because even with a fixed seed if you were to default to the number of - local CPUs available the results would different when running between - different computers. - - If the default number of trials for a given optimization level is higher - than the number of local CPUs it will use the optimization level default - which is higher. diff --git a/releasenotes/notes/1.2/adjust-neato-settings-3adcc0ae9e245ce9.yaml b/releasenotes/notes/1.2/adjust-neato-settings-3adcc0ae9e245ce9.yaml deleted file mode 100644 index 9dec5debb2ef..000000000000 --- a/releasenotes/notes/1.2/adjust-neato-settings-3adcc0ae9e245ce9.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -fixes: - - | - Fixes an issue with the visualizations of some backends/coupling maps that showed as folded on their own. The - `default ``neato`` setting `_ works well in most cases. However, - ``prism`` overlap returns a more regular layout for other scenarios. diff --git a/releasenotes/notes/1.2/annotated-params-116288d5628f7ee8.yaml b/releasenotes/notes/1.2/annotated-params-116288d5628f7ee8.yaml deleted file mode 100644 index 2f316a06ae8d..000000000000 --- a/releasenotes/notes/1.2/annotated-params-116288d5628f7ee8.yaml +++ /dev/null @@ -1,30 +0,0 @@ ---- -features_circuits: - - | - Added support for :meth:`.AnnotatedOperation.params` and - :meth:`.AnnotatedOperation.validate_parameter`, which enable - circuit-level parameter handling (such as binding parameters) for - annotated operations. -fixes: - - | - Fixed a series of issues when controlling parameterized standard gates. - The controlled version of some gates (e.g. :class:`.RXXGate` or - :class:`.RYGate` for more than 1 control) cannot be synthesized if - they contain unbound parameters. Previously, calling ``.control()`` but - now we create an :class:`.AnnotatedOperation` as placeholder. This - allows to insert the controlled gate into a circuit, bind the parameters - at a later stage, and then synthesize the operation. - Fixes `#10311 `_, - `#10697 `_, - and `#12135 `_. - - | - The :class:`.SGate` and :class:`.SdgGate` now correctly return a - :class:`.CSGate`, resp. :class:`.CSdgGate`, if they are controlled on - a single control qubit. -upgrade_circuits: - - | - The ``annotated`` argument of the :meth:`.Gate.control` method is now - ``None``, which allows Qiskit to choose whether to annotate a controlled operation. - If the concrete implementation (``annotated=False``) is available, it will be returned by - default. Otherwise, the annotated implementation will be returned (``annotated=True``). - This allows, for example, to defer the synthesis of controlled, parameterized gates. diff --git a/releasenotes/notes/1.2/avoid-op-creation-804c0bed6c408911.yaml b/releasenotes/notes/1.2/avoid-op-creation-804c0bed6c408911.yaml deleted file mode 100644 index c7f63a45f8cc..000000000000 --- a/releasenotes/notes/1.2/avoid-op-creation-804c0bed6c408911.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -features_circuits: - - | - :class:`.CircuitInstruction` and :class:`.DAGOpNode` each have new methods to query various - properties of their internal :class:`.Operation`, without necessarily needing to access it. - These methods are: - - * :meth:`.CircuitInstruction.is_standard_gate` and :meth:`.DAGOpNode.is_standard_gate`, - * :meth:`.CircuitInstruction.is_controlled_gate` and :meth:`.DAGOpNode.is_controlled_gate`, - * :meth:`.CircuitInstruction.is_directive` and :meth:`.DAGOpNode.is_directive`, - * :meth:`.CircuitInstruction.is_control_flow` and :meth:`.DAGOpNode.is_control_flow`, and - * :meth:`.CircuitInstruction.is_parameterized` and :meth:`.DAGOpNode.is_parameterized`. - - If applicable, using any of these methods is significantly faster than querying - :attr:`.CircuitInstruction.operation` or :attr:`.DAGOpNode.op` directly, especially if the - instruction or node represents a Qiskit standard gate. This is because the standard gates are - stored natively in Rust, and their Python representation is only created when requested. diff --git a/releasenotes/notes/1.2/backendv1-d0d0642ed38fed3c.yaml b/releasenotes/notes/1.2/backendv1-d0d0642ed38fed3c.yaml deleted file mode 100644 index 3b19a7ab9a2c..000000000000 --- a/releasenotes/notes/1.2/backendv1-d0d0642ed38fed3c.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -deprecations_providers: - - | - The :class:`.BackendV1` class is deprecated and it will be removed not earlier than the next major release. - There are several migration paths available depending on the main purpose of the backend object:: - - - To expose backend information with no access to execution (just a hardware description), consider constructing a :class:`.Target` directly. - - To provides access to execution capabilities, consider relying on the primitives interfaces instead. - - Alternatively, to continue providing simultaneous :class:`.Target` (hardware information) and ``run`` (execution) capabilities, consider moving to :class:`.BackendV2` (see ). - - - | - The models in :mod:`qiskit.providers.models` are part of the deprecated :class:`.BackendV1` workflow - and no longer necessary for :class:`.BackendV2`. If a user workflow requires these representations it - likely relies on deprecated functionality and should be updated to use :class:`.BackendV2`. diff --git a/releasenotes/notes/1.2/bitarray-postselect-659b8f7801ccaa60.yaml b/releasenotes/notes/1.2/bitarray-postselect-659b8f7801ccaa60.yaml deleted file mode 100644 index 33ce17bafa8d..000000000000 --- a/releasenotes/notes/1.2/bitarray-postselect-659b8f7801ccaa60.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -features_primitives: - - | - Added a new method :meth:`.BitArray.postselect` that returns all shots containing specified bit values. - Example usage:: - - from qiskit.primitives.containers import BitArray - - ba = BitArray.from_counts({'110': 2, '100': 4, '000': 3}) - print(ba.postselect([0,2], [0,1]).get_counts()) - # {'110': 2, '100': 4} diff --git a/releasenotes/notes/1.2/circuit-gates-rust-5c6ab6c58f7fd2c9.yaml b/releasenotes/notes/1.2/circuit-gates-rust-5c6ab6c58f7fd2c9.yaml deleted file mode 100644 index d826bc15e488..000000000000 --- a/releasenotes/notes/1.2/circuit-gates-rust-5c6ab6c58f7fd2c9.yaml +++ /dev/null @@ -1,79 +0,0 @@ ---- -features_circuits: - - | - A native rust representation of Qiskit's standard gate library has been added. When a standard gate - is added to a :class:`~.QuantumCircuit` or :class:`~.DAGCircuit` it is now represented in a more - efficient manner directly in Rust seamlessly. Accessing that gate object from a circuit or dag will - return a new Python object representing the standard gate. This leads to faster and more efficient - transpilation and manipulation of circuits for functionality written in Rust. -features_misc: - - | - Added a new build-time environment variable ``QISKIT_NO_CACHE_GATES`` which - when set to a value of ``1`` (i.e. ``QISKIT_NO_CACHE_GATES=1``) which - decreases the memory overhead of a :class:`.CircuitInstruction` and - :class:`.DAGOpNode` object at the cost of decreased runtime on multiple - accesses to :attr:`.CircuitInstruction.operation` and :attr:`.DAGOpNode.op`. - If this environment variable is set when building the Qiskit python package - from source the caching of the return of these attributes will be disabled. -upgrade_circuits: - - | - The :class:`.Operation` instances of :attr:`.DAGOpNode.op` - being returned will not necessarily share a common reference to the - underlying object anymore. This was never guaranteed to be the case and - mutating the :attr:`~.DAGOpNode.op` directly by reference - was unsound and always likely to corrupt the dag's internal state tracking - Due to the internal refactor of the :class:`.QuantumCircuit` and - :class:`.DAGCircuit` to store standard gates in rust the output object from - :attr:`.DAGOpNode.op` will now likely be a copy instead of a shared instance. If you - need to mutate an element should ensure that you either do:: - - op = dag_node.op - op.params[0] = 3.14159 - dag_node.op = op - - or:: - - op = dag_node.op - op.params[0] = 3.14159 - dag.substitute_node(dag_node, op) - - instead of doing something like:: - - dag_node.op.params[0] = 3.14159 - - which will not work for any standard gates in this release. It would have - likely worked by chance in a previous release but was never an API guarantee. - - | - The :class:`.Operation` instances of :attr:`.CircuitInstruction.operation` - being returned will not necessarily share a common reference to the - underlying object anymore. This was never guaranteed to be the case and - mutating the :attr:`~.CircuitInstruction.operation` directly by reference - was unsound and always likely to corrupt the circuit, especially when - parameters were in use. Due to the internal refactor of the QuantumCircuit - to store standard gates in rust the output object from - :attr:`.CircuitInstruction.operation` will now likely be a copy instead - of a shared instance. If you need to mutate an element in the circuit (which - is strongly **not** recommended as it's inefficient and error prone) you - should ensure that you do:: - - from qiskit.circuit import QuantumCircuit - - qc = QuantumCircuit(1) - qc.p(0) - - op = qc.data[0].operation - op.params[0] = 3.14 - - qc.data[0] = qc.data[0].replace(operation=op) - - instead of doing something like:: - - from qiskit.circuit import QuantumCircuit - - qc = QuantumCircuit(1) - qc.p(0) - - qc.data[0].operation.params[0] = 3.14 - - which will not work for any standard gates in this release. It would have - likely worked by chance in a previous release but was never an API guarantee. diff --git a/releasenotes/notes/1.2/default-level-2-generate-preset-passmanager-ec758ddc896ae2d6.yaml b/releasenotes/notes/1.2/default-level-2-generate-preset-passmanager-ec758ddc896ae2d6.yaml deleted file mode 100644 index ff5d57797860..000000000000 --- a/releasenotes/notes/1.2/default-level-2-generate-preset-passmanager-ec758ddc896ae2d6.yaml +++ /dev/null @@ -1,44 +0,0 @@ ---- -features_transpiler: - - | - The ``optimization_level`` argument for the :func:`.generate_preset_pass_manager` function is - now optional. If it's not specified it will default to using optimization level 2. As the argument - is now optional, the first positional argument has been expanded to enable passing a :class:`.Target` - or a :class:`.BackendV2` as the first argument for more convenient construction. For example:: - - from qiskit.transpiler.preset_passmanager import generate_preset_pass_manager - from qiskit.providers.fake_provider import GenericBackendV2 - - backend = GenericBackendV2(100) - - generate_preset_pass_manager(backend.Target) - - will construct a default pass manager for the 100 qubit :class`.GenericBackendV2` instance. -upgrade_transpiler: - - | - The default ``optimization_level`` used by the :func:`.transpile` function when one is not - specified has been changed to level 2. This makes it consistent with the default used - by :func:`.generate_preset_pass_manager` which is used internally by :func:`.transpile`. Optimization - level 2 provides a much better balance between the run time of the function and the optimizations it - performs, it's a better tradeoff to use by default. - - The API of :func:`.transpile` remains unchanged because, fundamentally, level 2 and level 1 - have the same semantics. If you were previously relying on the implicit default of level 1, - you can simply set the argument ``optimization_level=1`` when you call :func:`.transpile`. - Similarly you can change the default back in your local environment by using a user config - file and setting the ``transpile_optimization_level`` field to 1. - - The only potential issue is that your transpilation workflow may be relying on an implicit trivial layout (where qubit 0 - in the circuit passed to :func:`.transpile` is mapped to qubit 0 on the target backend/coupling, - 1->1, 2->2, etc.) without specifying ``optimization_level=1``, ``layout_method="trivial"``, or - explicitly setting ``initial_layout`` when calling :func:`.transpile`. This behavior was a side - effect of the preset pass manager construction in optimization level 1 and is not mirrored in - level 2. If you need this behavior you can use any of the three options listed previously to make - this behavior explicit. - - Similarly, if you were targeting a discrete basis gate set you may encounter an issue using the - new default with optimization level 2 (or running explicitly optimization level 3), as the additional optimization passes that run in - level 2 and 3 don't work in all cases with a discrete basis. You can explicitly set - ``optimization_level=1`` manually in this case. In general the transpiler does not currently - fully support discrete basis sets and if you're relying on this you should likely construct a - pass manager manually to build a compilation pipeline that will work with your target. diff --git a/releasenotes/notes/1.2/deprecate-circuit-internal-helpers-ee65fbac455de47c.yaml b/releasenotes/notes/1.2/deprecate-circuit-internal-helpers-ee65fbac455de47c.yaml deleted file mode 100644 index 809aa11adc9c..000000000000 --- a/releasenotes/notes/1.2/deprecate-circuit-internal-helpers-ee65fbac455de47c.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -deprecations_circuits: - - | - The following circuit methods were not intended for public use, but were accidentally left documented in the - public API during the 1.0 release. They are now deprecated from Qiskit 1.2 and will be removed in Qiskit 2.0: - - * ``QuantumCircuit.cast`` - * ``QuantumCircuit.cls_instances`` - * ``QuantumCircuit.cls_prefix`` - * ``QuantumCircuit.cbit_argument_conversion`` - * ``QuantumCircuit.qbit_argument_conversion`` \ No newline at end of file diff --git a/releasenotes/notes/1.2/deprecate-legacy-circuit-instruction-8a332ab09de73766.yaml b/releasenotes/notes/1.2/deprecate-legacy-circuit-instruction-8a332ab09de73766.yaml deleted file mode 100644 index d656ee5cb823..000000000000 --- a/releasenotes/notes/1.2/deprecate-legacy-circuit-instruction-8a332ab09de73766.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -deprecations_circuits: - - | - Treating :class:`.CircuitInstruction` as a tuple-like iterable is deprecated, and this legacy - path way will be removed in Qiskit 2.0. You should use the attribute-access fields - :attr:`~.CircuitInstruction.operation`, :attr:`~.CircuitInstruction.qubits`, and - :attr:`~.CircuitInstruction.clbits` instead. For example:: - - from qiskit.circuit import QuantumCircuit - - qc = QuantumCircuit(2, 2) - qc.h(0) - qc.cx(0, 1) - qc.measure([0, 1], [0, 1]) - - # Deprecated. - for op, qubits, clbits in qc.data: - pass - # New style. - for instruction in qc.data: - op = instruction.operation - qubits = instruction.qubits - clbits = instruction.clbits diff --git a/releasenotes/notes/1.2/deprecate-primitives-v1.yaml b/releasenotes/notes/1.2/deprecate-primitives-v1.yaml deleted file mode 100644 index 3d0335d358cb..000000000000 --- a/releasenotes/notes/1.2/deprecate-primitives-v1.yaml +++ /dev/null @@ -1,32 +0,0 @@ ---- -deprecations_primitives: - - | - Primitive V1 implementations and V1-exclusive non-versioned type aliases are now - deprecated in favor of their V2 counterparts. The deprecation is extended to the - following classes implementing V1 interfaces: - - * :class:`.Estimator`, in favor of the V2 equivalent, :class:`.StatevectorEstimator` - * :class:`.Sampler`, in favor of the V2 equivalent, :class:`.StatevectorSampler` - * :class:`.BackendEstimator`, in favor of the V2 equivalent, :class:`.BackendEstimatorV2` - * :class:`.BackendSampler`, in favor of the V2 equivalent, :class:`.BackendSamplerV2` - - As well as the following non-versioned type aliases: - - * :class:`.BaseEstimator`, alias for :class:`.BaseEstimatorV1` - * :class:`.BaseSampler`, alias for :class:`.BaseSamplerV1` - - This deprecation does NOT affect the explicitly-versioned :class:`BaseEstimatorV1` - and :class:`BaseSamplerV1` abstract - interface definitions or related result and job classes. - - In addition, the following utility functions are deprecated: - - * :func:`.init_circuit`, to initialize a circuit from a :class:`.Statevector`, - use :meth:`.QuantumCircuit.initialize` instead, - * :func:`.init_observable`, use the constructor of :class:`.SparsePauliOp` instead, - * :func:`.final_measurement_mapping`, use :meth:`.QuantumCircuit.layout` and - :meth:`.SparsePauliOp.apply_layout` to adjust an operator for a layout. - Otherwise, use ``mthree.utils.final_measurement_mapping``. - See `Mthree Utility functions `__ - for details. - diff --git a/releasenotes/notes/1.2/deprecate-visualize_transition-8c1d257b7f37aa58.yaml b/releasenotes/notes/1.2/deprecate-visualize_transition-8c1d257b7f37aa58.yaml deleted file mode 100644 index 6900dcbd7676..000000000000 --- a/releasenotes/notes/1.2/deprecate-visualize_transition-8c1d257b7f37aa58.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -deprecations_visualization: - - | - The :func:`.transition_visualization` function has been deprecated and will - be removed in the 2.0.0 release. This function had a number of limitations - which limited it's utility to only very specific use cases and didn't fit in with - the rest of the Qiskit visualization module. diff --git a/releasenotes/notes/1.2/deprecate_assemble-67486b4d0a8d4f96.yaml b/releasenotes/notes/1.2/deprecate_assemble-67486b4d0a8d4f96.yaml deleted file mode 100644 index b7b50d2eb2b2..000000000000 --- a/releasenotes/notes/1.2/deprecate_assemble-67486b4d0a8d4f96.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -deprecations_providers: - - | - The `Qobj` structure and related classes are now deprecated, they were introduced as part of the `BackendV1` workflow and are no longer necessary for interacting with :class:`.BackendV2` backends. Remote backend interaction should be done via `QPY` or `OpenQASM` instead. -deprecations_transpiler: - - | - The `assemble` function is now deprecated and will be removed in the 2.0 release. The function was primarily used to create a `Qobj`, which is no longer necessary in :class:`.BackendV2`-based workflows. It was also used for binding parameters, a functionality fully covered by :meth:`~.QuantumCircuit.assign_parameters`. diff --git a/releasenotes/notes/1.2/extract-standard-parametric-controlled-1a495f6f7ce89397.yaml b/releasenotes/notes/1.2/extract-standard-parametric-controlled-1a495f6f7ce89397.yaml deleted file mode 100644 index ea4e69dd245f..000000000000 --- a/releasenotes/notes/1.2/extract-standard-parametric-controlled-1a495f6f7ce89397.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -fixes: - - | - Parametric controlled standard-library gates (such as :class:`.CRXGate`) will now get correctly - extracted to a Rust-space standard gate when using :meth:`.QuantumCircuit.append` and the gate - object. Previously there was a discrepancy where using the :meth:`.QuantumCircuit.crx` method - would cause a correct extraction in Rust space, but the :meth:`~.QuantumCirucit.append` form - would not. The bug should generally not have caused any unsoundness from Python. diff --git a/releasenotes/notes/1.2/fix-2q-basis-decomposer-non-std-kak-gate-edc69ffb5d9ef302.yaml b/releasenotes/notes/1.2/fix-2q-basis-decomposer-non-std-kak-gate-edc69ffb5d9ef302.yaml deleted file mode 100644 index 903b9ceac2a2..000000000000 --- a/releasenotes/notes/1.2/fix-2q-basis-decomposer-non-std-kak-gate-edc69ffb5d9ef302.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -fixes: - - | - Fixed a bug in :class:`.TwoQubitBasisDecomposer` where the Rust-based code - would panic if the given KAK gate wasn't a Rust-space :class:`StandardGate`. \ No newline at end of file diff --git a/releasenotes/notes/1.2/fix-InstructionDurations-b47a9770b424d7a0.yaml b/releasenotes/notes/1.2/fix-InstructionDurations-b47a9770b424d7a0.yaml deleted file mode 100644 index ce8b789462de..000000000000 --- a/releasenotes/notes/1.2/fix-InstructionDurations-b47a9770b424d7a0.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -fixes: - - | - Fixed a bug where :meth:`.InstructionDurations.from_backend` did not work for :class:`.BackendV2` backends. - Fixed `#12760 `. \ No newline at end of file diff --git a/releasenotes/notes/1.2/fix-bitarray-fromcounts-nobits-82958a596b3489ec.yaml b/releasenotes/notes/1.2/fix-bitarray-fromcounts-nobits-82958a596b3489ec.yaml deleted file mode 100644 index 6be5ea21bdf5..000000000000 --- a/releasenotes/notes/1.2/fix-bitarray-fromcounts-nobits-82958a596b3489ec.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -fixes: - - | - Fixed a bug in :meth:`.BitArray.from_counts` and :meth:`.BitArray.from_samples`. - Previously these would raise an error if given data containing only zeros, and no - value for the optional argument ``num_bits``. Now they produce a :class:`.BitArray` - with :attr:`.BitArray.num_bits` set to 1. diff --git a/releasenotes/notes/1.2/fix-bitarray-slice-bits-shots-c9cb7e5d907722f5.yaml b/releasenotes/notes/1.2/fix-bitarray-slice-bits-shots-c9cb7e5d907722f5.yaml deleted file mode 100644 index 56fd81012428..000000000000 --- a/releasenotes/notes/1.2/fix-bitarray-slice-bits-shots-c9cb7e5d907722f5.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -upgrade_primitives: - - | - :meth:`.BitArray.slice_bits` and :meth:`.BitArray.slice_shots` - will now raise ``IndexError`` when indices are out of bounds. - They used to raise ``ValueError`` in the case. - - | - :meth:`.BitArray.__getitem__` will now raise ``IndexError`` - when indices are out of bounds or the number of dimensions - of indices does not match that of BitArray. - They used to raise ``ValueError`` in the case. diff --git a/releasenotes/notes/1.2/fix-consolidate-blocks-custom-gate-no-target-e2d1e0b0ee7ace11.yaml b/releasenotes/notes/1.2/fix-consolidate-blocks-custom-gate-no-target-e2d1e0b0ee7ace11.yaml deleted file mode 100644 index e4cf03778e3a..000000000000 --- a/releasenotes/notes/1.2/fix-consolidate-blocks-custom-gate-no-target-e2d1e0b0ee7ace11.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -fixes: - - | - Fixed a bug in the :class:`.ConsolidateBlocks` transpiler pass, when the - input circuit contains a custom opaque gate and neither the - ``basis_gates`` or ``target`` options are set the pass would raise a - ``QiskitError`` and fail. This has been corrected so that the in these - situations the transpiler pass will not consolidate the block identified - containing a custom gate instead of failing. diff --git a/releasenotes/notes/1.2/fix-cu-rust-6464b6893ecca1b3.yaml b/releasenotes/notes/1.2/fix-cu-rust-6464b6893ecca1b3.yaml deleted file mode 100644 index 406d6052a1df..000000000000 --- a/releasenotes/notes/1.2/fix-cu-rust-6464b6893ecca1b3.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -fixes: - - | - Fixed the definition of the :class:`.CUGate` matrix in Rust-space. - While this was not noticable while handling the :class:`.CUGate` purely on - Python side, this had knock-on effects when transpiler passes were using the - Rust representation, such as could happen in :class:`.Consolidate2qBlocks`. - Fixed `#13118 `__. - diff --git a/releasenotes/notes/1.2/fix-dd-misalignment-msg-76fe16e5eb4ae670.yaml b/releasenotes/notes/1.2/fix-dd-misalignment-msg-76fe16e5eb4ae670.yaml deleted file mode 100644 index 4634fe48ae9b..000000000000 --- a/releasenotes/notes/1.2/fix-dd-misalignment-msg-76fe16e5eb4ae670.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -fixes: - - | - Fixed a bug in :class:`.PadDynamicalDecoupling`, which previously - did not correctly display the error message that a delay is not - pulse-aligned, if the previous or following node was an input/output - node. Now, the error message is correctly displayed. diff --git a/releasenotes/notes/1.2/fix-elide-permutations-1b9e1d10c3abb2a4.yaml b/releasenotes/notes/1.2/fix-elide-permutations-1b9e1d10c3abb2a4.yaml deleted file mode 100644 index 156960eb7c19..000000000000 --- a/releasenotes/notes/1.2/fix-elide-permutations-1b9e1d10c3abb2a4.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -fixes: - - | - Fixed a bug in the transpiler pass :class:`~.ElidePermutations` where the - qubit mapping was not updated correctly in the presence of :class:`.PermutationGate`\s. diff --git a/releasenotes/notes/1.2/fix-hoare-opt-56d1ca6a07f07a2d.yaml b/releasenotes/notes/1.2/fix-hoare-opt-56d1ca6a07f07a2d.yaml deleted file mode 100644 index 7548dcc99564..000000000000 --- a/releasenotes/notes/1.2/fix-hoare-opt-56d1ca6a07f07a2d.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -fixes: - - | - Fixed a bug in :class:`.HoareOptimizer` where a controlled gate was simplified - by removing its controls but the new gate was not handled correctly. diff --git a/releasenotes/notes/1.2/fix-kwarg-validation-BitArray-1bf542a1fb5c15c6.yaml b/releasenotes/notes/1.2/fix-kwarg-validation-BitArray-1bf542a1fb5c15c6.yaml deleted file mode 100644 index 41a0fc53261e..000000000000 --- a/releasenotes/notes/1.2/fix-kwarg-validation-BitArray-1bf542a1fb5c15c6.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -fixes: - - | - The keyword argument ``order`` of the function :meth:`.BitArray.from_bool_array` should be 'little' or 'big'. Added checks to raise error if an invalid value is entered. diff --git a/releasenotes/notes/1.2/fix-mcx-performance-de86bcc9f969b81e.yaml b/releasenotes/notes/1.2/fix-mcx-performance-de86bcc9f969b81e.yaml deleted file mode 100644 index 8cee3356ac4c..000000000000 --- a/releasenotes/notes/1.2/fix-mcx-performance-de86bcc9f969b81e.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -fixes: - - | - Improve the decomposition of the gate generated by :meth:`.QuantumCircuit.mcx` - without using ancilla qubits, so that the number of :class:`.CXGate` will grow - quadratically in the number of qubits and not exponentially. diff --git a/releasenotes/notes/1.2/fix-negative-seed-pm-2813a62a020da115.yaml b/releasenotes/notes/1.2/fix-negative-seed-pm-2813a62a020da115.yaml deleted file mode 100644 index 352f068537e8..000000000000 --- a/releasenotes/notes/1.2/fix-negative-seed-pm-2813a62a020da115.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -fixes: - - | - Fixed the behavior of :meth:`.generate_preset_pass_manager` to raise a `ValueError` exception if not provided with a non-negative integer `seed_transpiler` argument. diff --git a/releasenotes/notes/1.2/fix-potential-non-determinism-dense-layout-da66de0217121146.yaml b/releasenotes/notes/1.2/fix-potential-non-determinism-dense-layout-da66de0217121146.yaml deleted file mode 100644 index ddf68fc9d49b..000000000000 --- a/releasenotes/notes/1.2/fix-potential-non-determinism-dense-layout-da66de0217121146.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -fixes: - - | - Fixed a potential source of non-determinism in :class:`~.DenseLayout` (and - by extension :class:`~.SabreLayout`) when targeting a - :class:`.CouplingMap` or :class:`.Target` that has more than one subgraph - with the same degree of connectivity. In these case the exact output - layout from the pass could previously fluctuate based on the number of - local CPUs and thread execution speed. diff --git a/releasenotes/notes/1.2/fix-qpy-parsing-123-75357c3709e35963.yaml b/releasenotes/notes/1.2/fix-qpy-parsing-123-75357c3709e35963.yaml deleted file mode 100644 index d911a59879ff..000000000000 --- a/releasenotes/notes/1.2/fix-qpy-parsing-123-75357c3709e35963.yaml +++ /dev/null @@ -1,10 +0,0 @@ ---- -fixes: - - | - Fixed an issue introduced in the now - `yanked `__ 1.2.3 bugfix release that - would cause an exception with the error message "Qiskit doesn't support - loading a symengine payload generated with symengine >= 1.0" to be raised - whenever loading a QPY file that was generated with a different symengine - version from the version installed by the loading. This issue could only - occur in 1.2.3. diff --git a/releasenotes/notes/1.2/fix-qpy-symengine-compat-858970a9a1d6bc14.yaml b/releasenotes/notes/1.2/fix-qpy-symengine-compat-858970a9a1d6bc14.yaml deleted file mode 100644 index 782ce85e0b18..000000000000 --- a/releasenotes/notes/1.2/fix-qpy-symengine-compat-858970a9a1d6bc14.yaml +++ /dev/null @@ -1,62 +0,0 @@ ---- -fixes: - - | - Fixed an issue with :func:`.qpy.load` when loading a QPY file containing - a :class:`.ParameterExpression`, if the versions of ``symengine`` installed - in the generating and loading environments were not the same. For example, - if a QPY file containing :class:`.ParameterExpression`\ s was generated - using Qiskit 1.2.2 with ``symengine==0.11.0`` installed, Qiskit 1.2.2 with - ``syengine==0.13.0`` installed would be unable to load it. - - Previously, an error would have been raised by ``symengine`` around this - version mismatch. This has been worked around for ``symengine`` 0.11 and - 0.13 (there was no 0.12), but if you're trying to use different versions of - ``symengine`` and there is a mismatch, this version of Qiskit still might not - work. -issues: - - | - Versions of Qiskit before 1.2.4 will not be able to load QPY files dumped - using :func:`.qpy.dump`, even with ``version`` set appropriately, if: - - * there are unbound :class:`.ParameterExpression`\ s in the QPY file, - * the ``use_symengine=True`` flag was set (which is the default in Qiskit >= - 1.0.0) in :func:`.qpy.dump`, - * the version of ``symengine`` installed in the generating and loading - environments are not within the same minor version. - - This applies regardless of the version of Qiskit used in the generation (at - least up to Qiskit 1.2.4 inclusive). - - If you want to maximize compatibility with older versions of Qiskit, you - should set ``use_symengine=False``. Newer versions of Qiskit should not - require this. - - | - QPY files from the Qiskit 0.45 series can, under a very specific and unlikely - set of circumstances, fail to load with any newer version of Qiskit, - including Qiskit 1.2.4. The criteria are: - - * the :class:`.QuantumCircuit` or :class:`.ScheduleBlock` to be dumped - contained unbound :class:`.ParameterExpression` objects, - * the installed version of ``symengine`` was in the 0.9 series (which was the - most recent release during the support window of Qiskit 0.45), - * the ``use_symengine=True`` flag was set (which was *not* the default). - - Later versions of Qiskit used during generation are not affected, because - they required newer versions than ``symengine`` 0.9. - - In this case, you can recover the QPY file by reloading it with an environment - with Qiskit 0.45.3 and ``symengine`` 0.9.2 installed. Then, use - :func:`.qpy.dump` with ``use_symengine=False`` to re-export the file. This - will then be readable by any newer version of Qiskit. -upgrade: - - | - The supported versions of `symengine `__ - have been pre-emptively capped at < 0.14.0 (which is expected to be the next - minor version, as of this release of Qiskit). This has been done to protect - against a potential incompatibility in :mod:`.qpy` when serializing - :class:`.ParameterExpression` objects. The serialization used in - :ref:`qpy_format` versions 10, 11, and 12 for :class:`.ParameterExpression` - objects is tied to the symengine version used to generate it, and there is the potential - for a future symengine release to not be compatible. This upper version cap is to prevent - a future release of symengine causing incompatibilities when trying to load QPY files - using :class:`.qpy.load`. diff --git a/releasenotes/notes/1.2/fix-sabre-releasevalve-7f9af9bfc0482e04.yaml b/releasenotes/notes/1.2/fix-sabre-releasevalve-7f9af9bfc0482e04.yaml deleted file mode 100644 index 17432259be29..000000000000 --- a/releasenotes/notes/1.2/fix-sabre-releasevalve-7f9af9bfc0482e04.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -fixes: - - | - Fixed an edge case in :class:`.SabreLayout`, where in rare cases on large - devices and challenging circuits, the routing would fail. This was due to the - release valve making more than one two-qubit gate routable, where only one was expected. - Fixed `#13081 `__. \ No newline at end of file diff --git a/releasenotes/notes/1.2/fix-split-2q-unitaries-custom-gate-d10f7670a35548f4.yaml b/releasenotes/notes/1.2/fix-split-2q-unitaries-custom-gate-d10f7670a35548f4.yaml deleted file mode 100644 index 331156cf6012..000000000000 --- a/releasenotes/notes/1.2/fix-split-2q-unitaries-custom-gate-d10f7670a35548f4.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -fixes: - - | - Fixed a bug in :class:`.Split2QUnitaries` where it would fail to run on circuits - with custom gates that didn't implement :meth:`__array__`. - See `#12984 `__. \ No newline at end of file diff --git a/releasenotes/notes/1.2/fix-stateprep-normalize-a8057c339ba619bd.yaml b/releasenotes/notes/1.2/fix-stateprep-normalize-a8057c339ba619bd.yaml deleted file mode 100644 index 0175f8c1c026..000000000000 --- a/releasenotes/notes/1.2/fix-stateprep-normalize-a8057c339ba619bd.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -fixes: - - | - Fixed a bug in :class:`.StatePreparation` where the ``normalize`` - argument was ignored for input arrays. - Fixed `#12984 `__. diff --git a/releasenotes/notes/1.2/fix-statevector-sampler-c_if-9753f8f97a3d0ff5.yaml b/releasenotes/notes/1.2/fix-statevector-sampler-c_if-9753f8f97a3d0ff5.yaml deleted file mode 100644 index d743b52ee900..000000000000 --- a/releasenotes/notes/1.2/fix-statevector-sampler-c_if-9753f8f97a3d0ff5.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -fixes: - - | - Fixed a bug of :class:`.StatevectorSampler` that ignored gates with ``c_if``. - It will raise an error because :class:`.Statevector` cannot handle ``c_if``. diff --git a/releasenotes/notes/1.2/fix-synth-qregs-7662681c0ff02511.yaml b/releasenotes/notes/1.2/fix-synth-qregs-7662681c0ff02511.yaml deleted file mode 100644 index d838032ffaf9..000000000000 --- a/releasenotes/notes/1.2/fix-synth-qregs-7662681c0ff02511.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -fixes: - - | - Fixed a bug where various synthesis methods created circuits without quantum or - classical registers. This also affected functions that internally used the synthesis - methods, such as :meth:`.Clifford.to_circuit`. - Fixed `#13041 `__. diff --git a/releasenotes/notes/1.2/fix_initialize_gates_to_uncompute-d0dba6a642d07f30.yaml b/releasenotes/notes/1.2/fix_initialize_gates_to_uncompute-d0dba6a642d07f30.yaml deleted file mode 100644 index 3c24569455e2..000000000000 --- a/releasenotes/notes/1.2/fix_initialize_gates_to_uncompute-d0dba6a642d07f30.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -fixes: - - | - Fix a bug that caused the method :meth:`Initialize.gates_to_uncompute()` fail. diff --git a/releasenotes/notes/1.2/improve-quantum-causal-cone-f63eaaa9ab658811.yaml b/releasenotes/notes/1.2/improve-quantum-causal-cone-f63eaaa9ab658811.yaml deleted file mode 100644 index 5a072f481abc..000000000000 --- a/releasenotes/notes/1.2/improve-quantum-causal-cone-f63eaaa9ab658811.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -features_circuits: - - | - Improved performance of the method :meth:`.DAGCircuit.quantum_causal_cone` by not examining - the same non-directive node multiple times when reached from different paths. diff --git a/releasenotes/notes/1.2/linear-binary-matrix-utils-rust-c48b5577749c34ab.yaml b/releasenotes/notes/1.2/linear-binary-matrix-utils-rust-c48b5577749c34ab.yaml deleted file mode 100644 index a8e9ec743808..000000000000 --- a/releasenotes/notes/1.2/linear-binary-matrix-utils-rust-c48b5577749c34ab.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -features_synthesis: - - | - Port internal binary matrix utils from Python to Rust, including - binary matrix multiplication, gaussian elimination, rank calculation, - binary matrix inversion, and random invertible binary matrix generation. - These functions are not part of the Qiskit API, and porting them to rust - improves the performance of certain synthesis methods. diff --git a/releasenotes/notes/1.2/mcx_recursive_clean_ancilla-2b0f6956e0f4cbbd.yaml b/releasenotes/notes/1.2/mcx_recursive_clean_ancilla-2b0f6956e0f4cbbd.yaml deleted file mode 100644 index 12ccd09f6e12..000000000000 --- a/releasenotes/notes/1.2/mcx_recursive_clean_ancilla-2b0f6956e0f4cbbd.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -features_synthesis: - - | - :class:`.MCXRecursive` with :math:`k` control qubits and a single clean auxiliary qubit - now requires at most :math:`16k-8` CX gates. diff --git a/releasenotes/notes/1.2/mcxvchain_dirty_auxiliary-5ea4037557209f6e.yaml b/releasenotes/notes/1.2/mcxvchain_dirty_auxiliary-5ea4037557209f6e.yaml deleted file mode 100644 index 7a4850370f7f..000000000000 --- a/releasenotes/notes/1.2/mcxvchain_dirty_auxiliary-5ea4037557209f6e.yaml +++ /dev/null @@ -1,10 +0,0 @@ ---- -features: - - | - :class:`.MCXVChain` has two new Boolean parameters `relative_phase` and `action_only`. - If `action_only` the circuit does not clean the dirty qubits. If `relative_phase` - the gate is implemented up to a global phase. Both parameters are used to optimize the - decomposition of MCXVChain. -fixes: - - | - :class:`.MCXVChain` with k controls and k-2 dirty auxiliary qubits now requires 8k-6 cx gates. diff --git a/releasenotes/notes/1.2/no-elide-routing-none-7c1bebf1283d48c0.yaml b/releasenotes/notes/1.2/no-elide-routing-none-7c1bebf1283d48c0.yaml deleted file mode 100644 index cc749f62775c..000000000000 --- a/releasenotes/notes/1.2/no-elide-routing-none-7c1bebf1283d48c0.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -fixes: - - | - Fixed an issue when running :func:`.transpile` or - :meth:`~.StagedPassManager.run` on a pass manager generated by - :func:`.generate_preset_pass_manager` using ``optimization_level`` 2 or 3 - when the ``routing_method`` argument is set to ``"none"`` to explicitly - disable routing. Previously under these conditions the transpiler would run - the :class:`.ElidePermutation` pass as part of the init stage as under normal - conditions this is a useful optimization to remove :class:`.SwapGate` - and :class:`.PermutationGate` instances from the circuit. But when - ``routing_method="none"`` this optimization wasn't expected as it permutes - the circuit in a similar manner to routing which shouldn't be performed - when ``routing_method="none"``. This has been fixed by no longer - running :class:`.ElidePermutation` if ``routing_method="none"`` is set. - Fixed `#13144 `__ diff --git a/releasenotes/notes/1.2/oxidize-acg-0294a87c0d5974fa.yaml b/releasenotes/notes/1.2/oxidize-acg-0294a87c0d5974fa.yaml deleted file mode 100644 index 532d3e8fa55e..000000000000 --- a/releasenotes/notes/1.2/oxidize-acg-0294a87c0d5974fa.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -features_synthesis: - - | - Port :func:`.synth_permutation_acg`, used to synthesize qubit permutations, to Rust. - This produces an approximate 3x performance improvement on 1000 qubit circuits. diff --git a/releasenotes/notes/1.2/oxidize-permbasic-be27578187ac472f.yaml b/releasenotes/notes/1.2/oxidize-permbasic-be27578187ac472f.yaml deleted file mode 100644 index bd8c969be934..000000000000 --- a/releasenotes/notes/1.2/oxidize-permbasic-be27578187ac472f.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -features_synthesis: - - | - Port :func:`.synth_permutation_basic`, used to synthesize qubit permutations, to Rust. diff --git a/releasenotes/notes/1.2/oxidize-pmh-ec74e4002510eaad.yaml b/releasenotes/notes/1.2/oxidize-pmh-ec74e4002510eaad.yaml deleted file mode 100644 index b25adbec21f9..000000000000 --- a/releasenotes/notes/1.2/oxidize-pmh-ec74e4002510eaad.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -features_synthesis: - - | - Port :func:`.synth_cnot_full_pmh`, used to synthesize a linear function - into a CX network, to Rust. This produces approximately 44x speedup, - as measured on 100 qubit circuits. - - | - The function :func:`.synth_cnot_full_pmh` now allows choosing the - (heuristically) optimal ``section_size`` by setting it to ``None``. Then, a value is - chosen which attempts to minimize the upper bound on the number of CX gates, that is - :math:`\alpha \log_2(n)` where :math:`n` is the number of qubits and :math:`\alpha \approx 0.56`. -fixes: - - | - Fixed a bug in :func:`.synth_cnot_full_pmh` where providing a ``section_size`` that did - not divide the number of qubits without remainder could lead to wrong results. - Now any ``section_size`` (at most equal to the number of qubits) synthesizes the correct - circuit. For a (heuristically) optimal value, set ``section_size=None``. diff --git a/releasenotes/notes/1.2/oxidize-synth-clifford-bm-91d8b974ca0522b7.yaml b/releasenotes/notes/1.2/oxidize-synth-clifford-bm-91d8b974ca0522b7.yaml deleted file mode 100644 index d4c08bf7a4b3..000000000000 --- a/releasenotes/notes/1.2/oxidize-synth-clifford-bm-91d8b974ca0522b7.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -features_synthesis: - - | - The function :func:`.synth_clifford_bm` was ported to Rust. Recall that this function - optimally synthesizes :class:`.Clifford` operators on 1, 2 or 3 qubits with respect to the - number of CX-gates. This leads to a significant increase in performance. For Cliffords - over 3 qubits, the speedup in on the order of 80 times. diff --git a/releasenotes/notes/1.2/oxidize-synth-clifford-greedy-0739e9688bc4eedd.yaml b/releasenotes/notes/1.2/oxidize-synth-clifford-greedy-0739e9688bc4eedd.yaml deleted file mode 100644 index ea492e29a7fc..000000000000 --- a/releasenotes/notes/1.2/oxidize-synth-clifford-greedy-0739e9688bc4eedd.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -features_synthesis: - - | - The function :func:`.synth_clifford_greedy` that synthesizes :class:`.Clifford` operators - was ported to Rust, leading to a significant increase in performance for all numbers of - qubits. For Cliffords over 50 qubits, the speedup is on the order of 1000 times. diff --git a/releasenotes/notes/1.2/peephole-before-routing-c3d184b740bb7a8b.yaml b/releasenotes/notes/1.2/peephole-before-routing-c3d184b740bb7a8b.yaml deleted file mode 100644 index b89a622987d0..000000000000 --- a/releasenotes/notes/1.2/peephole-before-routing-c3d184b740bb7a8b.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -features_transpiler: - - | - Added a new pass :class:`.Split2QUnitaries` that iterates over all two-qubit gates or unitaries in a - circuit and replaces them with two single-qubit unitaries, if possible without introducing errors, i.e. - the two-qubit gate/unitary is actually a (kronecker) product of single-qubit unitaries. - - | - The passes :class:`.Collect2qBlocks`, :class:`.ConsolidateBlocks` and :class:`.Split2QUnitaries` have been - added to the ``init`` stage of the preset pass managers with optimization level 2 and optimization level 3. - The modification of the `init` stage should allow for a more efficient routing for quantum circuits that either: - - * contain two-qubit unitaries/gates that are actually a product of single-qubit gates - * contain multiple two-qubit gates in a continuous block of two-qubit gates. - - In the former case, the routing of the two-qubit gate can simply be skipped as no real interaction - between a pair of qubits occurs. In the latter case, the lookahead space of routing algorithms is not - 'polluted' by superfluous two-qubit gates, i.e. for routing it is sufficient to only consider one single - two-qubit gate per continuous block of two-qubit gates. These passes are not run if the pass - managers target a :class:`.Target` that has a discrete basis gate set, i.e. all basis gates have are not - parameterized. diff --git a/releasenotes/notes/1.2/port_star_prerouting-13fae3ff78feb5e3.yaml b/releasenotes/notes/1.2/port_star_prerouting-13fae3ff78feb5e3.yaml deleted file mode 100644 index f8eca807bec6..000000000000 --- a/releasenotes/notes/1.2/port_star_prerouting-13fae3ff78feb5e3.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -features_transpiler: - - | - Port part of the logic from the :class:`StarPrerouting`, used to - find a star graph connectivity subcircuit and replaces it with a - linear routing equivalent. - - | - The function :func:`star_preroute` now performs the heavily lifting - to transform the dag by in the rust space by taking advantage - of the functions :func:`_build_sabre_dag` and - :func:`_apply_sabre_result`. diff --git a/releasenotes/notes/1.2/qasm2-builtin-gate-d80c2868cdf5f958.yaml b/releasenotes/notes/1.2/qasm2-builtin-gate-d80c2868cdf5f958.yaml deleted file mode 100644 index bfcf867f2a3b..000000000000 --- a/releasenotes/notes/1.2/qasm2-builtin-gate-d80c2868cdf5f958.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -fixes: - - | - The OpenQASM 2 importer previously would output incorrect :class:`.Gate` instances for gate - calls referring to a ``gate`` definition that followed a prior ``gate`` definition that was - being treated as a built-in operation by a :class:`~.qasm2.CustomInstruction`. See - `#13339 `__ for more detail. diff --git a/releasenotes/notes/1.2/qasm3-basis-gates-keyword-c5998bff1e178715.yaml b/releasenotes/notes/1.2/qasm3-basis-gates-keyword-c5998bff1e178715.yaml deleted file mode 100644 index 82347fd920fc..000000000000 --- a/releasenotes/notes/1.2/qasm3-basis-gates-keyword-c5998bff1e178715.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -fixes: - - | - The OpenQASM 3 exporter will now correctly error when asked to use a keyword or other invalid - identifier as a "basis gate", as it has no way of putting out correct output in these cases. diff --git a/releasenotes/notes/1.2/qasm3-includes-ceb56f49b8c190ff.yaml b/releasenotes/notes/1.2/qasm3-includes-ceb56f49b8c190ff.yaml deleted file mode 100644 index 25270fcb6359..000000000000 --- a/releasenotes/notes/1.2/qasm3-includes-ceb56f49b8c190ff.yaml +++ /dev/null @@ -1,11 +0,0 @@ ---- -fixes: - - | - The OpenQASM 3 exporter has restored its behavior of accepting non-standard-library include - files in the ``includes`` argument to :func:`.qasm3.dump`, :func:`~.qasm3.dumps`, and - :class:`~.qasm3.Exporter`. These will insert a suitable ``include`` statement into the output - as before, and the exporter remains unaware of the intended gates in that include file; you - should pass the gates you expect it to define in the ``basis_gates`` argument to the same functions. - - We expect to improve the export mechanism against non-standard include files in a future release - of Qiskit. diff --git a/releasenotes/notes/1.2/qasm3-symbol-table-efad35629639c77d.yaml b/releasenotes/notes/1.2/qasm3-symbol-table-efad35629639c77d.yaml deleted file mode 100644 index 144e0dee279c..000000000000 --- a/releasenotes/notes/1.2/qasm3-symbol-table-efad35629639c77d.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -features_qasm: - - | - The internal symbol table of the OpenQASM 3 exporter (:mod:`qiskit.qasm3`) has been rewritten, - which should result in cleaner outputs when using Qiskit standard-library gates that are not in - the OpenQASM 3 standard-library headers, and more deterministic outputs. For example, using - several :class:`.RZXGate`\ s will now result in only a single parametric definition, and when - naming collisions occur, the symbol table will assign a deterministic counter to make names - unique, rather than a non-deterministic integer (previously, the object identity was used). -fixes: - - | - The OpenQASM 3 exporter (:mod:`qiskit.qasm3`) will now correctly export multiple instances of - :class:`.PauliEvolutionGate` from a circuit. Previously, only a single instance would be exported, - and all other instances would silently use the same (incorrect) version. - - | - The OpenQASM 3 exporter (:mod:`qiskit.qasm3`) will now correctly escape gate names. Previously, - a gate whose name was an invalid OpenQASM 3 identifier would cause invalid OpenQASM 3 to be - generated. diff --git a/releasenotes/notes/1.2/replace-initialization-algorithm-by-isometry-41f9ffa58f72ece5.yaml b/releasenotes/notes/1.2/replace-initialization-algorithm-by-isometry-41f9ffa58f72ece5.yaml deleted file mode 100644 index 5bf8e7a80b48..000000000000 --- a/releasenotes/notes/1.2/replace-initialization-algorithm-by-isometry-41f9ffa58f72ece5.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -features_circuits: - - | - Replacing the internal synthesis algorithm of :class:`~.library.StatePreparation` - and :class:`~.library.Initialize` of Shende et al. by the algorithm given in - :class:`~.library.Isometry` of Iten et al. - The new algorithm reduces the number of CX gates and the circuit depth by a factor of 2. diff --git a/releasenotes/notes/1.2/restrict-split2q-d51d840cc7a7a482.yaml b/releasenotes/notes/1.2/restrict-split2q-d51d840cc7a7a482.yaml deleted file mode 100644 index 009a97720e30..000000000000 --- a/releasenotes/notes/1.2/restrict-split2q-d51d840cc7a7a482.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -fixes: - - | - Fixed an edge case when transpiling a circuit with ``optimization_level`` 2 or 3 with an - incomplete 1-qubit basis gate set on a circuit containing 2-qubit gates, that can be - implemented as a product of single qubit gates. This bug is resolved by restricting - :class:`.Split2QUnitaries` to consider only :class:`.UnitaryGate` objects. - Fixed `#12970 `__. diff --git a/releasenotes/notes/1.2/sabre_level0-1524f01965257f3f.yaml b/releasenotes/notes/1.2/sabre_level0-1524f01965257f3f.yaml deleted file mode 100644 index c24775d6d096..000000000000 --- a/releasenotes/notes/1.2/sabre_level0-1524f01965257f3f.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -upgrade_transpiler: - - | - The default routing pass used by optimization level 0 for :func:`.generate_preset_pass_manager` - and :func:`.transpile` has been changed from :class:`.StochasticSwap` to :class:`.SabreSwap`. - The :class:`.SabreSwap` pass performs exactly the same function but performs better in both - runtime and output quality (in number of swap gates and depth) compared to - :class:`.StochasticSwap`. For ``optimization_level=0`` this shouldn't matter because it's not - expected to run routing for the typical use case of level 0. - - If you were relying on the previous default routing algorithm for any reason you can use the - ``routing_method`` argument for :func:`.transpile` and :func:`.generate_preset_pass_manager` - to ``"stochastic"`` to use the :class:`.StochasticSwap` pass. diff --git a/releasenotes/notes/1.2/synth_permutation_depth_lnn_kms-c444f3a363f3a903.yaml b/releasenotes/notes/1.2/synth_permutation_depth_lnn_kms-c444f3a363f3a903.yaml deleted file mode 100644 index 65f81686cd33..000000000000 --- a/releasenotes/notes/1.2/synth_permutation_depth_lnn_kms-c444f3a363f3a903.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -features_synthesis: - - | - Port :func:`.synth_permutation_depth_lnn_kms`, used to synthesize permutations for linear connectivity, to Rust. \ No newline at end of file diff --git a/releasenotes/notes/1.2/unary_pos_for_parameterexpression-6421421b6dc20fbb.yaml b/releasenotes/notes/1.2/unary_pos_for_parameterexpression-6421421b6dc20fbb.yaml deleted file mode 100644 index 92fc63d49892..000000000000 --- a/releasenotes/notes/1.2/unary_pos_for_parameterexpression-6421421b6dc20fbb.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -features_circuits: - - | - :class:`.ParameterExpression` now supports the unary ``+`` operator. diff --git a/releasenotes/notes/1.2/update-primitive-v2-metadata-cf1226e2d6477688.yaml b/releasenotes/notes/1.2/update-primitive-v2-metadata-cf1226e2d6477688.yaml deleted file mode 100644 index 570f5211b080..000000000000 --- a/releasenotes/notes/1.2/update-primitive-v2-metadata-cf1226e2d6477688.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -features_primitives: - - | - The metadata of Primitives V2 implementations, i.e., :class:`.StatevectorSampler`, - :class:`.StatevectorEstimator`, :class:`.BackendSamplerV2` and :class:`.BackendEstimatorV2`, - has been updated to match that of IBM quantum devices. - - * ``version`` and ``circuit_metadata`` are added for all V2 implementations - * ``shots`` is added for :class:`.BackendSamplerV2` and :class:`.BackendEstimatorV2` - * ``precision`` is renamed with ``target_precision`` for :class:`.StatevectorEstimator` - - Note that metadata of :class:`.StatevectorEstimator` does not have ``shots`` because - the class computes expectation values with :class:`.Statevector` and shots are not used. diff --git a/releasenotes/notes/1.2/update-qasm3-lib-40e15bc24234970d.yaml b/releasenotes/notes/1.2/update-qasm3-lib-40e15bc24234970d.yaml deleted file mode 100644 index 2e65b89637ff..000000000000 --- a/releasenotes/notes/1.2/update-qasm3-lib-40e15bc24234970d.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -features_qasm: - - | - The vendored version of the OpenQASM 3.0 standard library has been - updated to match `the state as of commit 4ca1d79383 `__. - This should generally have no effect on your use of Qiskit, unless you - were retrieving our vendored file for your own use. diff --git a/releasenotes/notes/1.2/update-rustworkx-min-version-4f07aacfebccae80.yaml b/releasenotes/notes/1.2/update-rustworkx-min-version-4f07aacfebccae80.yaml deleted file mode 100644 index 7661f82aee8b..000000000000 --- a/releasenotes/notes/1.2/update-rustworkx-min-version-4f07aacfebccae80.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- -upgrade_misc: - - | - The minimum version of rustworkx required to run this release has been - increased from 0.14.0 to 0.15.0. This is required because Qiskit is now - using new functionality added in the rustworkx 0.15.0 release which - improves performance. diff --git a/releasenotes/notes/1.2/use-target-in-generate-preset-pm-5215e00d22d0205c.yaml b/releasenotes/notes/1.2/use-target-in-generate-preset-pm-5215e00d22d0205c.yaml deleted file mode 100644 index 0dabc3b48253..000000000000 --- a/releasenotes/notes/1.2/use-target-in-generate-preset-pm-5215e00d22d0205c.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -features_transpiler: - - | - A new ``dt`` argument has been added to :func:`.generate_preset_pass_manager` to match - the set of arguments of :func:`.transpile`. This will allow for the internal conversion - of transpilation constraints to a :class:`.Target` representation. - -upgrade_transpiler: - - | - The :func:`.generate_preset_pass_manager` function has been upgraded to, when possible, - internally convert transpiler constraints into a :class:`.Target` instance. - If a `backend` input of type :class:`.BackendV1` is provided, it will be - converted to :class:`.BackendV2` to expose its :class:`.Target`. This change does - not require any user action. - -fixes: - - | - A series of input-handling inconsistencies between :func:`.transpile` and :func:`.generate_preset_pass_manager` - have been fixed. These inconsistencies would lead to different transpilation outputs for the same inputs, - or :func:`.generate_preset_pass_manager` failing for certain input combinations accepted by :func:`.transpile`. \ No newline at end of file diff --git a/releasenotes/notes/1.2/workaroud_12361-994d0ac2d2a6ed41.yaml b/releasenotes/notes/1.2/workaroud_12361-994d0ac2d2a6ed41.yaml deleted file mode 100644 index 9c19be117ed2..000000000000 --- a/releasenotes/notes/1.2/workaroud_12361-994d0ac2d2a6ed41.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -features_visualization: - - | - The user configuration file has a new option ``circuit_idle_wires``, which takes a Boolean - value. This allows users to set their preferred default behavior of the ``idle_wires`` option - of the circuit drawers :meth:`.QuantumCircuit.draw` and :func:`.circuit_drawer`. For example, - adding a section to ``~/.qiskit/settings.conf`` with: - - .. code-block:: text - - [default] - circuit_idle_wires = false - - will change the default to display the bits in reverse order. From 857492523a63612bb12f3bd684f6501ffdafeb31 Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Wed, 27 Nov 2024 17:37:56 -0500 Subject: [PATCH 35/38] Update transpiler pass porting note --- .../1.3/add-mcx-plugins-85e5b248692a36db.yaml | 2 +- ...ze-transpiler-passes-16f2f1c57612e74a.yaml | 74 ++++++++----------- 2 files changed, 32 insertions(+), 44 deletions(-) diff --git a/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml b/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml index 824e2fc283ab..7148eaa83cb0 100644 --- a/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml +++ b/releasenotes/notes/1.3/add-mcx-plugins-85e5b248692a36db.yaml @@ -36,7 +36,7 @@ features_transpiler: qc.mcx([0, 1, 2, 3, 4], [5]) qc.mcx([0, 1, 2, 3, 4, 5], [6]) - transpile(qc).draw('mpl') + transpile(qc).draw('mpl', fold=-1) For the first MCX gate, qubits ``5`` and ``6`` can be used as clean ancillas, and the best available synthesis method ``synth_mcx_n_clean_m15`` diff --git a/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml b/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml index 14e9c9606a12..ae6161c85cab 100644 --- a/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml +++ b/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml @@ -1,46 +1,34 @@ --- features_transpiler: - | - Most of the transpiler passes required by the preset pass manager have - been ported into Rust, these include: - - * :class:`.ConsolidateBlocks`: the pass now runs up to 3x faster than it did with Python. - - * :class:`.BasisTranslator`: it now runs 3x to 5x faster than it did in Python. - - * :class:`.CommutationAnalysis`: exists in rust as :func:`.analyze_commutations`. - Testing on ASV benchmarks reveals increased performance of up to 3x compared to Python. - - * :class:`~.ElidePermutations`: On certain tests the demostrated speedup is between 5x and 10x from - its previous Python implementation. - - * :class:`.Optimize1qGatesDecomposition`: the runtime performance of the pass has - improved between 5x to 10x. - - * :class:`.CommutationChecker`: Depending on the circuit type we can observe a speedup of - up to 5x in comparison to Python. - - * The circuit library functions rust-native functions :func:`.pauli_feature_map`, - :func:`.z_feature_map`, and :func:`.zz_feature_map` will replace the current - circuit library objects: :class:`.PauliFeatureMap`, :class:`.ZFeatureMap`, and - :class:`.ZZFeatureMap`. From multiple benchmark runs, a speedup of up to 8x was - observed, in comparison to Python. - - * :class:`.UnitarySynthesis`: the pass seems to run about 1.5x faster than it did in Python. - - * :class:`.GateDirection`: runs between 9x and 16x faster than it did in Python. - - * :class:`.CheckGateDirection`: runs an average of 12x faster than it did in Python. - - * :class:`.RemoveDiagonalGatesBeforeMeasure`: runs an average of 23x faster than it did - in Python. - - * :class:`.CheckMap`: Runs up to 50x faster than in Python. - - * :class:`.Split2QUnitaties`: Runs about 1.5x faster than in Python. - - * :class:`.StarPrerouting`: Runs about 1.2x faster than in Python. - - Other ported passes include: :class:`.FilterOpNodes`, :class:`.Depth`, :class:`.Size`, - :class:`.GatesInBasis`, and :class:`.InverseCancellation`. - \ No newline at end of file + The majority of the transpiler passes used in the preset pass managers + returned by :func:`.generate_preset_pass_manager` and used internally + by :func:`.transpile` were ported into Rust. This has significantly + improved the runtime performance of each pass which has led to a + significant improvement in the overall runtime performance of the + transpiler. The list of passes ported to Rust in this release are: + + * :class:`.ConsolidateBlocks` + * :class:`.BasisTranslator` + * :class:`.CommutationAnalysis` + * :class:`.CommutativeCancellation` + * :class:`.ElidePermutations` + * :class:`.Optimize1qGatesDecomposition` + * :class:`.UnitarySynthesis` + * :class:`.GateDirection` + * :class:`.CheckGateDirection` + * :class:`.RemoveDiagonalGatesBeforeMeasure` + * :class:`.CheckMap` + * :class:`.Split2QUnitaties` + * :class:`.FilterOpNodes` + * :class:`.Depth` + * :class:`.Size` + * :class:`.GatesInBasis` + * :class:`.InverseCancellation` + * :class:`.BarrierBeforeFinalMeasure` + +features_circuits: + - | + The :class:`.CommutationChecker` class has been rewritten in Rust. + This class retains the same functionality and public API as before + but is now significantly faster in most cases. From 63434d72622c278ccf5ee41473118d297afd48c0 Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Wed, 27 Nov 2024 18:02:04 -0500 Subject: [PATCH 36/38] Copy edit most release notes --- .../1.3/add-qpy-v13-3b22ae33045af6c1.yaml | 4 +-- .../1.3/add-qv-function-a8990e248d5e7e1a.yaml | 4 +-- ...nd-sampler-v2-level1-dc13af460cd38454.yaml | 6 ++--- .../boolean-logic-gates-40add5cf0b20b5e9.yaml | 6 +++-- .../clib-evolved-ops-e91c00964c0209ce.yaml | 8 +++--- .../1.3/clib-grover-op-cb032144e899ed0d.yaml | 4 +-- ...deprecate-mitigation-f5f6ef3233b3d726.yaml | 6 ++--- ...recate-pulse-package-07a621be1db7fa30.yaml | 23 +++++++++------- ...inverse-cancellation-c7f4debcde4a705a.yaml | 6 ++--- .../pauli-evo-plugins-612850146c3f7d49.yaml | 26 +++++++++---------- ...epth-line-mr-to-rust-1376d5a41948112a.yaml | 4 +-- .../1.3/rust-paulifm-1dc7b1c2dc756614.yaml | 4 +-- 12 files changed, 54 insertions(+), 47 deletions(-) diff --git a/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml b/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml index f421ba2c8053..d1d6ea3e2795 100644 --- a/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml +++ b/releasenotes/notes/1.3/add-qpy-v13-3b22ae33045af6c1.yaml @@ -6,7 +6,7 @@ features_qpy: issues: - | When using QPY formats 10, 11, or 12 with circuits that contain - :class:`.ParamerExpression`s, if the version of the ``symengine`` package + :class:`.ParamerExpression`\s, if the version of the ``symengine`` package installed in the environment that generated the payload (:func:`.qpy.dump`) does not match the version of ``symengine`` installed in the enviroment where the payload is loaded (:func:`.qpy.load`), you will get an error. If you encounter @@ -23,4 +23,4 @@ upgrade_qpy: compatible with Qiskit 1.3.0 or later. If the payload needs to be loaded by an earlier version of Qiskit, use the ``version`` flag on :func:`.qpy.dump` to emit the appropriate version. Refer to - :ref:`qpy_compatibility` for more details. \ No newline at end of file + :ref:`qpy_compatibility` for more details. diff --git a/releasenotes/notes/1.3/add-qv-function-a8990e248d5e7e1a.yaml b/releasenotes/notes/1.3/add-qv-function-a8990e248d5e7e1a.yaml index eb5d41a02dd3..0ed4937c4bce 100644 --- a/releasenotes/notes/1.3/add-qv-function-a8990e248d5e7e1a.yaml +++ b/releasenotes/notes/1.3/add-qv-function-a8990e248d5e7e1a.yaml @@ -1,7 +1,7 @@ --- features_circuits: - | - Added a new function :func:`.quantum_volume` for generating a quantum volume + Added a new function :func:`~qiskit.circuit.library.quantum_volume` for generating a quantum volume :class:`.QuantumCircuit` object as defined in A. Cross et al. Validating quantum computers using randomized model circuits, `Phys. Rev. A 100, 032328 (2019) `__. This new function differs from the existing :class:`.QuantumVolume` class in that it returns @@ -11,7 +11,7 @@ features_circuits: - | Improved the runtime performance of constructing the :class:`.QuantumVolume` class with the ``classical_permutation`` argument set - to ``True``. Internally it now calls the :func:`.quantum_volume` + to ``True``. Internally it now calls the :func:`~qiskit.circuit.library.quantum_volume` function which is written in Rust and is ~10x faster when generating a quantum volume circuit. diff --git a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml index d5df94aa0ef8..9e6246d43c2b 100644 --- a/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml +++ b/releasenotes/notes/1.3/backend-sampler-v2-level1-dc13af460cd38454.yaml @@ -14,6 +14,6 @@ upgrade_primitives: - | When using :class:`~.BackendSamplerV2`, circuit metadata is no longer cleared before passing circuits to the ``run()`` method of the wrapped - :class:`~.BackendV2` instance. If you were previously - relying on this behavior you can manually clear the metadata before - calling :meth:`.BackendSamplerV2.run` by calling `circuit.metadata.clear()` + :class:`~.BackendV2` instance. If you were previously + relying on this behavior you can manually clear the metadata before + calling :meth:`.BackendSamplerV2.run` by calling ``circuit.metadata.clear()`` diff --git a/releasenotes/notes/1.3/boolean-logic-gates-40add5cf0b20b5e9.yaml b/releasenotes/notes/1.3/boolean-logic-gates-40add5cf0b20b5e9.yaml index d1de403ab4f7..28b53fd0f6ca 100644 --- a/releasenotes/notes/1.3/boolean-logic-gates-40add5cf0b20b5e9.yaml +++ b/releasenotes/notes/1.3/boolean-logic-gates-40add5cf0b20b5e9.yaml @@ -1,8 +1,10 @@ --- features_circuits: - | - Quantum circuits in :mod:`qiskit.circuit.library.boolean_logic` now have equivalent - representations as :class:`.Gate` objects: + The boolean logic quantum circuits in :mod:`qiskit.circuit.library` + now have equivalent representations as :class:`.Gate` objects enabling + their use with :class:`.HighLevelSynthesis` transpiler pass and plugin + infrastructure. * :class:`~qiskit.circuit.library.AndGate`, representing :class:`~qiskit.circuit.library.AND`, diff --git a/releasenotes/notes/1.3/clib-evolved-ops-e91c00964c0209ce.yaml b/releasenotes/notes/1.3/clib-evolved-ops-e91c00964c0209ce.yaml index d8917d2a44d6..0674ae9b72b9 100644 --- a/releasenotes/notes/1.3/clib-evolved-ops-e91c00964c0209ce.yaml +++ b/releasenotes/notes/1.3/clib-evolved-ops-e91c00964c0209ce.yaml @@ -1,13 +1,13 @@ --- features_circuits: - | - Added :func:`.evolved_operator_ansatz`, :func:`.hamiltonian_variational_ansatz`, and - :func:`.qaoa_ansatz` into the circuit library to implement variational circuits based on - operator evolutions. :func:`.evolved_operator_ansatz` and :func:`.qaoa_ansatz` are + Added :func:`~qiskit.circuit.library.evolved_operator_ansatz`, :func:`~qiskit.circuit.library.hamiltonian_variational_ansatz`, and + :func:`~qiskit.circuit.library.qaoa_ansatz` into the circuit library to implement variational circuits based on + operator evolutions. :func:`~qiskit.circuit.library.evolved_operator_ansatz` and :func:`~qiskit.circuit.library.qaoa_ansatz` are functionally equivalent to :class:`.EvolvedOperatorAnsatz` and :class:`.QAOAAnsatz`, but generally more performant. - The :func:`.hamiltonian_variational_ansatz` is designed to take a single Hamiltonian and + The :func:`~qiskit.circuit.library.hamiltonian_variational_ansatz` is designed to take a single Hamiltonian and automatically split it into commuting terms to implement a Hamiltonian variational ansatz. This could already be achieved manually by using the :class:`.EvolvedOperatorAnsatz`, but is now more convenient to use. diff --git a/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml b/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml index 16aa5b0ff9e2..f536d6026ced 100644 --- a/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml +++ b/releasenotes/notes/1.3/clib-grover-op-cb032144e899ed0d.yaml @@ -1,11 +1,11 @@ --- features_circuits: - | - Added :func:`.grover_operator` to construct a Grover operator circuit, used in + Added :func:`~qiskit.circuit.library.grover_operator` to construct a Grover operator circuit, used in Grover's algorithm and amplitude estimation/amplification, for example. This function is similar to :class:`.GroverOperator`, but does not require you to choose the implementation of the multi-controlled X gate, but instead lets the compiler determine the optimal decomposition. - Additionally, it does not wrap the circuit into an opaque gate and is + Additionally, it does not wrap the circuit into an opaque gate and is faster because fewer decompositions are required for transpilation. .. plot:: diff --git a/releasenotes/notes/1.3/deprecate-mitigation-f5f6ef3233b3d726.yaml b/releasenotes/notes/1.3/deprecate-mitigation-f5f6ef3233b3d726.yaml index 9d5d0c02f762..ea1f30573bef 100644 --- a/releasenotes/notes/1.3/deprecate-mitigation-f5f6ef3233b3d726.yaml +++ b/releasenotes/notes/1.3/deprecate-mitigation-f5f6ef3233b3d726.yaml @@ -1,7 +1,7 @@ --- deprecations_misc: - | - The ``qiskit.result.mitigation`` module has been deprecated and will be removed in Qiskit 2.0. - The deprecation includes the ``LocalReadoutMitigator`` and ``CorrelatedReadoutMitigator`` classes - as well as the associated utility functions. + The :mod:`qiskit.result.mitigation` module has been deprecated and will be removed in Qiskit 2.0. + The deprecation includes the :class:`.LocalReadoutMitigator` and :class:`.CorrelatedReadoutMitigator` classes + as well as the associated utility functions. Their functionality has been superseded by the mthree package, found in https://github.com/Qiskit/qiskit-addon-mthree. diff --git a/releasenotes/notes/1.3/deprecate-pulse-package-07a621be1db7fa30.yaml b/releasenotes/notes/1.3/deprecate-pulse-package-07a621be1db7fa30.yaml index 05a93eba3f05..ff811d80507c 100644 --- a/releasenotes/notes/1.3/deprecate-pulse-package-07a621be1db7fa30.yaml +++ b/releasenotes/notes/1.3/deprecate-pulse-package-07a621be1db7fa30.yaml @@ -1,16 +1,21 @@ --- deprecations: - | - The Qiskit Pulse package is now deprecated and will be removed in Qiskit 2.0.0. This is because pulse-level - access is currently only supported on a subset of Eagle devices and is not supported on the Heron architecture. - Furthermore, newer IBM Quantum architectures will not support pulse-level access. + The :mod:`qiskit.pulse` module and all it's associated features is now deprecated and will be removed in Qiskit 2.0.0. This is because primary + backend provider with pulse support is IBM and pulse-level access is currently only supported on a subset + of IBM's backends is not supported on their newer architectures. Similarly they have announced that + `pulse level access will be removed in 2025 `__ + Without the largest provider using the feature supporting pulse access anymore the importance of the feature to Qiskit is + significantly dimished and weighed against the continued maintanence overhead of the package it is beign removed. + The deprecation includes all pulse code in :mod:`qiskit.pulse` as well as functionality dependent on or related to pulse, such as pulse visualization, serialization, and custom calibration support. For - more details see the deprecation sections. + more details see the deprecation sections below. The Pulse package as a whole, along with directly related components in Qiskit, will be moved to the `Qiskit Dynamics `__ repository to further enable - pulse and low-level control simulation. + pulse and low-level control simulation. Qiskit 1.x will continue to support the :mod:`qiskit.pulse` + until it goes end-of-life. deprecations_circuits: - | As part of the Qiskit Pulse package deprecation, the following dependencies are deprecated as well: @@ -42,11 +47,11 @@ deprecations_transpiler: * :class:`~qiskit.transpiler.passes.RZXCalibrationBuilder` * :class:`~qiskit.transpiler.passes.EchoRZXWeylDecomposition` - | - The `inst_map` argument in :func:`~qiskit.transpiler.generate_preset_pass_manager`, + The ``inst_map`` argument in :func:`~qiskit.transpiler.generate_preset_pass_manager`, :meth:`~transpiler.target.Target.from_configuration`, :class:`~qiskit.transpiler.PassManagerConfig` initializer and :func:`~qiskit.transpiler.preset_passmanagers.common.generate_scheduling` is being deprecated. - | - The `calibration` argument in :func:`~qiskit.transpiler.target.InstructionProperties` initializer methods is being + The ``calibration`` argument in :func:`~qiskit.transpiler.target.InstructionProperties` initializer methods is being deprecated. deprecations_visualization: - | @@ -64,10 +69,10 @@ deprecations_providers: Consequently, the corresponding channel methods in the :class:`qiskit.providers.BackendV2Converter` and :class:`qiskit.providers.fake_provider.GenericBackendV2` classes are being deprecated as well. - In addition, the `pulse_channels` and `calibrate_instructions` arguments in the :class:`~qiskit.providers.BackendV2` + In addition, the ``pulse_channels`` and ``calibrate_instructions`` arguments in the :class:`~qiskit.providers.BackendV2` initializer method are being deprecated. - | - The `defaults` argument is being deprecated from the :func:`qiskit.providers.backend_compat.convert_to_target` function. + The ``defaults`` argument is being deprecated from the :func:`qiskit.providers.backend_compat.convert_to_target` function. deprecations_misc: - | As part of the Qiskit Pulse package deprecation, the following functions and class are being deprecated as well: diff --git a/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml b/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml index d0bbe4e4bd0f..1a3309b6331d 100644 --- a/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml +++ b/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml @@ -1,6 +1,6 @@ fixes: - | - The transpilation pass :class`.InverseCancellation` now will recurse into :class`.ControlFlowOp` - operations present in a :class:`.QuantumCircuit`. Previously, the pass would ignorez + The transpilation pass :class:`.InverseCancellation` now will recurse into :class`.ControlFlowOp` + operations present in a :class:`.QuantumCircuit`. Previously, the pass would ignore inverse gate pairs inside control flow blocks that could have been cancelled. Refer to - `#13437 ` for more details. + `#13437 `__ for more details. diff --git a/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml b/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml index d8faf596dbeb..0b1473bfe763 100644 --- a/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml +++ b/releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml @@ -1,8 +1,8 @@ --- features_quantum_info: - | - Added :meth:`.SparsePauliOperator.to_sparse_list` to convert an operator into - a sparse list format. This works inversely to :meth:`.SparsePauliOperator.from_sparse_list`. + Added :meth:`.SparsePauliOp.to_sparse_list` to convert an operator into + a sparse list format. This works inversely to :meth:`.SparsePauliOp.from_sparse_list`. For example:: from qiskit.quantum_info import SparsePauliOp @@ -18,29 +18,29 @@ features_synthesis: Added :meth:`.ProductFormula.expand`, which lets you view the expansion of a product formula in a sparse Pauli format. For example, we can query the format of a second-order Trotter expansion of a Hamiltonian as:: - + from qiskit.quantum_info import SparsePauliOp from qiskit.circuit.library import PauliEvolutionGate from qiskit.synthesis.evolution import SuzukiTrotter - + hamiltonian = SparsePauliOp(["IX", "XI", "ZZ"], coeffs=[-1, -1, 1]) evo = PauliEvolutionGate(hamiltonian, time=3.14) trotter = SuzukiTrotter(order=2) print(trotter.expand(evo)) - + which will print - + .. parsed-literal:: - - [('X', [0], -3.14), ('X', [1], -3.14), ('ZZ', [0, 1], 6.28), + + [('X', [0], -3.14), ('X', [1], -3.14), ('ZZ', [0, 1], 6.28), ('X', [1], -3.14), ('X', [0], -3.14)] - | Added the plugin structure for the :class:`.PauliEvolutionGate`. The default plugin, :class:`.PauliEvolutionSynthesisDefault`, constructs circuit as before, but faster, as it - internally uses Rust. The larger the circuit (for example. by the Hamiltonian size, the number + internally uses Rust. The larger the circuit (for example. by the Hamiltonian size, the number of timesteps, or the Suzuki-Trotter order), the greater the speedup. For example, - a 100-qubit Heisenberg Hamiltonian with 10 timesteps and a 4th-order Trotter formula is + a 100-qubit Heisenberg Hamiltonian with 10 timesteps and a 4th-order Trotter formula is now constructed ~9.4x faster. The new plugin, :class:`.PauliEvolutionSynthesisRustiq`, uses the synthesis algorithm that is described in the paper "`Faster and shorter synthesis of @@ -71,10 +71,10 @@ features_synthesis: list of supported options, see the documentation for :class:`.PauliEvolutionSynthesisRustiq`. upgrade: - - | + - | The following classes now use the :math:`\sqrt{X}` operation to diagonalize the Pauli-Y - operator: :class:`.PauliEvolutionGate`, :class:`.EvolvedOperatorAnsatz`, and + operator: :class:`.PauliEvolutionGate`, :class:`.EvolvedOperatorAnsatz`, and :class:`.PauliFeatureMap`. Previously, these classes used either :math:`H S` or - :math:`R_X(-\pi/2)` as basis transformation. Using the :math:`\sqrt{X}` operation, + :math:`R_X(-\pi/2)` as basis transformation. Using the :math:`\sqrt{X}` operation, represented by the :class:`.SXGate` is more efficient as it uses only a single gate implemented as singleton. diff --git a/releasenotes/notes/1.3/port-synth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml b/releasenotes/notes/1.3/port-synth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml index eb3bd4804830..12bff129a5ed 100644 --- a/releasenotes/notes/1.3/port-synth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml +++ b/releasenotes/notes/1.3/port-synth-cz-depth-line-mr-to-rust-1376d5a41948112a.yaml @@ -1,11 +1,11 @@ --- features_synthesis: - | - Port :func: `.synth_cz_depth_line_mr` to Rust. This function synthesizes a CZ + Port :func:`.synth_cz_depth_line_mr` to Rust. This function synthesizes a CZ circuit for linear nearest neighbor (LNN) connectivity, based on the Maslov and Roetteler method. On a 350x350 binary matrix, the Rust implementation yields a speedup of about 30x. - | - Port :func: `.synth_permutation_reverse_lnn_kms` to Rust, which synthesizes a + Port :func:`.synth_permutation_reverse_lnn_kms` to Rust, which synthesizes a reverse permutation for LNN architecture using the Kutin, Moulton, Smithline method. diff --git a/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml b/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml index 103e792381ab..508bccc8913f 100644 --- a/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml +++ b/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml @@ -1,8 +1,8 @@ --- features_circuits: - | - Added circuit library functions :func:`.pauli_feature_map`, :func:`.z_feature_map`, - :func:`.zz_feature_map` to construct Pauli feature map circuits. These functions + Added circuit library functions :func:`~qiskit.circuit.library.pauli_feature_map`, :func:`~qiskit.circuit.library.z_feature_map`, + :func:`~qiskit.circuit.library.zz_feature_map` to construct Pauli feature map circuits. These functions are approximately 8x faster than the current circuit library objects, :class:`.PauliFeatureMap`, :class:`.ZFeatureMap`, and :class:`.ZZFeatureMap`, and will replace them in the future. Note, that the new functions return a plain From 651dbc2eff886bd2c86524f175df730add71ab77 Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Wed, 27 Nov 2024 18:13:38 -0500 Subject: [PATCH 37/38] Fix typos --- .../1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml | 7 +++---- .../1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml | 2 +- .../1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml b/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml index b8f2bfb62228..c76e0cb8b041 100644 --- a/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml +++ b/releasenotes/notes/1.3/binary-arithmetic-gates-6cd2b1c8112febe0.yaml @@ -3,9 +3,8 @@ features_circuits: - | Added binary arithmetic gates for inplace addition of two :math:`n`-qubit registers, that is :math:`|a\rangle |b\rangle \mapsto |a\rangle |a+b\rangle`. - The :class:`.ModularAdderGate` implements addition modulo :math:`2^n`, the - :class:`.AdderGate` implements standard addition including a carry-out, and the - :class:`.FullAdderGate` includes a carry-in qubit. See the respective documentation for + The :class:`.ModularAdderGate` implements addition modulo :math:`2^n`, and the + :class:`.FullAdderGate` includes a carry-in qubit. See the respective documentation for details and examples. In contrast to the existing library circuits, such as :class:`.CDKMRippleCarryAdder`, @@ -22,4 +21,4 @@ features_synthesis: :class:`.FullAdderGate`. - | Added :func:`.multiplier_cumulative_h18` and :func:`.multiplier_qft_r17` - to synthesize the :class:`.MultiplierGate`. \ No newline at end of file + to synthesize the :class:`.MultiplierGate`. diff --git a/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml b/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml index 1a3309b6331d..f6b40556287d 100644 --- a/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml +++ b/releasenotes/notes/1.3/fix-inverse-cancellation-c7f4debcde4a705a.yaml @@ -1,6 +1,6 @@ fixes: - | - The transpilation pass :class:`.InverseCancellation` now will recurse into :class`.ControlFlowOp` + The transpilation pass :class:`.InverseCancellation` now will recurse into :class:`.ControlFlowOp` operations present in a :class:`.QuantumCircuit`. Previously, the pass would ignore inverse gate pairs inside control flow blocks that could have been cancelled. Refer to `#13437 `__ for more details. diff --git a/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml b/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml index ae6161c85cab..137d5c51f36a 100644 --- a/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml +++ b/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml @@ -25,7 +25,7 @@ features_transpiler: * :class:`.Size` * :class:`.GatesInBasis` * :class:`.InverseCancellation` - * :class:`.BarrierBeforeFinalMeasure` + * :class:`.BarrierBeforeFinalMeasurements` features_circuits: - | From 923de86a2561dabca3d6d19ab330d6714f3a0bfd Mon Sep 17 00:00:00 2001 From: Raynel Sanchez <87539502+raynelfss@users.noreply.github.com> Date: Wed, 27 Nov 2024 18:19:32 -0500 Subject: [PATCH 38/38] Slight reword in oxidize-transppiler-passes release note --- .../notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml b/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml index 137d5c51f36a..2bf3de2c525b 100644 --- a/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml +++ b/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml @@ -5,7 +5,7 @@ features_transpiler: returned by :func:`.generate_preset_pass_manager` and used internally by :func:`.transpile` were ported into Rust. This has significantly improved the runtime performance of each pass which has led to a - significant improvement in the overall runtime performance of the + significant improvement in the overall operational efficiency of the transpiler. The list of passes ported to Rust in this release are: * :class:`.ConsolidateBlocks`