Repository: HQSquantumsimulations/qoqo (language: python)

Issue:
qoqo Circuit from_ methods are not classmethods
from_json and from_bincode in qoqo.Circuit are not implemeted as classmethods.

We need to change that so we can call `Circuit.from_json(...)` directly


Discussion / hints:
bug fix implemented and merged

Fix patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4a22e882..5b618295 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,29 +2,22 @@
 
 This changelog track changes to the qoqo project starting at version v0.5.0
 
-## 1.1.0-beta.6
+## 1.2.0-alpha.1
 
-* Fixed github pipeline deploy
+* Preparing for 1.2.0
 
-## 1.1.0-beta.5
+## 1.1.0
 
-* Fixed github pipeline deploy qoqo coverage
+### Changed v1.1.0
 
-## 1.1.0-beta.4
+* Fixed nalgebra version to 0.30
 
-* Fixed compatibility tests
-
-## 1.1.0-beta.3
+### Added v1.1.0
 
+* Added 1.0.0 compatibility tests
 * Added rich comparison for Python interface of Measurements
 * Added PragmaLoop
-
-## 1.1.0-beta.1
-
 * Allowed creating PragmaSetStateVector from float or integer numpy arrays.
-
-## 1.1.0-alpha.1
-
 * Added `InputBit` to set bit in a (readout) bit register to a value.
 * Added `InvolvedClassical` functionality to return which classical register variables are involved in an operation
 * Added `CircuitDag` direct acyclical graph representation of `Circuit`
