This proposal has been approved and the Eclipse Qrisp project has been created.
Visit the project page for the latest information and development.

Eclipse Qrisp

This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Project
Parent Project
Proposal State
Created
Background

The development of quantum algorithms with a potentially exponential speed-up over classical algorithms has caused intensive interest in industry and academia. The recent years’ advances in quantum hardware development have shown that this potential can also be utilized for various scenarios as soon as appropriate hardware is available.

The programming of general-purpose gate-based quantum computers is currently a cumbersome process, in which the developer is forced to implement algorithms based on careful and specific considerations regarding the qubit architecture/interconnectivity and the mathematical problem to be solved. This implies the need for a high-level programming language that has the capability to ease the access to quantum programming for developers, which are not necessarily tight domain experts. Besides, such a high-level programming language requires an underlying software stack consisting of various components, such as compiler, parser, transpiler, various optimizers and a hardware specific compiler.

Scope

Eclipse Qrisp provides a framework for high-level quantum programming that has the capability to facilitate fast and easy-access for non-quantum developers to quantum computing resources.

There is still a big gap between the accessible and developer-friendly programming – as known from classical computer science - and assembler-like programming for gate-based quantum computing. In order to close the above gap, further developments beyond the assembler-like circuit quantum programming towards the definition of a high-level programming language must be pursued. Programs written in such a high-level programming language must be translated by a quantum compiler into a sequence of elementary gate operations, which are then executed over the belonging firmware on the quantum computer in question.

Why Here?

Since Qrisp has a high-relevance for industrial and research communities, we hold that the Eclipse Foundation offers the best trade-off between Open Source, Transparency and the possibility to collaborate with industrial and academic partners as well as independent developers. The governance structure of established Eclipse projects shows that the Eclipse Foundation has the structures and means to efficiently steer projects, which in turn deliver high-quality code to be used in industrial and academic environments.

Project Scheduling

It is planned to grow Qrisp into a full-scale framework for implementing hybrid quantum algorithms in an abstract high-level manner. The basic features are already available in the initial contribution. We plan to engage a larger community and after one year to continue implementing different quantum-hybrid algorithms including such from quantum machine learning and artificial intelligence.

We plan to have the first “build” very soon after the initial commit and hope to immediately move into incubation status. Afterwards, we hope that within a year we can reach mature status. Afterwards, we plan to have regular major and official releases with new features required for the selected quantum algorithms.

Future Work

The future work regarding Qrisp involves its establishment as a pioneer framework for high-level quantum programming that has the capability to facilitate fast and easy-access for non-quantum developers to quantum computing resources. This implies the implementation of additional features for high-level quantum programming which will be required by the continuously growing set of quantum-hybrid algorithms to be implemented in the coming years.

Description

Qrisp is a high-level programming language for working with quantum computers. Qrisp is designed to enable programmers to write complex quantum algorithms with the ease of a modern day programming language, while still compiling down to the circuit level. By automating much of the low-level coding duties, such as gate-by-gate assembly or qubit management, we aim to open this field of research to a broad audience of developers. Qrisp was originally developed at Fraunhofer FOKUS funded by the German ministry for economic affairs and climate action.

The state of the art in programming a quantum computer pretty much resembles programming in assembler – even worse, while assembler provides at least some basic commands more abstract than the actual hardware gates, in quantum computing using gates and qubits only, is the standard. Frameworks like Qiskit or Cirq allow the user to create sub-circuits which can be reused in larger, more complex circuits. However, the handling of the circuits is still rather cumbersome.

Qrisp aims to tackle this challenge by trying to hide the qubit and gate structure of the underlying circuits as much as possible. This is achieved by conceptually replacing gates and qubits by functions and variables. This permits the creation of much more complex circuits than would ever be possible with handling gates and qubits directly. Of course, moving to variables and functions does not end programming with gates and qubits. The elementary quantum functions still need their implementation - under the hood - compiled using gates and qubits. This is why Qrisp comes with its own circuit creation module, which has most of the relevant features known from the established circuit creation frameworks.

Variables and functions not only simplify the management of highly complex circuits – due to the structure of an actual programming language many circuits can be created in a highly modular manner. This improves the possibility to easily maintain or upgrade certain parts of the code.

