Repository: qir-alliance/pyqir (language: python)

Issue:
Add conditional feature support for python bindings and more LLVM versions
I'm working on integrating these crates into some of our QIR work, and it would be nice to not include the Python bindings in places where they are not needed. 

Additionally, at least one of our projects allows the use of LLVM version up to 12 or 13, so this PR also includes more features in each crate that uses `llvm-ir` or `inkwell` to support those versions too. 

All `default-features` have been kept unchanged, so the crates should function precisely the same as if none of the new features were added. 

I've confirmed, at least locally, that our downstream projects work as expected when using/disabling these features.


Discussion / hints:
[![CLA assistant check](https://cla.opensource.microsoft.com/pull/badge/signed)](https://cla.opensource.microsoft.com/qir-alliance/pyqir?pullRequest=114) <br/>All CLA requirements met.
Thanks for the PR @nilslice . This PR would close #35. In order to fully add this, a few more changes are required:

1. `Use-LlvmInstallation` in `utils.ps1` needs to use the correct env variable based on the llvm version
2. Update docs for env vars that need to get set for llvm linking (LLVM_SYS_*)
3. Update `build.rs` with llvm tags based on features that work. Something like:
```rust
fn get_llvm_tag() -> String {
    if let Ok(tag) = env::var("QIRLIB_LLVM_TAG") {
        tag
    } else {
        if cfg!(feature = "llvm-11") {
            "llvmorg-11.1.0".to_owned() // 1fdec59bf
        } else if cfg!(feature = "llvm-12") {
            "llvmorg-12.0.1".to_owned() // fed4134
        } else if cfg!(feature = "llvm-13") {
            "llvmorg-13.0.1".to_owned() // 75e33f7
        } else if cfg!(feature = "llvm-14") {
            "llvmorg-14.0.3".to_owned() // 1f91400
        } else {
            panic!(
                "Unsupported LLVM version. The LLVM feature flags or QIRLIB_LLVM_TAG must be set."
            )
        }
    }
}
```
4. Update the pipelines to create a feature matrix across the LLVM versions setting `QIRLIB_LLVM_TAG` for each build. These versions haven't been tested and we don't know if they will compile and run cleanly.

Additionally, we need to figure out:
- What version of LLVM is the default?
- What version of LLVM is used in the published packages?
- How long do we maintain support for various LLVM versions?

/CC @swernli @bettinaheim 
@nilslice Based on your PR I have changes with llvm 13 building. I'm merging #111 which has a lot of build cleanup that we can use as a better base for these changes. We have to also bring llvm-sys as an optional dependency for the all-targets-init suppression. 

Fix patch:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f30d1ed5..93e8efeb 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -104,7 +104,9 @@ jobs:
         uses: actions/upload-artifact@v2
         with:
           name: manylinux-artifacts
-          path: target/wheels/*manylinux*.whl
+          path: |
+            target/wheels/*manylinux_2_17*.whl
+            target/wheels/pyqir-*.whl
         if: ${{ matrix.config.os == 'ubuntu-20.04' }}
       - name: Artifacts
         uses: actions/upload-artifact@v2
diff --git a/Cargo.lock b/Cargo.lock
index 9304389d..b4ca762e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -11,17 +11,6 @@ dependencies = [
  "memchr",
 ]
 
-[[package]]
-name = "atty"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-dependencies = [
- "hermit-abi",
- "libc",
- "winapi",
-]
-
 [[package]]
 name = "autocfg"
 version = "1.1.0"
@@ -64,6 +53,15 @@ version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
+[[package]]
+name = "cmake"
+version = "0.1.48"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a"
+dependencies = [
+ "cc",
+]
+
 [[package]]
 name = "cty"
 version = "0.2.2"
@@ -76,19 +74,6 @@ version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
-[[package]]
-name = "env_logger"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
-dependencies = [
- "atty",
- "humantime",
- "log",
- "regex",
- "termcolor",
-]
-
 [[package]]
 name = "error-chain"
 version = "0.10.0"
@@ -121,21 +106,6 @@ dependencies = [
  "wasi",
 ]
 
-[[package]]
-name = "hermit-abi"
-version = "0.1.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "humantime"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
-
 [[package]]
 name = "indoc"
 version = "0.3.6"
@@ -162,12 +132,15 @@ dependencies = [
 [[package]]
 name = "inkwell"
 version = "0.1.0"
-source = "git+https://github.com/TheDan64/inkwell?branch=master#36c3b106e61b1b45295a35f94023d93d9328c76f"
+source = "git+https://github.com/TheDan64/inkwell?branch=master#6ab2b19e1b90be55fa4f9f056f29bd1ed557b990"
 dependencies = [
  "either",
  "inkwell_internals",
  "libc",
- "llvm-sys",
+ "llvm-sys 110.0.3",
+ "llvm-sys 120.2.4",
+ "llvm-sys 130.0.4",
+ "llvm-sys 140.0.2",
  "once_cell",
  "parking_lot 0.12.0",
 ]
@@ -175,7 +148,7 @@ dependencies = [
 [[package]]
 name = "inkwell_internals"
 version = "0.5.0"
-source = "git+https://github.com/TheDan64/inkwell?branch=master#36c3b106e61b1b45295a35f94023d93d9328c76f"
+source = "git+https://github.com/TheDan64/inkwell?branch=master#6ab2b19e1b90be55fa4f9f056f29bd1ed557b990"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -199,9 +172,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 
 [[package]]
 name = "libc"
-version = "0.2.121"
+version = "0.2.125"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f"
+checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b"
 
 [[package]]
 name = "llvm-ir"
@@ -210,7 +183,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7f292d36cc01be049372faa8e5fb4aaa261d4875f7d5cdc59a86353434b7ed02"
 dependencies = [
  "either",
- "llvm-sys",
+ "llvm-sys 110.0.3",
+ "llvm-sys 120.2.4",
+ "llvm-sys 130.0.4",
  "log",
 ]
 
@@ -224,7 +199,46 @@ dependencies = [
  "lazy_static",
  "libc",
  "regex",
- "semver",
+ "semver 0.11.0",
+]
+
+[[package]]
+name = "llvm-sys"
+version = "120.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09b716322964966a62377cf86e64f00ca7043505fdf27bd2ec7d41ae6682d1e7"
+dependencies = [
+ "cc",
+ "lazy_static",
+ "libc",
+ "regex",
+ "semver 0.11.0",
+]
+
+[[package]]
+name = "llvm-sys"
+version = "130.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdb6ea20e8a348f6db0b43a7f009fa7d981d22edf4cbe2e0c7b2247dbb25be61"
+dependencies = [
+ "cc",
+ "lazy_static",
+ "libc",
+ "regex",
+ "semver 0.11.0",
+]
+
+[[package]]
+name = "llvm-sys"
+version = "140.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a4ad24a72823cb06764e04a008d4aedc1be56d2be87aa4212b12a3e9f77bb10"
+dependencies = [
+ "cc",
+ "lazy_static",
+ "libc",
+ "regex",
+ "semver 1.0.9",
 ]
 
 [[package]]
@@ -239,18 +253,18 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.16"
+version = "0.4.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
 dependencies = [
  "cfg-if",
 ]
 
 [[package]]
 name = "memchr"
-version = "2.4.1"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
 
 [[package]]
 name = "mut_static"
@@ -291,7 +305,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58"
 dependencies = [
  "lock_api",
- "parking_lot_core 0.9.2",
+ "parking_lot_core 0.9.3",
 ]
 
 [[package]]
@@ -310,9 +324,9 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.2"
+version = "0.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "995f667a6c822200b0433ac218e05582f0e2efa1b922a3fd2fbaadc5f87bab37"
+checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929"
 dependencies = [
  "cfg-if",
  "libc",
@@ -355,6 +369,30 @@ version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
 
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
 [[package]]
 name = "proc-macro-hack"
 version = "0.5.19"
@@ -363,18 +401,18 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.36"
+version = "1.0.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
+checksum = "9027b48e9d4c9175fa2218adf3557f91c1137021739951d4932f5f8268ac48aa"
 dependencies = [
  "unicode-xid",
 ]
 
 [[package]]
 name = "pyo3"
-version = "0.15.1"
+version = "0.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cf01dbf1c05af0a14c7779ed6f3aa9deac9c3419606ac9de537a2d649005720"
+checksum = "d41d50a7271e08c7c8a54cd24af5d62f73ee3a6f6a314215281ebdec421d5752"
 dependencies = [
  "cfg-if",
  "indoc",
@@ -388,18 +426,18 @@ dependencies = [
 
 [[package]]
 name = "pyo3-build-config"
-version = "0.15.1"
+version = "0.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbf9e4d128bfbddc898ad3409900080d8d5095c379632fbbfbb9c8cfb1fb852b"
+checksum = "779239fc40b8e18bc8416d3a37d280ca9b9fb04bda54b98037bb6748595c2410"
 dependencies = [
  "once_cell",
 ]
 
 [[package]]
 name = "pyo3-macros"
-version = "0.15.1"
+version = "0.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67701eb32b1f9a9722b4bc54b548ff9d7ebfded011c12daece7b9063be1fd755"
+checksum = "00b247e8c664be87998d8628e86f282c25066165f1f8dda66100c48202fdb93a"
 dependencies = [
  "pyo3-macros-backend",
  "quote",
@@ -408,9 +446,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros-backend"
-version = "0.15.1"
+version = "0.15.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f44f09e825ee49a105f2c7b23ebee50886a9aee0746f4dd5a704138a64b0218a"
+checksum = "5a8c2812c412e00e641d99eeb79dd478317d981d938aa60325dfa7157b607095"
 dependencies = [
  "proc-macro2",
  "pyo3-build-config",
@@ -420,9 +458,8 @@ dependencies = [
 
 [[package]]
 name = "pyqir-evaluator"
-version = "0.4.0-alpha"
+version = "0.4.1-alpha"
 dependencies = [
- "inkwell",
  "pyo3",
  "qirlib",
  "serial_test",
@@ -432,8 +469,6 @@ dependencies = [
 name = "pyqir-generator"
 version = "0.4.1-alpha"
 dependencies = [
- "env_logger",
- "log",
  "pyo3",
  "qirlib",
 ]
@@ -452,23 +487,30 @@ version = "0.3.0"
 dependencies = [
  "base64",
  "bitvec",
+ "cc",
+ "cmake",
  "cty",
  "inkwell",
  "lazy_static",
- "llvm-sys",
+ "llvm-sys 110.0.3",
+ "llvm-sys 120.2.4",
+ "llvm-sys 130.0.4",
+ "llvm-sys 140.0.2",
  "log",
  "mut_static",
  "normalize-line-endings",
  "rand",
+ "regex",
+ "semver 1.0.9",
  "serial_test",
  "tempfile",
 ]
 
 [[package]]
 name = "quote"
-version = "1.0.17"
+version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58"
+checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
 dependencies = [
  "proc-macro2",
 ]
@@ -544,6 +586,12 @@ dependencies = [
  "winapi",
 ]
 
+[[package]]
+name = "rustversion"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"
+
 [[package]]
 name = "scopeguard"
 version = "1.1.0"
@@ -559,6 +607,12 @@ dependencies = [
  "semver-parser",
 ]
 
+[[package]]
+name = "semver"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cb243bdfdb5936c8dc3c45762a19d12ab4550cdc753bc247637d4ec35a040fd"
+
 [[package]]
 name = "semver-parser"
 version = "0.10.2"
@@ -570,9 +624,9 @@ dependencies = [
 
 [[package]]
 name = "serial_test"
-version = "0.5.1"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0bccbcf40c8938196944a3da0e133e031a33f4d6b72db3bda3cc556e361905d"
+checksum = "e5bcc41d18f7a1d50525d080fd3e953be87c4f9f1a974f3c21798ca00d54ec15"
 dependencies = [
  "lazy_static",
  "parking_lot 0.11.2",
@@ -581,12 +635,14 @@ dependencies = [
 
 [[package]]
 name = "serial_test_derive"
-version = "0.5.1"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2acd6defeddb41eb60bb468f8825d0cfd0c2a76bc03bfd235b6a1dc4f6a1ad5"
+checksum = "2881bccd7d60fb32dfa3d7b3136385312f8ad75e2674aab2852867a09790cae8"
 dependencies = [
+ "proc-macro-error",
  "proc-macro2",
  "quote",
+ "rustversion",
  "syn",
 ]
 
@@ -598,9 +654,9 @@ checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"
 
 [[package]]
 name = "syn"
-version = "1.0.90"
+version = "1.0.93"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "704df27628939572cd88d33f171cd6f896f4eaca85252c6e0a72d8d8287ee86f"
+checksum = "04066589568b72ec65f42d65a1a52436e954b168773148893c020269563decf2"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -627,15 +683,6 @@ dependencies = [
  "winapi",
 ]
 
-[[package]]
-name = "termcolor"
-version = "1.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
-dependencies = [
- "winapi-util",
-]
-
 [[package]]
 name = "ucd-trie"
 version = "0.1.3"
@@ -644,15 +691,21 @@ checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
 
 [[package]]
 name = "unicode-xid"
-version = "0.2.2"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
+checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"
 
 [[package]]
 name = "unindent"
-version = "0.1.8"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52fee519a3e570f7df377a06a1a7775cdbfb7aa460be7e08de2b1f0e69973a44"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "514672a55d7380da379785a4d70ca8386c8883ff7eaae877be4d2081cebe73d8"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
 
 [[package]]
 name = "wasi"
@@ -676,15 +729,6 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
-[[package]]
-name = "winapi-util"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
-dependencies = [
- "winapi",
-]
-
 [[package]]
 name = "winapi-x86_64-pc-windows-gnu"
 version = "0.4.0"
@@ -693,9 +737,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 
 [[package]]
 name = "windows-sys"
-version = "0.34.0"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5acdd78cb4ba54c0045ac14f62d8f94a03d10047904ae2a40afa1e99d8f70825"
+checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
 dependencies = [
  "windows_aarch64_msvc",
  "windows_i686_gnu",
@@ -706,33 +750,33 @@ dependencies = [
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.34.0"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d"
+checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.34.0"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed"
+checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.34.0"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956"
+checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.34.0"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4"
+checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.34.0"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9"
+checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
 
 [[package]]
 name = "wyz"
diff --git a/Cargo.toml b/Cargo.toml
index 9ba36862..ff17a7dd 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -5,3 +5,4 @@ members = [
     "pyqir-parser",
     "qirlib",
 ]
+resolver = "2"
\ No newline at end of file
diff --git a/docs/development-guide/building.md b/docs/development-guide/building.md
index cf8fa920..f26d32c8 100644
--- a/docs/development-guide/building.md
+++ b/docs/development-guide/building.md
@@ -27,7 +27,7 @@ Install python and libs:
 ```bash
 sudo apt-get install -y --no-install-recommends python3-dev python3-pip
 python3 -m pip install --user -U pip
-python3 -m pip install --user maturin tox
+python3 -m pip install --user maturin
 ```
 
 Install Rust from [rustup](https://rustup.rs/).
@@ -43,7 +43,7 @@ path.
 In a command prompt:
 
 ```bash
-python -m pip install --user maturin tox
+python -m pip install --user maturin
 ```
 
 Install Rust from [rustup](https://rustup.rs/).
@@ -56,7 +56,7 @@ or brew:
 
 ```bash
 brew install 'python@3.9'
-python -m pip install --user maturin tox
+python -m pip install --user maturin
 ```
 
 Install Rust from [rustup](https://rustup.rs/).
@@ -88,9 +88,7 @@ not, you can install Clang manually:
 
 The build scripts will automatically download an LLVM toolchain which is
 detailed in the [Development](#development) section. The build installs the
-toolchain to `$HOME/.pyqir` (Windows: `$HOME\.pyqir`) and configures Rust to use
-this installation by setting the `LLVM_SYS_110_PREFIX` environment variable in
-the root `.cargo/config.toml`
+toolchain to `target/llvm-<version>`.
 
 ## Development
 
@@ -101,38 +99,38 @@ the solution, run
 ./build.ps1
 ```
 
-Alternatively, you can use `build.sh` or `build.cmd`.
+Alternatively, you can use `build.sh` or `build.cmd`. This will compile
+`qirlib` and its dependencies with the appropriate environment
+variables set for their build scripts. After this is run, the build
+commands below can be used instead of `build.(ps1|sh|cmd)`.
 
 The {ref}`building/environment-variables` section
 details ways to change this behavior.
 
 Within each project folder, the build can be run specifically for that project.
 
+For any of these commands, the LLVM version must be added via features. For `maturin`,
+they must be added to the `cargo-extra-args` option.
+
+- `<features>` is a placeholder for `--features (llvm11-0 | llvm12-0 | llvm13-0)`
+- `qirlib` can be compiled with `llvm14-0`
+
 Build commands:
 
-- `maturin build`: Build the crate into python packages
-- `maturin build --release`: Build and pass --release to cargo
+- `maturin build --cargo-extra-args="<features>"`: Build the crate into python packages
+- `maturin build --release --cargo-extra-args="<features>"`: Build and pass --release to cargo
 - `maturin build --help`: to view more options
-- `maturin develop`: Installs the crate as module in the current virtualenv
-- `maturin develop && pytest`: Installs the crate as module in the current
+- `maturin develop --cargo-extra-args="<features>"`: Installs the crate as module in the current virtualenv
+- `maturin develop --cargo-extra-args="<features>" && pytest`: Installs the crate as module in the current
   virtualenv and runs the Python tests
 
 If you do not wish to package and test the Python wheels, `cargo` can be used to
 build the project and run Rust tests.
 
-- `cargo build`: Build the Rust cdylib
-- `cargo build --release`: Build the Rust cdylib in release mode
-- `cargo test`: Build and run the Rust cdylib tests
-- `cargo test --release`: Build and run the Rust cdylib tests in release mode
-
-[Tox](https://tox.readthedocs.io/) can be used as well:
-
-Two targets are available for tox:
-
-- `python -m tox -e test`
-- Runs the python tests in an isolated environment
-- `python -m tox -e pack`
-- Packages all wheels in an isolated environment
+- `cargo build <features>`: Build the Rust cdylib
+- `cargo build --release <features>`: Build the Rust cdylib in release mode
+- `cargo test <features>`: Build and run the Rust cdylib tests
+- `cargo test --release <features>`: Build and run the Rust cdylib tests in release mode
 
 ### Environment Variables
 
@@ -148,8 +146,8 @@ default order is:
 
 - Use specific LLVM installation if specified
 - Locate existing LLVM installation on `PATH`
-- Download LLVM if allowed from specified source
 - Build LLVM from source
+- Download LLVM if allowed from specified source
 
 Afterward, the build configures the `LLVM_SYS_*_PREFIX` environment variable
 according to what the environment has configured. This will allow LLVM to
@@ -157,13 +155,12 @@ be linked into the rest of the build.
 
 ### Packaging
 
-The `build.(ps1|sh|cmd)`, `maturin`, and `tox` builds all generate Python wheels
+The `build.(ps1|sh|cmd)`, `maturin` builds all generate Python wheels
 to the `target/wheels` folder. The default Python3 installation will be used
 targeting Python ABI 3.6.
 
 The manylinux support uses a Docker image in the build scripts to run the builds
 in the CI environment.
 
-The Windows packaging will look for python installations available and build for
-them. More information on [supporting multiple python versions on
-Windows](https://tox.readthedocs.io/en/latest/developers.html?highlight=windows#multiple-python-versions-on-windows)
+The musllinux support uses a Docker image in the build scripts to run the builds
+in the CI environment.
diff --git a/eng/musllinux.Dockerfile b/eng/musllinux.Dockerfile
index 85849cd4..0e049693 100644
--- a/eng/musllinux.Dockerfile
+++ b/eng/musllinux.Dockerfile
@@ -115,4 +115,6 @@ RUN python -m pip install --no-cache-dir cffi
 
 COPY --from=builder ${CARGO_HOME}/bin/maturin /usr/bin/maturin
 
-RUN python -m pip install -U tox
+ENV VIRTUAL_ENV=/opt/venv
+RUN python -m venv $VIRTUAL_ENV
+ENV PATH="$VIRTUAL_ENV/bin:$PATH"
diff --git a/eng/musllinuxCI.Dockerfile b/eng/musllinuxCI.Dockerfile
index 1adc1f19..20adc3f1 100644
--- a/eng/musllinuxCI.Dockerfile
+++ b/eng/musllinuxCI.Dockerfile
@@ -88,4 +88,6 @@ RUN python -m pip install --no-cache-dir cffi
 
 COPY --from=builder ${CARGO_HOME}/bin/maturin /usr/bin/maturin
 
-RUN python -m pip install -U tox
+ENV VIRTUAL_ENV=/opt/venv
+RUN python -m venv $VIRTUAL_ENV
+ENV PATH="$VIRTUAL_ENV/bin:$PATH"
diff --git a/eng/psakefile.ps1 b/eng/psakefile.ps1
index 094f3b2f..1d208c06 100644
--- a/eng/psakefile.ps1
+++ b/eng/psakefile.ps1
@@ -110,7 +110,7 @@ task cargo-fmt {
 task cargo-clippy -depends init {
     Invoke-LoggedCommand -workingDirectory $repo.root -errorMessage "Please fix the above clippy errors" {
         $extraArgs = (Test-CI) ? @("--", "-D", "warnings") : @()
-        cargo clippy --workspace --all-targets @extraArgs
+        cargo clippy --workspace --all-targets @("$($env:CARGO_EXTRA_ARGS)" -split " ") @extraArgs
     }
 }
 
@@ -130,24 +130,14 @@ task pyqir-tests -depends init {
     $srcPath = $repo.root
 
     exec -workingDirectory (Join-Path $srcPath "pyqir-tests") {
-        if (Test-InCondaEnvironment) {
-            Invoke-LoggedCommand -wd $pyqir.generator.dir {
-                maturin develop --release --cargo-extra-args="-vv"
-            }
-            Invoke-LoggedCommand -wd $pyqir.evaluator.dir {
-                maturin develop --release --cargo-extra-args="-vv"
-            }
-            & $python -m pip install pytest
-            & $python -m pytest
+        Invoke-LoggedCommand -wd $pyqir.generator.dir {
+            maturin develop --release --cargo-extra-args="$($env:CARGO_EXTRA_ARGS)"
         }
-        else {
-            Invoke-LoggedCommand {
-                & $python -m pip install tox
-            }
-            Invoke-LoggedCommand {
-                & $python -m tox -v -e (Get-ToxTarget)
-            }
+        Invoke-LoggedCommand -wd $pyqir.evaluator.dir {
+            maturin develop --release --cargo-extra-args="$($env:CARGO_EXTRA_ARGS)"
         }
+        & $python -m pip install pytest
+        & $python -m pytest
     }
 }
 
@@ -167,7 +157,7 @@ task qirlib -depends init {
         }
         try {
             Invoke-LoggedCommand -wd $pyqir.qirlib.dir {
-                cargo test --release -vv
+                cargo test --release @("$($env:CARGO_EXTRA_ARGS)" -split " ")
             }
         }
         finally {
@@ -181,11 +171,11 @@ task qirlib -depends init {
     }
     else {
         Invoke-LoggedCommand -wd $pyqir.qirlib.dir {
-            cargo test --release -vv
+            cargo test --release @("$($env:CARGO_EXTRA_ARGS)" -split " ")
         }
     }
     Invoke-LoggedCommand -wd $pyqir.qirlib.dir {
-        cargo build --release -vv
+        cargo build --release @("$($env:CARGO_EXTRA_ARGS)" -split " ")
     }
 }
 
@@ -224,11 +214,36 @@ task docs -depends wheelhouse {
     }
 }
 
-task init {
+task check-environment {
+    $env_message = @(
+        "PyQIR requires a virtualenv or conda environment to build.",
+        "Neither the VIRTUAL_ENV nor CONDA_PREFIX environment variables are set).",
+        "See https://virtualenv.pypa.io/en/latest/index.html on how to use virtualenv"
+    )
+    if((Test-InVirtualEnvironment) -eq $false) {
+        Write-BuildLog "No virtual environment found."
+        $pyenv = Join-Path $repo.target ".env"
+        Write-BuildLog "Setting up virtual environment in $($pyenv)"
+        & $python -m venv $pyenv
+        if($IsWindows) {
+            . (Join-Path $pyenv "Scripts" "Activate.ps1")
+        } else {
+            . (Join-Path $pyenv "bin" "Activate.ps1")
+        }
+    } else {
+        Write-BuildLog "Virtual environment found."
+    }
+    # ensure that we are now in a virtual environment
+    Assert ((Test-InVirtualEnvironment) -eq $true) "$($env_message -join ' ')"
+}
+
+task init -depends check-environment {
     if ((Test-CI)) {
         cargo install maturin --git https://github.com/PyO3/maturin --tag v0.12.12
     }
-    
+
+    $env:CARGO_EXTRA_ARGS = "-vv --features `"$(Get-LLVMFeatureVersion)`""
+
     # qirlib has this logic built in when compiled on its own
     # but we must have LLVM installed prior to the wheels being built.
     
@@ -239,7 +254,7 @@ task init {
     }
     else {
         $packagePath = Resolve-InstallationDirectory
-        if (Test-Path (Join-Path $packagePath "bin")) {
+        if (Test-LlvmConfig $packagePath) {
             Write-BuildLog "LLVM target is already installed."
             # LLVM is already downloaded
             Use-LlvmInstallation $packagePath
@@ -257,12 +272,16 @@ task init {
                 # So we need to build it.
                 Invoke-Task "install-llvm-from-source"
             }
+            $installationDirectory = Resolve-InstallationDirectory
+            Use-LlvmInstallation $installationDirectory
         }
     }
 }
 
 task install-llvm-from-archive {
     install-llvm $pyqir.qirlib.dir "download"
+    $installationDirectory = Resolve-InstallationDirectory
+    Assert (Test-LlvmConfig $installationDirectory) "install-llvm-from-archive failed to install a usable LLVM installation"
 }
 
 
@@ -270,7 +289,9 @@ task install-llvm-from-source -depends configure-sccache -postaction { Write-Cac
     if ($IsWindows) {
         Include vcvars.ps1
     }
-    install-llvm $pyqir.qirlib.dir "build"
+    install-llvm "$($pyqir.qirlib.dir)" "build" "$(Get-LLVMFeatureVersion)"
+    $installationDirectory = Resolve-InstallationDirectory
+    Assert (Test-LlvmConfig $installationDirectory) "install-llvm-from-source failed to install a usable LLVM installation"
 }
 
 task package-musllinux-llvm -depends build-musllinux-container-image -preaction { Write-CacheStats } -postaction { Write-CacheStats } {
@@ -394,9 +415,9 @@ task run-examples-in-musl-containers {
 # run-examples assumes the wheels have already been installed locally
 task run-examples {   
     exec -workingDirectory $pyqir.generator.examples_dir {
-        & $python -m pip install -U pip
+        & $python -m pip install -U pip wheel
         & $python -m pip install -r requirements.txt
-        & $python -m pip install --user -U --no-index --find-links (Join-Path $repo.root "target" "wheels") pyqir-generator
+        & $python -m pip install -U --no-index --find-links (Join-Path $repo.root "target" "wheels") pyqir-generator
         & $python "bell_pair.py" | Tee-Object -Variable bell_pair_output
         $bell_first_line = $($bell_pair_output | Select-Object -first 1)
         $bell_expected = "; ModuleID = 'Bell'"
@@ -410,7 +431,7 @@ task run-examples {
     }
 
     exec -workingDirectory $pyqir.evaluator.examples_dir {
-        & $python -m pip install --user -U --no-index --find-links (Join-Path $repo.root "target" "wheels") pyqir-evaluator
+        & $python -m pip install -U --no-index --find-links (Join-Path $repo.root "target" "wheels") pyqir-evaluator
         & $python "bernstein_vazirani.py" | Tee-Object -Variable bz_output
         $bz_first_lines = @($bz_output | Select-Object -first 5)
         $bz_expected = @(
diff --git a/eng/utils.ps1 b/eng/utils.ps1
index 98689e6f..d9a5acbb 100644
--- a/eng/utils.ps1
+++ b/eng/utils.ps1
@@ -62,7 +62,35 @@ function Use-LlvmInstallation {
         [string]$path
     )
     Write-BuildLog "LLVM installation set to: $path"
-    $env:LLVM_SYS_110_PREFIX = $path
+    $llvm_config_options = @(Get-Command (Join-Path $path "bin" "llvm-config*"))
+    Assert ($llvm_config_options.Length -gt 0) "llvm config not found in $path"
+    $llvm_config = $llvm_config_options[0].Source
+    Write-BuildLog "Found llvm-config : $llvm_config"
+    $version = [Version]::Parse("$(&$llvm_config --version)")
+    $prefix = "LLVM_SYS_$($version.Major)0_PREFIX"
+    Write-BuildLog "Setting $prefix set to: $path"
+    [Environment]::SetEnvironmentVariable($prefix, $path)
+}
+
+function Test-LlvmConfig {
+    param (
+        [string]$path
+    )
+
+    $llvm_config_options = @(Get-Command (Join-Path $path "bin" "llvm-config*"))
+    if ($llvm_config_options.Length -eq 0) {
+        return $false
+    }
+    $llvm_config = $llvm_config_options[0].Source
+    try {
+        exec {
+            & $llvm_config --version | Out-Null
+        }
+    }
+    catch {
+        return $false
+    }
+    return $true
 }
 
 function Resolve-InstallationDirectory {
@@ -80,7 +108,7 @@ function Get-DefaultInstallDirectory {
         $env:QIRLIB_CACHE_DIR
     }
     else {
-        Join-Path "$HOME" ".pyqir"
+        Join-Path "$($repo.target)" "$(Get-LLVMFeatureVersion)"
     }
 }
 
@@ -129,7 +157,15 @@ function Test-AllowedToDownloadLlvm {
 }
 
 function Test-InCondaEnvironment {
-    (Test-Path env:\CONDA_PREFIX) -or (Test-Path env:\CONDA_ROOT)
+    (Test-Path env:\CONDA_PREFIX)
+}
+
+function Test-InVenvEnvironment {
+    (Test-Path env:\VIRTUAL_ENV)
+}
+
+function Test-InVirtualEnvironment {
+    (Test-InCondaEnvironment) -or (Test-InVenvEnvironment)
 }
 
 function Get-LinuxTargetTriple {
@@ -164,15 +200,6 @@ function Get-LinuxContainerUserName {
     }
 }
 
-function Get-ToxTarget {
-    if (Test-MuslLinux) {
-        "allmusl"
-    }
-    else {
-        "all"
-    }
-}
-
 function Test-MuslLinux {
     if ($IsLinux) {
         $triple = Get-LinuxTargetTriple
@@ -196,29 +223,29 @@ function Write-CacheStats {
     }
 }
 
+function Get-LLVMFeatureVersion {
+    if (Test-Path env:\PYQIR_LLVM_FEATURE_VERSION) {
+        $env:PYQIR_LLVM_FEATURE_VERSION
+    }
+    else {
+        # "llvm11-0", "llvm12-0", "llvm13-0", "llvm14-0"
+        "llvm11-0"
+    }
+}
+
 function Build-PyQIR([string]$project) {
     $srcPath = $repo.root
 
     exec -workingDirectory (Join-Path $srcPath $project) {
-        if (Test-InCondaEnvironment) {
-            $build_extra_args = ""
-            if (Test-MuslLinux) {
-                $build_extra_args = "--skip-auditwheel"
-            }
-            Invoke-LoggedCommand {
-                maturin build --release $build_extra_args --cargo-extra-args="-vv"
-                maturin develop --release --cargo-extra-args="-vv"
-                & $python -m pip install pytest
-                & $python -m pytest
-            }
+        $build_extra_args = ""
+        if (Test-MuslLinux) {
+            $build_extra_args = "--skip-auditwheel"
         }
-        else {
-            Invoke-LoggedCommand {
-                & $python -m pip install tox
-            }
-            Invoke-LoggedCommand {
-                & $python -m tox -v -e (Get-ToxTarget)
-            }
+        Invoke-LoggedCommand {
+            maturin build --release $build_extra_args --cargo-extra-args="$($env:CARGO_EXTRA_ARGS)"
+            maturin develop --release --cargo-extra-args="$($env:CARGO_EXTRA_ARGS)"
+            & $python -m pip install -r requirements-dev.txt
+            & $python -m pytest
         }
     }
 }
@@ -260,12 +287,14 @@ function install-llvm {
         [string]$qirlibDir,
         [Parameter(Mandatory)]
         [ValidateSet("download", "build")]
-        [string]$operation
+        [string]$operation,
+        [Parameter(Mandatory)]
+        [ValidateSet("llvm11-0", "llvm12-0", "llvm13-0", "llvm14-0")]
+        [string]$feature
     )
 
     $installationDirectory = Resolve-InstallationDirectory
     New-Item -ItemType Directory -Force $installationDirectory | Out-Null
-    Use-LlvmInstallation $installationDirectory
     $clear_cache_var = $false
     if (!(Test-Path env:\QIRLIB_CACHE_DIR)) {
         $clear_cache_var = $true
@@ -273,7 +302,7 @@ function install-llvm {
     }
     try {
         Invoke-LoggedCommand -wd $qirlibDir {
-            cargo build --release --no-default-features --features "$($operation)-llvm,no-llvm-linking" -vv
+            cargo build --release --no-default-features --features "$($operation)-llvm,$feature-no-llvm-linking" -vv
         }
     }
     finally {
diff --git a/examples/generator/requirements.txt b/examples/generator/requirements.txt
index af69923a..f796e2a0 100644
--- a/examples/generator/requirements.txt
+++ b/examples/generator/requirements.txt
@@ -1,2 +1,1 @@
-wheel
 antlr4-python3-runtime==4.9.3
\ No newline at end of file
diff --git a/pyqir-evaluator/Cargo.toml b/pyqir-evaluator/Cargo.toml
index 7bf92102..f35775da 100644
--- a/pyqir-evaluator/Cargo.toml
+++ b/pyqir-evaluator/Cargo.toml
@@ -13,16 +13,19 @@ repository = "https://github.com/qir-alliance/pyqir"
 
 [dependencies]
 qirlib = { path = "../qirlib" }
-
-[dependencies.pyo3]
-version = "0.15.1"
+pyo3 = { version="0.15.2", optional = true }
 
 [features]
 extension-module = ["pyo3/abi3-py36", "pyo3/extension-module"]
-default = ["extension-module"]
+python-bindings = []
+default = ["extension-module", "python-bindings"]
+llvm11-0 = ["qirlib/llvm11-0"]
+llvm12-0 = ["qirlib/llvm12-0"]
+llvm13-0 = ["qirlib/llvm13-0"]
+llvm14-0 = ["qirlib/llvm14-0"]
 
 [dev-dependencies]
-serial_test = "0.5.1"
+serial_test = "0.6.0"
 
 [lib]
 name = "pyqir_evaluator"
diff --git a/pyqir-evaluator/NOTICE-WHEEL.txt b/pyqir-evaluator/NOTICE-WHEEL.txt
index 17a45634..a1abe6c8 100644
--- a/pyqir-evaluator/NOTICE-WHEEL.txt
+++ b/pyqir-evaluator/NOTICE-WHEEL.txt
@@ -9,7 +9,7 @@ This work contains work released under the following licenses:
 - BSD-3-Clause (1)
 - Apache-2.0 WITH LLVM-exception (1)
 
-windows-sys 0.34.0 - SPDX: Apache-2.0 - Apache License 2.0
+windows-sys 0.36.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/microsoft/windows-rs
 
                                  Apache License
@@ -630,7 +630,7 @@ https://github.com/retep998/winapi-rs
 
 
 
-libc 0.2.121 - SPDX: Apache-2.0 - Apache License 2.0
+libc 0.2.125 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/rust-lang/libc
 
                               Apache License
@@ -3710,7 +3710,7 @@ limitations under the License.
 
 
 
-parking_lot_core 0.9.2 - SPDX: Apache-2.0 - Apache License 2.0
+parking_lot_core 0.9.3 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/Amanieu/parking_lot
 
                               Apache License
@@ -4538,7 +4538,7 @@ limitations under the License.
 
 
 
-proc-macro2 1.0.36 - SPDX: Apache-2.0 - Apache License 2.0
+proc-macro2 1.0.38 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/dtolnay/proc-macro2
 
                               Apache License
@@ -4745,7 +4745,7 @@ limitations under the License.
 
 
 
-quote 1.0.17 - SPDX: Apache-2.0 - Apache License 2.0
+quote 1.0.18 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/dtolnay/quote
 
                               Apache License
@@ -5366,7 +5366,7 @@ limitations under the License.
 
 
 
-syn 1.0.90 - SPDX: Apache-2.0 - Apache License 2.0
+syn 1.0.93 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/dtolnay/syn
 
                               Apache License
@@ -5573,7 +5573,7 @@ limitations under the License.
 
 
 
-unicode-xid 0.2.2 - SPDX: Apache-2.0 - Apache License 2.0
+unicode-xid 0.2.3 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/unicode-rs/unicode-xid
 
                               Apache License
@@ -5780,7 +5780,7 @@ limitations under the License.
 
 
 
-unindent 0.1.8 - SPDX: Apache-2.0 - Apache License 2.0
+unindent 0.1.9 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/dtolnay/indoc
 
                               Apache License
@@ -6997,214 +6997,214 @@ limitations under the License.
 
 
 
-log 0.4.16 - SPDX: Apache-2.0 - Apache License 2.0
+log 0.4.17 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/rust-lang/log
 
-                              Apache License
-                        Version 2.0, January 2004
-                     http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-   "License" shall mean the terms and conditions for use, reproduction,
-   and distribution as defined by Sections 1 through 9 of this document.
-
-   "Licensor" shall mean the copyright owner or entity authorized by
-   the copyright owner that is granting the License.
-
-   "Legal Entity" shall mean the union of the acting entity and all
-   other entities that control, are controlled by, or are under common
-   control with that entity. For the purposes of this definition,
-   "control" means (i) the power, direct or indirect, to cause the
-   direction or management of such entity, whether by contract or
-   otherwise, or (ii) ownership of fifty percent (50%) or more of the
-   outstanding shares, or (iii) beneficial ownership of such entity.
-
-   "You" (or "Your") shall mean an individual or Legal Entity
-   exercising permissions granted by this License.
-
-   "Source" form shall mean the preferred form for making modifications,
-   including but not limited to software source code, documentation
-   source, and configuration files.
-
-   "Object" form shall mean any form resulting from mechanical
-   transformation or translation of a Source form, including but
-   not limited to compiled object code, generated documentation,
-   and conversions to other media types.
-
-   "Work" shall mean the work of authorship, whether in Source or
-   Object form, made available under the License, as indicated by a
-   copyright notice that is included in or attached to the work
-   (an example is provided in the Appendix below).
-
-   "Derivative Works" shall mean any work, whether in Source or Object
-   form, that is based on (or derived from) the Work and for which the
-   editorial revisions, annotations, elaborations, or other modifications
-   represent, as a whole, an original work of authorship. For the purposes
-   of this License, Derivative Works shall not include works that remain
-   separable from, or merely link (or bind by name) to the interfaces of,
-   the Work and Derivative Works thereof.
-
-   "Contribution" shall mean any work of authorship, including
-   the original version of the Work and any modifications or additions
-   to that Work or Derivative Works thereof, that is intentionally
-   submitted to Licensor for inclusion in the Work by the copyright owner
-   or by an individual or Legal Entity authorized to submit on behalf of
-   the copyright owner. For the purposes of this definition, "submitted"
-   means any form of electronic, verbal, or written communication sent
-   to the Licensor or its representatives, including but not limited to
-   communication on electronic mailing lists, source code control systems,
-   and issue tracking systems that are managed by, or on behalf of, the
-   Licensor for the purpose of discussing and improving the Work, but
-   excluding communication that is conspicuously marked or otherwise
-   designated in writing by the copyright owner as "Not a Contribution."
-
-   "Contributor" shall mean Licensor and any individual or Legal Entity
-   on behalf of whom a Contribution has been received by Licensor and
-   subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   copyright license to reproduce, prepare Derivative Works of,
-   publicly display, publicly perform, sublicense, and distribute the
-   Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   (except as stated in this section) patent license to make, have made,
-   use, offer to sell, sell, import, and otherwise transfer the Work,
-   where such license applies only to those patent claims licensable
-   by such Contributor that are necessarily infringed by their
-   Contribution(s) alone or by combination of their Contribution(s)
-   with the Work to which such Contribution(s) was submitted. If You
-   institute patent litigation against any entity (including a
-   cross-claim or counterclaim in a lawsuit) alleging that the Work
-   or a Contribution incorporated within the Work constitutes direct
-   or contributory patent infringement, then any patent licenses
-   granted to You under this License for that Work shall terminate
-   as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-   Work or Derivative Works thereof in any medium, with or without
-   modifications, and in Source or Object form, provided that You
-   meet the following conditions:
-
-   (a) You must give any other recipients of the Work or
-       Derivative Works a copy of this License; and
-
-   (b) You must cause any modified files to carry prominent notices
-       stating that You changed the files; and
-
-   (c) You must retain, in the Source form of any Derivative Works
-       that You distribute, all copyright, patent, trademark, and
-       attribution notices from the Source form of the Work,
-       excluding those notices that do not pertain to any part of
-       the Derivative Works; and
-
-   (d) If the Work includes a "NOTICE" text file as part of its
-       distribution, then any Derivative Works that You distribute must
-       include a readable copy of the attribution notices contained
-       within such NOTICE file, excluding those notices that do not
-       pertain to any part of the Derivative Works, in at least one
-       of the following places: within a NOTICE text file distributed
-       as part of the Derivative Works; within the Source form or
-       documentation, if provided along with the Derivative Works; or,
-       within a display generated by the Derivative Works, if and
-       wherever such third-party notices normally appear. The contents
-       of the NOTICE file are for informational purposes only and
-       do not modify the License. You may add Your own attribution
-       notices within Derivative Works that You distribute, alongside
-       or as an addendum to the NOTICE text from the Work, provided
-       that such additional attribution notices cannot be construed
-       as modifying the License.
-
-   You may add Your own copyright statement to Your modifications and
-   may provide additional or different license terms and conditions
-   for use, reproduction, or distribution of Your modifications, or
-   for any such Derivative Works as a whole, provided Your use,
-   reproduction, and distribution of the Work otherwise complies with
-   the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-   any Contribution intentionally submitted for inclusion in the Work
-   by You to the Licensor shall be under the terms and conditions of
-   this License, without any additional terms or conditions.
-   Notwithstanding the above, nothing herein shall supersede or modify
-   the terms of any separate license agreement you may have executed
-   with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-   names, trademarks, service marks, or product names of the Licensor,
-   except as required for reasonable and customary use in describing the
-   origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-   agreed to in writing, Licensor provides the Work (and each
-   Contributor provides its Contributions) on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-   implied, including, without limitation, any warranties or conditions
-   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-   PARTICULAR PURPOSE. You are solely responsible for determining the
-   appropriateness of using or redistributing the Work and assume any
-   risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-   whether in tort (including negligence), contract, or otherwise,
-   unless required by applicable law (such as deliberate and grossly
-   negligent acts) or agreed to in writing, shall any Contributor be
-   liable to You for damages, including any direct, indirect, special,
-   incidental, or consequential damages of any character arising as a
-   result of this License or out of the use or inability to use the
-   Work (including but not limited to damages for loss of goodwill,
-   work stoppage, computer failure or malfunction, or any and all
-   other commercial damages or losses), even if such Contributor
-   has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-   the Work or Derivative Works thereof, You may choose to offer,
-   and charge a fee for, acceptance of support, warranty, indemnity,
-   or other liability obligations and/or rights consistent with this
-   License. However, in accepting such obligations, You may act only
-   on Your own behalf and on Your sole responsibility, not on behalf
-   of any other Contributor, and only if You agree to indemnify,
-   defend, and hold each Contributor harmless for any liability
-   incurred by, or claims asserted against, such Contributor by reason
-   of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-   To apply the Apache License to your work, attach the following
-   boilerplate notice, with the fields enclosed by brackets "[]"
-   replaced with your own identifying information. (Don't include
-   the brackets!)  The text should be enclosed in the appropriate
-   comment syntax for the file format. We also recommend that a
-   file or class name and description of purpose be included on the
-   same "printed page" as the copyright notice for easier
-   identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-
-pyo3 0.15.1 - SPDX: Apache-2.0 - Apache License 2.0
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+
+pyo3 0.15.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/pyo3/pyo3
 
    Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
@@ -7399,7 +7399,7 @@ https://github.com/pyo3/pyo3
 
 
 
-pyo3-build-config 0.15.1 - SPDX: Apache-2.0 - Apache License 2.0
+pyo3-build-config 0.15.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/pyo3/pyo3
 
    Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
@@ -7594,7 +7594,7 @@ https://github.com/pyo3/pyo3
 
 
 
-pyo3-macros 0.15.1 - SPDX: Apache-2.0 - Apache License 2.0
+pyo3-macros 0.15.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/pyo3/pyo3
 
    Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
@@ -7789,7 +7789,7 @@ https://github.com/pyo3/pyo3
 
 
 
-pyo3-macros-backend 0.15.1 - SPDX: Apache-2.0 - Apache License 2.0
+pyo3-macros-backend 0.15.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/pyo3/pyo3
 
    Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
@@ -8311,7 +8311,7 @@ limitations under the License.
 
 
 
-windows_aarch64_msvc 0.34.0 - SPDX: Apache-2.0 - Apache License 2.0
+windows_aarch64_msvc 0.36.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/microsoft/windows-rs
 
 Apache License
@@ -8390,7 +8390,7 @@ limitations under the License.
 
 
 
-windows_i686_gnu 0.34.0 - SPDX: Apache-2.0 - Apache License 2.0
+windows_i686_gnu 0.36.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/microsoft/windows-rs
 
 Apache License
@@ -8469,7 +8469,7 @@ limitations under the License.
 
 
 
-windows_i686_msvc 0.34.0 - SPDX: Apache-2.0 - Apache License 2.0
+windows_i686_msvc 0.36.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/microsoft/windows-rs
 
 Apache License
@@ -8548,7 +8548,7 @@ limitations under the License.
 
 
 
-windows_x86_64_gnu 0.34.0 - SPDX: Apache-2.0 - Apache License 2.0
+windows_x86_64_gnu 0.36.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/microsoft/windows-rs
 
 Apache License
@@ -8627,7 +8627,7 @@ limitations under the License.
 
 
 
-windows_x86_64_msvc 0.34.0 - SPDX: Apache-2.0 - Apache License 2.0
+windows_x86_64_msvc 0.36.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/microsoft/windows-rs
 
 Apache License
@@ -8706,7 +8706,7 @@ limitations under the License.
 
 
 
-unicode-xid 0.2.2 - SPDX: Apache-2.0 - Apache License 2.0
+unicode-xid 0.2.3 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/unicode-rs/unicode-xid
 
 Licensed under the Apache License, Version 2.0
@@ -8722,34 +8722,109 @@ according to those terms.
 instant 0.1.12 - SPDX: BSD-3-Clause - BSD 3-Clause "New" or "Revised" License
 https://github.com/sebcrozet/instant
 
-Copyright (c) 2019, Sébastien Crozet
-All rights reserved.
+Copyright (c) 2019, Sébastien Crozet
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+3. Neither the name of the author nor the names of its contributors may be used
+   to endorse or promote products derived from this software without specific
+   prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+qirlib 0.3.0 - SPDX: MIT - MIT License
+https://github.com/qir-alliance/pyqir
+
+/*
+Copyright (c) 2015 Peter Marheine
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
 
-1. Redistributions of source code must retain the above copyright notice, this
-   list of conditions and the following disclaimer.
+/* llvm-c/Target.h helper functions wrappers.
+ *
+ * The LLVMInitializeAll* functions and friends are defined `static inline`, so
+ * we can't bind directly to them (the function body is generated via macro),
+ * so here are some wrappers.
+ */
+#include <llvm-c/Target.h>
 
-2. Redistributions in binary form must reproduce the above copyright notice,
-   this list of conditions and the following disclaimer in the documentation
-   and/or other materials provided with the distribution.
+void LLVM_InitializeAllTargetInfos(void) {
+    LLVMInitializeAllTargetInfos();
+}
 
-3. Neither the name of the author nor the names of its contributors may be used
-   to endorse or promote products derived from this software without specific
-   prior written permission.
+void LLVM_InitializeAllTargets(void) {
+    LLVMInitializeAllTargets();
+}
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+void LLVM_InitializeAllTargetMCs(void) {
+    LLVMInitializeAllTargetMCs();
+}
 
+void LLVM_InitializeAllAsmPrinters(void) {
+    LLVMInitializeAllAsmPrinters();
+}
+
+void LLVM_InitializeAllAsmParsers(void) {
+    LLVMInitializeAllAsmParsers();
+}
+
+void LLVM_InitializeAllDisassemblers(void) {
+    LLVMInitializeAllDisassemblers();
+}
+
+/* These functions return true on failure. */
+LLVMBool LLVM_InitializeNativeTarget(void) {
+    return LLVMInitializeNativeTarget();
+}
+
+LLVMBool LLVM_InitializeNativeAsmParser(void) {
+    return LLVMInitializeNativeAsmParser();
+}
+
+LLVMBool LLVM_InitializeNativeAsmPrinter(void) {
+    return LLVMInitializeNativeAsmPrinter();
+}
+
+LLVMBool LLVM_InitializeNativeDisassembler(void) {
+    return LLVMInitializeNativeDisassembler();
+}
 
 
 llvm-sys 110.0.3 - SPDX: MIT - MIT License
@@ -8777,16 +8852,91 @@ SOFTWARE.
 
 
 
-mut_static 5.0.0 - SPDX: MIT - MIT License
-https://github.com/tyleo/mut_static.git
+llvm-sys 120.2.4 - SPDX: MIT - MIT License
+https://gitlab.com/taricorp/llvm-sys.rs
 
-Copyright (c) 2016 Tyler Wolf Leonhardt
+Copyright (c) 2015 Peter Marheine
 
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+llvm-sys 130.0.4 - SPDX: MIT - MIT License
+https://gitlab.com/taricorp/llvm-sys.rs
+
+Copyright (c) 2015 Peter Marheine
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+llvm-sys 140.0.2 - SPDX: MIT - MIT License
+https://gitlab.com/taricorp/llvm-sys.rs
+
+Copyright (c) 2015 Peter Marheine
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+mut_static 5.0.0 - SPDX: MIT - MIT License
+https://github.com/tyleo/mut_static.git
+
+Copyright (c) 2016 Tyler Wolf Leonhardt
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
 
@@ -8980,21 +9130,6 @@ SOFTWARE.
 
 
 
-qirlib 0.3.0 - SPDX: MIT - MIT License
-https://crates.io/crates/qirlib
-
-MIT License
-
-Copyright (c) <year> <copyright holders>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-
 
 LLVM 11.0 - Apache-2.0 WITH LLVM-exception - Apache License v2.0 with LLVM Exceptions
 https://github.com/llvm/llvm-project
diff --git a/pyqir-evaluator/src/lib.rs b/pyqir-evaluator/src/lib.rs
index 0cf30ad1..24b68fd7 100644
--- a/pyqir-evaluator/src/lib.rs
+++ b/pyqir-evaluator/src/lib.rs
@@ -10,4 +10,5 @@
 //     we can directly control in our code.
 #![allow(clippy::needless_option_as_deref)]
 
+#[cfg(feature = "python-bindings")]
 pub mod python;
diff --git a/pyqir-evaluator/tox.ini b/pyqir-evaluator/tox.ini
deleted file mode 100644
index 03a2d978..00000000
--- a/pyqir-evaluator/tox.ini
+++ /dev/null
@@ -1,39 +0,0 @@
-[tox]
-isolated_build = True
-
-[testenv]
-
-# https://github.com/tox-dev/tox/issues/1550
-# PYTHONIOENCODING = utf-8 needs to be set to work around windows bug
-setenv =
-    PYTHONIOENCODING = utf-8
-
-# needed temporarily for build to find cl.exe
-passenv = *
-
-deps = -rrequirements-dev.txt
-
-[testenv:test]
-description = Run the unit tests under {basepython}
-commands =
-    maturin develop --release --cargo-extra-args="-vv"
-    pytest {posargs}
-
-[testenv:pack]
-description = Build the wheels under all installed platforms
-commands =
-    maturin build --release --cargo-extra-args="-vv"
-
-[testenv:all]
-description = Build the wheels under all installed platforms
-commands =
-    maturin build --release --cargo-extra-args="-vv"
-    maturin develop --release --cargo-extra-args="-vv"
-    pytest {posargs}
-
-[testenv:allmusl]
-description = Build the wheels under all installed platforms
-commands =
-    maturin build --skip-auditwheel --release --cargo-extra-args="-vv"
-    maturin develop --release --cargo-extra-args="-vv"
-    pytest {posargs}
diff --git a/pyqir-generator/Cargo.toml b/pyqir-generator/Cargo.toml
index f971f42d..ee98f3d8 100644
--- a/pyqir-generator/Cargo.toml
+++ b/pyqir-generator/Cargo.toml
@@ -12,14 +12,17 @@ repository = "https://github.com/qir-alliance/pyqir"
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
 [dependencies]
-env_logger = "0.9.0"
-log = "0.4.14"
-pyo3 = "0.15.1"
 qirlib = { path = "../qirlib" }
+pyo3 = { version="0.15.2", optional = true }
 
 [features]
 extension-module = ["pyo3/abi3-py36", "pyo3/extension-module"]
-default = ["extension-module"]
+python-bindings = []
+default = ["extension-module", "python-bindings"]
+llvm11-0 = ["qirlib/llvm11-0"]
+llvm12-0 = ["qirlib/llvm12-0"]
+llvm13-0 = ["qirlib/llvm13-0"]
+llvm14-0 = ["qirlib/llvm14-0"]
 
 [lib]
 name = "pyqir_generator"
diff --git a/pyqir-generator/NOTICE-WHEEL.txt b/pyqir-generator/NOTICE-WHEEL.txt
index b0573afb..8c54f36c 100644
--- a/pyqir-generator/NOTICE-WHEEL.txt
+++ b/pyqir-generator/NOTICE-WHEEL.txt
@@ -4,12 +4,12 @@ Do Not Translate or Localize
 This software incorporates material from third parties.
 -------------------------------------------------------------------
 This work contains work released under the following licenses:
-- Apache-2.0 (13)
-- MIT (13)
+- Apache-2.0 (12)
+- MIT (9)
 - BSD-3-Clause (1)
 - Apache-2.0 WITH LLVM-exception (1)
 
-windows-sys 0.34.0 - SPDX: Apache-2.0 - Apache License 2.0
+windows-sys 0.36.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/microsoft/windows-rs
 
                                  Apache License
@@ -630,215 +630,7 @@ https://github.com/retep998/winapi-rs
 
 
 
-humantime 2.1.0 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/tailhook/humantime
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "{}"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright {yyyy} {name of copyright owner}
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-
-
-libc 0.2.121 - SPDX: Apache-2.0 - Apache License 2.0
+libc 0.2.125 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/rust-lang/libc
 
                               Apache License
@@ -2262,8 +2054,8 @@ limitations under the License.
 
 
 
-env_logger 0.9.0 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/env-logger-rs/env_logger/
+indoc 0.3.6 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/dtolnay/indoc
 
                               Apache License
                         Version 2.0, January 2004
@@ -2469,8 +2261,8 @@ limitations under the License.
 
 
 
-hermit-abi 0.1.19 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/hermitcore/libhermit-rs
+indoc-impl 0.3.6 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/dtolnay/indoc
 
                               Apache License
                         Version 2.0, January 2004
@@ -2676,8 +2468,8 @@ limitations under the License.
 
 
 
-indoc 0.3.6 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/dtolnay/indoc
+lazy_static 1.4.0 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/rust-lang-nursery/lazy-static.rs
 
                               Apache License
                         Version 2.0, January 2004
@@ -2883,8 +2675,8 @@ limitations under the License.
 
 
 
-indoc-impl 0.3.6 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/dtolnay/indoc
+lock_api 0.4.7 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/Amanieu/parking_lot
 
                               Apache License
                         Version 2.0, January 2004
@@ -3090,8 +2882,8 @@ limitations under the License.
 
 
 
-lazy_static 1.4.0 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/rust-lang-nursery/lazy-static.rs
+once_cell 1.10.0 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/matklad/once_cell
 
                               Apache License
                         Version 2.0, January 2004
@@ -3297,7 +3089,7 @@ limitations under the License.
 
 
 
-lock_api 0.4.7 - SPDX: Apache-2.0 - Apache License 2.0
+parking_lot 0.11.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/Amanieu/parking_lot
 
                               Apache License
@@ -3504,8 +3296,8 @@ limitations under the License.
 
 
 
-once_cell 1.10.0 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/matklad/once_cell
+parking_lot 0.12.0 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/Amanieu/parking_lot
 
                               Apache License
                         Version 2.0, January 2004
@@ -3711,7 +3503,7 @@ limitations under the License.
 
 
 
-parking_lot 0.11.2 - SPDX: Apache-2.0 - Apache License 2.0
+parking_lot_core 0.8.5 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/Amanieu/parking_lot
 
                               Apache License
@@ -3918,7 +3710,7 @@ limitations under the License.
 
 
 
-parking_lot 0.12.0 - SPDX: Apache-2.0 - Apache License 2.0
+parking_lot_core 0.9.3 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/Amanieu/parking_lot
 
                               Apache License
@@ -4125,8 +3917,8 @@ limitations under the License.
 
 
 
-parking_lot_core 0.8.5 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/Amanieu/parking_lot
+paste 0.1.18 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/dtolnay/paste
 
                               Apache License
                         Version 2.0, January 2004
@@ -4332,8 +4124,8 @@ limitations under the License.
 
 
 
-parking_lot_core 0.9.2 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/Amanieu/parking_lot
+paste-impl 0.1.18 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/dtolnay/paste
 
                               Apache License
                         Version 2.0, January 2004
@@ -4539,8 +4331,8 @@ limitations under the License.
 
 
 
-paste 0.1.18 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/dtolnay/paste
+proc-macro-hack 0.5.19 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/dtolnay/proc-macro-hack
 
                               Apache License
                         Version 2.0, January 2004
@@ -4746,8 +4538,8 @@ limitations under the License.
 
 
 
-paste-impl 0.1.18 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/dtolnay/paste
+proc-macro2 1.0.38 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/dtolnay/proc-macro2
 
                               Apache License
                         Version 2.0, January 2004
@@ -4953,8 +4745,8 @@ limitations under the License.
 
 
 
-proc-macro-hack 0.5.19 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/dtolnay/proc-macro-hack
+quote 1.0.18 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/dtolnay/quote
 
                               Apache License
                         Version 2.0, January 2004
@@ -5160,8 +4952,8 @@ limitations under the License.
 
 
 
-proc-macro2 1.0.36 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/dtolnay/proc-macro2
+scopeguard 1.1.0 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/bluss/scopeguard
 
                               Apache License
                         Version 2.0, January 2004
@@ -5367,8 +5159,8 @@ limitations under the License.
 
 
 
-quote 1.0.17 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/dtolnay/quote
+smallvec 1.8.0 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/servo/rust-smallvec
 
                               Apache License
                         Version 2.0, January 2004
@@ -5574,8 +5366,8 @@ limitations under the License.
 
 
 
-regex 1.5.5 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/rust-lang/regex
+syn 1.0.93 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/dtolnay/syn
 
                               Apache License
                         Version 2.0, January 2004
@@ -5781,8 +5573,8 @@ limitations under the License.
 
 
 
-regex-syntax 0.6.25 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/rust-lang/regex
+unicode-xid 0.2.3 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/unicode-rs/unicode-xid
 
                               Apache License
                         Version 2.0, January 2004
@@ -5988,835 +5780,7 @@ limitations under the License.
 
 
 
-scopeguard 1.1.0 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/bluss/scopeguard
-
-                              Apache License
-                        Version 2.0, January 2004
-                     http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-   "License" shall mean the terms and conditions for use, reproduction,
-   and distribution as defined by Sections 1 through 9 of this document.
-
-   "Licensor" shall mean the copyright owner or entity authorized by
-   the copyright owner that is granting the License.
-
-   "Legal Entity" shall mean the union of the acting entity and all
-   other entities that control, are controlled by, or are under common
-   control with that entity. For the purposes of this definition,
-   "control" means (i) the power, direct or indirect, to cause the
-   direction or management of such entity, whether by contract or
-   otherwise, or (ii) ownership of fifty percent (50%) or more of the
-   outstanding shares, or (iii) beneficial ownership of such entity.
-
-   "You" (or "Your") shall mean an individual or Legal Entity
-   exercising permissions granted by this License.
-
-   "Source" form shall mean the preferred form for making modifications,
-   including but not limited to software source code, documentation
-   source, and configuration files.
-
-   "Object" form shall mean any form resulting from mechanical
-   transformation or translation of a Source form, including but
-   not limited to compiled object code, generated documentation,
-   and conversions to other media types.
-
-   "Work" shall mean the work of authorship, whether in Source or
-   Object form, made available under the License, as indicated by a
-   copyright notice that is included in or attached to the work
-   (an example is provided in the Appendix below).
-
-   "Derivative Works" shall mean any work, whether in Source or Object
-   form, that is based on (or derived from) the Work and for which the
-   editorial revisions, annotations, elaborations, or other modifications
-   represent, as a whole, an original work of authorship. For the purposes
-   of this License, Derivative Works shall not include works that remain
-   separable from, or merely link (or bind by name) to the interfaces of,
-   the Work and Derivative Works thereof.
-
-   "Contribution" shall mean any work of authorship, including
-   the original version of the Work and any modifications or additions
-   to that Work or Derivative Works thereof, that is intentionally
-   submitted to Licensor for inclusion in the Work by the copyright owner
-   or by an individual or Legal Entity authorized to submit on behalf of
-   the copyright owner. For the purposes of this definition, "submitted"
-   means any form of electronic, verbal, or written communication sent
-   to the Licensor or its representatives, including but not limited to
-   communication on electronic mailing lists, source code control systems,
-   and issue tracking systems that are managed by, or on behalf of, the
-   Licensor for the purpose of discussing and improving the Work, but
-   excluding communication that is conspicuously marked or otherwise
-   designated in writing by the copyright owner as "Not a Contribution."
-
-   "Contributor" shall mean Licensor and any individual or Legal Entity
-   on behalf of whom a Contribution has been received by Licensor and
-   subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   copyright license to reproduce, prepare Derivative Works of,
-   publicly display, publicly perform, sublicense, and distribute the
-   Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   (except as stated in this section) patent license to make, have made,
-   use, offer to sell, sell, import, and otherwise transfer the Work,
-   where such license applies only to those patent claims licensable
-   by such Contributor that are necessarily infringed by their
-   Contribution(s) alone or by combination of their Contribution(s)
-   with the Work to which such Contribution(s) was submitted. If You
-   institute patent litigation against any entity (including a
-   cross-claim or counterclaim in a lawsuit) alleging that the Work
-   or a Contribution incorporated within the Work constitutes direct
-   or contributory patent infringement, then any patent licenses
-   granted to You under this License for that Work shall terminate
-   as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-   Work or Derivative Works thereof in any medium, with or without
-   modifications, and in Source or Object form, provided that You
-   meet the following conditions:
-
-   (a) You must give any other recipients of the Work or
-       Derivative Works a copy of this License; and
-
-   (b) You must cause any modified files to carry prominent notices
-       stating that You changed the files; and
-
-   (c) You must retain, in the Source form of any Derivative Works
-       that You distribute, all copyright, patent, trademark, and
-       attribution notices from the Source form of the Work,
-       excluding those notices that do not pertain to any part of
-       the Derivative Works; and
-
-   (d) If the Work includes a "NOTICE" text file as part of its
-       distribution, then any Derivative Works that You distribute must
-       include a readable copy of the attribution notices contained
-       within such NOTICE file, excluding those notices that do not
-       pertain to any part of the Derivative Works, in at least one
-       of the following places: within a NOTICE text file distributed
-       as part of the Derivative Works; within the Source form or
-       documentation, if provided along with the Derivative Works; or,
-       within a display generated by the Derivative Works, if and
-       wherever such third-party notices normally appear. The contents
-       of the NOTICE file are for informational purposes only and
-       do not modify the License. You may add Your own attribution
-       notices within Derivative Works that You distribute, alongside
-       or as an addendum to the NOTICE text from the Work, provided
-       that such additional attribution notices cannot be construed
-       as modifying the License.
-
-   You may add Your own copyright statement to Your modifications and
-   may provide additional or different license terms and conditions
-   for use, reproduction, or distribution of Your modifications, or
-   for any such Derivative Works as a whole, provided Your use,
-   reproduction, and distribution of the Work otherwise complies with
-   the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-   any Contribution intentionally submitted for inclusion in the Work
-   by You to the Licensor shall be under the terms and conditions of
-   this License, without any additional terms or conditions.
-   Notwithstanding the above, nothing herein shall supersede or modify
-   the terms of any separate license agreement you may have executed
-   with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-   names, trademarks, service marks, or product names of the Licensor,
-   except as required for reasonable and customary use in describing the
-   origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-   agreed to in writing, Licensor provides the Work (and each
-   Contributor provides its Contributions) on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-   implied, including, without limitation, any warranties or conditions
-   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-   PARTICULAR PURPOSE. You are solely responsible for determining the
-   appropriateness of using or redistributing the Work and assume any
-   risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-   whether in tort (including negligence), contract, or otherwise,
-   unless required by applicable law (such as deliberate and grossly
-   negligent acts) or agreed to in writing, shall any Contributor be
-   liable to You for damages, including any direct, indirect, special,
-   incidental, or consequential damages of any character arising as a
-   result of this License or out of the use or inability to use the
-   Work (including but not limited to damages for loss of goodwill,
-   work stoppage, computer failure or malfunction, or any and all
-   other commercial damages or losses), even if such Contributor
-   has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-   the Work or Derivative Works thereof, You may choose to offer,
-   and charge a fee for, acceptance of support, warranty, indemnity,
-   or other liability obligations and/or rights consistent with this
-   License. However, in accepting such obligations, You may act only
-   on Your own behalf and on Your sole responsibility, not on behalf
-   of any other Contributor, and only if You agree to indemnify,
-   defend, and hold each Contributor harmless for any liability
-   incurred by, or claims asserted against, such Contributor by reason
-   of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-   To apply the Apache License to your work, attach the following
-   boilerplate notice, with the fields enclosed by brackets "[]"
-   replaced with your own identifying information. (Don't include
-   the brackets!)  The text should be enclosed in the appropriate
-   comment syntax for the file format. We also recommend that a
-   file or class name and description of purpose be included on the
-   same "printed page" as the copyright notice for easier
-   identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-
-smallvec 1.8.0 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/servo/rust-smallvec
-
-                              Apache License
-                        Version 2.0, January 2004
-                     http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-   "License" shall mean the terms and conditions for use, reproduction,
-   and distribution as defined by Sections 1 through 9 of this document.
-
-   "Licensor" shall mean the copyright owner or entity authorized by
-   the copyright owner that is granting the License.
-
-   "Legal Entity" shall mean the union of the acting entity and all
-   other entities that control, are controlled by, or are under common
-   control with that entity. For the purposes of this definition,
-   "control" means (i) the power, direct or indirect, to cause the
-   direction or management of such entity, whether by contract or
-   otherwise, or (ii) ownership of fifty percent (50%) or more of the
-   outstanding shares, or (iii) beneficial ownership of such entity.
-
-   "You" (or "Your") shall mean an individual or Legal Entity
-   exercising permissions granted by this License.
-
-   "Source" form shall mean the preferred form for making modifications,
-   including but not limited to software source code, documentation
-   source, and configuration files.
-
-   "Object" form shall mean any form resulting from mechanical
-   transformation or translation of a Source form, including but
-   not limited to compiled object code, generated documentation,
-   and conversions to other media types.
-
-   "Work" shall mean the work of authorship, whether in Source or
-   Object form, made available under the License, as indicated by a
-   copyright notice that is included in or attached to the work
-   (an example is provided in the Appendix below).
-
-   "Derivative Works" shall mean any work, whether in Source or Object
-   form, that is based on (or derived from) the Work and for which the
-   editorial revisions, annotations, elaborations, or other modifications
-   represent, as a whole, an original work of authorship. For the purposes
-   of this License, Derivative Works shall not include works that remain
-   separable from, or merely link (or bind by name) to the interfaces of,
-   the Work and Derivative Works thereof.
-
-   "Contribution" shall mean any work of authorship, including
-   the original version of the Work and any modifications or additions
-   to that Work or Derivative Works thereof, that is intentionally
-   submitted to Licensor for inclusion in the Work by the copyright owner
-   or by an individual or Legal Entity authorized to submit on behalf of
-   the copyright owner. For the purposes of this definition, "submitted"
-   means any form of electronic, verbal, or written communication sent
-   to the Licensor or its representatives, including but not limited to
-   communication on electronic mailing lists, source code control systems,
-   and issue tracking systems that are managed by, or on behalf of, the
-   Licensor for the purpose of discussing and improving the Work, but
-   excluding communication that is conspicuously marked or otherwise
-   designated in writing by the copyright owner as "Not a Contribution."
-
-   "Contributor" shall mean Licensor and any individual or Legal Entity
-   on behalf of whom a Contribution has been received by Licensor and
-   subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   copyright license to reproduce, prepare Derivative Works of,
-   publicly display, publicly perform, sublicense, and distribute the
-   Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   (except as stated in this section) patent license to make, have made,
-   use, offer to sell, sell, import, and otherwise transfer the Work,
-   where such license applies only to those patent claims licensable
-   by such Contributor that are necessarily infringed by their
-   Contribution(s) alone or by combination of their Contribution(s)
-   with the Work to which such Contribution(s) was submitted. If You
-   institute patent litigation against any entity (including a
-   cross-claim or counterclaim in a lawsuit) alleging that the Work
-   or a Contribution incorporated within the Work constitutes direct
-   or contributory patent infringement, then any patent licenses
-   granted to You under this License for that Work shall terminate
-   as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-   Work or Derivative Works thereof in any medium, with or without
-   modifications, and in Source or Object form, provided that You
-   meet the following conditions:
-
-   (a) You must give any other recipients of the Work or
-       Derivative Works a copy of this License; and
-
-   (b) You must cause any modified files to carry prominent notices
-       stating that You changed the files; and
-
-   (c) You must retain, in the Source form of any Derivative Works
-       that You distribute, all copyright, patent, trademark, and
-       attribution notices from the Source form of the Work,
-       excluding those notices that do not pertain to any part of
-       the Derivative Works; and
-
-   (d) If the Work includes a "NOTICE" text file as part of its
-       distribution, then any Derivative Works that You distribute must
-       include a readable copy of the attribution notices contained
-       within such NOTICE file, excluding those notices that do not
-       pertain to any part of the Derivative Works, in at least one
-       of the following places: within a NOTICE text file distributed
-       as part of the Derivative Works; within the Source form or
-       documentation, if provided along with the Derivative Works; or,
-       within a display generated by the Derivative Works, if and
-       wherever such third-party notices normally appear. The contents
-       of the NOTICE file are for informational purposes only and
-       do not modify the License. You may add Your own attribution
-       notices within Derivative Works that You distribute, alongside
-       or as an addendum to the NOTICE text from the Work, provided
-       that such additional attribution notices cannot be construed
-       as modifying the License.
-
-   You may add Your own copyright statement to Your modifications and
-   may provide additional or different license terms and conditions
-   for use, reproduction, or distribution of Your modifications, or
-   for any such Derivative Works as a whole, provided Your use,
-   reproduction, and distribution of the Work otherwise complies with
-   the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-   any Contribution intentionally submitted for inclusion in the Work
-   by You to the Licensor shall be under the terms and conditions of
-   this License, without any additional terms or conditions.
-   Notwithstanding the above, nothing herein shall supersede or modify
-   the terms of any separate license agreement you may have executed
-   with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-   names, trademarks, service marks, or product names of the Licensor,
-   except as required for reasonable and customary use in describing the
-   origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-   agreed to in writing, Licensor provides the Work (and each
-   Contributor provides its Contributions) on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-   implied, including, without limitation, any warranties or conditions
-   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-   PARTICULAR PURPOSE. You are solely responsible for determining the
-   appropriateness of using or redistributing the Work and assume any
-   risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-   whether in tort (including negligence), contract, or otherwise,
-   unless required by applicable law (such as deliberate and grossly
-   negligent acts) or agreed to in writing, shall any Contributor be
-   liable to You for damages, including any direct, indirect, special,
-   incidental, or consequential damages of any character arising as a
-   result of this License or out of the use or inability to use the
-   Work (including but not limited to damages for loss of goodwill,
-   work stoppage, computer failure or malfunction, or any and all
-   other commercial damages or losses), even if such Contributor
-   has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-   the Work or Derivative Works thereof, You may choose to offer,
-   and charge a fee for, acceptance of support, warranty, indemnity,
-   or other liability obligations and/or rights consistent with this
-   License. However, in accepting such obligations, You may act only
-   on Your own behalf and on Your sole responsibility, not on behalf
-   of any other Contributor, and only if You agree to indemnify,
-   defend, and hold each Contributor harmless for any liability
-   incurred by, or claims asserted against, such Contributor by reason
-   of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-   To apply the Apache License to your work, attach the following
-   boilerplate notice, with the fields enclosed by brackets "[]"
-   replaced with your own identifying information. (Don't include
-   the brackets!)  The text should be enclosed in the appropriate
-   comment syntax for the file format. We also recommend that a
-   file or class name and description of purpose be included on the
-   same "printed page" as the copyright notice for easier
-   identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-
-syn 1.0.90 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/dtolnay/syn
-
-                              Apache License
-                        Version 2.0, January 2004
-                     http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-   "License" shall mean the terms and conditions for use, reproduction,
-   and distribution as defined by Sections 1 through 9 of this document.
-
-   "Licensor" shall mean the copyright owner or entity authorized by
-   the copyright owner that is granting the License.
-
-   "Legal Entity" shall mean the union of the acting entity and all
-   other entities that control, are controlled by, or are under common
-   control with that entity. For the purposes of this definition,
-   "control" means (i) the power, direct or indirect, to cause the
-   direction or management of such entity, whether by contract or
-   otherwise, or (ii) ownership of fifty percent (50%) or more of the
-   outstanding shares, or (iii) beneficial ownership of such entity.
-
-   "You" (or "Your") shall mean an individual or Legal Entity
-   exercising permissions granted by this License.
-
-   "Source" form shall mean the preferred form for making modifications,
-   including but not limited to software source code, documentation
-   source, and configuration files.
-
-   "Object" form shall mean any form resulting from mechanical
-   transformation or translation of a Source form, including but
-   not limited to compiled object code, generated documentation,
-   and conversions to other media types.
-
-   "Work" shall mean the work of authorship, whether in Source or
-   Object form, made available under the License, as indicated by a
-   copyright notice that is included in or attached to the work
-   (an example is provided in the Appendix below).
-
-   "Derivative Works" shall mean any work, whether in Source or Object
-   form, that is based on (or derived from) the Work and for which the
-   editorial revisions, annotations, elaborations, or other modifications
-   represent, as a whole, an original work of authorship. For the purposes
-   of this License, Derivative Works shall not include works that remain
-   separable from, or merely link (or bind by name) to the interfaces of,
-   the Work and Derivative Works thereof.
-
-   "Contribution" shall mean any work of authorship, including
-   the original version of the Work and any modifications or additions
-   to that Work or Derivative Works thereof, that is intentionally
-   submitted to Licensor for inclusion in the Work by the copyright owner
-   or by an individual or Legal Entity authorized to submit on behalf of
-   the copyright owner. For the purposes of this definition, "submitted"
-   means any form of electronic, verbal, or written communication sent
-   to the Licensor or its representatives, including but not limited to
-   communication on electronic mailing lists, source code control systems,
-   and issue tracking systems that are managed by, or on behalf of, the
-   Licensor for the purpose of discussing and improving the Work, but
-   excluding communication that is conspicuously marked or otherwise
-   designated in writing by the copyright owner as "Not a Contribution."
-
-   "Contributor" shall mean Licensor and any individual or Legal Entity
-   on behalf of whom a Contribution has been received by Licensor and
-   subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   copyright license to reproduce, prepare Derivative Works of,
-   publicly display, publicly perform, sublicense, and distribute the
-   Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   (except as stated in this section) patent license to make, have made,
-   use, offer to sell, sell, import, and otherwise transfer the Work,
-   where such license applies only to those patent claims licensable
-   by such Contributor that are necessarily infringed by their
-   Contribution(s) alone or by combination of their Contribution(s)
-   with the Work to which such Contribution(s) was submitted. If You
-   institute patent litigation against any entity (including a
-   cross-claim or counterclaim in a lawsuit) alleging that the Work
-   or a Contribution incorporated within the Work constitutes direct
-   or contributory patent infringement, then any patent licenses
-   granted to You under this License for that Work shall terminate
-   as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-   Work or Derivative Works thereof in any medium, with or without
-   modifications, and in Source or Object form, provided that You
-   meet the following conditions:
-
-   (a) You must give any other recipients of the Work or
-       Derivative Works a copy of this License; and
-
-   (b) You must cause any modified files to carry prominent notices
-       stating that You changed the files; and
-
-   (c) You must retain, in the Source form of any Derivative Works
-       that You distribute, all copyright, patent, trademark, and
-       attribution notices from the Source form of the Work,
-       excluding those notices that do not pertain to any part of
-       the Derivative Works; and
-
-   (d) If the Work includes a "NOTICE" text file as part of its
-       distribution, then any Derivative Works that You distribute must
-       include a readable copy of the attribution notices contained
-       within such NOTICE file, excluding those notices that do not
-       pertain to any part of the Derivative Works, in at least one
-       of the following places: within a NOTICE text file distributed
-       as part of the Derivative Works; within the Source form or
-       documentation, if provided along with the Derivative Works; or,
-       within a display generated by the Derivative Works, if and
-       wherever such third-party notices normally appear. The contents
-       of the NOTICE file are for informational purposes only and
-       do not modify the License. You may add Your own attribution
-       notices within Derivative Works that You distribute, alongside
-       or as an addendum to the NOTICE text from the Work, provided
-       that such additional attribution notices cannot be construed
-       as modifying the License.
-
-   You may add Your own copyright statement to Your modifications and
-   may provide additional or different license terms and conditions
-   for use, reproduction, or distribution of Your modifications, or
-   for any such Derivative Works as a whole, provided Your use,
-   reproduction, and distribution of the Work otherwise complies with
-   the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-   any Contribution intentionally submitted for inclusion in the Work
-   by You to the Licensor shall be under the terms and conditions of
-   this License, without any additional terms or conditions.
-   Notwithstanding the above, nothing herein shall supersede or modify
-   the terms of any separate license agreement you may have executed
-   with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-   names, trademarks, service marks, or product names of the Licensor,
-   except as required for reasonable and customary use in describing the
-   origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-   agreed to in writing, Licensor provides the Work (and each
-   Contributor provides its Contributions) on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-   implied, including, without limitation, any warranties or conditions
-   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-   PARTICULAR PURPOSE. You are solely responsible for determining the
-   appropriateness of using or redistributing the Work and assume any
-   risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-   whether in tort (including negligence), contract, or otherwise,
-   unless required by applicable law (such as deliberate and grossly
-   negligent acts) or agreed to in writing, shall any Contributor be
-   liable to You for damages, including any direct, indirect, special,
-   incidental, or consequential damages of any character arising as a
-   result of this License or out of the use or inability to use the
-   Work (including but not limited to damages for loss of goodwill,
-   work stoppage, computer failure or malfunction, or any and all
-   other commercial damages or losses), even if such Contributor
-   has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-   the Work or Derivative Works thereof, You may choose to offer,
-   and charge a fee for, acceptance of support, warranty, indemnity,
-   or other liability obligations and/or rights consistent with this
-   License. However, in accepting such obligations, You may act only
-   on Your own behalf and on Your sole responsibility, not on behalf
-   of any other Contributor, and only if You agree to indemnify,
-   defend, and hold each Contributor harmless for any liability
-   incurred by, or claims asserted against, such Contributor by reason
-   of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-   To apply the Apache License to your work, attach the following
-   boilerplate notice, with the fields enclosed by brackets "[]"
-   replaced with your own identifying information. (Don't include
-   the brackets!)  The text should be enclosed in the appropriate
-   comment syntax for the file format. We also recommend that a
-   file or class name and description of purpose be included on the
-   same "printed page" as the copyright notice for easier
-   identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-
-unicode-xid 0.2.2 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/unicode-rs/unicode-xid
-
-                              Apache License
-                        Version 2.0, January 2004
-                     http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-   "License" shall mean the terms and conditions for use, reproduction,
-   and distribution as defined by Sections 1 through 9 of this document.
-
-   "Licensor" shall mean the copyright owner or entity authorized by
-   the copyright owner that is granting the License.
-
-   "Legal Entity" shall mean the union of the acting entity and all
-   other entities that control, are controlled by, or are under common
-   control with that entity. For the purposes of this definition,
-   "control" means (i) the power, direct or indirect, to cause the
-   direction or management of such entity, whether by contract or
-   otherwise, or (ii) ownership of fifty percent (50%) or more of the
-   outstanding shares, or (iii) beneficial ownership of such entity.
-
-   "You" (or "Your") shall mean an individual or Legal Entity
-   exercising permissions granted by this License.
-
-   "Source" form shall mean the preferred form for making modifications,
-   including but not limited to software source code, documentation
-   source, and configuration files.
-
-   "Object" form shall mean any form resulting from mechanical
-   transformation or translation of a Source form, including but
-   not limited to compiled object code, generated documentation,
-   and conversions to other media types.
-
-   "Work" shall mean the work of authorship, whether in Source or
-   Object form, made available under the License, as indicated by a
-   copyright notice that is included in or attached to the work
-   (an example is provided in the Appendix below).
-
-   "Derivative Works" shall mean any work, whether in Source or Object
-   form, that is based on (or derived from) the Work and for which the
-   editorial revisions, annotations, elaborations, or other modifications
-   represent, as a whole, an original work of authorship. For the purposes
-   of this License, Derivative Works shall not include works that remain
-   separable from, or merely link (or bind by name) to the interfaces of,
-   the Work and Derivative Works thereof.
-
-   "Contribution" shall mean any work of authorship, including
-   the original version of the Work and any modifications or additions
-   to that Work or Derivative Works thereof, that is intentionally
-   submitted to Licensor for inclusion in the Work by the copyright owner
-   or by an individual or Legal Entity authorized to submit on behalf of
-   the copyright owner. For the purposes of this definition, "submitted"
-   means any form of electronic, verbal, or written communication sent
-   to the Licensor or its representatives, including but not limited to
-   communication on electronic mailing lists, source code control systems,
-   and issue tracking systems that are managed by, or on behalf of, the
-   Licensor for the purpose of discussing and improving the Work, but
-   excluding communication that is conspicuously marked or otherwise
-   designated in writing by the copyright owner as "Not a Contribution."
-
-   "Contributor" shall mean Licensor and any individual or Legal Entity
-   on behalf of whom a Contribution has been received by Licensor and
-   subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   copyright license to reproduce, prepare Derivative Works of,
-   publicly display, publicly perform, sublicense, and distribute the
-   Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   (except as stated in this section) patent license to make, have made,
-   use, offer to sell, sell, import, and otherwise transfer the Work,
-   where such license applies only to those patent claims licensable
-   by such Contributor that are necessarily infringed by their
-   Contribution(s) alone or by combination of their Contribution(s)
-   with the Work to which such Contribution(s) was submitted. If You
-   institute patent litigation against any entity (including a
-   cross-claim or counterclaim in a lawsuit) alleging that the Work
-   or a Contribution incorporated within the Work constitutes direct
-   or contributory patent infringement, then any patent licenses
-   granted to You under this License for that Work shall terminate
-   as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-   Work or Derivative Works thereof in any medium, with or without
-   modifications, and in Source or Object form, provided that You
-   meet the following conditions:
-
-   (a) You must give any other recipients of the Work or
-       Derivative Works a copy of this License; and
-
-   (b) You must cause any modified files to carry prominent notices
-       stating that You changed the files; and
-
-   (c) You must retain, in the Source form of any Derivative Works
-       that You distribute, all copyright, patent, trademark, and
-       attribution notices from the Source form of the Work,
-       excluding those notices that do not pertain to any part of
-       the Derivative Works; and
-
-   (d) If the Work includes a "NOTICE" text file as part of its
-       distribution, then any Derivative Works that You distribute must
-       include a readable copy of the attribution notices contained
-       within such NOTICE file, excluding those notices that do not
-       pertain to any part of the Derivative Works, in at least one
-       of the following places: within a NOTICE text file distributed
-       as part of the Derivative Works; within the Source form or
-       documentation, if provided along with the Derivative Works; or,
-       within a display generated by the Derivative Works, if and
-       wherever such third-party notices normally appear. The contents
-       of the NOTICE file are for informational purposes only and
-       do not modify the License. You may add Your own attribution
-       notices within Derivative Works that You distribute, alongside
-       or as an addendum to the NOTICE text from the Work, provided
-       that such additional attribution notices cannot be construed
-       as modifying the License.
-
-   You may add Your own copyright statement to Your modifications and
-   may provide additional or different license terms and conditions
-   for use, reproduction, or distribution of Your modifications, or
-   for any such Derivative Works as a whole, provided Your use,
-   reproduction, and distribution of the Work otherwise complies with
-   the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-   any Contribution intentionally submitted for inclusion in the Work
-   by You to the Licensor shall be under the terms and conditions of
-   this License, without any additional terms or conditions.
-   Notwithstanding the above, nothing herein shall supersede or modify
-   the terms of any separate license agreement you may have executed
-   with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-   names, trademarks, service marks, or product names of the Licensor,
-   except as required for reasonable and customary use in describing the
-   origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-   agreed to in writing, Licensor provides the Work (and each
-   Contributor provides its Contributions) on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-   implied, including, without limitation, any warranties or conditions
-   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-   PARTICULAR PURPOSE. You are solely responsible for determining the
-   appropriateness of using or redistributing the Work and assume any
-   risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-   whether in tort (including negligence), contract, or otherwise,
-   unless required by applicable law (such as deliberate and grossly
-   negligent acts) or agreed to in writing, shall any Contributor be
-   liable to You for damages, including any direct, indirect, special,
-   incidental, or consequential damages of any character arising as a
-   result of this License or out of the use or inability to use the
-   Work (including but not limited to damages for loss of goodwill,
-   work stoppage, computer failure or malfunction, or any and all
-   other commercial damages or losses), even if such Contributor
-   has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-   the Work or Derivative Works thereof, You may choose to offer,
-   and charge a fee for, acceptance of support, warranty, indemnity,
-   or other liability obligations and/or rights consistent with this
-   License. However, in accepting such obligations, You may act only
-   on Your own behalf and on Your sole responsibility, not on behalf
-   of any other Contributor, and only if You agree to indemnify,
-   defend, and hold each Contributor harmless for any liability
-   incurred by, or claims asserted against, such Contributor by reason
-   of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-   To apply the Apache License to your work, attach the following
-   boilerplate notice, with the fields enclosed by brackets "[]"
-   replaced with your own identifying information. (Don't include
-   the brackets!)  The text should be enclosed in the appropriate
-   comment syntax for the file format. We also recommend that a
-   file or class name and description of purpose be included on the
-   same "printed page" as the copyright notice for easier
-   identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-
-unindent 0.1.8 - SPDX: Apache-2.0 - Apache License 2.0
+unindent 0.1.9 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/dtolnay/indoc
 
                               Apache License
@@ -7391,236 +6355,29 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
    negligent acts) or agreed to in writing, shall any Contributor be
    liable to You for damages, including any direct, indirect, special,
    incidental, or consequential damages of any character arising as a
-   result of this License or out of the use or inability to use the
-   Work (including but not limited to damages for loss of goodwill,
-   work stoppage, computer failure or malfunction, or any and all
-   other commercial damages or losses), even if such Contributor
-   has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-   the Work or Derivative Works thereof, You may choose to offer,
-   and charge a fee for, acceptance of support, warranty, indemnity,
-   or other liability obligations and/or rights consistent with this
-   License. However, in accepting such obligations, You may act only
-   on Your own behalf and on Your sole responsibility, not on behalf
-   of any other Contributor, and only if You agree to indemnify,
-   defend, and hold each Contributor harmless for any liability
-   incurred by, or claims asserted against, such Contributor by reason
-   of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-
-
-getrandom 0.2.6 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/rust-random/getrandom
-
-                              Apache License
-                        Version 2.0, January 2004
-                     https://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-   "License" shall mean the terms and conditions for use, reproduction,
-   and distribution as defined by Sections 1 through 9 of this document.
-
-   "Licensor" shall mean the copyright owner or entity authorized by
-   the copyright owner that is granting the License.
-
-   "Legal Entity" shall mean the union of the acting entity and all
-   other entities that control, are controlled by, or are under common
-   control with that entity. For the purposes of this definition,
-   "control" means (i) the power, direct or indirect, to cause the
-   direction or management of such entity, whether by contract or
-   otherwise, or (ii) ownership of fifty percent (50%) or more of the
-   outstanding shares, or (iii) beneficial ownership of such entity.
-
-   "You" (or "Your") shall mean an individual or Legal Entity
-   exercising permissions granted by this License.
-
-   "Source" form shall mean the preferred form for making modifications,
-   including but not limited to software source code, documentation
-   source, and configuration files.
-
-   "Object" form shall mean any form resulting from mechanical
-   transformation or translation of a Source form, including but
-   not limited to compiled object code, generated documentation,
-   and conversions to other media types.
-
-   "Work" shall mean the work of authorship, whether in Source or
-   Object form, made available under the License, as indicated by a
-   copyright notice that is included in or attached to the work
-   (an example is provided in the Appendix below).
-
-   "Derivative Works" shall mean any work, whether in Source or Object
-   form, that is based on (or derived from) the Work and for which the
-   editorial revisions, annotations, elaborations, or other modifications
-   represent, as a whole, an original work of authorship. For the purposes
-   of this License, Derivative Works shall not include works that remain
-   separable from, or merely link (or bind by name) to the interfaces of,
-   the Work and Derivative Works thereof.
-
-   "Contribution" shall mean any work of authorship, including
-   the original version of the Work and any modifications or additions
-   to that Work or Derivative Works thereof, that is intentionally
-   submitted to Licensor for inclusion in the Work by the copyright owner
-   or by an individual or Legal Entity authorized to submit on behalf of
-   the copyright owner. For the purposes of this definition, "submitted"
-   means any form of electronic, verbal, or written communication sent
-   to the Licensor or its representatives, including but not limited to
-   communication on electronic mailing lists, source code control systems,
-   and issue tracking systems that are managed by, or on behalf of, the
-   Licensor for the purpose of discussing and improving the Work, but
-   excluding communication that is conspicuously marked or otherwise
-   designated in writing by the copyright owner as "Not a Contribution."
-
-   "Contributor" shall mean Licensor and any individual or Legal Entity
-   on behalf of whom a Contribution has been received by Licensor and
-   subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   copyright license to reproduce, prepare Derivative Works of,
-   publicly display, publicly perform, sublicense, and distribute the
-   Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   (except as stated in this section) patent license to make, have made,
-   use, offer to sell, sell, import, and otherwise transfer the Work,
-   where such license applies only to those patent claims licensable
-   by such Contributor that are necessarily infringed by their
-   Contribution(s) alone or by combination of their Contribution(s)
-   with the Work to which such Contribution(s) was submitted. If You
-   institute patent litigation against any entity (including a
-   cross-claim or counterclaim in a lawsuit) alleging that the Work
-   or a Contribution incorporated within the Work constitutes direct
-   or contributory patent infringement, then any patent licenses
-   granted to You under this License for that Work shall terminate
-   as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-   Work or Derivative Works thereof in any medium, with or without
-   modifications, and in Source or Object form, provided that You
-   meet the following conditions:
-
-   (a) You must give any other recipients of the Work or
-       Derivative Works a copy of this License; and
-
-   (b) You must cause any modified files to carry prominent notices
-       stating that You changed the files; and
-
-   (c) You must retain, in the Source form of any Derivative Works
-       that You distribute, all copyright, patent, trademark, and
-       attribution notices from the Source form of the Work,
-       excluding those notices that do not pertain to any part of
-       the Derivative Works; and
-
-   (d) If the Work includes a "NOTICE" text file as part of its
-       distribution, then any Derivative Works that You distribute must
-       include a readable copy of the attribution notices contained
-       within such NOTICE file, excluding those notices that do not
-       pertain to any part of the Derivative Works, in at least one
-       of the following places: within a NOTICE text file distributed
-       as part of the Derivative Works; within the Source form or
-       documentation, if provided along with the Derivative Works; or,
-       within a display generated by the Derivative Works, if and
-       wherever such third-party notices normally appear. The contents
-       of the NOTICE file are for informational purposes only and
-       do not modify the License. You may add Your own attribution
-       notices within Derivative Works that You distribute, alongside
-       or as an addendum to the NOTICE text from the Work, provided
-       that such additional attribution notices cannot be construed
-       as modifying the License.
-
-   You may add Your own copyright statement to Your modifications and
-   may provide additional or different license terms and conditions
-   for use, reproduction, or distribution of Your modifications, or
-   for any such Derivative Works as a whole, provided Your use,
-   reproduction, and distribution of the Work otherwise complies with
-   the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-   any Contribution intentionally submitted for inclusion in the Work
-   by You to the Licensor shall be under the terms and conditions of
-   this License, without any additional terms or conditions.
-   Notwithstanding the above, nothing herein shall supersede or modify
-   the terms of any separate license agreement you may have executed
-   with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-   names, trademarks, service marks, or product names of the Licensor,
-   except as required for reasonable and customary use in describing the
-   origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-   agreed to in writing, Licensor provides the Work (and each
-   Contributor provides its Contributions) on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-   implied, including, without limitation, any warranties or conditions
-   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-   PARTICULAR PURPOSE. You are solely responsible for determining the
-   appropriateness of using or redistributing the Work and assume any
-   risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-   whether in tort (including negligence), contract, or otherwise,
-   unless required by applicable law (such as deliberate and grossly
-   negligent acts) or agreed to in writing, shall any Contributor be
-   liable to You for damages, including any direct, indirect, special,
-   incidental, or consequential damages of any character arising as a
-   result of this License or out of the use or inability to use the
-   Work (including but not limited to damages for loss of goodwill,
-   work stoppage, computer failure or malfunction, or any and all
-   other commercial damages or losses), even if such Contributor
-   has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-   the Work or Derivative Works thereof, You may choose to offer,
-   and charge a fee for, acceptance of support, warranty, indemnity,
-   or other liability obligations and/or rights consistent with this
-   License. However, in accepting such obligations, You may act only
-   on Your own behalf and on Your sole responsibility, not on behalf
-   of any other Contributor, and only if You agree to indemnify,
-   defend, and hold each Contributor harmless for any liability
-   incurred by, or claims asserted against, such Contributor by reason
-   of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-   To apply the Apache License to your work, attach the following
-   boilerplate notice, with the fields enclosed by brackets "[]"
-   replaced with your own identifying information. (Don't include
-   the brackets!)  The text should be enclosed in the appropriate
-   comment syntax for the file format. We also recommend that a
-   file or class name and description of purpose be included on the
-   same "printed page" as the copyright notice for easier
-   identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
 
-	https://www.apache.org/licenses/LICENSE-2.0
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
 
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+END OF TERMS AND CONDITIONS
 
 
 
-rand_chacha 0.3.1 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/rust-random/rand
+getrandom 0.2.6 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/rust-random/getrandom
 
                               Apache License
                         Version 2.0, January 2004
@@ -7826,7 +6583,7 @@ limitations under the License.
 
 
 
-rand_core 0.6.3 - SPDX: Apache-2.0 - Apache License 2.0
+rand_chacha 0.3.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/rust-random/rand
 
                               Apache License
@@ -8033,12 +6790,12 @@ limitations under the License.
 
 
 
-log 0.4.16 - SPDX: Apache-2.0 - Apache License 2.0
-https://github.com/rust-lang/log
+rand_core 0.6.3 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/rust-random/rand
 
                               Apache License
                         Version 2.0, January 2004
-                     http://www.apache.org/licenses/
+                     https://www.apache.org/licenses/
 
 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
 
@@ -8230,7 +6987,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
-	http://www.apache.org/licenses/LICENSE-2.0
+	https://www.apache.org/licenses/LICENSE-2.0
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
@@ -8240,7 +6997,214 @@ limitations under the License.
 
 
 
-pyo3 0.15.1 - SPDX: Apache-2.0 - Apache License 2.0
+log 0.4.17 - SPDX: Apache-2.0 - Apache License 2.0
+https://github.com/rust-lang/log
+
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+
+pyo3 0.15.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/pyo3/pyo3
 
    Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
@@ -8435,7 +7399,7 @@ https://github.com/pyo3/pyo3
 
 
 
-pyo3-build-config 0.15.1 - SPDX: Apache-2.0 - Apache License 2.0
+pyo3-build-config 0.15.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/pyo3/pyo3
 
    Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
@@ -8630,7 +7594,7 @@ https://github.com/pyo3/pyo3
 
 
 
-pyo3-macros 0.15.1 - SPDX: Apache-2.0 - Apache License 2.0
+pyo3-macros 0.15.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/pyo3/pyo3
 
    Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
@@ -8825,7 +7789,7 @@ https://github.com/pyo3/pyo3
 
 
 
-pyo3-macros-backend 0.15.1 - SPDX: Apache-2.0 - Apache License 2.0
+pyo3-macros-backend 0.15.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/pyo3/pyo3
 
    Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
@@ -9347,7 +8311,7 @@ limitations under the License.
 
 
 
-windows_aarch64_msvc 0.34.0 - SPDX: Apache-2.0 - Apache License 2.0
+windows_aarch64_msvc 0.36.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/microsoft/windows-rs
 
 Apache License
@@ -9426,7 +8390,7 @@ limitations under the License.
 
 
 
-windows_i686_gnu 0.34.0 - SPDX: Apache-2.0 - Apache License 2.0
+windows_i686_gnu 0.36.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/microsoft/windows-rs
 
 Apache License
@@ -9505,7 +8469,7 @@ limitations under the License.
 
 
 
-windows_i686_msvc 0.34.0 - SPDX: Apache-2.0 - Apache License 2.0
+windows_i686_msvc 0.36.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/microsoft/windows-rs
 
 Apache License
@@ -9584,7 +8548,7 @@ limitations under the License.
 
 
 
-windows_x86_64_gnu 0.34.0 - SPDX: Apache-2.0 - Apache License 2.0
+windows_x86_64_gnu 0.36.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/microsoft/windows-rs
 
 Apache License
@@ -9663,7 +8627,7 @@ limitations under the License.
 
 
 
-windows_x86_64_msvc 0.34.0 - SPDX: Apache-2.0 - Apache License 2.0
+windows_x86_64_msvc 0.36.1 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/microsoft/windows-rs
 
 Apache License
@@ -9742,7 +8706,7 @@ limitations under the License.
 
 
 
-unicode-xid 0.2.2 - SPDX: Apache-2.0 - Apache License 2.0
+unicode-xid 0.2.3 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/unicode-rs/unicode-xid
 
 Licensed under the Apache License, Version 2.0
@@ -9758,34 +8722,109 @@ according to those terms.
 instant 0.1.12 - SPDX: BSD-3-Clause - BSD 3-Clause "New" or "Revised" License
 https://github.com/sebcrozet/instant
 
-Copyright (c) 2019, Sébastien Crozet
-All rights reserved.
+Copyright (c) 2019, Sébastien Crozet
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+3. Neither the name of the author nor the names of its contributors may be used
+   to endorse or promote products derived from this software without specific
+   prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+qirlib 0.3.0 - SPDX: MIT - MIT License
+https://github.com/qir-alliance/pyqir
+
+/*
+Copyright (c) 2015 Peter Marheine
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+/* llvm-c/Target.h helper functions wrappers.
+ *
+ * The LLVMInitializeAll* functions and friends are defined `static inline`, so
+ * we can't bind directly to them (the function body is generated via macro),
+ * so here are some wrappers.
+ */
+#include <llvm-c/Target.h>
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
+void LLVM_InitializeAllTargetInfos(void) {
+    LLVMInitializeAllTargetInfos();
+}
 
-1. Redistributions of source code must retain the above copyright notice, this
-   list of conditions and the following disclaimer.
+void LLVM_InitializeAllTargets(void) {
+    LLVMInitializeAllTargets();
+}
 
-2. Redistributions in binary form must reproduce the above copyright notice,
-   this list of conditions and the following disclaimer in the documentation
-   and/or other materials provided with the distribution.
+void LLVM_InitializeAllTargetMCs(void) {
+    LLVMInitializeAllTargetMCs();
+}
 
-3. Neither the name of the author nor the names of its contributors may be used
-   to endorse or promote products derived from this software without specific
-   prior written permission.
+void LLVM_InitializeAllAsmPrinters(void) {
+    LLVMInitializeAllAsmPrinters();
+}
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+void LLVM_InitializeAllAsmParsers(void) {
+    LLVMInitializeAllAsmParsers();
+}
 
+void LLVM_InitializeAllDisassemblers(void) {
+    LLVMInitializeAllDisassemblers();
+}
+
+/* These functions return true on failure. */
+LLVMBool LLVM_InitializeNativeTarget(void) {
+    return LLVMInitializeNativeTarget();
+}
+
+LLVMBool LLVM_InitializeNativeAsmParser(void) {
+    return LLVMInitializeNativeAsmParser();
+}
+
+LLVMBool LLVM_InitializeNativeAsmPrinter(void) {
+    return LLVMInitializeNativeAsmPrinter();
+}
+
+LLVMBool LLVM_InitializeNativeDisassembler(void) {
+    return LLVMInitializeNativeDisassembler();
+}
 
 
 llvm-sys 110.0.3 - SPDX: MIT - MIT License
@@ -9813,42 +8852,91 @@ SOFTWARE.
 
 
 
-atty 0.2.14 - SPDX: MIT - MIT License
-https://github.com/softprops/atty
+llvm-sys 120.2.4 - SPDX: MIT - MIT License
+https://gitlab.com/taricorp/llvm-sys.rs
 
-Copyright (c) 2015-2019 Doug Tangren
+Copyright (c) 2015 Peter Marheine
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
 
 
 
-mut_static 5.0.0 - SPDX: MIT - MIT License
-https://github.com/tyleo/mut_static.git
+llvm-sys 130.0.4 - SPDX: MIT - MIT License
+https://gitlab.com/taricorp/llvm-sys.rs
+
+Copyright (c) 2015 Peter Marheine
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+llvm-sys 140.0.2 - SPDX: MIT - MIT License
+https://gitlab.com/taricorp/llvm-sys.rs
+
+Copyright (c) 2015 Peter Marheine
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
 
-Copyright (c) 2016 Tyler Wolf Leonhardt
 
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+mut_static 5.0.0 - SPDX: MIT - MIT License
+https://github.com/tyleo/mut_static.git
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+Copyright (c) 2016 Tyler Wolf Leonhardt
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
 
@@ -10042,165 +9130,6 @@ SOFTWARE.
 
 
 
-qirlib 0.3.0 - SPDX: MIT - MIT License
-https://crates.io/crates/qirlib
-
-MIT License
-
-Copyright (c) <year> <copyright holders>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-
-aho-corasick 0.7.18 - SPDX: MIT - MIT License
-https://github.com/BurntSushi/aho-corasick
-
-The MIT License (MIT)
-
-Copyright (c) 2015 Andrew Gallant
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
-
-memchr 2.4.1 - SPDX: MIT - MIT License
-https://github.com/BurntSushi/memchr
-
-The MIT License (MIT)
-
-Copyright (c) 2015 Andrew Gallant
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
-
-termcolor 1.1.3 - SPDX: MIT - MIT License
-https://github.com/BurntSushi/termcolor
-
-The MIT License (MIT)
-
-Copyright (c) 2015 Andrew Gallant
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
-
-winapi-util 0.1.5 - SPDX: MIT - MIT License
-https://github.com/BurntSushi/winapi-util
-
-The MIT License (MIT)
-
-Copyright (c) 2017 Andrew Gallant
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
-
-aho-corasick 0.7.18 - SPDX: MIT - MIT License
-https://github.com/BurntSushi/aho-corasick
-
-This project is dual-licensed under the Unlicense and MIT licenses.
-
-You may use this code under the terms of either license.
-
-
-
-memchr 2.4.1 - SPDX: MIT - MIT License
-https://github.com/BurntSushi/memchr
-
-This project is dual-licensed under the Unlicense and MIT licenses.
-
-You may use this code under the terms of either license.
-
-
-
-termcolor 1.1.3 - SPDX: MIT - MIT License
-https://github.com/BurntSushi/termcolor
-
-This project is dual-licensed under the Unlicense and MIT licenses.
-
-You may use this code under the terms of either license.
-
-
-
-winapi-util 0.1.5 - SPDX: MIT - MIT License
-https://github.com/BurntSushi/winapi-util
-
-This project is dual-licensed under the Unlicense and MIT licenses.
-
-You may use this code under the terms of either license.
-
-
-
 
 LLVM 11.0 - Apache-2.0 WITH LLVM-exception - Apache License v2.0 with LLVM Exceptions
 https://github.com/llvm/llvm-project
diff --git a/pyqir-generator/src/lib.rs b/pyqir-generator/src/lib.rs
index 0cf30ad1..24b68fd7 100644
--- a/pyqir-generator/src/lib.rs
+++ b/pyqir-generator/src/lib.rs
@@ -10,4 +10,5 @@
 //     we can directly control in our code.
 #![allow(clippy::needless_option_as_deref)]
 
+#[cfg(feature = "python-bindings")]
 pub mod python;
diff --git a/pyqir-generator/tox.ini b/pyqir-generator/tox.ini
deleted file mode 100644
index 03a2d978..00000000
--- a/pyqir-generator/tox.ini
+++ /dev/null
@@ -1,39 +0,0 @@
-[tox]
-isolated_build = True
-
-[testenv]
-
-# https://github.com/tox-dev/tox/issues/1550
-# PYTHONIOENCODING = utf-8 needs to be set to work around windows bug
-setenv =
-    PYTHONIOENCODING = utf-8
-
-# needed temporarily for build to find cl.exe
-passenv = *
-
-deps = -rrequirements-dev.txt
-
-[testenv:test]
-description = Run the unit tests under {basepython}
-commands =
-    maturin develop --release --cargo-extra-args="-vv"
-    pytest {posargs}
-
-[testenv:pack]
-description = Build the wheels under all installed platforms
-commands =
-    maturin build --release --cargo-extra-args="-vv"
-
-[testenv:all]
-description = Build the wheels under all installed platforms
-commands =
-    maturin build --release --cargo-extra-args="-vv"
-    maturin develop --release --cargo-extra-args="-vv"
-    pytest {posargs}
-
-[testenv:allmusl]
-description = Build the wheels under all installed platforms
-commands =
-    maturin build --skip-auditwheel --release --cargo-extra-args="-vv"
-    maturin develop --release --cargo-extra-args="-vv"
-    pytest {posargs}
diff --git a/pyqir-parser/Cargo.toml b/pyqir-parser/Cargo.toml
index bf285f94..4c1a236e 100644
--- a/pyqir-parser/Cargo.toml
+++ b/pyqir-parser/Cargo.toml
@@ -12,18 +12,21 @@ repository = "https://github.com/qir-alliance/pyqir"
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
 [dependencies]
-llvm-ir = { version = "0.8.0", features = ["llvm-11"] }
-
-[dependencies.pyo3]
-version = "0.15.1"
+llvm-ir = { version = "0.8.1" }
+pyo3 = { version="0.15.2", optional = true }
 
 [features]
 extension-module = ["pyo3/abi3-py36", "pyo3/extension-module"]
-default = ["extension-module"]
+python-bindings = []
+llvm11-0 = ["llvm-ir/llvm-11"]
+llvm12-0 = ["llvm-ir/llvm-12"]
+llvm13-0 = ["llvm-ir/llvm-13"]
+#llvm14-0 = ["llvm-ir/llvm-14"]
+default = ["extension-module", "python-bindings"]
 
 [lib]
 name = "pyqir_parser"
-crate-type = ["cdylib"]
+crate-type = ["cdylib", "lib"]
 
 [package.metadata.maturin]
 name = "pyqir.parser._native"
diff --git a/pyqir-parser/NOTICE-WHEEL.txt b/pyqir-parser/NOTICE-WHEEL.txt
index 8ddf6009..25d7ce53 100644
--- a/pyqir-parser/NOTICE-WHEEL.txt
+++ b/pyqir-parser/NOTICE-WHEEL.txt
@@ -216,7 +216,7 @@ https://github.com/retep998/winapi-rs
 
 
 
-libc 0.2.121 - SPDX: Apache-2.0 - Apache License 2.0
+libc 0.2.125 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/rust-lang/libc
 
                               Apache License
@@ -2882,7 +2882,7 @@ limitations under the License.
 
 
 
-proc-macro2 1.0.36 - SPDX: Apache-2.0 - Apache License 2.0
+proc-macro2 1.0.38 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/dtolnay/proc-macro2
 
                               Apache License
@@ -3089,7 +3089,7 @@ limitations under the License.
 
 
 
-quote 1.0.17 - SPDX: Apache-2.0 - Apache License 2.0
+quote 1.0.18 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/dtolnay/quote
 
                               Apache License
@@ -3710,7 +3710,7 @@ limitations under the License.
 
 
 
-syn 1.0.90 - SPDX: Apache-2.0 - Apache License 2.0
+syn 1.0.93 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/dtolnay/syn
 
                               Apache License
@@ -3917,7 +3917,7 @@ limitations under the License.
 
 
 
-unicode-xid 0.2.2 - SPDX: Apache-2.0 - Apache License 2.0
+unicode-xid 0.2.3 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/unicode-rs/unicode-xid
 
                               Apache License
@@ -4124,7 +4124,7 @@ limitations under the License.
 
 
 
-unindent 0.1.8 - SPDX: Apache-2.0 - Apache License 2.0
+unindent 0.1.9 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/dtolnay/indoc
 
                               Apache License
@@ -4331,214 +4331,214 @@ limitations under the License.
 
 
 
-log 0.4.16 - SPDX: Apache-2.0 - Apache License 2.0
+log 0.4.17 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/rust-lang/log
 
-                              Apache License
-                        Version 2.0, January 2004
-                     http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-   "License" shall mean the terms and conditions for use, reproduction,
-   and distribution as defined by Sections 1 through 9 of this document.
-
-   "Licensor" shall mean the copyright owner or entity authorized by
-   the copyright owner that is granting the License.
-
-   "Legal Entity" shall mean the union of the acting entity and all
-   other entities that control, are controlled by, or are under common
-   control with that entity. For the purposes of this definition,
-   "control" means (i) the power, direct or indirect, to cause the
-   direction or management of such entity, whether by contract or
-   otherwise, or (ii) ownership of fifty percent (50%) or more of the
-   outstanding shares, or (iii) beneficial ownership of such entity.
-
-   "You" (or "Your") shall mean an individual or Legal Entity
-   exercising permissions granted by this License.
-
-   "Source" form shall mean the preferred form for making modifications,
-   including but not limited to software source code, documentation
-   source, and configuration files.
-
-   "Object" form shall mean any form resulting from mechanical
-   transformation or translation of a Source form, including but
-   not limited to compiled object code, generated documentation,
-   and conversions to other media types.
-
-   "Work" shall mean the work of authorship, whether in Source or
-   Object form, made available under the License, as indicated by a
-   copyright notice that is included in or attached to the work
-   (an example is provided in the Appendix below).
-
-   "Derivative Works" shall mean any work, whether in Source or Object
-   form, that is based on (or derived from) the Work and for which the
-   editorial revisions, annotations, elaborations, or other modifications
-   represent, as a whole, an original work of authorship. For the purposes
-   of this License, Derivative Works shall not include works that remain
-   separable from, or merely link (or bind by name) to the interfaces of,
-   the Work and Derivative Works thereof.
-
-   "Contribution" shall mean any work of authorship, including
-   the original version of the Work and any modifications or additions
-   to that Work or Derivative Works thereof, that is intentionally
-   submitted to Licensor for inclusion in the Work by the copyright owner
-   or by an individual or Legal Entity authorized to submit on behalf of
-   the copyright owner. For the purposes of this definition, "submitted"
-   means any form of electronic, verbal, or written communication sent
-   to the Licensor or its representatives, including but not limited to
-   communication on electronic mailing lists, source code control systems,
-   and issue tracking systems that are managed by, or on behalf of, the
-   Licensor for the purpose of discussing and improving the Work, but
-   excluding communication that is conspicuously marked or otherwise
-   designated in writing by the copyright owner as "Not a Contribution."
-
-   "Contributor" shall mean Licensor and any individual or Legal Entity
-   on behalf of whom a Contribution has been received by Licensor and
-   subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   copyright license to reproduce, prepare Derivative Works of,
-   publicly display, publicly perform, sublicense, and distribute the
-   Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   (except as stated in this section) patent license to make, have made,
-   use, offer to sell, sell, import, and otherwise transfer the Work,
-   where such license applies only to those patent claims licensable
-   by such Contributor that are necessarily infringed by their
-   Contribution(s) alone or by combination of their Contribution(s)
-   with the Work to which such Contribution(s) was submitted. If You
-   institute patent litigation against any entity (including a
-   cross-claim or counterclaim in a lawsuit) alleging that the Work
-   or a Contribution incorporated within the Work constitutes direct
-   or contributory patent infringement, then any patent licenses
-   granted to You under this License for that Work shall terminate
-   as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-   Work or Derivative Works thereof in any medium, with or without
-   modifications, and in Source or Object form, provided that You
-   meet the following conditions:
-
-   (a) You must give any other recipients of the Work or
-       Derivative Works a copy of this License; and
-
-   (b) You must cause any modified files to carry prominent notices
-       stating that You changed the files; and
-
-   (c) You must retain, in the Source form of any Derivative Works
-       that You distribute, all copyright, patent, trademark, and
-       attribution notices from the Source form of the Work,
-       excluding those notices that do not pertain to any part of
-       the Derivative Works; and
-
-   (d) If the Work includes a "NOTICE" text file as part of its
-       distribution, then any Derivative Works that You distribute must
-       include a readable copy of the attribution notices contained
-       within such NOTICE file, excluding those notices that do not
-       pertain to any part of the Derivative Works, in at least one
-       of the following places: within a NOTICE text file distributed
-       as part of the Derivative Works; within the Source form or
-       documentation, if provided along with the Derivative Works; or,
-       within a display generated by the Derivative Works, if and
-       wherever such third-party notices normally appear. The contents
-       of the NOTICE file are for informational purposes only and
-       do not modify the License. You may add Your own attribution
-       notices within Derivative Works that You distribute, alongside
-       or as an addendum to the NOTICE text from the Work, provided
-       that such additional attribution notices cannot be construed
-       as modifying the License.
-
-   You may add Your own copyright statement to Your modifications and
-   may provide additional or different license terms and conditions
-   for use, reproduction, or distribution of Your modifications, or
-   for any such Derivative Works as a whole, provided Your use,
-   reproduction, and distribution of the Work otherwise complies with
-   the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-   any Contribution intentionally submitted for inclusion in the Work
-   by You to the Licensor shall be under the terms and conditions of
-   this License, without any additional terms or conditions.
-   Notwithstanding the above, nothing herein shall supersede or modify
-   the terms of any separate license agreement you may have executed
-   with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-   names, trademarks, service marks, or product names of the Licensor,
-   except as required for reasonable and customary use in describing the
-   origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-   agreed to in writing, Licensor provides the Work (and each
-   Contributor provides its Contributions) on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-   implied, including, without limitation, any warranties or conditions
-   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-   PARTICULAR PURPOSE. You are solely responsible for determining the
-   appropriateness of using or redistributing the Work and assume any
-   risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-   whether in tort (including negligence), contract, or otherwise,
-   unless required by applicable law (such as deliberate and grossly
-   negligent acts) or agreed to in writing, shall any Contributor be
-   liable to You for damages, including any direct, indirect, special,
-   incidental, or consequential damages of any character arising as a
-   result of this License or out of the use or inability to use the
-   Work (including but not limited to damages for loss of goodwill,
-   work stoppage, computer failure or malfunction, or any and all
-   other commercial damages or losses), even if such Contributor
-   has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-   the Work or Derivative Works thereof, You may choose to offer,
-   and charge a fee for, acceptance of support, warranty, indemnity,
-   or other liability obligations and/or rights consistent with this
-   License. However, in accepting such obligations, You may act only
-   on Your own behalf and on Your sole responsibility, not on behalf
-   of any other Contributor, and only if You agree to indemnify,
-   defend, and hold each Contributor harmless for any liability
-   incurred by, or claims asserted against, such Contributor by reason
-   of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-   To apply the Apache License to your work, attach the following
-   boilerplate notice, with the fields enclosed by brackets "[]"
-   replaced with your own identifying information. (Don't include
-   the brackets!)  The text should be enclosed in the appropriate
-   comment syntax for the file format. We also recommend that a
-   file or class name and description of purpose be included on the
-   same "printed page" as the copyright notice for easier
-   identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-
-
-pyo3 0.15.1 - SPDX: Apache-2.0 - Apache License 2.0
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+
+pyo3 0.15.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/pyo3/pyo3
 
    Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
@@ -4733,7 +4733,7 @@ https://github.com/pyo3/pyo3
 
 
 
-pyo3-build-config 0.15.1 - SPDX: Apache-2.0 - Apache License 2.0
+pyo3-build-config 0.15.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/pyo3/pyo3
 
    Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
@@ -4928,7 +4928,7 @@ https://github.com/pyo3/pyo3
 
 
 
-pyo3-macros 0.15.1 - SPDX: Apache-2.0 - Apache License 2.0
+pyo3-macros 0.15.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/pyo3/pyo3
 
    Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
@@ -5123,7 +5123,7 @@ https://github.com/pyo3/pyo3
 
 
 
-pyo3-macros-backend 0.15.1 - SPDX: Apache-2.0 - Apache License 2.0
+pyo3-macros-backend 0.15.2 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/pyo3/pyo3
 
    Copyright (c) 2017-present PyO3 Project and Contributors.  https://github.com/PyO3
@@ -5487,7 +5487,7 @@ limitations under the License.
 
 
 
-unicode-xid 0.2.2 - SPDX: Apache-2.0 - Apache License 2.0
+unicode-xid 0.2.3 - SPDX: Apache-2.0 - Apache License 2.0
 https://github.com/unicode-rs/unicode-xid
 
 Licensed under the Apache License, Version 2.0
@@ -5503,37 +5503,87 @@ according to those terms.
 instant 0.1.12 - SPDX: BSD-3-Clause - BSD 3-Clause "New" or "Revised" License
 https://github.com/sebcrozet/instant
 
-Copyright (c) 2019, Sébastien Crozet
-All rights reserved.
+Copyright (c) 2019, Sébastien Crozet
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+3. Neither the name of the author nor the names of its contributors may be used
+   to endorse or promote products derived from this software without specific
+   prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+llvm-sys 110.0.3 - SPDX: MIT - MIT License
+https://gitlab.com/taricorp/llvm-sys.rs
+
+Copyright (c) 2015 Peter Marheine
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
 
-1. Redistributions of source code must retain the above copyright notice, this
-   list of conditions and the following disclaimer.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
 
-2. Redistributions in binary form must reproduce the above copyright notice,
-   this list of conditions and the following disclaimer in the documentation
-   and/or other materials provided with the distribution.
 
-3. Neither the name of the author nor the names of its contributors may be used
-   to endorse or promote products derived from this software without specific
-   prior written permission.
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+llvm-sys 120.2.4 - SPDX: MIT - MIT License
+https://gitlab.com/taricorp/llvm-sys.rs
 
+Copyright (c) 2015 Peter Marheine
 
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
 
-llvm-sys 110.0.3 - SPDX: MIT - MIT License
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+llvm-sys 130.0.4 - SPDX: MIT - MIT License
 https://gitlab.com/taricorp/llvm-sys.rs
 
 Copyright (c) 2015 Peter Marheine
diff --git a/pyqir-parser/src/lib.rs b/pyqir-parser/src/lib.rs
index 2004b525..1f264c5b 100644
--- a/pyqir-parser/src/lib.rs
+++ b/pyqir-parser/src/lib.rs
@@ -6,4 +6,6 @@
 #![allow(clippy::used_underscore_binding)]
 
 pub mod parse;
+
+#[cfg(feature = "python-bindings")]
 pub mod python;
diff --git a/pyqir-parser/tox.ini b/pyqir-parser/tox.ini
deleted file mode 100644
index 03a2d978..00000000
--- a/pyqir-parser/tox.ini
+++ /dev/null
@@ -1,39 +0,0 @@
-[tox]
-isolated_build = True
-
-[testenv]
-
-# https://github.com/tox-dev/tox/issues/1550
-# PYTHONIOENCODING = utf-8 needs to be set to work around windows bug
-setenv =
-    PYTHONIOENCODING = utf-8
-
-# needed temporarily for build to find cl.exe
-passenv = *
-
-deps = -rrequirements-dev.txt
-
-[testenv:test]
-description = Run the unit tests under {basepython}
-commands =
-    maturin develop --release --cargo-extra-args="-vv"
-    pytest {posargs}
-
-[testenv:pack]
-description = Build the wheels under all installed platforms
-commands =
-    maturin build --release --cargo-extra-args="-vv"
-
-[testenv:all]
-description = Build the wheels under all installed platforms
-commands =
-    maturin build --release --cargo-extra-args="-vv"
-    maturin develop --release --cargo-extra-args="-vv"
-    pytest {posargs}
-
-[testenv:allmusl]
-description = Build the wheels under all installed platforms
-commands =
-    maturin build --skip-auditwheel --release --cargo-extra-args="-vv"
-    maturin develop --release --cargo-extra-args="-vv"
-    pytest {posargs}
diff --git a/qirlib/Cargo.toml b/qirlib/Cargo.toml
index e7414932..89de8358 100644
--- a/qirlib/Cargo.toml
+++ b/qirlib/Cargo.toml
@@ -11,8 +11,15 @@ repository = "https://github.com/qir-alliance/pyqir"
 rust-version = "1.56"
 
 [dependencies]
-llvm-sys = "110"
-inkwell = { git = "https://github.com/TheDan64/inkwell", branch = "master", default-features = false, features = ["llvm11-0", "target-x86"] }
+# We can't reference the disable-alltargets-init feature without including
+# llvm-sys as a dep, even though inkwell brings in these exact versions.
+llvm-sys-110 = { package = "llvm-sys", version = "110.0.3", optional = true }
+llvm-sys-120 = { package = "llvm-sys", version = "120.2.2", optional = true }
+llvm-sys-130 = { package = "llvm-sys", version = "130.0.2", optional = true }
+llvm-sys-140 = { package = "llvm-sys", version = "140.0.2", optional = true }
+
+# The llvm version of inkwell is controlled through this crates features.
+inkwell = { git = "https://github.com/TheDan64/inkwell", branch = "master", default-features = false, features = ["target-x86"] }
 log = "0.4.14"
 cty = "0.2.1"
 rand = "0.8.4"
@@ -22,7 +29,7 @@ mut_static = "5.0.0"
 bitvec = "1.0.0"
 
 [dev-dependencies]
-serial_test = "0.5.1"
+serial_test = "0.6.0"
 tempfile = "3.2.0"
 normalize-line-endings = "0.3.0"
 
@@ -37,19 +44,35 @@ semver = "1.0.6"
 name = "qirlib"
 
 [features]
+llvm11-0 = ["inkwell/llvm11-0"]
+llvm12-0 = ["inkwell/llvm12-0"]
+llvm13-0 = ["inkwell/llvm13-0"]
+llvm14-0 = ["inkwell/llvm14-0"]
 
 # default to use llvm-sys/inkwell for llvm linking
 default = ["external-llvm-linking"]
 external-llvm-linking = []
+
 # disable linking for local installation or packaging
-no-llvm-linking = ["llvm-sys/disable-alltargets-init", "inkwell/llvm11-0-no-llvm-linking"]
+# no-llvm-linking is marker used in the cfg checks
+llvm11-0-no-llvm-linking = ["llvm11-0", "no-llvm-linking", "llvm-sys-110/disable-alltargets-init", "inkwell/llvm11-0-no-llvm-linking"]
+llvm12-0-no-llvm-linking = ["llvm12-0", "no-llvm-linking", "llvm-sys-120/disable-alltargets-init", "inkwell/llvm12-0-no-llvm-linking"]
+llvm13-0-no-llvm-linking = ["llvm13-0", "no-llvm-linking", "llvm-sys-130/disable-alltargets-init", "inkwell/llvm13-0-no-llvm-linking"]
+llvm14-0-no-llvm-linking = ["llvm14-0", "no-llvm-linking", "llvm-sys-140/disable-alltargets-init", "inkwell/llvm14-0-no-llvm-linking"]
+
+no-llvm-linking = []
+
 # let qirlib do the llvm linking
-qirlib-llvm-linking = ["llvm-sys/disable-alltargets-init", "inkwell/llvm11-0-no-llvm-linking"]
+# qirlib-llvm-linking is marker used in the cfg checks
+llvm11-0-qirlib-llvm-linking = ["llvm11-0", "qirlib-llvm-linking", "llvm-sys-110/disable-alltargets-init", "inkwell/llvm11-0-no-llvm-linking"]
+llvm12-0-qirlib-llvm-linking = ["llvm12-0", "qirlib-llvm-linking", "llvm-sys-120/disable-alltargets-init", "inkwell/llvm12-0-no-llvm-linking"]
+llvm13-0-qirlib-llvm-linking = ["llvm13-0", "qirlib-llvm-linking", "llvm-sys-130/disable-alltargets-init", "inkwell/llvm13-0-no-llvm-linking"]
+llvm14-0-qirlib-llvm-linking = ["llvm14-0", "qirlib-llvm-linking", "llvm-sys-140/disable-alltargets-init", "inkwell/llvm14-0-no-llvm-linking"]
+
+qirlib-llvm-linking = []
 
 download-llvm = []
 build-llvm = []
 
 # Dev use only for packaging LLVM builds
 package-llvm = ["build-llvm", "no-llvm-linking"]
-
-
diff --git a/qirlib/README.md b/qirlib/README.md
index 7815dfd5..2753eee0 100644
--- a/qirlib/README.md
+++ b/qirlib/README.md
@@ -11,7 +11,7 @@ is also the native implementation behind the PyQIR packages:
 ## Requirements
 
 - Rust 1.57+
-- LLVM 11.x (see [Usage](#usage) below)
+- LLVM 11.x, 12.x, 13.x, or LLVM 14.x (see [Usage](#usage) below)
 
 ## Usage
 
@@ -31,21 +31,33 @@ specified with an environment variable.
 
 Supported cargo features are following:
 
+- The use `<llvm version>` is a placeholder for `llvm11-0`, `llvm12-0`, `llvm13-0`, or `llvm14-0`.
+- The use of `<llvm major>` is a placeholder for `110`, `120`, `130`, or `140` corresponding to the LLVM releases.
+
 | Feature                 | Link type               | Requirements        | Description                                            |
 |:------------------------|:------------------------|:--------------------|:-------------------------------------------------------|
 | `default`               | external | gcc/clang           | Includes `external-llvm-linking`     |
 | `external-llvm-linking` | external | gcc/clang           | Uses llvm-sys/inkwell for LLVM linking                 |
-| `no-llvm-linking`       |  none    |                     | Disable all LLVM linking. Used for local installation or packaging of LLVM. Includes `llvm-sys/disable-alltargets-init` and `inkwell/llvm11-0-no-llvm-linking` |
-| `qirlib-llvm-linking`  | internal  | `build-llvm` or `download-llvm` |  let qirlib do the LLVM linking. Includes `llvm-sys/disable-alltargets-init` and `inkwell/llvm11-0-no-llvm-linking` |
+| `<llvm version>-no-llvm-linking` |  none    |                     | Disable all LLVM linking. Used for local installation or packaging of LLVM. Includes `<llvm version>`, `llvm-sys-<llvm major>/disable-alltargets-init` and `inkwell/<llvm version>-no-llvm-linking`. Additionally adds `no-llvm-linking` as a marker used in the code. |
+| `<llvm version>-qirlib-llvm-linking`  | internal  | `build-llvm` or `download-llvm` |  let `qirlib` do the LLVM linking. Includes `<llvm version>`, `llvm-sys-<llvm major>/disable-alltargets-init` and `inkwell/<llvm version>-no-llvm-linking`.  Additionally adds `qirlib-llvm-linking` as a marker used in the code. |
+| `llvm11-0` | NA | `inkwell/llvm11-0` | Target LLVM 11.1 |
+| `llvm12-0` | NA | `inkwell/llvm12-0` | Target LLVM 12.0 |
+| `llvm13-0` | NA | `inkwell/llvm13-0` | Target LLVM 13.0 |
+| `llvm14-0` | NA | `inkwell/llvm14-0` | Target LLVM 14.0 |
 | `download-llvm` | internal/none | cmake | dowload a precompiled version of LLVM|
 | `build-llvm`| internal/none | gcc/clang, cmake, ninja, git | Build LLVM from source. Installation defaults to `OUT_DIR/llvm` but can be overridden via the `QIRLIB_CACHE_DIR` environment variable.
 | `package-llvm` | none | cc/clang, cmake, ninja, git | *Dev use only* for packaging LLVM builds. Includes `build-llvm` and `no-llvm-linking`
 
 - Exactly one of the linking features is required:
-  - `qirlib-llvm-linking`
+  - `<llvm version>-qirlib-llvm-linking`
   - `external-llvm-linking`
-  - `no-llvm-linking`
+  - `<llvm version>-no-llvm-linking`
 - `build-llvm` and `download-llvm` cannot be used with `external-llvm-linking`
+- Exactly one of the LLVM version features is required:
+  - `llvm11-0`
+  - `llvm12-0`
+  - `llvm13-0`
+  - `llvm14-0`
 
 ### Environment variables
 
@@ -61,8 +73,8 @@ source and package it
   your own LLVM builds for testing.
 - `QIRLIB_DOWNLOAD_LLVM`
   - Indicator to whether the build should download LLVM cached builds.
-  - Build will download LLVM if needed unless this variable is defined and set to
-    `false`
+  - Build will build LLVM from source if needed unless this variable is
+  defined and set to `true`
 - `QIRLIB_LLVM_BUILDS_URL`
   - Url from where LLVM builds will be downloaded.
   - There is no default value provided. You can use the `package-llvm` feature
@@ -75,19 +87,23 @@ source and package it
   - Default if not specified when building from source:
     - `qirlib`'s target `OUT_DIR`/llvm
   - Default if not specified when installing:
-    - Linux/Mac: `$HOME/.pyqir`
-    - Windows: `$HOME\.pyqir`
+    - Linux/Mac: `target/<llvm version>`
 - `QIRLIB_LLVM_TAG`
   - LLVM repo tag to fetch when building LLVM from source.
-  - Default value: `llvmorg-11.1.0`
+  - Default values are:
+    - `llvm11-0`: `llvmorg-11.1.0`
+    - `llvm12-0`: `llvmorg-12.0.1`
+    - `llvm13-0`: `llvmorg-13.0.1`
+    - `llvm14-0`: `llvmorg-14.0.3`
 - `QIRLIB_LLVM_PKG_NAME`
   - Optional name of package to be downloaded/created.
-- `LLVM_SYS_110_PREFIX`
-  - Required by `llvm-sys` and will be set to the version of LLVM used for
-  configuration.
+- `LLVM_SYS_*_PREFIX`
+  - Required by `llvm-sys` and must be set to the version of LLVM used for
+  configuration if compiling against an external LLVM installation.
   - Version dependent and will change as LLVM is updated. (`LLVM_SYS_120_PREFIX`,
   `LLVM_SYS_130_PREFIX`, etc)
-  - Not needed if you have a working LLVM installation on the path.
+  - Not needed if you have a working LLVM installation on the path and wish
+  to use the installed system version.
 
 ### Using existing LLVM installation
 
@@ -95,13 +111,17 @@ Using an existing (external) LLVM installation is the default and effects
 the linking that is used. The `default` feature enables the `external-llvm-linking` feature.
 
 ```toml
-[features]
-# default to use llvm-sys/inkwell for llvm linking
-default = ["external-llvm-linking"]
-external-llvm-linking = []
+[dependencies]
+qirlib = { git = "https://github.com/qir-alliance/pyqir", branch = "main", features = "llvm11-0" }
+# or 
+qirlib = { git = "https://github.com/qir-alliance/pyqir", branch = "main", features = "llvm12-0" }
+# or
+qirlib = { git = "https://github.com/qir-alliance/pyqir", branch = "main", features = "llvm13-0" }
+# or
+qirlib = { git = "https://github.com/qir-alliance/pyqir", branch = "main", features = "llvm14-0" }
 ```
 
-[`llvm-sys`](https://github.com/tari/llvm-sys.rs) leveraged by `qirlib` and [`Inkwell`](https://github.com/thedan64/inkwell) will look for `llvm-config` on the path in order to determine how to link against LLVM. If this application is not found on the path, then the the `LLVM_SYS_<version>_PREFIX` environment variable is used to locate `llvm-config`. Only LLVM 11.x is supported at this time, so the exact environment variable name is `LLVM_SYS_110_PREFIX`.
+[`llvm-sys`](https://github.com/tari/llvm-sys.rs) leveraged by `qirlib` and [`Inkwell`](https://github.com/thedan64/inkwell) will look for `llvm-config` on the path in order to determine how to link against LLVM. If this application is not found on the path, then the the `LLVM_SYS_<version>_PREFIX` environment variable is used to locate `llvm-config`.
 
 This environment variable can be set in your `Cargo.toml` in the `[env]` section or in the build environment.
 
@@ -110,57 +130,73 @@ This environment variable can be set in your `Cargo.toml` in the `[env]` section
 In order to build and link LLVM from source, we must also tell
 [`Inkwell`](https://github.com/thedan64/inkwell) and
 [`llvm-sys`](https://github.com/tari/llvm-sys.rs) to disable
-their own LLVM linking:
-
-```toml
-[features]
-# let qirlib do the llvm linking
-qirlib-llvm-linking = ["llvm-sys/disable-alltargets-init", "inkwell/llvm11-0-no-llvm-linking"]
-```
+their own LLVM linking
 
-Do to this, we must disable the default behavior (`external-llvm-linking`)  using:
+To do this, we must disable the default behavior (`external-llvm-linking`)  using:
 
 - The `--no-default-features` command-line flag disables the default features of the package.
 - The `default-features = false` option can be specified in a dependency declaration.
 
 ```toml
 [dependencies]
-qirlib = { version = "0.3.0", default-features = false, features = "qirlib-llvm-linking,build-llvm" }
+qirlib = { git = "https://github.com/qir-alliance/pyqir", branch = "main", default-features = false, features = "llvm11-0-qirlib-llvm-linking,build-llvm" }
+# or
+qirlib = { git = "https://github.com/qir-alliance/pyqir", branch = "main", default-features = false, features = "llvm12-0-qirlib-llvm-linking,build-llvm" }
+# or
+qirlib = { git = "https://github.com/qir-alliance/pyqir", branch = "main", default-features = false, features = "llvm13-0-qirlib-llvm-linking,build-llvm" }
+# or
+qirlib = { git = "https://github.com/qir-alliance/pyqir", branch = "main", default-features = false, features = "llvm14-0-qirlib-llvm-linking,build-llvm" }
 ```
 
 Or via the terminal (adding -vv so we can see build progress of LLVM)
 
 ```bash
-qirlib> cargo build --release --no-default-features --features "qirlib-llvm-linking,build-llvm" -vv   
+qirlib> cargo build --release --no-default-features --features "llvm11-0-qirlib-llvm-linking,build-llvm" -vv
+# or
+qirlib> cargo build --release --no-default-features --features "llvm12-0-qirlib-llvm-linking,build-llvm" -vv
+# or
+qirlib> cargo build --release --no-default-features --features "llvm13-0-qirlib-llvm-linking,build-llvm" -vv
+# or
+qirlib> cargo build --release --no-default-features --features "llvm14-0-qirlib-llvm-linking,build-llvm" -vv
 ```
 
 ### Downloading (and linking) LLVM from pre-compiled binaries
 
+Downloading an existing LLVM package and installing it can be configured via
+[Environment variables]($Environment-variables). This is an advanced feature
+and requires more effort to use.
+
 In order to build and link LLVM from source, we must also tell
 [`Inkwell`](https://github.com/thedan64/inkwell) and
 [`llvm-sys`](https://github.com/tari/llvm-sys.rs) to disable
-their own LLVM linking:
-
-```toml
-[features]
-# let qirlib do the llvm linking
-qirlib-llvm-linking = ["llvm-sys/disable-alltargets-init", "inkwell/llvm11-0-no-llvm-linking"]
-```
+their own LLVM linking.
 
-Do to this, we must disable the default behavior (`external-llvm-linking`)  using:
+To do this, we must disable the default behavior (`external-llvm-linking`)  using:
 
 - The `--no-default-features` command-line flag disables the default features of the package.
 - The `default-features = false` option can be specified in a dependency declaration.
 
 ```toml
 [dependencies]
-qirlib = { version = "0.3.0", default-features = false, features = "qirlib-llvm-linking,download-llvm" }
+qirlib = { git = "https://github.com/qir-alliance/pyqir", branch = "main", default-features = false, features = "llvm11-0-qirlib-llvm-linking,download-llvm" }
+# or
+qirlib = { git = "https://github.com/qir-alliance/pyqir", branch = "main", default-features = false, features = "llvm12-0-qirlib-llvm-linking,download-llvm" }
+# or
+qirlib = { git = "https://github.com/qir-alliance/pyqir", branch = "main", default-features = false, features = "llvm13-0-qirlib-llvm-linking,download-llvm" }
+# or
+qirlib = { git = "https://github.com/qir-alliance/pyqir", branch = "main", default-features = false, features = "llvm14-0-qirlib-llvm-linking,download-llvm" }
 ```
 
 Or via the terminal (adding -vv so we can see download progress of LLVM)
 
 ```bash
-qirlib> cargo build --release --no-default-features --features "qirlib-llvm-linking,download-llvm" -vv   
+qirlib> cargo build --release --no-default-features --features "llvm11-0-qirlib-llvm-linking,download-llvm" -vv
+# or
+qirlib> cargo build --release --no-default-features --features "llvm12-0-qirlib-llvm-linking,download-llvm" -vv
+# or
+qirlib> cargo build --release --no-default-features --features "llvm13-0-qirlib-llvm-linking,download-llvm" -vv
+# or
+qirlib> cargo build --release --no-default-features --features "llvm14-0-qirlib-llvm-linking,download-llvm" -vv  
 ```
 
 ## Contributing
diff --git a/qirlib/build.rs b/qirlib/build.rs
index 023e1932..a31451ab 100644
--- a/qirlib/build.rs
+++ b/qirlib/build.rs
@@ -19,7 +19,37 @@ extern crate lazy_static;
 extern crate regex;
 extern crate semver;
 
-// Make sure exactly one of the linking features is used
+// Make sure one version of llvm features is used
+#[cfg(all(
+    not(any(feature = "llvm11-0")),
+    not(any(feature = "llvm12-0")),
+    not(any(feature = "llvm13-0")),
+    not(any(feature = "llvm14-0")),
+))]
+compile_error!("One of the features `qirlib/llvm11-0`, `qirlib/llvm12-0`, `qirlib/llvm13-0`, and `qirlib/llvm14-0` must be used exclusive.");
+
+// Make sure only one llvm option is used.
+#[cfg(any(
+    all(
+        feature = "llvm11-0",
+        any(feature = "llvm12-0", feature = "llvm13-0", feature = "llvm14-0")
+    ),
+    all(
+        feature = "llvm12-0",
+        any(feature = "llvm11-0", feature = "llvm13-0", feature = "llvm14-0")
+    ),
+    all(
+        feature = "llvm13-0",
+        any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm14-0")
+    ),
+    all(
+        feature = "llvm14-0",
+        any(feature = "llvm11-0", feature = "llvm12-0", feature = "llvm13-0")
+    ),
+))]
+compile_error!("Features `qirlib/llvm11-0`, `qirlib/llvm12-0`, `qirlib/llvm13-0`, and `qirlib/llvm14-0` must be used exclusive.");
+
+// Make sure one of the linking features is used
 #[cfg(all(
     not(any(feature = "qirlib-llvm-linking")),
     not(any(feature = "external-llvm-linking")),
@@ -238,8 +268,16 @@ fn get_package_file_name() -> Result<String, Box<dyn Error>> {
 fn get_llvm_tag() -> String {
     if let Ok(tag) = env::var("QIRLIB_LLVM_TAG") {
         tag
-    } else {
+    } else if cfg!(feature = "llvm11-0") {
         "llvmorg-11.1.0".to_owned() // 1fdec59bf
+    } else if cfg!(feature = "llvm12-0") {
+        "llvmorg-12.0.1".to_owned() // fed4134
+    } else if cfg!(feature = "llvm13-0") {
+        "llvmorg-13.0.1".to_owned() // 75e33f7
+    } else if cfg!(feature = "llvm14-0") {
+        "llvmorg-14.0.3".to_owned() // 1f91400
+    } else {
+        panic!("Unsupported LLVM version. The LLVM feature flags or QIRLIB_LLVM_TAG must be set.")
     }
 }
 


Test patch:
diff --git a/pyqir-tests/tox.ini b/pyqir-tests/tox.ini
deleted file mode 100644
index 96086ace..00000000
--- a/pyqir-tests/tox.ini
+++ /dev/null
@@ -1,22 +0,0 @@
-[tox]
-isolated_build = true
-
-[testenv]
-# https://github.com/tox-dev/tox/issues/1550
-# PYTHONIOENCODING = utf-8 needs to be set to work around windows bug
-setenv =
-    PYTHONIOENCODING = utf-8
-
-deps =
-    --editable=../pyqir-generator
-    --editable=../pyqir-evaluator
-    pytest
-
-[testenv:test]
-commands = pytest {posargs}
-
-[testenv:all]
-commands = pytest {posargs}
-
-[testenv:allmusl]
-commands = pytest {posargs}