diff --git a/Cargo.lock b/Cargo.lock
index 4cdaa7c5..c89cbc9b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -24,9 +24,9 @@ dependencies = [
 
 [[package]]
 name = "async-trait"
-version = "0.1.57"
+version = "0.1.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f"
+checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -66,11 +66,22 @@ version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
+[[package]]
+name = "compatibility_test"
+version = "1.2.0-alpha.1"
+dependencies = [
+ "bincode",
+ "qoqo_calculator",
+ "roqoqo 1.0.0",
+ "roqoqo 1.2.0-alpha.1",
+ "test-case",
+]
+
 [[package]]
 name = "ctor"
-version = "0.1.23"
+version = "0.1.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdffe87e1d521a10f9696f833fe502293ea446d7f256c06128293a4119bdf4cb"
+checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
 dependencies = [
  "quote",
  "syn",
@@ -99,9 +110,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
 
 [[package]]
 name = "futures"
-version = "0.3.24"
+version = "0.3.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f21eda599937fba36daeb58a22e8f5cee2d14c4a17b5b7739c7c8e5e3b8230c"
+checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -114,9 +125,9 @@ dependencies = [
 
 [[package]]
 name = "futures-channel"
-version = "0.3.24"
+version = "0.3.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30bdd20c28fadd505d0fd6712cdfcb0d4b5648baf45faef7f852afb2399bb050"
+checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed"
 dependencies = [
  "futures-core",
  "futures-sink",
@@ -124,15 +135,15 @@ dependencies = [
 
 [[package]]
 name = "futures-core"
-version = "0.3.24"
+version = "0.3.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e5aa3de05362c3fb88de6531e6296e85cde7739cccad4b9dfeeb7f6ebce56bf"
+checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac"
 
 [[package]]
 name = "futures-executor"
-version = "0.3.24"
+version = "0.3.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ff63c23854bee61b6e9cd331d523909f238fc7636290b96826e9cfa5faa00ab"
+checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2"
 dependencies = [
  "futures-core",
  "futures-task",
@@ -141,15 +152,15 @@ dependencies = [
 
 [[package]]
 name = "futures-io"
-version = "0.3.24"
+version = "0.3.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbf4d2a7a308fd4578637c0b17c7e1c7ba127b8f6ba00b29f717e9655d85eb68"
+checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb"
 
 [[package]]
 name = "futures-macro"
-version = "0.3.24"
+version = "0.3.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42cd15d1c7456c04dbdf7e88bcd69760d74f3a798d6444e16974b505b0e62f17"
+checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -158,21 +169,21 @@ dependencies = [
 
 [[package]]
 name = "futures-sink"
-version = "0.3.24"
+version = "0.3.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21b20ba5a92e727ba30e72834706623d94ac93a725410b6a6b6fbc1b07f7ba56"
+checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9"
 
 [[package]]
 name = "futures-task"
-version = "0.3.24"
+version = "0.3.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6508c467c73851293f390476d4491cf4d227dbabcd4170f3bb6044959b294f1"
+checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea"
 
 [[package]]
 name = "futures-util"
-version = "0.3.24"
+version = "0.3.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44fb6cb1be61cc1d2e43b262516aafcf63b241cffdb1d3fa115f91d9c7b09c90"
+checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -188,9 +199,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.7"
+version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
+checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
 dependencies = [
  "cfg-if",
  "libc",
@@ -242,15 +253,15 @@ dependencies = [
 
 [[package]]
 name = "itoa"
-version = "1.0.3"
+version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"
+checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
 
 [[package]]
 name = "libc"
-version = "0.2.134"
+version = "0.2.135"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb"
+checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c"
 
 [[package]]
 name = "libm"
@@ -294,9 +305,25 @@ dependencies = [
 
 [[package]]
 name = "nalgebra"
-version = "0.31.1"
+version = "0.30.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9e0a04ce089f9401aac565c740ed30c46291260f27d4911fdbaa6ca65fa3044"
+checksum = "4fb2d0de08694bed883320212c18ee3008576bfe8c306f4c3c4a58b4876998be"
+dependencies = [
+ "approx",
+ "matrixmultiply",
+ "nalgebra-macros",
+ "num-complex",
+ "num-rational",
+ "num-traits",
+ "simba",
+ "typenum",
+]
+
+[[package]]
+name = "nalgebra"
+version = "0.31.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da388c517f7c8540918d00f7aed9864c1ead01a14a0cc21513b171857119de12"
 dependencies = [
  "approx",
  "matrixmultiply",
@@ -407,9 +434,9 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.3"
+version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929"
+checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0"
 dependencies = [
  "cfg-if",
  "libc",
@@ -480,9 +507,9 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.46"
+version = "1.0.47"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
+checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
 dependencies = [
  "unicode-ident",
 ]
@@ -550,10 +577,10 @@ dependencies = [
 
 [[package]]
 name = "qoqo"
-version = "1.1.0-beta.6"
+version = "1.2.0-alpha.1"
 dependencies = [
  "bincode",
- "nalgebra",
+ "nalgebra 0.30.1",
  "ndarray",
  "num-complex",
  "numpy",
@@ -564,7 +591,7 @@ dependencies = [
  "qoqo_calculator",
  "qoqo_calculator_pyo3",
  "quote",
- "roqoqo 1.1.0-beta.6",
+ "roqoqo 1.2.0-alpha.1",
  "serde",
  "serde_json",
  "syn",
@@ -574,7 +601,7 @@ dependencies = [
 
 [[package]]
 name = "qoqo-macros"
-version = "1.1.0-beta.6"
+version = "1.2.0-alpha.1"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -677,7 +704,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6b298dab631f5cd4dbb92811398f20accde321f56b96347de413fd888965144c"
 dependencies = [
  "bincode",
- "nalgebra",
+ "nalgebra 0.31.2",
  "ndarray",
  "num-complex",
  "proc-macro2",
@@ -692,13 +719,13 @@ dependencies = [
 
 [[package]]
 name = "roqoqo"
-version = "1.1.0-beta.6"
+version = "1.2.0-alpha.1"
 dependencies = [
  "async-trait",
  "bincode",
  "dyn-clone",
  "futures",
- "nalgebra",
+ "nalgebra 0.30.1",
  "ndarray",
  "num-complex",
  "petgraph",
@@ -707,9 +734,7 @@ dependencies = [
  "quote",
  "rand",
  "rand_distr",
- "roqoqo 1.0.0",
- "roqoqo-derive 1.0.0",
- "roqoqo-derive 1.1.0-beta.6",
+ "roqoqo-derive 1.2.0-alpha.1",
  "serde",
  "serde_json",
  "serde_test",
@@ -732,7 +757,7 @@ dependencies = [
 
 [[package]]
 name = "roqoqo-derive"
-version = "1.1.0-beta.6"
+version = "1.2.0-alpha.1"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -741,15 +766,15 @@ dependencies = [
 
 [[package]]
 name = "roqoqo-test"
-version = "1.1.0-beta.6"
+version = "1.2.0-alpha.1"
 dependencies = [
- "nalgebra",
+ "nalgebra 0.30.1",
  "ndarray",
  "proc-macro2",
  "qoqo_calculator",
  "quote",
  "rand",
- "roqoqo 1.1.0-beta.6",
+ "roqoqo 1.2.0-alpha.1",
  "syn",
 ]
 
@@ -776,18 +801,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
 
 [[package]]
 name = "serde"
-version = "1.0.145"
+version = "1.0.146"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
+checksum = "6df50b7a60a0ad48e1b42eb38373eac8ff785d619fb14db917b4e63d5439361f"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.145"
+version = "1.0.146"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
+checksum = "a714fd32ba1d66047ce7d53dabd809e9922d538f9047de13cc4cffca47b36205"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -796,9 +821,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.85"
+version = "1.0.87"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44"
+checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45"
 dependencies = [
  "itoa",
  "ryu",
@@ -807,9 +832,9 @@ dependencies = [
 
 [[package]]
 name = "serde_test"
-version = "1.0.145"
+version = "1.0.146"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c17d2112159132660b4c5399e274f676fb75a2f8d70b7468f18f045b71138ed"
+checksum = "15e7018257a3ef78bdfda9ac60f00a374913f7e019b0dde98d281d28f75e2bc2"
 dependencies = [
  "serde",
 ]
@@ -844,9 +869,9 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
 
 [[package]]
 name = "syn"
-version = "1.0.101"
+version = "1.0.103"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e90cde112c4b9690b8cbe810cba9ddd8bc1d7472e2cae317b69e9438c1cba7d2"
+checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -933,9 +958,9 @@ dependencies = [
 
 [[package]]
 name = "unicode-ident"
-version = "1.0.4"
+version = "1.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd"
+checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
 
 [[package]]
 name = "unindent"
@@ -957,9 +982,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wide"
-version = "0.7.4"
+version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3aba2d1dac31ac7cae82847ac5b8be822aee8f99a4e100f279605016b185c5f"
+checksum = "ae41ecad2489a1655c8ef8489444b0b113c0a0c795944a3572a0931cf7d2525c"
 dependencies = [
  "bytemuck",
  "safe_arch",
@@ -967,43 +992,57 @@ dependencies = [
 
 [[package]]
 name = "windows-sys"
-version = "0.36.1"
+version = "0.42.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
+checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
 dependencies = [
+ "windows_aarch64_gnullvm",
  "windows_aarch64_msvc",
  "windows_i686_gnu",
  "windows_i686_msvc",
  "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
  "windows_x86_64_msvc",
 ]
 
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"
+
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.36.1"
+version = "0.42.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
+checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.36.1"
+version = "0.42.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
+checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.36.1"
+version = "0.42.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
+checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.36.1"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
+checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.36.1"
+version = "0.42.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
+checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
diff --git a/Cargo.toml b/Cargo.toml
index 1bd0b71f..0e946593 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -4,7 +4,8 @@ members = [
     "roqoqo-derive",
     "roqoqo-test",
     "qoqo",
-    "qoqo-macros"
+    "qoqo-macros",
+    "compatibility_test"
 ]
 
 [profile.release]
diff --git a/qoqo-macros/Cargo.toml b/qoqo-macros/Cargo.toml
index c30f7c0f..a92d32a9 100644
--- a/qoqo-macros/Cargo.toml
+++ b/qoqo-macros/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "qoqo-macros"
-version = "1.1.0-beta.6"
+version = "1.2.0-alpha.1"
 authors = ["HQS Quantum Simulations <info@quantumsimulations.de>"]
 license = "Apache-2.0"
 readme = "../README.md"
diff --git a/qoqo/Cargo.toml b/qoqo/Cargo.toml
index 4405e457..89bafbc4 100644
--- a/qoqo/Cargo.toml
+++ b/qoqo/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "qoqo"
-version = "1.1.0-beta.6"
+version = "1.2.0-alpha.1"
 authors = ["HQS Quantum Simulations <info@quantumsimulations.de>"]
 license = "Apache-2.0"
 homepage = "https://github.com/HQSquantumsimulations/qoqo"
@@ -32,15 +32,15 @@ num-complex = "0.4"
 thiserror = "1.0"
 qoqo_calculator = { version="1.1" }
 qoqo_calculator_pyo3 = {version="1.1", default-features=false}
-qoqo-macros = {version="1.1.0-beta.6", path="../qoqo-macros"}
-roqoqo = {version="1.1.0-beta.6", path="../roqoqo", features=["serialize", "overrotate"]}
+qoqo-macros = {version="1.2.0-alpha.1", path="../qoqo-macros"}
+roqoqo = {version="1.2.0-alpha.1", path="../roqoqo", features=["serialize", "overrotate"]}
 numpy = "0.17"
 bincode = "1.3"
 serde_json = "1.0"
 
 [dev-dependencies]
 test-case = "2.0"
-nalgebra = "0.31"
+nalgebra = "=0.30"
 
 [build-dependencies]
 quote = "1.0"
diff --git a/qoqo/pyproject.toml b/qoqo/pyproject.toml
index 1766eaa1..b729e95f 100644
--- a/qoqo/pyproject.toml
+++ b/qoqo/pyproject.toml
@@ -1,9 +1,9 @@
 [project]
 name = "qoqo"
-version = "1.1.0-beta.6"
+version = "1.2.0-alpha.1"
 dependencies = [
   'numpy',
-  'qoqo_calculator_pyo3>=1.1.0',
+  'qoqo_calculator_pyo3>=1.2.0-alpha.1',
 ]
 license = {text="Apache-2.0 AND Apache-2.0 with LLVM-exception AND MIT AND Unicode-DFS-2016 AND BSD-2-Clause AND BSD-3-CLause"}
 maintainers = [{name = "HQS Quantum Simulations GmbH", email = "info@quantumsimulations.de"}]
diff --git a/qoqo/qoqo/DEPENDENCIES b/qoqo/qoqo/DEPENDENCIES
index 161b2c86..3a3234d7 100644
--- a/qoqo/qoqo/DEPENDENCIES
+++ b/qoqo/qoqo/DEPENDENCIES
@@ -1311,6 +1311,13 @@ See the License for the specific language governing permissions and
 limitations under the License.
 
 
+====================================================
+compatibility_test 1.2.0-alpha.1
+https://github.com/HQSquantumsimulations/qoqo
+by HQS Quantum Simulations <info@quantumsimulations.de>
+Compatibility tests for roqoqo
+License: Apache-2.0
+
 ====================================================
 fixedbitset 0.4.2
 https://github.com/petgraph/fixedbitset
@@ -1553,7 +1560,7 @@ limitations under the License.
 
 
 ====================================================
-getrandom 0.2.7
+getrandom 0.2.8
 https://github.com/rust-random/getrandom
 by The Rand Project Developers
 A small cross-platform library for retrieving random data from system source
@@ -2516,7 +2523,7 @@ limitations under the License.
 
 
 ====================================================
-itoa 1.0.3
+itoa 1.0.4
 https://github.com/dtolnay/itoa
 by David Tolnay <dtolnay@gmail.com>
 Fast integer primitive to string conversion
@@ -2755,7 +2762,7 @@ limitations under the License.
 
 
 ====================================================
-libc 0.2.134
+libc 0.2.135
 https://github.com/rust-lang/libc
 by The Rust Project Developers
 Raw FFI bindings to platform libraries like libc.
@@ -3728,7 +3735,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 
 ====================================================
-nalgebra 0.31.1
+nalgebra 0.30.1
 https://nalgebra.org
 by Sébastien Crozet <developer@crozet.re>
 General-purpose linear algebra library with transformations and statically-sized or dynamically-sized matrices.
@@ -3939,6 +3946,218 @@ LICENSE:
    limitations under the License.
 
 
+====================================================
+nalgebra 0.31.2
+https://nalgebra.org
+by Sébastien Crozet <developer@crozet.re>
+General-purpose linear algebra library with transformations and statically-sized or dynamically-sized matrices.
+License: BSD-3-Clause
+----------------------------------------------------
+LICENSE:
+
+                                 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 2020 Sébastien Crozet
+
+   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.
+
+
 ====================================================
 nalgebra-macros 0.1.0
 https://nalgebra.org
@@ -5670,7 +5889,7 @@ limitations under the License.
 
 
 ====================================================
-parking_lot_core 0.9.3
+parking_lot_core 0.9.4
 https://github.com/Amanieu/parking_lot
 by Amanieu d'Antras <amanieu@gmail.com>
 An advanced API for creating custom synchronization primitives.
@@ -7108,7 +7327,7 @@ limitations under the License.
 
 
 ====================================================
-proc-macro2 1.0.46
+proc-macro2 1.0.47
 https://github.com/dtolnay/proc-macro2
 by David Tolnay <dtolnay@gmail.com>, Alex Crichton <alex@alexcrichton.com>
 A substitute implementation of the compiler's `proc_macro` API to decouple token-based libraries from the procedural macro use case.
@@ -8777,7 +8996,7 @@ LICENSE:
 
 
 ====================================================
-qoqo 1.1.0-beta.6
+qoqo 1.2.0-alpha.1
 https://github.com/HQSquantumsimulations/qoqo
 by HQS Quantum Simulations <info@quantumsimulations.de>
 Quantum computing circuit toolkit. Python interface of roqoqo
@@ -8989,7 +9208,7 @@ LICENSE:
 
 
 ====================================================
-qoqo-macros 1.1.0-beta.6
+qoqo-macros 1.2.0-alpha.1
 by HQS Quantum Simulations <info@quantumsimulations.de>
 Macros for the qoqo crate
 License: Apache-2.0
@@ -11273,7 +11492,7 @@ LICENSE:
 
 
 ====================================================
-roqoqo 1.1.0-beta.6
+roqoqo 1.2.0-alpha.1
 https://github.com/HQSquantumsimulations/qoqo
 by HQS Quantum Simulations <info@quantumsimulations.de>
 Rust Quantum Computing Toolkit by HQS
@@ -11696,7 +11915,7 @@ LICENSE:
 
 
 ====================================================
-roqoqo-derive 1.1.0-beta.6
+roqoqo-derive 1.2.0-alpha.1
 by HQS Quantum Simulations <info@quantumsimulations.de>
 Macros for the roqoqo crate
 License: Apache-2.0
@@ -11907,7 +12126,7 @@ LICENSE:
 
 
 ====================================================
-roqoqo-test 1.1.0-beta.6
+roqoqo-test 1.2.0-alpha.1
 https://github.com/HQSquantumsimulations/qoqo
 by HQS Quantum Simulations <info@quantumsimulations.de>
 Testing helper functions for roqoqo toolkit
@@ -12626,7 +12845,7 @@ limitations under the License.
 
 
 ====================================================
-serde 1.0.145
+serde 1.0.146
 https://serde.rs
 by Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>
 A generic serialization/deserialization framework
@@ -12865,7 +13084,7 @@ limitations under the License.
 
 
 ====================================================
-serde_derive 1.0.145
+serde_derive 1.0.146
 https://serde.rs
 by Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>
 Macros 1.1 implementation of #[derive(Serialize, Deserialize)]
@@ -13104,7 +13323,7 @@ limitations under the License.
 
 
 ====================================================
-serde_json 1.0.85
+serde_json 1.0.87
 https://github.com/serde-rs/json
 by Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>
 A JSON serialization file format
@@ -13343,7 +13562,7 @@ limitations under the License.
 
 
 ====================================================
-serde_test 1.0.145
+serde_test 1.0.146
 https://serde.rs
 by Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>
 Token De/Serializer for testing De/Serialize implementations
@@ -14035,7 +14254,7 @@ limitations under the License.
 
 
 ====================================================
-syn 1.0.101
+syn 1.0.103
 https://github.com/dtolnay/syn
 by David Tolnay <dtolnay@gmail.com>
 Parser for Rust source code
@@ -15265,7 +15484,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 
 ====================================================
-unicode-ident 1.0.4
+unicode-ident 1.0.5
 https://github.com/dtolnay/unicode-ident
 by David Tolnay <dtolnay@gmail.com>
 Determine whether characters have the XID_Start or XID_Continue properties according to Unicode Standard Annex #31
@@ -16491,7 +16710,7 @@ limitations under the License.
 
 
 ====================================================
-wide 0.7.4
+wide 0.7.5
 https://github.com/Lokathor/wide
 by Lokathor <zefria@gmail.com>
 A crate to help you go wide.
@@ -16513,13 +16732,13 @@ Permission is granted to anyone to use this software for any purpose, including
 
 
 ====================================================
-windows-sys 0.36.1
+windows-sys 0.42.0
 https://github.com/microsoft/windows-rs
 by Microsoft
 Rust for Windows
 License: MIT OR Apache-2.0
 ----------------------------------------------------
-license-apache:
+license-apache-2.0:
 
                                  Apache License
                            Version 2.0, January 2004
@@ -16750,35 +16969,49 @@ license-mit:
 
 
 ====================================================
-windows_aarch64_msvc 0.36.1
+windows_aarch64_gnullvm 0.42.0
+https://github.com/microsoft/windows-rs
+by Microsoft
+Code gen support for the windows crate
+License: MIT OR Apache-2.0
+
+====================================================
+windows_aarch64_msvc 0.42.0
+https://github.com/microsoft/windows-rs
+by Microsoft
+Code gen support for the windows crate
+License: MIT OR Apache-2.0
+
+====================================================
+windows_i686_gnu 0.42.0
 https://github.com/microsoft/windows-rs
 by Microsoft
 Code gen support for the windows crate
 License: MIT OR Apache-2.0
 
 ====================================================
-windows_i686_gnu 0.36.1
+windows_i686_msvc 0.42.0
 https://github.com/microsoft/windows-rs
 by Microsoft
 Code gen support for the windows crate
 License: MIT OR Apache-2.0
 
 ====================================================
-windows_i686_msvc 0.36.1
+windows_x86_64_gnu 0.42.0
 https://github.com/microsoft/windows-rs
 by Microsoft
 Code gen support for the windows crate
 License: MIT OR Apache-2.0
 
 ====================================================
-windows_x86_64_gnu 0.36.1
+windows_x86_64_gnullvm 0.42.0
 https://github.com/microsoft/windows-rs
 by Microsoft
 Code gen support for the windows crate
 License: MIT OR Apache-2.0
 
 ====================================================
-windows_x86_64_msvc 0.36.1
+windows_x86_64_msvc 0.42.0
 https://github.com/microsoft/windows-rs
 by Microsoft
 Code gen support for the windows crate
diff --git a/roqoqo-derive/Cargo.toml b/roqoqo-derive/Cargo.toml
index ed674a3a..c303c627 100644
--- a/roqoqo-derive/Cargo.toml
+++ b/roqoqo-derive/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "roqoqo-derive"
-version = "1.1.0-beta.6"
+version = "1.2.0-alpha.1"
 authors = ["HQS Quantum Simulations <info@quantumsimulations.de>"]
 license = "Apache-2.0"
 edition = "2021"
diff --git a/roqoqo/Cargo.toml b/roqoqo/Cargo.toml
index e19ca48a..2c163fce 100644
--- a/roqoqo/Cargo.toml
+++ b/roqoqo/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "roqoqo"
-version = "1.1.0-beta.6"
+version = "1.2.0-alpha.1"
 authors = ["HQS Quantum Simulations <info@quantumsimulations.de>"]
 license = "Apache-2.0"
 edition = "2021"
@@ -28,24 +28,21 @@ num-complex = { version = "0.4"}
 thiserror = "1.0"
 dyn-clone = {version="1.0", optional=true}
 qoqo_calculator = { version="1.1"}
-roqoqo-derive = {version="1.1.0-beta.6", path="../roqoqo-derive"}
+roqoqo-derive = {version="1.2.0-alpha.1", path="../roqoqo-derive"}
 typetag = {version="0.2", optional=true}
-nalgebra = "0.31"
+nalgebra = "=0.30"
 # schemars = { version="0.8", features = ["num-complex", "ndarray"], optional=true }
-bincode = {version="1.3", optional=true}
 rand_distr = {version="0.4", optional=true}
 rand = { version = "0.8.4"}
 async-trait = {version = "0.1", optional = true}
 futures ={version = "0.3", optional=true}
 petgraph = {version = "0.6.2", optional=true}
+bincode = {version="1.3", optional=true}
 
 [dev-dependencies]
 serde_test = "1.0"
 test-case = "2.0"
 serde_json = "1.0"
-test_roqoqo_derive_1_0 = {package= "roqoqo-derive", version="=1.0.0"}
-test_roqoqo_1_0 = {package= "roqoqo", version="=1.0.0"}
-bincode = {version="1.3", optional=false}
 
 [build-dependencies]
 quote = "1.0"
@@ -63,4 +60,4 @@ serialize = ["serde", "ndarray/serde", "num-complex/serde", "bincode", "petgraph
 overrotate = [ "rand_distr", "roqoqo-derive/overrotate"]
 async = ["async-trait", "futures"]
 # json_schema=["schemars", "serialize", "qoqo_calculator/json_schema"]
-circuitdag = ["petgraph"]
+circuitdag = ["petgraph"]
\ No newline at end of file
diff --git a/roqoqo/build.rs b/roqoqo/build.rs
index fec0053b..b164c9e5 100644
--- a/roqoqo/build.rs
+++ b/roqoqo/build.rs
@@ -52,8 +52,12 @@ struct Visitor {
     multi_qubit_gate_operations: Vec<Ident>,
     // Operations that have only been introduced in roqoqoq 1.1.0
     // These operations will only be added at end of automatically created enums
-    // to maintain compatability with bincode encoding
+    // to maintain compatibility with bincode encoding
     roqoqo_1_1_operations: Vec<Ident>,
+    // Operations that have only been introduced in roqoqoq 1.2.0
+    // These operations will only be added at end of automatically created enums
+    // to maintain compatibility with bincode encoding
+    roqoqo_1_2_operations: Vec<Ident>,
 }
 
 impl Visitor {
@@ -74,6 +78,7 @@ impl Visitor {
             two_qubit_gate_operations: Vec::new(),
             multi_qubit_gate_operations: Vec::new(),
             roqoqo_1_1_operations: Vec::new(),
+            roqoqo_1_2_operations: Vec::new(),
         }
     }
 }
@@ -221,6 +226,9 @@ impl<'ast> Visit<'ast> for Visitor {
                 if trait_name.as_str() == "ImplementedIn1point1" {
                     self.roqoqo_1_1_operations.push(id.clone());
                 }
+                if trait_name.as_str() == "ImplementedIn1point2" {
+                    self.roqoqo_1_2_operations.push(id.clone());
+                }
                 if trait_name.as_str() == "OperateSingleQubitGate" {
                     self.single_qubit_gate_operations.push(id.clone());
                 }
@@ -271,7 +279,7 @@ fn main() {
         .operations
         .clone()
         .into_iter()
-        .filter(|v| !vis.roqoqo_1_1_operations.contains(v))
+        .filter(|v| !vis.roqoqo_1_1_operations.contains(v) && !vis.roqoqo_1_2_operations.contains(v))
         .map(|v| {
             let msg = format!("Variant for {}", v);
             quote! {
@@ -280,9 +288,21 @@ fn main() {
             #v(#v)}
         });
     let operations_quotes_1_1 = vis
+        .operations
+        .clone()
+        .into_iter()
+        .filter(|v| vis.roqoqo_1_1_operations.contains(v) && !vis.roqoqo_1_2_operations.contains(v))
+        .map(|v| {
+            let msg = format!("Variant for {}", v);
+            quote! {
+            #[allow(clippy::upper_case_acronyms)]
+            #[doc = #msg]
+            #v(#v)}
+        });
+    let operations_quotes_1_2 = vis
         .operations
         .into_iter()
-        .filter(|v| vis.roqoqo_1_1_operations.contains(v))
+        .filter(|v| vis.roqoqo_1_2_operations.contains(v))
         .map(|v| {
             let msg = format!("Variant for {}", v);
             quote! {
@@ -317,7 +337,7 @@ fn main() {
         .pragma_operations
         .clone()
         .into_iter()
-        .filter(|v| !vis.roqoqo_1_1_operations.contains(v))
+        .filter(|v| !vis.roqoqo_1_1_operations.contains(v) && !vis.roqoqo_1_2_operations.contains(v))
         .map(|v| {
             let msg = format!("Variant for {}", v);
             quote! {
@@ -327,8 +347,19 @@ fn main() {
     // Construct TokenStreams for variants of pragma enum
     let pragma_operations_quotes_1_1 = vis
         .pragma_operations
+        .clone()
         .into_iter()
-        .filter(|v| vis.roqoqo_1_1_operations.contains(v))
+        .filter(|v| vis.roqoqo_1_1_operations.contains(v) && !vis.roqoqo_1_2_operations.contains(v))
+        .map(|v| {
+            let msg = format!("Variant for {}", v);
+            quote! {
+            #[doc = #msg]
+            #v(#v)}
+        });
+    let pragma_operations_quotes_1_2 = vis
+        .pragma_operations
+        .into_iter()
+        .filter(|v| vis.roqoqo_1_2_operations.contains(v))
         .map(|v| {
             let msg = format!("Variant for {}", v);
             quote! {
@@ -370,7 +401,7 @@ fn main() {
         .definitions
         .clone()
         .into_iter()
-        .filter(|v| !vis.roqoqo_1_1_operations.contains(v))
+        .filter(|v| !vis.roqoqo_1_1_operations.contains(v) && !vis.roqoqo_1_2_operations.contains(v))
         .map(|v| {
             let msg = format!("Variant for {}", v);
             quote! {
@@ -379,9 +410,21 @@ fn main() {
         });
     // Construct TokenStreams for variants of definition enum
     let definitions_quotes_1_1 = vis
+        .definitions
+        .clone()
+        .into_iter()
+        .filter(|v| vis.roqoqo_1_1_operations.contains(v) && !vis.roqoqo_1_2_operations.contains(v))
+        .map(|v| {
+            let msg = format!("Variant for {}", v);
+            quote! {
+                #[doc = #msg]
+            #v(#v)}
+        });
+    // Construct TokenStreams for variants of definition enum
+    let definitions_quotes_1_2 = vis
         .definitions
         .into_iter()
-        .filter(|v| vis.roqoqo_1_1_operations.contains(v))
+        .filter(|v| vis.roqoqo_1_2_operations.contains(v))
         .map(|v| {
             let msg = format!("Variant for {}", v);
             quote! {
@@ -430,7 +473,8 @@ fn main() {
         // #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))]
         pub enum Operation {
             #(#operations_quotes),* ,
-            #(#operations_quotes_1_1),*
+            #(#operations_quotes_1_1),* ,
+            #(#operations_quotes_1_2),*
         }
 
         /// Enum of all Operations implementing [OperateSingleQubit]
@@ -463,7 +507,8 @@ fn main() {
         #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))]
         pub enum PragmaOperation {
             #(#pragma_operations_quotes),* ,
-            #(#pragma_operations_quotes_1_1),*
+            #(#pragma_operations_quotes_1_1),* ,
+            #(#pragma_operations_quotes_1_2),*
         }
 
         /// Enum of all Operations implementing [OperatePragmaNoise]
@@ -505,7 +550,8 @@ fn main() {
         // #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))]
         pub enum Definition {
             #(#definitions_quotes),* ,
-            #(#definitions_quotes_1_1),*
+            #(#definitions_quotes_1_1),* ,
+            #(#definitions_quotes_1_2),*
         }
 
         /// Enum of all Operations implementing [OperateConstantGate]
diff --git a/roqoqo/src/operations/mod.rs b/roqoqo/src/operations/mod.rs
index a863090e..209229dd 100644
--- a/roqoqo/src/operations/mod.rs
+++ b/roqoqo/src/operations/mod.rs
@@ -701,6 +701,9 @@ pub trait OperateMultiQubitGate:
 /// Marker trait to show that some operation has been implemented in roqoqo 1.1.0
 pub(crate) trait ImplementedIn1point1: Operate {}
 
+/// Marker trait to show that some operation has been implemented in roqoqo 1.2.0
+pub(crate) trait ImplementedIn1point2: Operate {}
+
 #[cfg(feature = "dynamic")]
 /// A wrapper for Operate trait objects.
 ///
diff --git a/roqoqo/src/operations/two_qubit_gate_operations.rs b/roqoqo/src/operations/two_qubit_gate_operations.rs
index 45824b8f..3501719f 100644
--- a/roqoqo/src/operations/two_qubit_gate_operations.rs
+++ b/roqoqo/src/operations/two_qubit_gate_operations.rs
@@ -2175,6 +2175,8 @@ pub struct PhaseShiftedControlledPhase {
     phi: CalculatorFloat,
 }
 
+impl super::ImplementedIn1point2 for PhaseShiftedControlledPhase {}
+
 #[allow(non_upper_case_globals)]
 const TAGS_PhaseShiftedControlledPhase: &[&str; 4] = &[
     "Operation",


Test patch:
diff --git a/compatibility_test/Cargo.toml b/compatibility_test/Cargo.toml
new file mode 100644
index 00000000..cd776172
--- /dev/null
+++ b/compatibility_test/Cargo.toml
@@ -0,0 +1,26 @@
+[package]
+name = "compatibility_test"
+version = "1.2.0-alpha.1"
+authors = ["HQS Quantum Simulations <info@quantumsimulations.de>"]
+license = "Apache-2.0"
+edition = "2021"
+rust-version = "1.56"
+categories = ["science", "simulation"]
+homepage = "https://github.com/HQSquantumsimulations/qoqo"
+repository = "https://github.com/HQSquantumsimulations/qoqo"
+documentation = "https://docs.rs/roqoqo/"
+readme = "../README.md"
+description = "Compatibility tests for roqoqo"
+include = ["src*", "build.rs", "LICENSE", "README.md"]
+publish = false
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+test_roqoqo_1_0 = {package = "roqoqo", version="=1.0.0"}
+qoqo_calculator = { version="1.1" }
+roqoqo = {version="1.2.0-alpha.1", path="../roqoqo", features=["serialize", "overrotate"]}
+bincode = {version="1.3"}
+
+[dev-dependencies]
+test-case = "2.0"
\ No newline at end of file
diff --git a/compatibility_test/src/lib.rs b/compatibility_test/src/lib.rs
new file mode 100644
index 00000000..7d12d9af
--- /dev/null
+++ b/compatibility_test/src/lib.rs
@@ -0,0 +1,14 @@
+pub fn add(left: usize, right: usize) -> usize {
+    left + right
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn it_works() {
+        let result = add(2, 2);
+        assert_eq!(result, 4);
+    }
+}
diff --git a/compatibility_test/tests/integration/compatibility.rs b/compatibility_test/tests/integration/compatibility.rs
new file mode 100644
index 00000000..7fd68bcb
--- /dev/null
+++ b/compatibility_test/tests/integration/compatibility.rs
@@ -0,0 +1,92 @@
+// Copyright © 2022 HQS Quantum Simulations GmbH. All Rights Reserved.
+//
+// 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.
+
+use std::collections::HashMap;
+
+// use bincode;
+// use roqoqo;
+// #[cfg(feature = "compatibility")]
+use test_case::test_case;
+use test_roqoqo_1_0;
+
+// #[cfg(feature = "compatibility")]
+#[test_case(test_roqoqo_1_0::operations::Hadamard::new(0).into(); "Hadamard")]
+#[test_case(test_roqoqo_1_0::operations::ControlledPhaseShift::new(0,1, 0.1.into()).into(); "ControlledPhase")]
+#[test_case(test_roqoqo_1_0::operations::VariableMSXX::new(0,1, 0.1.into()).into(); "VariableMSXX")]
+#[test_case(test_roqoqo_1_0::operations::CNOT::new(0,1).into(); "CNOT")]
+#[test_case(test_roqoqo_1_0::operations::ControlledPauliY::new(0,1).into(); "ControlledPauliY")]
+#[test_case(test_roqoqo_1_0::operations::ControlledPauliZ::new(0,1).into(); "ControlledPauliZ")]
+#[test_case(test_roqoqo_1_0::operations::ControlledPhaseShift::new(0,1, 1.0.into()).into(); "ControlledPhaseShift")]
+#[test_case(test_roqoqo_1_0::operations::PhaseShiftedControlledZ::new(0,1, 1.0.into()).into(); "PhaseShiftedControlledZ")]
+#[test_case(test_roqoqo_1_0::operations::PauliZ::new(0).into(); "PauliZ")]
+#[test_case(test_roqoqo_1_0::operations::PauliX::new(0).into(); "PauliX")]
+#[test_case(test_roqoqo_1_0::operations::PauliY::new(0).into(); "PauliY")]
+#[test_case(test_roqoqo_1_0::operations::SqrtPauliX::new(0).into(); "SqrtPauliX")]
+#[test_case(test_roqoqo_1_0::operations::InvSqrtPauliX::new(0).into(); "InvSqrtPauliX")]
+#[test_case(test_roqoqo_1_0::operations::SGate::new(0).into(); "SGate")]
+#[test_case(test_roqoqo_1_0::operations::TGate::new(0).into(); "TGate")]
+#[test_case(test_roqoqo_1_0::operations::PhaseShiftState1::new(0, 1.0.into()).into(); "PhaseShiftState1")]
+#[test_case(test_roqoqo_1_0::operations::PhaseShiftState0::new(0, 1.0.into()).into(); "PhaseShiftState0")]
+#[test_case(test_roqoqo_1_0::operations::RotateAroundSphericalAxis::new(0, 1.0.into(), 1.0.into(), 1.0.into()).into(); "RotateAroundSphericalAxis")]
+#[test_case(test_roqoqo_1_0::operations::PragmaSetNumberOfMeasurements::new(10, "ro".to_string()).into(); "PragmaSetNumberOfMeasurements")]
+#[test_case(test_roqoqo_1_0::operations::PragmaRepeatGate::new(10).into(); "PragmaRepeatGate")]
+#[test_case(test_roqoqo_1_0::operations::PragmaOverrotation::new("RotateZ".to_string(), vec![0], 1.0, 1.0).into(); "PragmaOverrotation")]
+#[test_case(test_roqoqo_1_0::operations::PragmaBoostNoise::new(1.0.into()).into(); "PragmaBoostNoise")]
+#[test_case(test_roqoqo_1_0::operations::PragmaStopParallelBlock::new(vec![0], 1.0.into()).into(); "PragmaStopParallelBlock")]
+#[test_case(test_roqoqo_1_0::operations::PragmaGlobalPhase::new(1.0.into()).into(); "PragmaGlobalPhase")]
+#[test_case(test_roqoqo_1_0::operations::PragmaStartDecompositionBlock::new(vec![0], HashMap::new()).into(); "PragmaStartDecompositionBlock")]
+#[test_case(test_roqoqo_1_0::operations::PragmaStopDecompositionBlock::new(vec![0]).into(); "PragmaStopDecompositionBlock")]
+#[test_case(test_roqoqo_1_0::operations::PragmaSleep::new(vec![0], 1.0.into()).into(); "PragmaSleep")]
+#[test_case(test_roqoqo_1_0::operations::RotateXY::new(0,1.0.into(), 0.1.into()).into(); "RotateXY")]
+#[test_case(test_roqoqo_1_0::operations::RotateZ::new(0, 0.1.into()).into(); "RotateZ")]
+#[test_case(test_roqoqo_1_0::operations::RotateX::new(0, 0.1.into()).into(); "RotateX")]
+#[test_case(test_roqoqo_1_0::operations::RotateY::new(0, 0.1.into()).into(); "RotateY")]
+#[test_case(test_roqoqo_1_0::operations::SingleQubitGate::new(0, 1.0.into(), 0.0.into(), 0.0.into(), 0.0.into(), 0.0.into(),).into(); "SingleQubitGate")]
+#[test_case(test_roqoqo_1_0::operations::DefinitionBit::new("ro".to_string(), 1, false).into(); "DefinitionBit")]
+#[test_case(test_roqoqo_1_0::operations::DefinitionComplex::new("ro".to_string(), 1, true).into(); "DefinitionComplex")]
+#[test_case(test_roqoqo_1_0::operations::DefinitionUsize::new("ro".to_string(), 1, true).into(); "DefinitionUsize")]
+#[test_case(test_roqoqo_1_0::operations::DefinitionFloat::new("ro".to_string(), 1, true).into(); "DefinitionFloat")]
+#[test_case(test_roqoqo_1_0::operations::InputSymbolic::new("ro".to_string(), 1.0).into(); "InputSymbolic")]
+#[test_case(test_roqoqo_1_0::operations::MeasureQubit::new(0,"ro".to_string(), 1).into(); "MeasureQubit")]
+#[test_case(test_roqoqo_1_0::operations::PragmaGetStateVector::new("ro".to_string(), None).into(); "PragmaGetStateVector")]
+#[test_case(test_roqoqo_1_0::operations::PragmaGetDensityMatrix::new("ro".to_string(), None).into(); "PragmaGetDensityMatrix")]
+#[test_case(test_roqoqo_1_0::operations::PragmaGetOccupationProbability::new("ro".to_string(), None).into(); "PragmaGetOccupationProbability")]
+#[test_case(test_roqoqo_1_0::operations::PragmaGetPauliProduct::new(std::collections::HashMap::new(),"ro".to_string(), test_roqoqo_1_0::Circuit::new()).into(); "PragmaGetPauliProduct")]
+#[test_case(test_roqoqo_1_0::operations::PragmaRepeatedMeasurement::new("ro".to_string(), 10, None).into(); "PragmaRepeatedMeasurement")]
+#[test_case(test_roqoqo_1_0::operations::PragmaDepolarising::new(0,1.0.into(), 1.0.into()).into(); "PragmaDepolarising")]
+#[test_case(test_roqoqo_1_0::operations::PragmaDamping::new(0,1.0.into(), 1.0.into()).into(); "PragmaDamping")]
+#[test_case(test_roqoqo_1_0::operations::PragmaDephasing::new(0,1.0.into(), 1.0.into()).into(); "PragmaDephasing")]
+#[test_case(test_roqoqo_1_0::operations::PragmaRandomNoise::new(0,1.0.into(), 1.0.into(), 1.0.into()).into(); "PragmaRandomNoise")]
+#[test_case(test_roqoqo_1_0::operations::PragmaActiveReset::new(0).into(); "PragmaActiveReset")]
+#[test_case(test_roqoqo_1_0::operations::PragmaConditional::new("ro".to_string(),0, test_roqoqo_1_0::Circuit::new()).into(); "PragmaConditional")]
+#[test_case(test_roqoqo_1_0::operations::MultiQubitMS::new(vec![0,2,3], 1.0.into()).into(); "MultiQubitMS")]
+#[test_case(test_roqoqo_1_0::operations::MultiQubitZZ::new(vec![0,2,3], 1.0.into()).into(); "MultiQubitZZ")]
+
+fn test_bincode_compatibility(operation: test_roqoqo_1_0::operations::Operation) {
+    let mut test_circuit = test_roqoqo_1_0::Circuit::new();
+    test_circuit += operation;
+
+    let test_measurement_input = test_roqoqo_1_0::measurements::PauliZProductInput::new(3, false);
+    let test_measurement = test_roqoqo_1_0::measurements::PauliZProduct {
+        constant_circuit: Some(test_circuit.clone()),
+        circuits: vec![test_circuit],
+        input: test_measurement_input,
+    };
+    let test_program = test_roqoqo_1_0::QuantumProgram::PauliZProduct {
+        measurement: test_measurement,
+        input_parameter_names: vec!["test".to_string()],
+    };
+    let test_serialisation: Vec<u8> = bincode::serialize(&test_program).unwrap();
+
+    let _test_deserialisation: roqoqo::QuantumProgram =
+        bincode::deserialize(&test_serialisation).unwrap();
+}
diff --git a/compatibility_test/tests/integration/main.rs b/compatibility_test/tests/integration/main.rs
new file mode 100644
index 00000000..9fb19a47
--- /dev/null
+++ b/compatibility_test/tests/integration/main.rs
@@ -0,0 +1,13 @@
+// Copyright © 2021 HQS Quantum Simulations GmbH. All Rights Reserved.
+//
+// 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.
+#[cfg(test)]
+mod compatibility;
diff --git a/roqoqo-test/Cargo.toml b/roqoqo-test/Cargo.toml
index a75d072f..24622604 100644
--- a/roqoqo-test/Cargo.toml
+++ b/roqoqo-test/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "roqoqo-test"
-version = "1.1.0-beta.6"
+version = "1.2.0-alpha.1"
 authors = ["HQS Quantum Simulations <info@quantumsimulations.de>"]
 license = "Apache-2.0"
 edition = "2021"
@@ -19,9 +19,9 @@ crate-type = ["rlib"]
 
 [dependencies]
 qoqo_calculator = { version="1.1" }
-roqoqo = {version="1.1.0-beta.6", path="../roqoqo", features=["serialize"]}
+roqoqo = {version="1.2.0-alpha.1", path="../roqoqo", features=["serialize"]}
 rand = "0.8"
-nalgebra = "0.31"
+nalgebra = "=0.30"
 ndarray = { version = "0.15" }
 
 [build-dependencies]
diff --git a/roqoqo/tests/integration/compatability.rs b/roqoqo/tests/integration/compatability.rs
deleted file mode 100644
index 6b407e40..00000000
--- a/roqoqo/tests/integration/compatability.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright © 2022 HQS Quantum Simulations GmbH. All Rights Reserved.
-//
-// 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.
-
-// use bincode;
-// use roqoqo;
-#[cfg(feature = "serialize")]
-use test_case::test_case;
-// use test_roqoqo_1_0;
-
-#[cfg(feature = "serialize")]
-#[test_case(test_roqoqo_1_0::operations::Hadamard::new(0).into(); "Hadamard")]
-#[cfg(feature = "serialize")]
-#[test_case(test_roqoqo_1_0::operations::ControlledPhaseShift::new(0,1, 0.1.into()).into(); "ControlledPhase")]
-#[cfg(feature = "serialize")]
-#[test_case(test_roqoqo_1_0::operations::VariableMSXX::new(0,1, 0.1.into()).into(); "VariableMSXX")]
-#[cfg(feature = "serialize")]
-fn test_bincode_compatability(operation: test_roqoqo_1_0::operations::Operation) {
-    let mut test_circuit = test_roqoqo_1_0::Circuit::new();
-    test_circuit += operation;
-
-    let test_measurement_input = test_roqoqo_1_0::measurements::PauliZProductInput::new(3, false);
-    let test_measurement = test_roqoqo_1_0::measurements::PauliZProduct {
-        constant_circuit: Some(test_circuit.clone()),
-        circuits: vec![test_circuit],
-        input: test_measurement_input,
-    };
-    let test_program = test_roqoqo_1_0::QuantumProgram::PauliZProduct {
-        measurement: test_measurement,
-        input_parameter_names: vec!["test".to_string()],
-    };
-    let test_serialisation: Vec<u8> = bincode::serialize(&test_program).unwrap();
-
-    let _test_deserialisation: roqoqo::QuantumProgram =
-        bincode::deserialize(&test_serialisation).unwrap();
-}
diff --git a/roqoqo/tests/integration/main.rs b/roqoqo/tests/integration/main.rs
index b13a0ace..99e471c3 100644
--- a/roqoqo/tests/integration/main.rs
+++ b/roqoqo/tests/integration/main.rs
@@ -25,9 +25,6 @@ mod devices;
 #[cfg(test)]
 mod quantum_program;
 
-#[cfg(test)]
-mod compatability;
-
 #[cfg(test)]
 #[cfg(feature = "circuitdag")]
 mod circuitdag;