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.7-cp310-abi3-win_amd64.whl (4.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

qir_qis-0.1.7-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.7-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.7-cp310-abi3-macosx_11_0_arm64.whl (21.0 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

qir_qis-0.1.7-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.7-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: qir_qis-0.1.7-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.7-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 519e8166838ce8db5daeb11b434d52580a2e5840c7ebc46733c1b89d17f9181d
MD5 4926f46a4db0ef383b73f98dbbf976f9
BLAKE2b-256 d0508f61e5951d071cfbe154501bf5f6d2946fa96ec6ec913c189e57d6e2cc9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.7-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.7-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for qir_qis-0.1.7-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ab12853247c1f939ad30bfe5ff2b1bdde06480a7acc5c745e6eb7f2599c32e80
MD5 5506e8260dbd45336752ac1be37e77f9
BLAKE2b-256 d96c2f2ab611ab33426899184133d02741a7d9b12667141bb7848f628c4828d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.7-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.7-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for qir_qis-0.1.7-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6b0b7d4ef757db8ac211c97959c316f4a0ba441a7be2f611fda887bbec172323
MD5 de34ff80ead4bcc29bcc7e4415a6ddfd
BLAKE2b-256 aea7fb173c00ca09de30f0487f1fcacdbe9af89e12a2d721a13bdf49b7a06c8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.7-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.7-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for qir_qis-0.1.7-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5cefabf5f3e837e068f48abcc3f726a4998a9336bd3f28e92cd194bf7a79736d
MD5 b0ec0c828a3c69c1b6fd451a1256f0e4
BLAKE2b-256 6380b773a5a66cc1a1c4179ca2831e8361cbfa3cd4ed9b801b1a82b5439039c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.7-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.7-cp310-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qir_qis-0.1.7-cp310-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5adcdcf490d8eb7932b74da382e4f18b38e3df9fa25334a809ce63108b8660a5
MD5 f03c8e8688d90ba36fd972a496a0e131
BLAKE2b-256 5306c73025bc455ad8a3c0875144a86e5b1e8616f5a2be0c87a55583425a0dde

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.7-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