From 9dd983fb70ec746a9f7cec4d032f07b0fbb69471 Mon Sep 17 00:00:00 2001
From: "Thomas R. Bromley" <49409390+trbromley@users.noreply.github.com>
Date: Tue, 23 Apr 2024 13:41:50 -0400
Subject: [PATCH] Updates to v0.36 release notes (#5554)
**Context:**
The release notes need to be tidied in time for the 0.36 release on May
7th.
**Description of the Change:**
This is the first phase of changes to the release notes. In this PR we
add categories to major features and improvements and categorize the
existing PRs.
**Recommendation for reviewers:**
- It is important to merge this first changelog update PR relatively
quickly as it often goes out of date with `master` and has merge
conflicts. Hence, we typically do not worry about the changelog entries
themselves, just that the categories are added and we believe entries
are in the right category. Changes to the entries themselves, and
writing polished summaries of major features, will happen in a
subsequent PR.
- There are so many changes that the diff can be hard to follow. It is
easiest to simply view the docs build to check if you are happy.
---------
Co-authored-by: Isaac De Vlugt <34751083+isaacdevlugt@users.noreply.github.com>
---
doc/releases/changelog-dev.md | 378 ++++++++++++++++++----------------
1 file changed, 195 insertions(+), 183 deletions(-)
diff --git a/doc/releases/changelog-dev.md b/doc/releases/changelog-dev.md
index 77b27fc09f0..563e74dd02a 100644
--- a/doc/releases/changelog-dev.md
+++ b/doc/releases/changelog-dev.md
@@ -4,74 +4,117 @@
New features since last release
-* Added a qml.capture module that will contain PennyLane's own capturing mechanism for hybrid
- quantum-classical programs.
- [(#5509)](https://github.com/PennyLaneAI/pennylane/pull/5509)
+Estimate errors in a quantum circuit 🧮
-* The `FABLE` template is added for efficient block encoding of matrices. Users can now call FABLE to efficiently construct circuits according to a user-set approximation level.
-[(#5107)](https://github.com/PennyLaneAI/pennylane/pull/5107)
+* Added `error` method to `QuantumPhaseEstimation` template.
+ [(#5278)](https://github.com/PennyLaneAI/pennylane/pull/5278)
-* The `QubitDevice` class and children classes support the `dynamic_one_shot` transform provided that they support `MidMeasureMP` operations natively.
- [(#5317)](https://github.com/PennyLaneAI/pennylane/pull/5317)
+* Added new `SpectralNormError` class to the new error tracking functionality.
+ [(#5154)](https://github.com/PennyLaneAI/pennylane/pull/5154)
-* `qml.ops.Sum` now supports storing grouping information. Grouping type and method can be
- specified during construction using the `grouping_type` and `method` keyword arguments of
- `qml.dot`, `qml.sum`, or `qml.ops.Sum`. The grouping indices are stored in `Sum.grouping_indices`.
- [(#5179)](https://github.com/PennyLaneAI/pennylane/pull/5179)
+* The `qml.TrotterProduct` operator now supports error estimation functionality.
+ [(#5384)](https://github.com/PennyLaneAI/pennylane/pull/5384)
+
+ ```pycon
+ >>> hamiltonian = qml.dot([1.0, 0.5, -0.25], [qml.X(0), qml.Y(0), qml.Z(0)])
+ >>> op = qml.TrotterProduct(hamiltonian, time=0.01, order=2)
+ >>> op.error(method="one-norm")
+ SpectralNormError(8.039062500000003e-06)
+ >>>
+ >>> op.error(method="commutator")
+ SpectralNormError(6.166666666666668e-06)
+ ```
+
+* `qml.specs` and `qml.Tracker` now return information about algorithmic errors for the qnode as well.
+ [(#5464)](https://github.com/PennyLaneAI/pennylane/pull/5464)
+ [(#5465)](https://github.com/PennyLaneAI/pennylane/pull/5465)
+
+
+Access an extended arsenal of quantum algorithms 🏹
+
+* The `FABLE` template is added for efficient block encoding of matrices. Users can now call FABLE to efficiently construct circuits according to a user-set approximation level.
+ [(#5107)](https://github.com/PennyLaneAI/pennylane/pull/5107)
+
+* Create the `qml.Reflection` operator, useful for amplitude amplification and its variants.
+ [(#5159)](https://github.com/PennyLaneAI/pennylane/pull/5159)
```python
- import pennylane as qml
+ @qml.prod
+ def generator(wires):
+ qml.Hadamard(wires=wires)
- a = qml.X(0)
- b = qml.prod(qml.X(0), qml.X(1))
- c = qml.Z(0)
- obs = [a, b, c]
- coeffs = [1.0, 2.0, 3.0]
+ U = generator(wires=0)
+
+ dev = qml.device('default.qubit')
+ @qml.qnode(dev)
+ def circuit():
+
+ # Initialize to the state |1>
+ qml.PauliX(wires=0)
+
+ # Apply the reflection
+ qml.Reflection(U)
+
+ return qml.state()
- op = qml.dot(coeffs, obs, grouping_type="qwc")
```
+
```pycon
- >>> op.grouping_indices
- ((2,), (0, 1))
+ >>> circuit()
+ tensor([1.+6.123234e-17j, 0.-6.123234e-17j], requires_grad=True)
```
-
- Additionally, grouping type and method can be set or changed after construction using
- `Sum.compute_grouping()`:
+
+* The `qml.AmplitudeAmplification` operator is introduced, which is a high-level interface for amplitude amplification and its variants.
+ [(#5160)](https://github.com/PennyLaneAI/pennylane/pull/5160)
```python
- import pennylane as qml
+ @qml.prod
+ def generator(wires):
+ for wire in wires:
+ qml.Hadamard(wires=wire)
- a = qml.X(0)
- b = qml.prod(qml.X(0), qml.X(1))
- c = qml.Z(0)
- obs = [a, b, c]
- coeffs = [1.0, 2.0, 3.0]
+ U = generator(wires=range(3))
+ O = qml.FlipSign(2, wires=range(3))
+
+ dev = qml.device("default.qubit")
+
+ @qml.qnode(dev)
+ def circuit():
+
+ generator(wires=range(3))
+ qml.AmplitudeAmplification(U, O, iters=5, fixed_point=True, work_wire=3)
+
+ return qml.probs(wires=range(3))
- op = qml.dot(coeffs, obs)
```
+
```pycon
- >>> op.grouping_indices is None
- True
- >>> op.compute_grouping(grouping_type="qwc")
- >>> op.grouping_indices
- ((2,), (0, 1))
+ >>> print(np.round(circuit(), 3))
+ [0.013, 0.013, 0.91, 0.013, 0.013, 0.013, 0.013, 0.013]
+
```
- Note that the grouping indices refer to the lists returned by `Sum.terms()`, not `Sum.operands`.
+Make use of more methods to map from molecules 🗺️
-* Added new `SpectralNormError` class to the new error tracking functionality.
- [(#5154)](https://github.com/PennyLaneAI/pennylane/pull/5154)
+* Added new function `qml.bravyi_kitaev` to map fermionic Hamiltonians to qubit Hamiltonians.
+ [(#5390)](https://github.com/PennyLaneAI/pennylane/pull/5390)
-* Added `error` method to `QuantumPhaseEstimation` template.
- [(#5278)](https://github.com/PennyLaneAI/pennylane/pull/5278)
+ ```python
+ import pennylane as qml
+ fermi_ham = qml.fermi.from_string('0+ 1-')
-* The `dynamic_one_shot` transform is introduced enabling dynamic circuit execution on circuits with shots and devices that support `MidMeasureMP` operations natively.
- [(#5266)](https://github.com/PennyLaneAI/pennylane/pull/5266)
+ qubit_ham = qml.bravyi_kitaev(fermi_ham, n=6)
+ ```
-* Added new function `qml.operation.convert_to_legacy_H` to convert `Sum`, `SProd`, and `Prod` to `Hamiltonian` instances.
- [(#5309)](https://github.com/PennyLaneAI/pennylane/pull/5309)
+ ```pycon
+ >>> print(qubit_ham)
+ -0.25j * Y(0.0) + (-0.25+0j) * X(0) @ Z(1.0) + (0.25+0j) * X(0.0) + 0.25j * Y(0) @ Z(1.0)
+ ```
+
+* The `qml.qchem.hf_state` function is upgraded to be compatible with the parity and Bravyi-Kitaev bases.
+ [(#5472)](https://github.com/PennyLaneAI/pennylane/pull/5472)
-Dynamical Lie Algebra functionality
+Calculate dynamical Lie algebras 👾
* A new `qml.lie_closure` function to compute the Lie closure of a list of operators.
[(#5161)](https://github.com/PennyLaneAI/pennylane/pull/5161)
@@ -123,128 +166,97 @@
For example, we can compute the adjoint representation of the transverse field Ising model DLA.
+ ```pycon
>>> dla = [X(0) @ X(1), Z(0), Z(1), Y(0) @ X(1), X(0) @ Y(1), Y(0) @ Y(1)]
>>> structure_const = qml.structure_constants(dla)
>>> structure_constp.shape
(6, 6, 6)
+ ```
-Improvements 🛠
+Simulate mixed-state qutrit systems 3️⃣
-* Gradient transforms may now be applied to batched/broadcasted QNodes, as long as the
- broadcasting is in non-trainable parameters.
- [(#5452)](https://github.com/PennyLaneAI/pennylane/pull/5452)
-
-* Improve the performance of computing the matrix of `qml.QFT`
- [(#5351)](https://github.com/PennyLaneAI/pennylane/pull/5351)
-
-* The `qml.is_commuting` function now accepts `Sum`, `SProd`, and `Prod` instances.
- [(#5351)](https://github.com/PennyLaneAI/pennylane/pull/5351)
+* Functions `measure_with_samples` and `sample_state` have been added to the new `qutrit_mixed` module found in
+ `qml.devices`. These functions are used to sample device-compatible states, returning either the final measured state or value of an observable.
+ [(#5082)](https://github.com/PennyLaneAI/pennylane/pull/5082)
-* Operators can now be left multiplied `x * op` by numpy arrays.
- [(#5361)](https://github.com/PennyLaneAI/pennylane/pull/5361)
+* Fixed differentiability for Hamiltonian measurements in new `qutrit_mixed` module.
+ [(#5186)](https://github.com/PennyLaneAI/pennylane/pull/5186)
-* Create the `qml.Reflection` operator, useful for amplitude amplification and its variants.
- [(#5159)](https://github.com/PennyLaneAI/pennylane/pull/5159)
+* Added `simulate` function to the new `qutrit_mixed` module in `qml.devices`. This allows for simulation of a
+ noisy qutrit circuit with measurement and sampling.
+ [(#5213)](https://github.com/PennyLaneAI/pennylane/pull/5213)
- ```python
- @qml.prod
- def generator(wires):
- qml.Hadamard(wires=wires)
+ * Created the `DefaultQutritMixed` class, which inherits from `qml.devices.Device`, with an implementation
+ for `preprocess`.
+ [(#5451)](https://github.com/PennyLaneAI/pennylane/pull/5451)
- U = generator(wires=0)
+Work easily and efficiently with operators 🔧
- dev = qml.device('default.qubit')
- @qml.qnode(dev)
- def circuit():
+Improvements 🛠
- # Initialize to the state |1>
- qml.PauliX(wires=0)
+Community contributions 🥳
- # Apply the reflection
- qml.Reflection(U)
+* Implemented the method `process_counts` in `ExpectationMP`, `VarianceMP`, `CountsMP`, and `SampleMP`
+ [(#5256)](https://github.com/PennyLaneAI/pennylane/pull/5256)
+ [(#5395)](https://github.com/PennyLaneAI/pennylane/pull/5395)
- return qml.state()
+* Add type hints for unimplemented methods of the abstract class `Operator`.
+ [(#5490)](https://github.com/PennyLaneAI/pennylane/pull/5490)
- ```
+* Implement `Shots.bins()` method.
+ [(#5476)](https://github.com/PennyLaneAI/pennylane/pull/5476)
- ```pycon
- >>> circuit()
- tensor([1.+6.123234e-17j, 0.-6.123234e-17j], requires_grad=True)
- ```
+Updated operators
-* The `qml.AmplitudeAmplification` operator is introduced, which is a high-level interface for amplitude amplification and its variants.
- [(#5160)](https://github.com/PennyLaneAI/pennylane/pull/5160)
+* `qml.ops.Sum` now supports storing grouping information. Grouping type and method can be
+ specified during construction using the `grouping_type` and `method` keyword arguments of
+ `qml.dot`, `qml.sum`, or `qml.ops.Sum`. The grouping indices are stored in `Sum.grouping_indices`.
+ [(#5179)](https://github.com/PennyLaneAI/pennylane/pull/5179)
```python
- @qml.prod
- def generator(wires):
- for wire in wires:
- qml.Hadamard(wires=wire)
-
- U = generator(wires=range(3))
- O = qml.FlipSign(2, wires=range(3))
-
- dev = qml.device("default.qubit")
-
- @qml.qnode(dev)
- def circuit():
-
- generator(wires=range(3))
- qml.AmplitudeAmplification(U, O, iters=5, fixed_point=True, work_wire=3)
+ import pennylane as qml
- return qml.probs(wires=range(3))
+ a = qml.X(0)
+ b = qml.prod(qml.X(0), qml.X(1))
+ c = qml.Z(0)
+ obs = [a, b, c]
+ coeffs = [1.0, 2.0, 3.0]
+ op = qml.dot(coeffs, obs, grouping_type="qwc")
```
```pycon
- >>> print(np.round(circuit(), 3))
- [0.013, 0.013, 0.91, 0.013, 0.013, 0.013, 0.013, 0.013]
-
+ >>> op.grouping_indices
+ ((2,), (0, 1))
```
-
-* Added new function `qml.bravyi_kitaev` to map fermionic Hamiltonians to qubit Hamiltonians.
- [(#5390)](https://github.com/PennyLaneAI/pennylane/pull/5390)
+ Additionally, grouping type and method can be set or changed after construction using
+ `Sum.compute_grouping()`:
```python
import pennylane as qml
- fermi_ham = qml.fermi.from_string('0+ 1-')
- qubit_ham = qml.bravyi_kitaev(fermi_ham, n=6)
- ```
+ a = qml.X(0)
+ b = qml.prod(qml.X(0), qml.X(1))
+ c = qml.Z(0)
+ obs = [a, b, c]
+ coeffs = [1.0, 2.0, 3.0]
- ```pycon
- >>> print(qubit_ham)
- -0.25j * Y(0.0) + (-0.25+0j) * X(0) @ Z(1.0) + (0.25+0j) * X(0.0) + 0.25j * Y(0) @ Z(1.0)
+ op = qml.dot(coeffs, obs)
```
-
-* A new class `qml.ops.LinearCombination` is introduced. In essence, this class is an updated equivalent of `qml.ops.Hamiltonian`
- but for usage with new operator arithmetic.
- [(#5216)](https://github.com/PennyLaneAI/pennylane/pull/5216)
-
-* The `qml.TrotterProduct` operator now supports error estimation functionality.
- [(#5384)](https://github.com/PennyLaneAI/pennylane/pull/5384)
```pycon
- >>> hamiltonian = qml.dot([1.0, 0.5, -0.25], [qml.X(0), qml.Y(0), qml.Z(0)])
- >>> op = qml.TrotterProduct(hamiltonian, time=0.01, order=2)
- >>> op.error(method="one-norm")
- SpectralNormError(8.039062500000003e-06)
- >>>
- >>> op.error(method="commutator")
- SpectralNormError(6.166666666666668e-06)
+ >>> op.grouping_indices is None
+ True
+ >>> op.compute_grouping(grouping_type="qwc")
+ >>> op.grouping_indices
+ ((2,), (0, 1))
```
-Improvements 🛠
-* `qml.ops.Conditional` now stores the `data`, `num_params`, and `ndim_param` attributes of
- the operator it wraps.
- [(#5473)](https://github.com/PennyLaneAI/pennylane/pull/5473)
-
-* `qml.transforms.broadcast_expand` now supports shot vectors when returning `qml.sample()`.
- [(#5473)](https://github.com/PennyLaneAI/pennylane/pull/5473)
+ Note that the grouping indices refer to the lists returned by `Sum.terms()`, not `Sum.operands`.
-* `LightningVJPs` is now compatible with Lightning devices using the new device API.
- [(#5469)](https://github.com/PennyLaneAI/pennylane/pull/5469)
+* Added new function `qml.operation.convert_to_legacy_H` to convert `Sum`, `SProd`, and `Prod` to `Hamiltonian` instances.
+ [(#5309)](https://github.com/PennyLaneAI/pennylane/pull/5309)
* The `qml.is_commuting` function now accepts `Sum`, `SProd`, and `Prod` instances.
[(#5351)](https://github.com/PennyLaneAI/pennylane/pull/5351)
@@ -252,8 +264,9 @@
* Operators can now be left multiplied `x * op` by numpy arrays.
[(#5361)](https://github.com/PennyLaneAI/pennylane/pull/5361)
-* The `molecular_hamiltonian` function calls `PySCF` directly when `method='pyscf'` is selected.
- [(#5118)](https://github.com/PennyLaneAI/pennylane/pull/5118)
+* A new class `qml.ops.LinearCombination` is introduced. In essence, this class is an updated equivalent of `qml.ops.Hamiltonian`
+ but for usage with new operator arithmetic.
+ [(#5216)](https://github.com/PennyLaneAI/pennylane/pull/5216)
* The generators in the source code return operators consistent with the global setting for
`qml.operator.active_new_opmath()` wherever possible. `Sum`, `SProd` and `Prod` instances
@@ -264,9 +277,6 @@
[(#5411)](https://github.com/PennyLaneAI/pennylane/pull/5411)
[(#5421)](https://github.com/PennyLaneAI/pennylane/pull/5421)
-* Upgraded `null.qubit` to the new device API. Also, added support for all measurements and various modes of differentiation.
- [(#5211)](https://github.com/PennyLaneAI/pennylane/pull/5211)
-
* `ApproxTimeEvolution` is now compatible with any operator that defines a `pauli_rep`.
[(#5362)](https://github.com/PennyLaneAI/pennylane/pull/5362)
@@ -276,75 +286,77 @@
* `Prod.eigvals()` is now compatible with Qudit operators.
[(#5400)](https://github.com/PennyLaneAI/pennylane/pull/5400)
-* Obtaining classical shadows using the `default.clifford` device is now compatible with
- [stim](https://github.com/quantumlib/Stim) `v1.13.0`.
- [(#5409)](https://github.com/PennyLaneAI/pennylane/pull/5409)
+* `qml.transforms.hamiltonian_expand` can now handle multi-term observables with a constant offset.
+ [(#5414)](https://github.com/PennyLaneAI/pennylane/pull/5414)
-* `qml.specs` and `qml.Tracker` now return information about algorithmic errors for the qnode as well.
- [(#5464)](https://github.com/PennyLaneAI/pennylane/pull/5464)
- [(#5465)](https://github.com/PennyLaneAI/pennylane/pull/5465)
+* `taper_operation` method is compatible with new operator arithmetic.
+ [(#5326)](https://github.com/PennyLaneAI/pennylane/pull/5326)
-* `qml.specs` now returns information regarding algorithmic errors for the qnode as well.
- [(#5464)](https://github.com/PennyLaneAI/pennylane/pull/5464)
+* Removed the warning that an observable might not be hermitian in `qnode` executions. This enables jit-compilation.
+ [(#5506)](https://github.com/PennyLaneAI/pennylane/pull/5506)
-* `qml.transforms.hamiltonian_expand` can now handle multi-term observables with a constant offset.
- [(#5414)](https://github.com/PennyLaneAI/pennylane/pull/5414)
+* `qml.transforms.split_non_commuting` will now work with single-term operator arithmetic.
+ [(#5314)](https://github.com/PennyLaneAI/pennylane/pull/5314)
-* `default.mixed` has improved support for sampling-based measurements with non-numpy interfaces.
- [(#5514)](https://github.com/PennyLaneAI/pennylane/pull/5514)
+Mid-circuit measurements and dynamic circuits
-* The `qml.qchem.hf_state` function is upgraded to be compatible with the parity and Bravyi-Kitaev bases.
- [(#5472)](https://github.com/PennyLaneAI/pennylane/pull/5472)
+* The `QubitDevice` class and children classes support the `dynamic_one_shot` transform provided that they support `MidMeasureMP` operations natively.
+ [(#5317)](https://github.com/PennyLaneAI/pennylane/pull/5317)
-Community contributions 🥳
+* The `dynamic_one_shot` transform is introduced enabling dynamic circuit execution on circuits with shots and devices that support `MidMeasureMP` operations natively.
+ [(#5266)](https://github.com/PennyLaneAI/pennylane/pull/5266)
-* Functions `measure_with_samples` and `sample_state` have been added to the new `qutrit_mixed` module found in
- `qml.devices`. These functions are used to sample device-compatible states, returning either the final measured state or value of an observable.
- [(#5082)](https://github.com/PennyLaneAI/pennylane/pull/5082)
+* Added a qml.capture module that will contain PennyLane's own capturing mechanism for hybrid
+ quantum-classical programs.
+ [(#5509)](https://github.com/PennyLaneAI/pennylane/pull/5509)
-* Replaced `cache_execute` with an alternate implementation based on `@transform`.
- [(#5318)](https://github.com/PennyLaneAI/pennylane/pull/5318)
+Performance and broadcasting
-* The `QNode` now defers `diff_method` validation to the device under the new device api `qml.devices.Device`.
- [(#5176)](https://github.com/PennyLaneAI/pennylane/pull/5176)
+* Gradient transforms may now be applied to batched/broadcasted QNodes, as long as the
+ broadcasting is in non-trainable parameters.
+ [(#5452)](https://github.com/PennyLaneAI/pennylane/pull/5452)
-* `taper_operation` method is compatible with new operator arithmetic.
- [(#5326)](https://github.com/PennyLaneAI/pennylane/pull/5326)
+* Improve the performance of computing the matrix of `qml.QFT`
+ [(#5351)](https://github.com/PennyLaneAI/pennylane/pull/5351)
-* `qml.transforms.split_non_commuting` will now work with single-term operator arithmetic.
- [(#5314)](https://github.com/PennyLaneAI/pennylane/pull/5314)
+* `qml.transforms.broadcast_expand` now supports shot vectors when returning `qml.sample()`.
+ [(#5473)](https://github.com/PennyLaneAI/pennylane/pull/5473)
-* Fixed differentiability for Hamiltonian measurements in new `qutrit_mixed` module.
- [(#5186)](https://github.com/PennyLaneAI/pennylane/pull/5186)
-
-* Added `simulate` function to the new `qutrit_mixed` module in `qml.devices`. This allows for simulation of a
- noisy qutrit circuit with measurement and sampling.
- [(#5213)](https://github.com/PennyLaneAI/pennylane/pull/5213)
+* `LightningVJPs` is now compatible with Lightning devices using the new device API.
+ [(#5469)](https://github.com/PennyLaneAI/pennylane/pull/5469)
-* Implemented the method `process_counts` in `ExpectationMP`, `VarianceMP`, `CountsMP`, and `SampleMP`
- [(#5256)](https://github.com/PennyLaneAI/pennylane/pull/5256)
- [(#5395)](https://github.com/PennyLaneAI/pennylane/pull/5395)
+Other improvements
+
+* `qml.ops.Conditional` now stores the `data`, `num_params`, and `ndim_param` attributes of
+ the operator it wraps.
+ [(#5473)](https://github.com/PennyLaneAI/pennylane/pull/5473)
+
+* The `molecular_hamiltonian` function calls `PySCF` directly when `method='pyscf'` is selected.
+ [(#5118)](https://github.com/PennyLaneAI/pennylane/pull/5118)
+
+* Upgraded `null.qubit` to the new device API. Also, added support for all measurements and various modes of differentiation.
+ [(#5211)](https://github.com/PennyLaneAI/pennylane/pull/5211)
+
+* Obtaining classical shadows using the `default.clifford` device is now compatible with
+ [stim](https://github.com/quantumlib/Stim) `v1.13.0`.
+ [(#5409)](https://github.com/PennyLaneAI/pennylane/pull/5409)
+
+* `default.mixed` has improved support for sampling-based measurements with non-numpy interfaces.
+ [(#5514)](https://github.com/PennyLaneAI/pennylane/pull/5514)
+
+* Replaced `cache_execute` with an alternate implementation based on `@transform`.
+ [(#5318)](https://github.com/PennyLaneAI/pennylane/pull/5318)
+
+* The `QNode` now defers `diff_method` validation to the device under the new device api `qml.devices.Device`.
+ [(#5176)](https://github.com/PennyLaneAI/pennylane/pull/5176)
* Extend the device test suite to cover gradient methods, templates and arithmetic observables.
[(#5273)](https://github.com/PennyLaneAI/pennylane/pull/5273)
[(#5518)](https://github.com/PennyLaneAI/pennylane/pull/5518)
-* Add type hints for unimplemented methods of the abstract class `Operator`.
- [(#5490)](https://github.com/PennyLaneAI/pennylane/pull/5490)
-
* A clear error message is added in `KerasLayer` when using the newest version of TensorFlow with Keras 3
(which is not currently compatible with `KerasLayer`), linking to instructions to enable Keras 2.
[(#5488)](https://github.com/PennyLaneAI/pennylane/pull/5488)
-
- * Created the `DefaultQutritMixed` class, which inherits from `qml.devices.Device`, with an implementation
- for `preprocess`.
- [(#5451)](https://github.com/PennyLaneAI/pennylane/pull/5451)
-
-* Removed the warning that an observable might not be hermitian in `qnode` executions. This enables jit-compilation.
- [(#5506)](https://github.com/PennyLaneAI/pennylane/pull/5506)
-
-* Implement `Shots.bins()` method.
- [(#5476)](https://github.com/PennyLaneAI/pennylane/pull/5476)
Breaking changes 💔