hybridlane
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).
🚀 Features
-
⚛️ 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.
⚙️ Installation
Install the package from PyPI:
pip install hybridlane
For more details on installation and optional dependencies, see the installation guide.
⚡ Quick Start
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.
🗺️ Roadmap
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.
Citing hybridlane
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},
}
📜 License
This project is licensed under the BSD 2-Clause License - see the LICENSE.txt file for details.
🙏 Acknowledgements
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.
Metadata
Release files for hybridlane 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| hybridlane-0.8.0.tar.gz | 111.9 kB | Without provenance | Details for hybridlane-0.8.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| hybridlane-0.8.0-py3-none-any.whl | Python 3 | none | any | Details for hybridlane-0.8.0-py3-none-any.whl |
Total release size: 269.5 kB
Release files / hybridlane-0.8.0.tar.gz
| Download URL | hybridlane-0.8.0.tar.gz |
|---|---|
| Size | 111.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c2aca6775e61d144e27654dbf0d4a9ea695e30fef7717409d036a27bb9c205c7
|
|
BLAKE2b-256 checksum How to use checksums |
1ec151632a0e57c8971e260a6a719f0b20cb33ebcff8e1827b4686c503720442
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / hybridlane-0.8.0-py3-none-any.whl
| Download URL | hybridlane-0.8.0-py3-none-any.whl |
|---|---|
| Size | 157.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2d291acd4e490fdc130018a2f4cfd0ee8e92a1ccdba569b245c1ee6f80fd89fb
|
|
BLAKE2b-256 checksum How to use checksums |
b8c9cc435640b660797bdfc697ecef015c828805e8d8a9b75f0efc648f040d19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for hybridlane 0.8.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.