Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

Conversation

@cgranade
Copy link
Contributor

This PR moves generation of C API headers for qdk_sim_experimental from build.rs to a manual step. This avoids mozilla/cbindgen#560, allowing for cargo package to proceed and fully verify the qdk_sim_experimental crate.

@cgranade
Copy link
Contributor Author

Thanks for the approval, @swernli! Since the e2e build logic needed to validate this PR is still only on the feature branch, and since merging from the feature branch to main will require a new cross-repo build anyway, any objections on merging to this to the feature with only a local build passing? Thanks!

@swernli
Copy link
Collaborator

swernli commented Jun 15, 2021

Seems reasonable to me! Feel free to merge to the feature branch.

@cgranade cgranade merged commit 56f1d5d into feature/experimental/opensim Jun 16, 2021
@cgranade cgranade deleted the cgranade/manual-cbindgen branch June 16, 2021 00:07
cgranade pushed a commit that referenced this pull request Jun 17, 2021
* Start experimental simulators feature (#709)

* Experiment to hook up Rust crate to cmake.

* Add experimental simulator as rlib crate.

* Expanded C API, started consolidating Cargo.toml.

* Just the one crate will do.

* First unit test of QIR ↔ opensim.

* Add rust to builds.

* Start adding to CI.

* Don't set toolchain in CI.

* Started building managed interface.

* Add System.Text.Json dependency.

* Add native opensim sharedlibs to nupkg.

* Updated DLL name in NativeInterface.

* downgrade s.t.json.

* Fix pack.ps1 paths.

* Set --release flag in opensim.

* Add get_name.

* Added rest of c_api to NativeInterface.cs.

* Initial attempt at type1 implementation.

* Add open systems data model.

* Fix null reference exception by adding explicit qubit manager.

* Started using QSharpCore interface temporarily.

* Begin adding decompositions for opensim.

* Expose noise_model::ideal() through c_api.

* Fix json serialization of instruments.

* More informative exceptions in SetNoiseModel

* Pass DumpMachine through OnDisplayableDiagnostic.

* Began addressing warnings and adding unit tests.

* A couple more tests.

* Started enabling doctests for Rust runtime.

* Fix new doctest.

* Added more API doc comments.

* A bit of code cleanup.

* Start adding integration tests for experimental simulator in C# runtime.

* Fix teleport test.

* Attempt at fixing project-based tests.

* One more Rust-side unit test.

* Added opensim to local dev props, and reverted bad change to unittests.qs.

* Undo one other bad change.

* Disable test that depends on Rz.

* Started adding Rust-language integration tests.

* Added more informative error message when R is not supported.

* Forgot to add test data to prev commit.

* Start enabling performance reporting for opensim.

* Adapt opensim / managed interface to #538.

* Adapt QIR / opensim interface to #553.

* Apply rust-fmt, and reduce extraneous copying in conjugate_by.

* Started weakening from owned arrays to views.

* Weakened tensor to views by owning views and borrowing owns.

* Started adding microbenchmarks.

* extend_two_to_n

* Clear diskspace and build microbenchmarks in CI.

* Clean more aggressively to avoid disk space issues.

* Format, fix warnings, simplify Cargo.toml.

* Fix choco rustup in prereqs.

* Disable choco rustup.

* Fix path to Cargo.toml.

* Don't check Rust-style names with clang-tidy.

* M is no longer overriden.

* Temporarily disable QIR / opensim integration.

* Clean up extra cargo files after testing opensim.

* Work on API docs and refactoring of Rust crate.

* Separate out qdk_sim into its own crate.

* Work on testing and enforcing rust fmt.

* Run clippy in tests as well.

* Add code quality checks to build/test.

* Ignore jupyter temps and xplat drops.

* Begin exposing build metadata through to C# callers.

* Start injecting version number from build into Cargo.toml.

* Started infrastructure to expose simulation functionality to Python.

* Ignore Python temporaries and build artifacts.

* More partial progress on exposing to Python.

* Add initial precommit config.

* Introduce fmt error.

* Add new checks to pre-commit.

* Continued integrating CHP into simulator API.

* Address clippy warnings.

* Work on docs.

* Separate out paulis.rs.

* Expose more simulation functionality to Python.

* Generalize C API to allow using other state representations.

* Enable CFG for C / Rust boundaries.

* Move Cargo.toml injection into bootstrap.

* Fix path from bootstrap to Cargo.toml injection, debug injection.

* One more path fix.

* One more path fix.

* Remove --release from cargo package.

* Revert CFG change to cmake.

* Fix Rust build script.

* Debug artifact paths.

* Debug drop paths as well.

* More path debugging.

* Fix build paths.

* Don't cargo clean build artifacts away.

* Fix one character typo in Simulators.Dev.props.

* Fix one more dev props typo.

* Eliminate unneeded copy.

* Improve naming conventions in processes.rs.

* Fix pack.ps1 to include qdk_sim_rs drops.

* Expose more information in exceptions.

* Fix one more path.

* Add links on cargo-clippy.

* Fix issues in C API benchmarking.

* Improve Python bindings for NoiseModel.

* Improve readme for qdk_sim_rs crate.

* Improve noise model handling, add test coverage.

* Update System.Text.Json to 4.7.2.

* Address clippy warnings.

* Don't use new C# 9 features.

* Don't store cargo lockfile in repo for now.

* Remove outdated gitignore.

* Fix serialization test, false negatives.

* Use +nightly to run doctests.

* Allow serializing and deserializing mixed pauli channels.

* Expose as_json to more Python classes.

* Added ideal_stabilizer noise model, split up processes, and start CHP decomp.

* Allow applying CHP decompositions.

* Fix clippy warnings.

* Check error conditions on get_noise_model.

* Allow for getting/setting noise models by name.

* Expose as_json for State to Python.

* Added stabilizer states to data model for serialization.

* Significantly expanded documentation.

* Added header explaining how to call cargo doc.

* Fix doctest.

* Add extra assertions.

* Add more debug outputs to assertion failure.

* Fixed assertion.

* Fixed assert.

* Fix clippy warning.

* Update src/Simulation/Simulators/OpenSystemsSimulator/NativeInterface.cs

Co-authored-by: Robin Kuzmin <kuzmin.robin@gmail.com>

* Fixed C# serialization.

* Slight comment fixes.

* Fix build failure.

* Address review comments.

* qdk_sim → qdk_sim_experimental,improve Python version handling.

* Revert src/Qir to main.

QIR integration deferred to #713.

* Add prerequisites.ps1.

* Finish reverting QIR.

* Generate C++ headers as well as C.

* Fixed issue building docs locally with python disabled.

* Updated link to tracking issue for experimental sims.

* Gate `cargo clean` on CI builds.

* Addressing feedback.

* Force dependency on S.T.Encodings.Web to be >= 4.7.2.

* Adding comment to explain serialization field.

* Added README link to experimental simulators doc.

* Fix typo.

* Add stabilizers to state converter.

* Move format/linting checks to build from test.

* Fix stabilizer noise model serialization, added new test.

* Work on docs.

* Fixed some slight issues with n_qubits handling.

* Update documentation notebook.

* Regenerate notebook from latest build.

* Fixed some serialization issues.

* Fixed some serialization tests.

* Expose build info and fix mixed pauli channels.

* Updated documentation notebook from latest build.

Co-authored-by: Robin Kuzmin <kuzmin.robin@gmail.com>

* Finish remaining decompositions for initial version of experimental simulators. (#724)

* Update documentation notebook for latest IQ# bugfix.

* Started work on decompositions.

* Added more detail to documentation notebook.

* Moved all decomposition logic to Q# operations.

* Added more decompositions.

* Make known limitations more explicit in README.md.

* Move known limitations to Markdown documentation./

* Started adding tests of decompositions.

* Added missing `open` statement.

* Don't mark decompositions as internal.

* Fixed build issue (💕 to @swernli for all the help!)

* Unit tests now pass.

* Address feedback.

* Fix two small build issues.

* Added comment explaining reset / release.

* Remove DLL added by accident.

* Removed one more file added by accident.

* Revert "Removed one more file added by accident."

This reverts commit 1cc67a3.

* Added comment explaining vcomp140.dll.

* Call cbindgen manually (#730)

* Call cbindgen manually instead of in build.rs.

* Updated metadata in Cargo.toml.

* Addressing feedback from @swernli.

* Update src/Simulation/Simulators/OpenSystemsSimulator/README.md

Co-authored-by: Robin Kuzmin <kuzmin.robin@gmail.com>

* Update src/Simulation/qdk_sim_rs/docs/c-api.md

Co-authored-by: Robin Kuzmin <kuzmin.robin@gmail.com>

* Update src/Simulation/qdk_sim_rs/docs/c-api.md

* Addressing feedback on c-api.md.

Co-authored-by: Robin Kuzmin <kuzmin.robin@gmail.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants