Skip to content

Release 0.43.0

Choose a tag to compare

@josephleekl josephleekl released this 14 Oct 15:51

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 preprocess method integrated with the graph decomposition system. (#1251)

  • Using mcm_method="device" on lightning.qubit, lightning.kokkos and lightning.gpu now resolves to the tree-traversal method. (#1210)

Improvements 🛠

  • An exception is raised when calling normalize or collapse method with lightning.qubit, lightning.kokkos and lightning.gpu when norm is close to 0. (#1257)

  • Worksize preference in cuTensorNet can now be set and updated when using lightning.tensor device 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 GlobalPhase with zero-qubit Lightning devices. Currently, only the lightning.qubit and lightning.kokkos backends support zero-qubit initialization. (#1205)

  • Skipped Identity operation in lightning.qubit and removed assert for applying Identity gate not equal to 1 wire. (#1212)

  • Updated test_device.py to no longer mutate an execution configuration for testing. (#1242)

Breaking changes 💔

  • LightningBase.eval_jaxpr no longer uses self.shots; instead, it takes a keyword argument shots. (#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 tensorflow interface after deprecation in PennyLane. (#1225)

Deprecations 👋

  • Specifying shots at qml.device initialization is deprecated. Instead, use qml.set_shots to 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 tuning documentation page to the AVX2/AVX512 kernels index for improved discoverability. (#1217)

Bug fixes 🐛

  • Using postselect_mode="fill-shots" with mcm_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.SProd and qml.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.gpu with MPI. (#1237)

Internal changes ⚙️

  • Updated test to skip MCM test for lightning.tensor and 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.gpu and lightning.tensor from source with CUDA 13. (#1267)

  • Removed unnecessary std::move in cuGates_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) and C(Exp) to Qubit Unitary, since PennyLane can decompose these operators after PR 8133. (#1247)

  • Removed --no-deps for 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 DefaultExecutionConfig with ExecutionConfig() across the Lightning Python device APIs. (#1185)

  • Updated tests with circuit(..., shots=...) to use qml.set_shots to ensure compatibility with the latest version of PennyLane. (#1216)

  • Used pennylane.exceptions for 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 pytest within requirements files to 8.4.1. (#1207)

  • Merged the v0.42.0_rc_merge branch to the master and 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.