Blackbird Quantum Assembly Language
###################################

.. image:: https://img.shields.io/travis/com/XanaduAI/blackbird/master.svg?style=for-the-badge
    :alt: Travis
    :target: https://travis-ci.com/XanaduAI/blackbird/

.. image:: https://img.shields.io/codecov/c/github/xanaduai/blackbird/master.svg?style=for-the-badge
    :alt: Codecov coverage
    :target: https://codecov.io/gh/XanaduAI/blackbird

.. image:: https://img.shields.io/readthedocs/quantum-blackbird.svg?style=for-the-badge
    :alt: Read the Docs
    :target: https://quantum-blackbird.readthedocs.io


Blackbird is a quantum assembly language for continuous-variable quantum computation, that can be used to program Xanadu's quantum photonics hardware and Strawberry Fields simulator.



Features
--------

The Blackbird repository contains three *separate* packages:

* ``src``: The Blackbird grammar specification in enhanced Brackus-Naur form

* ``blackbird_python``: to develop Blackbird parsers for integration with Python programs

* ``blackbird_cpp``: libraries and header files needed to develop Blackbird
  parsers for integration with C++ programs

All of these packages are independent, and can be installed separately without
depending on one-another. *However*, if the grammar is ever modified, there
is a command for updating the autogenerated parts of the Python and C++
parsers.

In addition, this repository contains:

* ``example``: Example Blackbird scripts

* ``apps``: Example Python/C++ applications using the above parsers


Getting started
---------------

Blackbird is a development library, designed to easily integrate Blackbird code
into applications and interfaces.

To get the Blackbird grammar installed and running on your system, begin at the `grammar installation guide <https://quantum-blackbird.readthedocs.io/en/latest/installing.html>`_. Then, familiarize yourself with the Blackbird's `syntax and grammar <https://quantum-blackbird.readthedocs.io/en/latest/syntax.html>`_ for specifying photonic quantum circuits. You can even generate Blackbird parsers for any target language supported
by ANTLR, including Java, C#, JavaScript, Go, and Swift.


If you only want to develop an application that makes use of the `Python parser <https://quantum-blackbird.readthedocs.io/en/latest/blackbird_python/init.html>`_ or the `C++ parser <https://quantum-blackbird.readthedocs.io/en/latest/blackbird_cpp/overview.html>`_, you can go directly to those sections and their corresponding installation guides.



How to cite
-----------


If you are doing research using Blackbird, please cite

    Nathan Killoran, Josh Izaac, Nicolás Quesada, Ville Bergholm, Matthew Amy, and Christian Weedbrook.
    *Strawberry Fields: A Software Platform for Photonic Quantum Computing* 2018. `arXiv:1804.03159 <https://arxiv.org/abs/1804.03159>`_

Support
-------

- **Source Code:** https://github.com/XanaduAI/Blackbird
- **Issue Tracker:** https://github.com/XanaduAI/Blackbird/issues

If you are having issues, please let us know by posting the issue on our Github issue tracker.

License
-------

Blackbird is **free** and **open source**, released under the Apache License, Version 2.0.
