# OpenQASM

> intermediate representation for quantum instructions

**Wikidata**: [Q48998901](https://www.wikidata.org/wiki/Q48998901)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/OpenQASM)  
**Source**: https://4ort.xyz/entity/openqasm

## Summary
OpenQASM (Open Quantum Assembly Language) is an intermediate representation for quantum instructions, serving as a standardized language to describe quantum circuits and programs. Developed by IBM Research, it enables hardware abstraction and portability across quantum computing platforms.

## Key Facts
- **Classification**: An instance of a quantum programming language.
- **Developer**: IBM Research.
- **Publication Date**: July 2017 (initial version).
- **License**: Apache Software License 2.0 (since March 6, 2019).
- **Website**: https://openqasm.com/
- **Source Repository**: https://github.com/QISKit/openqasm
- **Aliases**: Open Quantum Assembly Language.
- **Current Stable Version**: 3.1.0 (released May 15, 2024).
- **Described At**: https://arxiv.org/abs/1707.03429 (initial specification).

## FAQs
### Q: What is OpenQASM used for?
A: OpenQASM serves as an intermediate representation for quantum instructions, allowing quantum programs and circuits to be described in a hardware-agnostic way. This facilitates portability between different quantum computing systems.

### Q: How does OpenQASM differ from a quantum programming language?
A: While OpenQASM is classified as a quantum programming language, its primary role is as an intermediate representation. It acts as a standardized assembly language for quantum circuits, bridging high-level quantum algorithms and low-level hardware-specific operations.

### Q: What are the main versions of OpenQASM?
A: Key versions include 2.0 (November 2020), 3.0 (November 2020; stable 3.0.0 in August 2023), and 3.1.0 (stable May 2024). Version 3.0.0 and 3.1.0 are current stable releases.

### Q: Who developed OpenQASM?
A: OpenQASM was developed by IBM Research as part of the Qiskit project and is now stewarded through the openqasm GitHub organization.

## Why It Matters
OpenQASM addresses a critical challenge in quantum computing: the lack of standardized communication between different quantum software tools and hardware. By defining a universal intermediate representation, it enables quantum programs written for one platform or abstraction level (like high-level circuit designers) to be translated for execution on physically diverse quantum hardware (superconducting, trapped ions, etc.). This interoperability accelerates development, reduces vendor lock-in, and fosters a more collaborative quantum computing ecosystem. It underpins popular frameworks like Qiskit and is essential for the practical scaling of quantum applications.

## Notable For
- **Industry Standard Adoption**: Recognized as a de facto standard for quantum circuit representation across major quantum computing platforms.
- **IBM Research Origin**: Developed initially within IBM's Quantum Research team.
- **Evolution from OpenQASM 2.0 to 3.1**: Underwent significant updates, with 3.x versions introducing features like classical control flow and error correction primitives.
- **Open-Source Foundation**: Licensed under Apache Software License 2.0, promoting open collaboration and development.
- **Long-Term Stewardship**: Transitioned from QISKit/openqasm to openqasm/openqasm GitHub organization for broader community governance.

## Body
### Overview & Purpose
OpenQASM (Open Quantum Assembly Language) is an intermediate representation (IR) designed to describe quantum circuits and programs. Its core function is to provide a standardized, hardware-agnostic way of representing quantum operations, bridging the gap between high-level quantum algorithms and low-level machine instructions specific to quantum hardware backends.

### Licensing & Development
- **License**: Apache Software License 2.0 (effective since March 6, 2019).
- **Initial Developer**: IBM Research.
- **Source Repository**: Originally hosted at `github.com/QISKit/openqasm`, now maintained at `github.com/openqasm/openqasm`.
- **Website**: Official site is https://openqasm.com/.

### Version History
- **Initial Publication**: July 2017 (ArXiv: https://arxiv.org/abs/1707.03429).
- **Version 2.0**:
  - Released November 10, 2020.
  - Specification: https://arxiv.org/abs/1707.03429.
  - Release Tag: `github.com/Qiskit/openqasm/releases/tag/2.0`.
- **Version 3.0**:
  - Specified November 5, 2020 (ArXiv: https://arxiv.org/abs/2104.14722).
  - Stable Version 3.0.0 released August 16, 2023 (Tag: `github.com/openqasm/openqasm/releases/tag/3.0.0`).
- **Version 3.1.0**:
  - Stable Version released May 15, 2024 (Tag: `github.com/openqasm/openqasm/releases/tag/spec/v3.1.0`).
- **Status**: Versions 3.0.0 and 3.1.0 are current stable releases.

### Classification & Context
- **Type**: Quantum Programming Language (Intermediate Representation).
- **Role**: Enables portable description of quantum circuits.
- **Ecosystem**: Integral to quantum frameworks like IBM's Qiskit, facilitating code generation for diverse quantum hardware.

## References

1. [Source](https://api.github.com/repos/QISKit/openqasm)
2. [Release 2.0. 2020](https://github.com/Qiskit/openqasm/releases/tag/2.0)
3. [Release 3.0. 2020](https://github.com/Qiskit/openqasm/releases/tag/3.0)
4. [Release 3.0.0. 2023](https://github.com/openqasm/openqasm/releases/tag/3.0.0)
5. [Release 3.1.0. 2024](https://github.com/openqasm/openqasm/releases/tag/spec/v3.1.0)
6. [Source](https://arxiv.org/abs/1707.03429)