A Second Year of Q#
You can see all of the release notes for the year here.
Remember How We Started
Our first release of our second year, 0.4, was a triumph! we got a customer request for a big integer type on January 1st, and were able to respond by shipping a new
BigInt data type just 29 short days later!! Remember, we’re outside Seattle, pretty far north, so our winter days are really short.
Our secret? We had started working on the
BigInt type in December.
We also decided to change our release cadence for our second year of Q#. Our first year, we had shipped releases sporadically, when we had some major feature to share, or possibly just a fix to an annoying bug. For our second year, we moved to a more regular release cadence, putting out a new release every month. We hoped that this would make things more predictable for our users and easier for us to manage.
We knew that a lot of people interested in quantum computing, especially in the scientific community, are far more familiar with Python than with C# or other .NET languages. We had shipped a preview version of Python interoperability as part of our first feature release after launch, but it was Windows-only and fairly limited. We knew we had to do better, so we focused on Python for the beginning of 2019.
In February and March, we added full, cross-platform Python interoperability, plus integration with Jupyter notebooks. Notebooks provide a smooth interactive experience for exploring quantum computing with Q# and Python. We set up the Quantum Katas as notebooks on Binder so that people could learn Q# and quantum computer without having to install any software locally.
In March, we also ran our second Q# coding contest.
Spring (At Last)
We spent the spring cleaning up a lot of loose ends and rough edges, preparatory for the coming open source release. Part of the clean up was delivering a boatload of new Q# language features.
Our spring cleaning extended to a major restructuring and reorganization of the Q# libraries. As part of that, we shipped a new numerics library. The Q# Style Guide made its first public appearance. The chemistry library was both reorganized and extended, including a variational eigensolver contribution from Microsoft Quantum Network partner 1QBit.
Standing Out in the Universe
Finally we were ready for the big reveal: on July 11th, we open-sourced the entire Q# compiler and QDK. It was extremely exciting for us to be able to share what we had built with the community this way. Being open source means that others can see what we’ve done and how we’ve evolved, and can help move the entire community forward by contributing code or suggestions or complaints.
Along with moving our code to open source, we’ve moved our development as well. Having our work in progress visible to the community allows all of you to see what’s coming early, and gives you a chance to have a voice in what we do before we’ve shipped it. This kind of transparency helps us deliver a better, more useful product — and as a developer, it’s incredibly helpful and gratifying to be able to get feedback early, before we’re locked into a particular path.
Here’s the Good News
Not all of the news was about Q# or the QDK. All through the past year there has been steady new development on the Quantum Katas. There are now a grand total of 19 (yes, nineteen!) Katas available, all but one of which are also available online as Jupyter notebooks. We’ve also added 8 tutorials implemented as Jupyter notebooks that provide gentle, self-paced introductions to the basic math and concepts of quantum computing and to a couple of key algorithms.
Here at Microsoft, the Q# and QDK team led projects in both Microsoft’s internal Hackathon event in July and in a Hackathon run as part of Hacktoberfest. Between the two, we received about 20 pull requests for the QDK, the libraries, and the Katas!
Above the Clouds
Just because we had moved Q# and the QDK to open source didn’t mean that we didn’t have any tricks up our sleeves. In early November, we Azure Quantum, a new Azure service that would provide access to quantum hardware and simulators and quantum-inspired optimizers from Microsoft and a host of partners. In particular, this means that soon you’ll be able to use Q# and Azure Quantum to run quantum applications on systems from 1QBit, Honeywell, IonQ, and QCI.
For us on the development team, this is incredibly exciting: full end-to-end use of Q# to drive execution of an algorithm on real quantum hardware is what all of this work is all about.
This post is part of the Q# Advent Calendar 2019. Follow the calendar for other great posts!