Skip to main content

QIR to Quantinuum QIS (Quantum Instruction Set) compiler

Project description

QIR-QIS

Crates.io PyPI

A compiler that validates and translates QIR (Quantum Intermediate Representation) to Quantinuum QIS (Quantum Instruction Set). This tool enables quantum programs written in QIR to run on Quantinuum's quantum computing systems.

Features

  • QIR Validation: Validates QIR bitcode for correctness and spec compliance
  • QIS Translation: Compiles QIR to Quantinuum's native QIS instruction set
  • Python & Rust API: Use as a Rust library or Python package
  • CLI Tool: Command-line interface for quick compilation

See qtm-qir-reference.md for details on supported QIR features and their mapping to Quantinuum QIS.

Installation

From Source (Rust)

Requirements:

  • Rust >= 1.91.0
  • LLVM 21
# Point llvm-sys to your LLVM 21 installation
export LLVM_SYS_211_PREFIX=/path/to/llvm21

cargo build --release

The compiled binary will be available at target/release/qir-qis.

Python Package

Requirements:

  • Python >= 3.10, < 3.15
  • uv (recommended) or pip

Available pre-built wheels:

  • Linux: x86_64 (manylinux_2_28), aarch64 (manylinux_2_28)
  • macOS: x86_64, arm64 (Apple Silicon)
  • Windows: x86_64

All wheels support Python 3.10+ using the stable ABI (abi3).

# Using uv (recommended)
uv pip install qir-qis

# Using pip
pip install qir-qis

Usage

Command Line

Compile a QIR LLVM IR file to QIS bitcode:

# Basic usage
qir-qis input.ll

# With custom optimization level
qir-qis -O 3 input.ll

# Specify target architecture
qir-qis -t x86-64 input.ll

# Or using cargo
cargo run -- input.ll

This generates input.qis.bc containing the compiled QIS bitcode.

On Windows, the default mode is conservative: -O 0 -t native. Optimized conversion paths remain temporarily disabled there because the current LLVM 21 integration can crash in those modes.

Python API

See examples/python_api.py for a complete working example.

uv run examples/python_api.py

For a more comprehensive example with quantum simulation, see main.py.

Rust API

See examples/rust_api.rs for a complete working example.

cargo run --example rust_api

Platform Notes

Windows support is functional, but a few LLVM integration paths still differ from Linux and macOS:

  • Optimized conversion currently fails fast on Windows with a clear error instead of entering the known unstable LLVM path.
  • LLVM verifier failures return a generic error on Windows instead of the full verifier message.
  • Native target codegen on Windows uses conservative CPU settings instead of host CPU feature detection.
  • -O0 optimization on Windows is a validation-only fast path and does not rewrite the module triple.

These limitations are implementation details of the current LLVM/Inkwell integration rather than QIR feature differences.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for:

  • How to report issues and submit pull requests
  • Coding standards and commit message format
  • Development workflow and testing requirements

Development setup, test commands, and LLVM upgrade guidance live in DEVELOPMENT.md. Release notes are available in CHANGELOG.md.

License

Apache-2.0

Copyright Quantinuum

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

qir_qis-0.1.8-cp310-abi3-win_amd64.whl (4.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

qir_qis-0.1.8-cp310-abi3-manylinux_2_28_x86_64.whl (30.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64

qir_qis-0.1.8-cp310-abi3-manylinux_2_28_aarch64.whl (29.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

qir_qis-0.1.8-cp310-abi3-macosx_11_0_arm64.whl (21.0 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

qir_qis-0.1.8-cp310-abi3-macosx_10_9_x86_64.whl (21.9 MB view details)

Uploaded CPython 3.10+macOS 10.9+ x86-64

File details

Details for the file qir_qis-0.1.8-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: qir_qis-0.1.8-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 4.2 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qir_qis-0.1.8-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f0b132d582fb110a18147eb16db2a5ae6a716b4a014b0618f471011c40a12fc1
MD5 f4f940a556e2bbbb26432d67629872fb
BLAKE2b-256 2431fc4bbe9157a5dcbaa3a28d3cc28ec29711c20f621f00a6302a0cb627a0c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.8-cp310-abi3-win_amd64.whl:

Publisher: wheels-release.yml on Quantinuum/qir-qis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qir_qis-0.1.8-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for qir_qis-0.1.8-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8ff56f0f16e5ace37828a3b398017a4915c55fcb0479361281b9ec13628e2be5
MD5 2db17aa47a7df76948ffaf13c3c0f42d
BLAKE2b-256 470e3b4de5f64a600f49df99129703b819bbc3b51bd570d06bdbec15305ebfa1

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.8-cp310-abi3-manylinux_2_28_x86_64.whl:

Publisher: wheels-release.yml on Quantinuum/qir-qis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qir_qis-0.1.8-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for qir_qis-0.1.8-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9c27f5e32e0ec26b2cfe61b81022775aa0c7c9ce371c75fdd4d8fdacdc2a59c6
MD5 4811f00551251ce1c7ae28c4c0bb9e65
BLAKE2b-256 4561d70e18facc6c919e01e5ca7dca50b2a0b41a0ee44a0cc18569cf1c7686a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.8-cp310-abi3-manylinux_2_28_aarch64.whl:

Publisher: wheels-release.yml on Quantinuum/qir-qis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qir_qis-0.1.8-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for qir_qis-0.1.8-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2baabc01a6538906d4b7be37f5169237419aac2933e193ef82909b82c525dac1
MD5 9cbd1d545b26324d16924d6a583ff654
BLAKE2b-256 971e7d2d1a2d8e2955b3e3c491f67aead4205e7a17dcd2ed18b9d999ba337fbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.8-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: wheels-release.yml on Quantinuum/qir-qis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qir_qis-0.1.8-cp310-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qir_qis-0.1.8-cp310-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 eb5614319504815b93a551c4a9f9485ff70efd4c05414b4ce8cc933368e0f5e3
MD5 2ff879be3975337ad1fe05f18c4e97b3
BLAKE2b-256 ceac11711f962921cb87044401be994bdf69a0b5cfad7af355f81bbe28d6a56d

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.8-cp310-abi3-macosx_10_9_x86_64.whl:

Publisher: wheels-release.yml on Quantinuum/qir-qis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page