Skip to content

Compilers and languages

qcl

Maintained by aviggiano

QCL is one of the first implemented quantum programming languages

C++GPL-2.0
qcl illustration

Resource snapshot

Category

Compilers and languages

Stars

43

Last pushed

Jan 13, 2018Updated 8y ago

Open issues

2

What it is

qcl is maintained by aviggiano and sits in the Compilers and languages lane of the open-source quantum map.

QCL is one of the first implemented quantum programming languages

Last verified by Qtangl generator on May 27, 2026

Who it's for

Developers who want to understand the representations and compilers that sit between high-level code and runnable circuits.

What you can build or learn

  • Compare IRs, DSLs, transpilers, and compiler assumptions across ecosystems.
  • Understand how high-level code becomes something a backend can execute.
  • Spot tools that matter when interoperability and compilation quality are important.

License

GPL-2.0

SPDX identifier detected from the repository metadata or license files.

Repository README

Preview from the project README.

Rendered as Markdown inside a scrollable preview. Long READMEs stay contained; expand or open on GitHub for the full document.

~719 words · about 3 min readOpen on GitHub

QCL (Quantum Computing Language)

QCL is one of the first implemented quantum programming languages

Intro

This is a github port from the project's official homepage. The idea is to ease the contribution of programmers interested in quantum computing, through guides, documentation, tests and the development of the core language itself.

Original README by Bernhard Oemer oemer@tph.tuwien.ac.at

Despite many common concepts with classical computer science, quantum computing is still widely considered as a special discipline within the broad field of theoretical physics. One reason for the slow adoption of QC by the computer science community is the confusing variety of formalisms (Dirac notation, matrices, gates, operators, etc.), none of which has any similarity with classical programming languages, as well as the rather "physical" terminology in most of the available literature.

QCL (Quantum Computation Language) tries to fill this gap: QCL is a high level, architecture independent programming language for quantum computers, with a syntax derived from classical procedural languages like C or Pascal. This allows for the complete implementation and simulation of quantum algorithms (including classical components) in one consistent formalism.

Features:

  • a classical control language with functions, flow-control, interactive i/o and various classical data types (int, real, complex, boolean, string)
  • 2 quantum operator types: general unitarian (operator) and reversible pseudo-classic gates (qufunct)
  • inverse execution, allowing for on-the-fly determination of the inverse operator though caching of operator calls
  • various quantum data types (qubit registers) for compile time information on access modes (qureg, quconst, quvoid, quscratch)
  • convenient functions to manipulate quantum registers (q[n] - qubit, q[n:m] - substring, q&p - combined register)
  • Quantum memory management (quheap) allowing for local quantum variables
  • Transparent integration of Bennet-style scratch space management
  • Easy adaption to individual sets of elementary operators
  • graphical output for (X11 and Postscript) (v0.5)
  • conditional operators and quantum if-statements (v0.5, experimental)

Availability:

QCL has been developed under Linux; version 0.5.1 is tested to compile with the GNU C++ compiler 2.95.3 under SuSE 7.3. It should - however - compile under any Unix system with minor modifications (see the Makefile for details).

The current version of QCL (sources and i386 Linux binaries) is available from my homepage:

Documentation:

The reference documentation for QCL is my master thesis in technical physics "A Procedural Formalism for Quantum Computing". It gives a complete reference to QCL with many examples and also features a brief introduction into Quantum Computing. Some knowledge about Quantum Physics and familiarity with the braket-formalism is required.

A more basic introduction esp. for computing scientists to quantum computing, quantum algorithms and QCL is included in my CS master thesis "Quantum Programming in QCL" which also features an introductory chapter to quantum physics in general.

Both documents are available online in Postscript or HTML format:

Installation:

Besides the usual C++ development tools, you will need to have flex, bison and (optionally) GNU readline installed on your system.

Untar the source package, then cd to the QCL directory, edit the Makefile for your needs and type

  make
  make install

This will, by default, install the binary qcl to /usr/local/bin and the QCL include files to /usr/local/lib/qcl.

For plotting support, libplotter (the C++ bindings of of GNU libplot) is required. GNU libplot is part of the the GNU plotutils; see

Since version 0.4.3, QCL also includes support for the TeXmacs mathematical text editor. Recent TeXmacs distributions (1.0.0.6 or newer) already provide the necessary interfaces, so no additional installation is required. You can get the latest TeXmacs sources from

Credits:

Andrey G. Grozin A.G.Grozin@inp.nsk.su

  • initial TeXmacs support
  • color XTerm support

Muhammad Hussain Yusuf myusuf@btconnect.com

  • maintainer of the debian QCL package
  • testing of QCL on many hardware plattforms

Feedback:

If you encounter any bugs or miss any particular feature or just like QCL, please let me know. My email address is

The QCL interpreter is Open Source(tm) software, so please feel free to write your own ports and extentions. If you send me patches, I will most probably include them in future versions of QCL and maintain them to the best of my abilities. ;-) Since English isn't my native language, I also appreciate any orthographic and grammatical corrections.

Bernhard Oemer

Read on GitHub

Activity

Latest release

—

Watchers

2

Python support

—

Learn digest

Get monthly updates when library entries change.

Monthly digest: new library entries, updated flagships, and one editorial pick.

Related resources

Keep exploring nearby tools.

NVIDIA

cuda-quantum

C++ and Python support for the CUDA Quantum programming model for heterogeneous quantum-classical workflows

C++Apache-2.0Flagship

1,048 stars · Updated 3mo ago

QISKit

openqasm

Quantum assembly language for extended quantum circuits

PythonApache-2.0

1,468 stars · Updated 3mo ago

Quantomatic

pyzx

Python library for quantum circuit rewriting and optimisation using the ZX-calculus

OpenQASMApache-2.0Flagship

524 stars · Updated 3mo ago

QISKit

qiskit

Qiskit is an open-source SDK for working with quantum computers at the level of extended quantum circuits, operators, and primitives.

PythonApache-2.0FlagshipQtangl relevant

7,412 stars · Updated 3mo ago

Microsoft

QuantumKatas

Tutorials and programming exercises for learning Q# and quantum computing

Jupyter NotebookMITFlagshipArchive

4,862 stars · Updated 2y ago

CQCL

tket

Source code for the TKET quantum compiler, Python bindings and utilities

C++Apache-2.0FlagshipQtangl relevant

308 stars · Updated 3mo ago