This change removes the code for the qir-stdlib and instead compiles a wrapper library for it, allowing the source code from https://github.com/qir-alliance/qir-runner to the be authoritative implementation.
* Implementing Library functions in Q#
This change implements several Q# functions that were previously `body intrinsic` via existing Q# functionality. This improves compatibility with QIR generation and allows us to remove the corresponding manual C# implementation in favor of compiler generated ones. This will also improve compatibility of programs that use these functions with full QIR targets like resource estimation.
* Update src/Simulation/QSharpFoundation/Convert/Convert.qs
Co-authored-by: Robin Kuzmin <9372582+kuzminrobin@users.noreply.github.com>
* Check length of array
* Fix two's complement handling
* Simplify bounds check
Co-authored-by: Robin Kuzmin <9372582+kuzminrobin@users.noreply.github.com>
This adds a `ResultArrayAsInt` implementation that is compatible with QIR hardware compilation to the target packages. This will allow it to act as an override for the libraries definition while still supporting calculation of the integer value on platforms that can support it.
* Remove Honeywell provider and update test to use Quantinuum
* Revert changes to internal .NET Honeywell-Quantinuum providers
* Correct the namespace of the Quantinuum target
* Revert support for Honeywell entrypoint/targets
* Update Quantinuum target
* Add parallel Rust QIR Runtime
* Remove old dependencies
* Use --all-targets clippy, corresponding fixes
* Add conditionals instrinc support, result_to_string
* Add QIR simulator support
* Share C++ tests across Rust impl
* Add to build scripts
* Fix build ordering
* Fix CI cleanup
* More build fixes
* Fix build bug
* Minor error message fix
* Move result related api into sim
* refactor qir_runtime, split out qir_sim
* Use BigUint for sparse sim indexing
* Type updates, sparse nearly_zero fix
* Consolidation and optimization of sparse sim
* Rust qubit/result to string fixes
* Fullstate sim as QIR backend, staticlib runtime
* rename runtime to stdlib
* rename sim to backend
* remove conditionals support
* Fix public module ref
* Update cmdline tool to use simulator QIR backend
* Use whole-archive linking on non-Windows
* Use thread_local for simulator init
* Use all_load on MacOS
* Skip QIR libs,include for runtime tool
* Use force_load on MacOs
* Try alternate MacOS linking strategy
* Use full path in MacOs linking
* Try explicit lib name
* Clean up and comments
* Remove QIR C++ runtime, rename folders
* Use environment variables in native sim build
* Put back Tools tests
* Remove tracer test from solution
* Remove unused qir_backend
* Include full state sim lib in nuget package
* Update array unit tests
* Update bigint unit tests
* Update range unit tests
* Update strings unit tests
* __quantum__rt__fail will print string before panic
* Fix broken readme links
* Fix formatting in arrays.rs
* Clarifying comments, minor fixes from initial review
* Fix formatting
* Add `__quantum__rt__message_record_output`
* Clean up file encoding for .cargo/config.toml
* Updating script patterns
* Updates from PR feedback
* Fix double free typo in tests
* More updates from PR feedback
* Remove leftover debug line
* Added unit documentation to Rx Rz and Ry operations
* Added documentation to theta argument for each
* Update src/Simulation/TargetDefinitions/Decompositions/Rx.qs
Co-authored-by: Stefan J. Wernli <swernli@microsoft.com>
Co-authored-by: Hal Owens <t-halowens@microsoft.com>
Co-authored-by: Stefan J. Wernli <swernli@microsoft.com>
* Remove unused Rust sys crate, minor clean up
This removes the Rust sys crate that wrapped the C++ runtime since it was no longer used. In addition, it moves some rustc flags configuration out of build scripts and into a repo-wide settings file, resolves a cargo warning by moving profile settings up to the root of the workspace, and cleans up a few leftover functions listed as dllexport in the runtime header files despite having no implementation.
* Fixes for PR feedback
* Update the version of Azure.Storage.Blobs to pull in a security patch
* Update Azure.Core to prevent a version conflict with the Azure.Storage.Blobs upgrade
* Update to Azure.Storage.Blobs 12.13.1 released on 2022-08-22
Co-authored-by: Ricardo Espinoza <ricardoe@microsoft.com>
This updates the native simulator to participate in BinSkim checks by ensuring that it produces symbols even when built in release mode. Any further BinSkim fixes will be added if necessary.
This fixes the operation of `SpreadZ` when running on lists of more than 3 qubits. It adds tests that operate on lists of 1 to 4 qubits.
Fixes#1021 Bug in the internal `SpreadZ` operation (used in `Exp` decomposition)