Apart from allowing highly complex circuit creation, Qrisp can also serve a pedagogical aspect, opening up this realm to non-physicists. This is because in Qrisp many quantum functions and control structures are already pre-programmed and therefore do not require the understanding of complex linear algebra that is needed when comprehending gate sequences.

Committers
Mentors
Interested Parties

eleQtron GmbH, University Siegen, T-Systems, T-Labs, Daimler, Porsche Digital, SAP

Initial Contribution

The initial contribution consists of the code that is already available as Open Source on the Fraunhofer FOKUS GitHub Repository (https://github.com/fraunhoferfokus/Qrisp).

The code encompasses several modules that enable the utilization of high-level programming artefacts such as Data Types, Quantum Variables, different environments, if-conditionals and cycles (to mention a few) as well as the belonging compilation and execution infrastructure - e.g. QuantumSessions for interacting with backends and algorithms for compiling the high-level artefacts to gate-based quantum circuits.  Moreover, the project contains its own state-vector simulator that enables the easy access and direct simulated execution on a development PC.

A set of test cases is also provided. These test cases serve the purpose to automatically check the quality of the Qrisp implementation and to continuously verify that the intended functionality has not been compromised by new developments and features. The test cases can be setup to run as part of a CI/CD pipeline.

In addition to the above code, the framework is well documented and the corresponding documentation can be found online under the https://www.qrisp.eu address. There one can find different toy and “hello world” examples as well as more sophisticated implementations of common quantum hybrid algorithms (e.g. Grover, TSP …).

The code belongs to the Fraunhofer society and has been published under the “Eclipse Public License 2.0” with “(Secondary) GNU General Public License, version 2 with the GNU Classpath Exception”.

Qrisp has been developed with public funding in the scope of the Qompiler (https://qompiler.fokus.fraunhofer.de/) project, which is financed by the German BMWK (“Federal Ministry for Economic Affairs and Climate Action”).

Qrisp is written in pure Python implying it can be installed conveniently with PyPi (“pip install qrisp”). Currently Python version 3.8, 3.9 & 3.10 have been confirmed to work with Qrisp.

Following libraries are directly utilized in the Qrisp code with their corresponding licenses:

* Flask 2.1.3 BSD License

* Jinja2 3.1.2 BSD License

* MarkupSafe 2.1.1 BSD License

* Pillow 9.2.0 Historical Permission Notice and Disclaimer (HPND)

* PyJWT 2.6.0 MIT License

* PyQt5 5.15.7 GPL v3

* PyQt5-sip 12.11.0  SIP

* PySocks  1.7.1  BSD

* PyYAML  6.0  MIT License

* Werkzeug  2.0.3  BSD License

* anyio  3.6.2  MIT License

* atomicwrites  1.4.0  MIT License

* attrs  21.4.0  MIT License

* brotlipy  0.7.0  MIT

* cachetools  5.3.0  MIT License

* certifi  2022.9.24  Mozilla Public License 2.0 (MPL 2.0)

* cffi  1.15.1  MIT License

* charset-normalizer  2.0.4  MIT License

* cirq  1.1.0  Apache 2

* cirq-aqt  1.1.0  Apache 2

* cirq-core  1.1.0  Apache 2

* cirq-google  1.1.0  Apache 2

* cirq-ionq  1.1.0  Apache 2

* cirq-pasqal  1.1.0  Apache 2

* cirq-rigetti  1.1.0  Apache 2

* cirq-web  1.1.0  Apache 2

* click  8.0.4  BSD License

* clickclick  20.10.2  Apache Software License

* colorama  0.4.5  BSD License

* connexion  2.14.0  Apache License Version 2.0

* cryptography  38.0.1  Apache Software License; BSD License

* cycler  0.11.0  BSD License

* decorator  5.1.1  BSD License

* dill  0.3.6  BSD License

* duet  0.2.7  Apache 2

* fonttools  4.25.0  MIT License

* google-api-core  1.34.0  Apache Software License

* google-auth  2.16.0  Apache Software License

* googleapis-common-protos  1.58.0  Apache Software License

* grpcio  1.51.1  Apache Software License

* grpcio-status  1.48.2  Apache Software License

* h11  0.14.0  MIT License

* httpcore  0.16.3  BSD License

* httpx  0.23.3  BSD License

* idna  3.4  BSD License

* importlib-metadata  4.11.3  Apache Software License

* inflection  0.5.1  MIT License

* iniconfig  1.1.1  MIT License

* iso8601  1.1.0  MIT License

* itsdangerous  2.0.1  BSD License

* jsonschema  4.16.0  MIT License

* kiwisolver  1.4.2  BSD License

* lark  0.11.3  MIT License

* llvmlite  0.39.1  BSD

* matplotlib  3.5.3  Python Software Foundation License

* mkl-fft  1.3.1  BSD

* mkl-random  1.2.2  BSD

* mkl-service  2.4.0  BSD

* mpmath  1.2.1  BSD License

* msgpack  0.6.2  Apache Software License

* munkres  1.1.4  Apache Software License

* networkx  2.8.4  BSD License

* nodejs  0.1.1  UNKNOWN

* npm  0.1.1  UNKNOWN

* npx  0.1.1  BSD License

* ntlm-auth  1.5.0  MIT License

* numba  0.56.3  BSD License

* numpy  1.21.5  BSD License

* optional-django  0.1.0  UNKNOWN

* packaging  21.3  Apache Software License; BSD License

* pandas  1.5.3  BSD License

* pbr  5.11.0  Apache Software License

* pluggy  1.0.0  MIT License

* ply  3.11  BSD

* proto-plus  1.22.2  Apache Software License

* protobuf  3.20.3  BSD-3-Clause

* psutil  5.9.4  BSD License

* py  1.11.0  MIT License

* pyOpenSSL  22.0.0  Apache Software License

* pyasn1  0.4.8  BSD License

* pyasn1-modules  0.2.8  BSD License

* pycparser  2.21  BSD License

* pydantic  1.10.4  MIT License

* pyparsing  3.0.9  MIT License

* pyqir  0.7.0  MIT License

* pyqir-generator  0.4.2a1  MIT License

* pyquil  3.3.3  Apache Software License

* pyrsistent  0.18.0  MIT License

* pytest  7.1.2  MIT License

* python-dateutil  2.8.2  Apache Software License; BSD License

* python-rapidjson  1.9  MIT License

* pytz  2022.7.1  MIT License

* pyzmq  25.0.0  BSD License; GNU Library or Lesser General Public License (LGPL)

* qcs-api-client  0.21.3  Apache Software License

* qiskit  0.39.2  Apache Software License

* qiskit-aer  0.11.1  Apache Software License

* qiskit-ibmq-provider  0.19.2  Apache Software License

* qiskit-qir  0.2.0  MIT License

* qiskit-terra  0.22.2  Apache Software License

* requests  2.28.1  Apache Software License

* requests-ntlm  1.1.0  ISC License (ISCL)

* retry  0.9.2  Apache Software License

* retrying  1.3.4  Apache Software License

* retworkx  0.12.0  Apache Software License

* rfc3339  6.2  ISCL

* rfc3986  1.5.0  Apache Software License

* rpcq  3.10.0  Apache-2.0

* rsa  4.9  Apache Software License

* ruamel.yaml  0.17.21  MIT License

* ruamel.yaml.clib  0.2.7  MIT License

* rustworkx  0.12.0  Apache Software License

* scipy  1.9.3  BSD License

* sip  6.6.2  SIP

* six  1.16.0  MIT License

* sniffio  1.3.0  Apache Software License; MIT License

* sortedcontainers  2.4.0  Apache Software License

* stevedore  4.1.1  Apache Software License

* sympy  1.10.1  BSD License

* thrift  0.17.0  Apache License 2.0

* toml  0.10.2  MIT License

* tomli  2.0.1  MIT License

* tornado  6.2  Apache Software License

* tqdm  4.64.1  MIT License; Mozilla Public License 2.0 (MPL 2.0)

* tweedledum  1.1.1  MIT License

* types-python-dateutil  2.8.19.6  Apache Software License

* types-retry  0.9.9.1  Apache Software License

* typing_extensions  4.4.0  Python Software Foundation License

* urllib3  1.26.12  MIT License

* waitress  2.1.2  Zope Public License

* websocket-client  1.4.2  Apache Software License

* websockets  10.4  BSD License

* win-inet-pton  1.1.0  Public Domain

* wincertstore  0.2  Python Software Foundation License

* zipp  3.8.0  MIT License                                       

Source Repository Type