We are excited to release v1.10 of the Azure Quantum Development Kit! This month's release includes several new features and improvements including:
Code editing improvements
Code editing is now greatly improved. A couple of examples of the many improvements:
-
Context aware completions (#1947) show only the relevant completions for the location. For example, only showing types when in a type position:
-
Namespace member (#1947) completion lists are now provided when drilling into namespaces:
-
User Defined Type (#1954) member completions are now populated
And much more! Parser error recovery has also been greatly improved so that editor assistance is available whilst mid-edit in many more scenarios.
Noisy simulation
You can now add Pauli noise to simulations run from Python or VS Code (#1971, #1975, #1980). This can help model the results of running on a real quantum machine for education purposes, and to help develop and test the effectiveness of error correction.
Below shows the results of configuring 5% bit-flip noise in VS Code and running a histogram on the GHZ sample. This would return only
To see how to use noisy simulation in Python, check out the sample notebook at https://github.com/microsoft/qsharp/blob/main/samples/notebooks/noise.ipynb
Refreshed API docs interface
The in-editor Q# API documentation has had a UI refresh (#1978). This is accessed via the "Q#: Show API documentation" command in the command palette when editing a Q# file. The new UX allows you to quickly & easily search & navigate the APIs within your project, referenced projects, and the standard library.
File icons
The Q# file extension (.qs) now gets a unique icon in VS Code (#1976)
Custom measurements and resets
Previously you could define custom gates, but not custom measurement or reset operations. With #1967, #1981, and #1985 this is now possible. This allows for the definition and use of custom operations for quantum simulation and QIR code generation.
Samples for this feature will be added shortly, in the meantime see the test code at https://github.com/microsoft/qsharp/blob/v1.10.1/compiler/qsc/src/codegen/tests.rs#L529 for an example of how this may be used.
Python telemetry
In this release we have added telemetry to our qsharp
Python package to collect minimal and anonymous metrics on feature usage and performance. This will allow us to focus our investments going forward on the most valuable areas. Please see the notes in the package readme for details on what is collected and how to disable it.
What's changed
And much more!! See the below list of changes in this release for the full details.
- Added DoubleAsStringWithPrecision function - Multiple Katas by @devikamehra in #1897
- bump @vscode/test-web by @minestarks in #1945
- Refactor physical resource estimation by @msoeken in #1943
- Update yarn dependencies by @billti in #1948
- Update filtering for targets by @cesarzc in #1949
- Add summary lines back into stdlib readmes by @sezna in #1952
- add Q# package registry document by @sezna in #1932
- Error budget pruning strategy in resource estimator core by @msoeken in #1951
- Use all github dependencies in published libraries by @sezna in #1956
- Set the markdown renderer on load by @billti in #1957
- Bump pyo3 from 0.22.2 to 0.22.4 by @dependabot in #1964
- Minor lint fix for Rust 1.81 by @swernli in #1965
- Fix to partial evaluation generating branch instructions on constant conditions by @cesarzc in #1963
- Show no quantum state when debugging code with no qubits by @swernli in #1953
- More precise completions and namespace member completions by @minestarks in #1947
- allow needless raw string hashes and unnecessary wraps by @sezna in #1969
- UDT field completions by @minestarks in #1954
- Rust 1.82 by @idavis in #1970
- Added Pauli noise support to sparse simulator by @DmitryVasilevsky in #1971
- Add custom measurement operations to Q# by @orpuente-MS in #1967
- Expose pauli noise settings in VS Code by @billti in #1975
- Python clients can now run simulation with Pauli noise by @DmitryVasilevsky in #1974
- Add .qs file icons by @billti in #1976
- Fix py38 types by @billti in #1977
- Python: Result should implement comparison operators by @minestarks in #1979
- Improve the built-in API docs UX by @billti in #1978
- Added sample notebook with noise by @DmitryVasilevsky in #1980
- Add support for custom resets using the
@Reset()
attribute by @orpuente-MS in #1981 - Telementry event for noisy simulation by @DmitryVasilevsky in #1982
- Unify implementations of custom measurements and custom resets by @orpuente-MS in #1985
- Initial Python telemetry by @billti in #1972
- Fix Py3.8 type error by @billti in #1988
- More parser error recovery, unlocking completions in more locations by @minestarks in #1987
DumpMachine
output in Python and console should be empty with no qubits allocated by @swernli in #1984DumpMachine
in playground should display message when no qubits are allocated by @swernli in #1989- Disable completions in attribute arguments by @minestarks in #1986
- Allow
Default::default()
pattern by @sezna in #1991 - Add telemetry events for interop by @idavis in #1990
- Bump version to 1.10 by @billti in #1992
- Revert "Set min python version to 3.9 and add 3.12 to list" by @idavis in #1996
- No completions in comments by @minestarks in #1999
Full Changelog: v1.9.0...v1.10.1