Release 0.43.0
New features since last release
-
Lightning devices now support executing circuits with dynamic qubit allocation with
qml.allocate. (#1255) -
Lightning devices now call the new
preprocessmethod integrated with the graph decomposition system. (#1251) -
Using
mcm_method="device"onlightning.qubit,lightning.kokkosandlightning.gpunow resolves to the tree-traversal method. (#1210)
Improvements 🛠
-
An exception is raised when calling normalize or collapse method with
lightning.qubit,lightning.kokkosandlightning.gpuwhen norm is close to 0. (#1257) -
Worksize preference in
cuTensorNetcan now be set and updated when usinglightning.tensordevice to reduce memory usage or improve stability. (#1238) -
Migrated to Nanobind for Python bindings, replacing pybind11 to enhance performance, modularity, and build system efficiency. (#1176)
This migration includes comprehensive updates across all Lightning backends:
- Zero-copy measurement exchanges for improved memory efficiency (#1187)
- MPI and Adjoint Jacobian support for distributed computing (#1189)
- Lightning Qubit bindings with enhanced performance (#1198)
- Lightning Kokkos bindings for heterogeneous computing (#1213)
- Lightning GPU bindings with CUDA optimization (#1184)
- Lightning Tensor bindings for tensor network simulations (#1206)
For compatibility with PyTorch, reference leak warnings for nanobind are disabled. (#1266)
-
Added support for
GlobalPhasewith zero-qubit Lightning devices. Currently, only thelightning.qubitandlightning.kokkosbackends support zero-qubit initialization. (#1205) -
Skipped Identity operation in
lightning.qubitand removed assert for applying Identity gate not equal to 1 wire. (#1212) -
Updated
test_device.pyto no longer mutate an execution configuration for testing. (#1242)
Breaking changes 💔
-
LightningBase.eval_jaxprno longer usesself.shots; instead, it takes a keyword argumentshots. (#1243) -
No longer squeezes out singleton dimensions from samples in accordance with a breaking change in
PennyLane. See PennyLane PR (#7944) for more information. (#1226) (#1246) -
Dropped support for Python 3.10. Supported Python versions are now 3.11, 3.12 and 3.13. (#1224)
-
Dropped testing support for
tensorflowinterface after deprecation in PennyLane. (#1225)
Deprecations 👋
- Specifying
shotsatqml.deviceinitialization is deprecated. Instead, useqml.set_shotsto configure shots for a specific QNode. (#1221)
Documentation 📝
-
Updated Lightning-Kokkos installation instructions to include
Kokkos_ENABLE_COMPLEX_ALIGN=OFF. (#1256) -
Added missing
Kernel performance tuningdocumentation page to the AVX2/AVX512 kernels index for improved discoverability. (#1217)
Bug fixes 🐛
-
Using
postselect_mode="fill-shots"withmcm_method="one-shot"or"tree-traversal"has been disallowed, as it produces incorrect results where the correlation between measurements is not preserved. (#1274) -
Setting device with seed now produces deterministic measurement for MCMC. (#1252)
-
CHANGE REVERTED: Updated stopping condition for
qml.ops.op_math.SProdandqml.ops.op_math.Exp, in all devices, after breaking changes upstream. Was instead fixed in PennyLane and change was reverted. (#1239) (#1246) -
Setup the correct PennyLane version for stable-stable test with
lightning.gpuwith MPI. (#1237)
Internal changes ⚙️
-
Updated test to skip MCM test for
lightning.tensorand fix seed for deterministic test. (#1281) -
Updated GitHub Actions to produce the release candidate wheels for all supported Python versions for MacOS-ARM. (#1273)
-
Updated GitHub Actions to produce the release candidate wheels for all supported Python versions. (#1264)
-
Support building
lightning.gpuandlightning.tensorfrom source with CUDA 13. (#1267) -
Removed unnecessary
std::moveincuGates_host. (#1263) -
Pinned GitHub CI temporarily to the stable version to use Catalyst release v0.12.0. (#1259)
-
Updated Catalyst's QuantumDevice interface and downstream Qubit Manager to Lightning in preparation for dynamic qubit allocation functionality. (#1254) (#1258) (#1260)
-
Updated Release script for bumping the minimum version for PennyLane. (#1253)
-
Updated Python to 3.12 and CIBuildWheel to 3.1.4 for CI. (#1248)
-
Updated decomposition stopping condition to no longer convert
C(SProd)andC(Exp)to Qubit Unitary, since PennyLane can decompose these operators after PR 8133. (#1247) -
Removed
--no-depsfor Lightning Qubit CI tests for stable version. (#1245) -
Ported Linux based GitHub Actions workflows from using the GitHub 4vcpu large runner to blacksmith 4vcpu runner. (#1241)
-
Added script to automate the release process. (#1231)
-
Stopped the wheels creation for no arch if the PR is draft. (#1233)
-
Adjusted where the MCMC config validation occurs, from initialization to preprocess. (#1222)
-
Replaced
DefaultExecutionConfigwithExecutionConfig()across the Lightning Python device APIs. (#1185) -
Updated tests with
circuit(..., shots=...)to useqml.set_shotsto ensure compatibility with the latest version of PennyLane. (#1216) -
Used
pennylane.exceptionsfor custom PennyLane exceptions across Lightning Python code. (#1215) -
Switched off the PLxPR integration tests by removing JAX dependency from requirements files. (#1214)
-
Updated JAX version from 0.6.0 to 0.6.2, keeping the same version as PennyLane and Catalyst. (#1200)
-
Removed FIXMEs for pinning jax & catalyst 0.11.0 for CI testing stable version. (#1211)
-
Increased minimum version of
pytestwithin requirements files to8.4.1. (#1207) -
Merged the
v0.42.0_rc_mergebranch to themasterand bumped the version. (#1209)
Contributors ✍️
This release contains contributions from (in alphabetical order):
Ali Asadi,
Astral Cai,
Yushao Chen,
Amintor Dusko,
David Ittah,
Christina Lee,
Joseph Lee,
Rashid N H M,
Anton Naim Ibrahim,
Luis Alfredo Nuñez Meneses,
Andrija Paurevic,
Justin Pickering,
Marc Vandelle,
Paul Haochen Wang,
Jake Zaia.