microsoft / qsharp

Azure Quantum Development Kit, including the Q# programming language, resource estimator, and Quantum Katas
https://microsoft.github.io/qsharp/
MIT License
465 stars 93 forks source link

Q# Language Design Notes and Specification #1807

Closed filipw closed 3 months ago

filipw commented 4 months ago

Is your feature request related to a problem? Please describe. In the past there existed a Q# Language design repository at https://github.com/microsoft/qsharp-language. It provided a proper language specification, a transparent process of handling proposed changes to the language, as well as their implementation status. A good example is here

The specification was updated at the end of 2023 to capture some of the changes introduced in Q# for QDK 1.x, but after that the repository was archived and is no longer maintained.

At the same time Q# keeps getting changed and it is difficult to keep track of those changes - what is the motivation behind the changes, their justification, impact and formal description.

Describe the solution you'd like A formal, up-to-date, Q# language specification, as well as a documented process of introducing syntactic and semantic changes to the language.

Hope this makes sense!

sezna commented 4 months ago

Hey @filipw! Thanks for the feedback.

You're right in that we don't maintain that formal spec anymore. While we are making a lot of changes right now, we are ensuring that they are all backwards compatible so that you won't feel the pressure to stay on the bleeding edge. This also gives us a bit of time to follow up with documentation etc. after we merge the updates in on Github. So, you can expect updated documentation and tutorials soon.

Your feedback is heard, though, and we had a discussion -- we'll be more diligent about using the language-approved tag to denote that an issue is going to be worked on. That should serve as a roadmap of sorts, as it'll show pending/upcoming changes. Next week we'll go through our issues and ensure that tag is used in the correct places.

Additionally, qe do try to update issues with designs as they're created. For example, I recently reworked namespaces, and kept the issue updated here: https://github.com/microsoft/qsharp/issues/493.

Does this address your concerns?

filipw commented 4 months ago

Thanks - that will certainly help! The more structure, and the more transparency, the better if you ask me 🙂

Even without a formal specification, it might be good to have a some sort of a public roadmap so that it's a bit more clear what is the end goal and where we are heading mid- and long-term. This could even be as simple as a collection of links to issues labeled as "language" with some overarching commentary.

sezna commented 3 months ago

Hey @filipw!

In response to this issue, we've cleaned up our issue labels and have been going through all of our needs triage issues. We aren't quite done yet, but we will be soon.

Here's how you can interpret our priorities, given the labels:

If somebody is assigned to something in this list, it means they're actively working on it. Here's the current list of language issues.

I'm going to close this issue for now, but feel free to continue commenting here if you have any questions or feedback. And also feel free to participate in any of the language issues if you have any thoughts on their design. Thanks!