hybridlane is a Python library for designing and manipulating hybrid continuous-variable (CV) and discrete-variable (DV) quantum circuits within the PennyLane ecosystem. It provides a frontend for expressing hybrid quantum algorithms, implementing the concepts from the paper Y. Liu et al, 2026 (PRX Quantum 7, 010201).
-
⚛️ Heterogeneous quantum circuits: Mix qubits and qumodes in the same circuit, and use our symbolic hybrid gate library to scalably build quantum algorithms.
-
🤝 PennyLane compatibility: Utilize existing PennyLane gates, write compilation passes as transforms, build custom hybrid backends for hardware, and perform resource estimation across mixed-variable systems.
-
💻 Classical simulation: Dispatch to our Jax-compatible simulator for accelerated CPU and GPU simulation and take gradients using automatic differentiation, or use Bosonic Qiskit.
-
💾 OpenQASM-based IR: Leverage our intermediate representation extending OpenQASM to reduce the effort of building new hybrid backends and to facilitate interoperability with other quantum software.
Install the package from PyPI:
pip install hybridlaneFor more details on installation and optional dependencies, see the installation guide.
Warning
hybridlane is currently in active development and may experience breaking changes -- consider using version pinning. We welcome your feedback on our GitHub Issues page to help us improve the software.
import numpy as np
import pennylane as qp
import hybridlane as hl
# Create a simulator with a custom Fock truncation
dev = qp.device("default.hybrid", fock_level=8)
# Define a hybrid circuit with familiar PennyLane syntax
@qp.qnode(dev)
def circuit(n):
for j in range(n):
qp.X(0) # Wire `0` is inferred to be a qubit
# Use hybrid CV-DV gates from hybridlane
hl.JC(np.pi / (2 * np.sqrt(j + 1)), np.pi / 2, [0, "m"])
# Mix qubit and qumode observables
return hl.expval(hl.N("m") @ qp.Z(0))
# Execute the circuit
expval = circuit(5)
# array(5.)
# Perform wire type checking
res = hl.type_check(circuit)(5)
print(res.wire_types)
# OrderedDict({0: Qubit(), 'm': Qumode()})For more examples, explore the documentation.
hybridlane is under active development. Here are some of our future goals:
- Broader measurement support: Including mid-circuit measurements and broader measurement capabilities.
- Algorithms and transformations: Implementing popular algorithms and circuit transformations from research papers, including dynamic qumode allocation.
- Symbolic Hamiltonians: Introducing support for symbolic bosonic Hamiltonians.
- Noisy simulation: Supporting noisy quantum simulations, possibly with Dynamiqs.
- Catalyst/QJIT support: Integrating with PennyLane's
qjitcapabilities by developing a custom MLIR dialect. - Community-driven features: Incorporating features requested by the community during usage.
If you find hybridlane useful in your research, you can cite our paper:
@misc{furches2026hybridlane,
title={Hybridlane: A Software Development Kit for Hybrid Continuous-Discrete Variable Quantum Computing},
author={Jim Furches and Timothy J. Stavenger and Carlos Ortiz Marrero},
year={2026},
eprint={2603.10919},
archivePrefix={arXiv},
primaryClass={quant-ph},
url={https://arxiv.org/abs/2603.10919},
}
This project is licensed under the BSD 2-Clause License - see the LICENSE.txt file for details.
This project was supported by the U.S. Department of Energy, Office of Science, Advanced Scientific Computing Research program under contract number DE-FOA-0003265.
