merlin-sim 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. merlin_sim-0.1.0/.github/workflows/docs.yml +28 -0
  2. merlin_sim-0.1.0/.github/workflows/release.yml +214 -0
  3. merlin_sim-0.1.0/.gitignore +19 -0
  4. merlin_sim-0.1.0/.gitmodules +3 -0
  5. merlin_sim-0.1.0/.python-version +1 -0
  6. merlin_sim-0.1.0/Cargo.lock +384 -0
  7. merlin_sim-0.1.0/Cargo.toml +26 -0
  8. merlin_sim-0.1.0/PKG-INFO +87 -0
  9. merlin_sim-0.1.0/README.md +78 -0
  10. merlin_sim-0.1.0/benchmarks/README.md +71 -0
  11. merlin_sim-0.1.0/benchmarks/__init__.py +5 -0
  12. merlin_sim-0.1.0/benchmarks/__main__.py +4 -0
  13. merlin_sim-0.1.0/benchmarks/cli.py +529 -0
  14. merlin_sim-0.1.0/benchmarks/models.py +67 -0
  15. merlin_sim-0.1.0/benchmarks/plotting.py +187 -0
  16. merlin_sim-0.1.0/benchmarks/print_results.py +61 -0
  17. merlin_sim-0.1.0/benchmarks/protocols/__init__.py +12 -0
  18. merlin_sim-0.1.0/benchmarks/protocols/code_switching.py +372 -0
  19. merlin_sim-0.1.0/benchmarks/protocols/css.py +344 -0
  20. merlin_sim-0.1.0/benchmarks/protocols/cultivation.py +63 -0
  21. merlin_sim-0.1.0/benchmarks/protocols/distillation.py +123 -0
  22. merlin_sim-0.1.0/benchmarks/protocols/gates.py +58 -0
  23. merlin_sim-0.1.0/benchmarks/results/bh-memory.pdf +0 -0
  24. merlin_sim-0.1.0/benchmarks/results/bh-memory.pdf-legend.pdf +0 -0
  25. merlin_sim-0.1.0/benchmarks/results/bh-sample-time.pdf +0 -0
  26. merlin_sim-0.1.0/benchmarks/results/bh-sample-time.pdf-legend.pdf +0 -0
  27. merlin_sim-0.1.0/benchmarks/results/bh-total-time.pdf +0 -0
  28. merlin_sim-0.1.0/benchmarks/results/bh-total-time.pdf-legend.pdf +0 -0
  29. merlin_sim-0.1.0/benchmarks/results/bh.json +3831 -0
  30. merlin_sim-0.1.0/benchmarks/results/other.json +1564 -0
  31. merlin_sim-0.1.0/benchmarks/runners/__init__.py +6 -0
  32. merlin_sim-0.1.0/benchmarks/runners/common.py +110 -0
  33. merlin_sim-0.1.0/benchmarks/runners/external.py +180 -0
  34. merlin_sim-0.1.0/benchmarks/runners/external_driver.py +294 -0
  35. merlin_sim-0.1.0/benchmarks/runners/merlin.py +145 -0
  36. merlin_sim-0.1.0/benchmarks/storage.py +79 -0
  37. merlin_sim-0.1.0/benchmarks/symft-arm64.patch +13 -0
  38. merlin_sim-0.1.0/docs/api.md +74 -0
  39. merlin_sim-0.1.0/docs/circuit-format.md +202 -0
  40. merlin_sim-0.1.0/docs/index.md +74 -0
  41. merlin_sim-0.1.0/experiments/cultivation/.gitignore +3 -0
  42. merlin_sim-0.1.0/experiments/cultivation/README.md +39 -0
  43. merlin_sim-0.1.0/experiments/cultivation/circuit_d3_s.stim +197 -0
  44. merlin_sim-0.1.0/experiments/cultivation/circuit_d3_t.stim +202 -0
  45. merlin_sim-0.1.0/experiments/cultivation/circuit_d5_s.stim +557 -0
  46. merlin_sim-0.1.0/experiments/cultivation/circuit_d5_t.stim +557 -0
  47. merlin_sim-0.1.0/experiments/cultivation/common.py +128 -0
  48. merlin_sim-0.1.0/experiments/cultivation/plot.py +201 -0
  49. merlin_sim-0.1.0/experiments/cultivation/sample.py +180 -0
  50. merlin_sim-0.1.0/mkdocs.yml +39 -0
  51. merlin_sim-0.1.0/pyproject.toml +47 -0
  52. merlin_sim-0.1.0/python/merlin/__init__.py +15 -0
  53. merlin_sim-0.1.0/python/merlin/_core.pyi +714 -0
  54. merlin_sim-0.1.0/python/merlin/py.typed +0 -0
  55. merlin_sim-0.1.0/src/bindings.rs +742 -0
  56. merlin_sim-0.1.0/src/bits.rs +141 -0
  57. merlin_sim-0.1.0/src/circuit.rs +1067 -0
  58. merlin_sim-0.1.0/src/lib.rs +100 -0
  59. merlin_sim-0.1.0/src/sampling.rs +1219 -0
  60. merlin_sim-0.1.0/src/simulator/expvals.rs +383 -0
  61. merlin_sim-0.1.0/src/simulator/gates.rs +159 -0
  62. merlin_sim-0.1.0/src/simulator/measurements.rs +517 -0
  63. merlin_sim-0.1.0/src/simulator/noise.rs +217 -0
  64. merlin_sim-0.1.0/src/simulator/observables.rs +411 -0
  65. merlin_sim-0.1.0/src/simulator/test.rs +146 -0
  66. merlin_sim-0.1.0/src/simulator.rs +342 -0
  67. merlin_sim-0.1.0/src/stim.pest +14 -0
  68. merlin_sim-0.1.0/tests/rust_api.rs +220 -0
  69. merlin_sim-0.1.0/tests/test_benchmark_circuit_correctness.py +133 -0
  70. merlin_sim-0.1.0/tests/test_benchmark_cli_and_plotting.py +434 -0
  71. merlin_sim-0.1.0/tests/test_benchmark_protocols.py +259 -0
  72. merlin_sim-0.1.0/tests/test_benchmark_runners.py +561 -0
  73. merlin_sim-0.1.0/tests/test_circuit_sampler.py +232 -0
  74. merlin_sim-0.1.0/tests/test_cultivation.py +338 -0
  75. merlin_sim-0.1.0/tests/test_python_api.py +586 -0
  76. merlin_sim-0.1.0/uv.lock +2863 -0
@@ -0,0 +1,28 @@
1
+ name: docs
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ permissions:
7
+ contents: write
8
+ jobs:
9
+ deploy:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - name: Configure Git Credentials
14
+ run: |
15
+ git config user.name github-actions[bot]
16
+ git config user.email 41898282+github-actions[bot]@users.noreply.github.com
17
+ - uses: actions/setup-python@v5
18
+ with:
19
+ python-version: 3.x
20
+ - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
21
+ - uses: actions/cache@v4
22
+ with:
23
+ key: mkdocs-material-${{ env.cache_id }}
24
+ path: ~/.cache
25
+ restore-keys: |
26
+ mkdocs-material-
27
+ - run: pip install mkdocs-material mkdocstrings-python
28
+ - run: mkdocs gh-deploy --force
@@ -0,0 +1,214 @@
1
+ # This file is autogenerated by maturin v1.14.1
2
+ # To update, run
3
+ #
4
+ # maturin generate-ci github
5
+ #
6
+ name: release
7
+
8
+ on:
9
+ push:
10
+ tags:
11
+ - '*'
12
+ workflow_dispatch:
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ jobs:
18
+ linux:
19
+ runs-on: ${{ matrix.platform.runner }}
20
+ strategy:
21
+ matrix:
22
+ platform:
23
+ - runner: ubuntu-22.04
24
+ target: x86_64
25
+ - runner: ubuntu-22.04
26
+ target: x86
27
+ - runner: ubuntu-22.04
28
+ target: aarch64
29
+ - runner: ubuntu-22.04
30
+ target: armv7
31
+ - runner: ubuntu-22.04
32
+ target: s390x
33
+ - runner: ubuntu-22.04
34
+ target: ppc64le
35
+ steps:
36
+ - uses: actions/checkout@v6
37
+ - uses: actions/setup-python@v6
38
+ with:
39
+ python-version: "3.10"
40
+ - name: Build wheels
41
+ uses: PyO3/maturin-action@v1
42
+ with:
43
+ target: ${{ matrix.platform.target }}
44
+ args: --release --out dist
45
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
46
+ manylinux: auto
47
+ - name: Build free-threaded wheels
48
+ uses: PyO3/maturin-action@v1
49
+ with:
50
+ target: ${{ matrix.platform.target }}
51
+ args: --release --out dist -i python3.14t
52
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
53
+ manylinux: auto
54
+ - name: Upload wheels
55
+ uses: actions/upload-artifact@v6
56
+ with:
57
+ name: wheels-linux-${{ matrix.platform.target }}
58
+ path: dist
59
+
60
+ musllinux:
61
+ runs-on: ${{ matrix.platform.runner }}
62
+ strategy:
63
+ matrix:
64
+ platform:
65
+ - runner: ubuntu-22.04
66
+ target: x86_64
67
+ - runner: ubuntu-22.04
68
+ target: x86
69
+ - runner: ubuntu-22.04
70
+ target: aarch64
71
+ - runner: ubuntu-22.04
72
+ target: armv7
73
+ steps:
74
+ - uses: actions/checkout@v6
75
+ - uses: actions/setup-python@v6
76
+ with:
77
+ python-version: "3.10"
78
+ - name: Build wheels
79
+ uses: PyO3/maturin-action@v1
80
+ with:
81
+ target: ${{ matrix.platform.target }}
82
+ args: --release --out dist
83
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
84
+ manylinux: musllinux_1_2
85
+ - name: Build free-threaded wheels
86
+ uses: PyO3/maturin-action@v1
87
+ with:
88
+ target: ${{ matrix.platform.target }}
89
+ args: --release --out dist -i python3.14t
90
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
91
+ manylinux: musllinux_1_2
92
+ - name: Upload wheels
93
+ uses: actions/upload-artifact@v6
94
+ with:
95
+ name: wheels-musllinux-${{ matrix.platform.target }}
96
+ path: dist
97
+
98
+ windows:
99
+ runs-on: ${{ matrix.platform.runner }}
100
+ strategy:
101
+ matrix:
102
+ platform:
103
+ - runner: windows-latest
104
+ target: x64
105
+ python_arch: x64
106
+ - runner: windows-latest
107
+ target: x86
108
+ python_arch: x86
109
+ - runner: windows-11-arm
110
+ target: aarch64
111
+ python_arch: arm64
112
+ steps:
113
+ - uses: actions/checkout@v6
114
+ - uses: actions/setup-python@v6
115
+ with:
116
+ python-version: "3.13"
117
+ architecture: ${{ matrix.platform.python_arch }}
118
+ - name: Build wheels
119
+ uses: PyO3/maturin-action@v1
120
+ with:
121
+ target: ${{ matrix.platform.target }}
122
+ args: --release --out dist
123
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
124
+ - uses: actions/setup-python@v6
125
+ with:
126
+ python-version: "3.14t"
127
+ architecture: ${{ matrix.platform.python_arch }}
128
+ - name: Build free-threaded wheels
129
+ uses: PyO3/maturin-action@v1
130
+ with:
131
+ target: ${{ matrix.platform.target }}
132
+ args: --release --out dist -i python3.14t
133
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
134
+ - name: Upload wheels
135
+ uses: actions/upload-artifact@v6
136
+ with:
137
+ name: wheels-windows-${{ matrix.platform.target }}
138
+ path: dist
139
+
140
+ macos:
141
+ runs-on: ${{ matrix.platform.runner }}
142
+ strategy:
143
+ matrix:
144
+ platform:
145
+ - runner: macos-15-intel
146
+ target: x86_64
147
+ - runner: macos-latest
148
+ target: aarch64
149
+ steps:
150
+ - uses: actions/checkout@v6
151
+ - uses: actions/setup-python@v6
152
+ with:
153
+ python-version: "3.10"
154
+ - name: Build wheels
155
+ uses: PyO3/maturin-action@v1
156
+ with:
157
+ target: ${{ matrix.platform.target }}
158
+ args: --release --out dist
159
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
160
+ - uses: actions/setup-python@v6
161
+ with:
162
+ python-version: "3.14t"
163
+ - name: Build free-threaded wheels
164
+ uses: PyO3/maturin-action@v1
165
+ with:
166
+ target: ${{ matrix.platform.target }}
167
+ args: --release --out dist -i python3.14t
168
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
169
+ - name: Upload wheels
170
+ uses: actions/upload-artifact@v6
171
+ with:
172
+ name: wheels-macos-${{ matrix.platform.target }}
173
+ path: dist
174
+
175
+ sdist:
176
+ runs-on: ubuntu-latest
177
+ steps:
178
+ - uses: actions/checkout@v6
179
+ - name: Build sdist
180
+ uses: PyO3/maturin-action@v1
181
+ with:
182
+ command: sdist
183
+ args: --out dist
184
+ - name: Upload sdist
185
+ uses: actions/upload-artifact@v6
186
+ with:
187
+ name: wheels-sdist
188
+ path: dist
189
+
190
+ release:
191
+ name: Release
192
+ runs-on: ubuntu-latest
193
+ if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
194
+ needs: [linux, musllinux, windows, macos, sdist]
195
+ environment: pypi
196
+ permissions:
197
+ # Use to sign the release artifacts
198
+ id-token: write
199
+ # Used to upload release artifacts
200
+ contents: write
201
+ # Used to generate artifact attestation
202
+ attestations: write
203
+ steps:
204
+ - uses: actions/download-artifact@v7
205
+ - name: Generate artifact attestation
206
+ uses: actions/attest@v4
207
+ with:
208
+ subject-path: 'wheels-*/*'
209
+ - name: Install uv
210
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
211
+ uses: astral-sh/setup-uv@v7
212
+ - name: Publish to PyPI
213
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
214
+ run: uv publish --trusted-publishing always 'wheels-*/*'
@@ -0,0 +1,19 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ *.so
5
+ *.pyd
6
+ build/
7
+ dist/
8
+ wheels/
9
+ *.egg-info
10
+
11
+ # Virtual environments
12
+ .venv
13
+
14
+ # Rust-generated files
15
+ target/
16
+
17
+ # Test caches
18
+ .pytest_cache/
19
+ .xtim_cache/
@@ -0,0 +1,3 @@
1
+ [submodule "benchmarks/symft"]
2
+ path = benchmarks/symft
3
+ url = https://github.com/haoliri0/SymFT_Test.git
@@ -0,0 +1 @@
1
+ 3.10
@@ -0,0 +1,384 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "autocfg"
7
+ version = "1.5.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
10
+
11
+ [[package]]
12
+ name = "cfg-if"
13
+ version = "1.0.4"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
16
+
17
+ [[package]]
18
+ name = "getrandom"
19
+ version = "0.3.4"
20
+ source = "registry+https://github.com/rust-lang/crates.io-index"
21
+ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
22
+ dependencies = [
23
+ "cfg-if",
24
+ "libc",
25
+ "r-efi",
26
+ "wasip2",
27
+ ]
28
+
29
+ [[package]]
30
+ name = "heck"
31
+ version = "0.5.0"
32
+ source = "registry+https://github.com/rust-lang/crates.io-index"
33
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
34
+
35
+ [[package]]
36
+ name = "libc"
37
+ version = "0.2.189"
38
+ source = "registry+https://github.com/rust-lang/crates.io-index"
39
+ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
40
+
41
+ [[package]]
42
+ name = "matrixmultiply"
43
+ version = "0.3.11"
44
+ source = "registry+https://github.com/rust-lang/crates.io-index"
45
+ checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7"
46
+ dependencies = [
47
+ "autocfg",
48
+ "rawpointer",
49
+ ]
50
+
51
+ [[package]]
52
+ name = "memchr"
53
+ version = "2.8.3"
54
+ source = "registry+https://github.com/rust-lang/crates.io-index"
55
+ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
56
+
57
+ [[package]]
58
+ name = "merlin"
59
+ version = "0.1.0"
60
+ dependencies = [
61
+ "num-complex",
62
+ "numpy",
63
+ "pest",
64
+ "pest_derive",
65
+ "pyo3",
66
+ "rand",
67
+ "rand_chacha",
68
+ ]
69
+
70
+ [[package]]
71
+ name = "ndarray"
72
+ version = "0.17.2"
73
+ source = "registry+https://github.com/rust-lang/crates.io-index"
74
+ checksum = "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d"
75
+ dependencies = [
76
+ "matrixmultiply",
77
+ "num-complex",
78
+ "num-integer",
79
+ "num-traits",
80
+ "portable-atomic",
81
+ "portable-atomic-util",
82
+ "rawpointer",
83
+ ]
84
+
85
+ [[package]]
86
+ name = "num-complex"
87
+ version = "0.4.6"
88
+ source = "registry+https://github.com/rust-lang/crates.io-index"
89
+ checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
90
+ dependencies = [
91
+ "num-traits",
92
+ ]
93
+
94
+ [[package]]
95
+ name = "num-integer"
96
+ version = "0.1.47"
97
+ source = "registry+https://github.com/rust-lang/crates.io-index"
98
+ checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b"
99
+ dependencies = [
100
+ "num-traits",
101
+ ]
102
+
103
+ [[package]]
104
+ name = "num-traits"
105
+ version = "0.2.19"
106
+ source = "registry+https://github.com/rust-lang/crates.io-index"
107
+ checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
108
+ dependencies = [
109
+ "autocfg",
110
+ ]
111
+
112
+ [[package]]
113
+ name = "numpy"
114
+ version = "0.29.0"
115
+ source = "registry+https://github.com/rust-lang/crates.io-index"
116
+ checksum = "6a5b15d63a5ff39e378daed0e1340d3a5964703ea9712eb09a0dc66fade996f4"
117
+ dependencies = [
118
+ "libc",
119
+ "ndarray",
120
+ "num-complex",
121
+ "num-integer",
122
+ "num-traits",
123
+ "pyo3",
124
+ "pyo3-build-config",
125
+ "rustc-hash",
126
+ ]
127
+
128
+ [[package]]
129
+ name = "once_cell"
130
+ version = "1.21.4"
131
+ source = "registry+https://github.com/rust-lang/crates.io-index"
132
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
133
+
134
+ [[package]]
135
+ name = "pest"
136
+ version = "2.9.0"
137
+ source = "registry+https://github.com/rust-lang/crates.io-index"
138
+ checksum = "5a07a60cc7a4d00c91f95c685609d1d2f79050e6804b70ebedd7650f0b839bcf"
139
+ dependencies = [
140
+ "memchr",
141
+ "ucd-trie",
142
+ ]
143
+
144
+ [[package]]
145
+ name = "pest_derive"
146
+ version = "2.9.0"
147
+ source = "registry+https://github.com/rust-lang/crates.io-index"
148
+ checksum = "b3a83744a5c8455b8b3e0dc5031362780a347c878bdd11584d1a8984228cc88d"
149
+ dependencies = [
150
+ "pest",
151
+ "pest_generator",
152
+ ]
153
+
154
+ [[package]]
155
+ name = "pest_generator"
156
+ version = "2.9.0"
157
+ source = "registry+https://github.com/rust-lang/crates.io-index"
158
+ checksum = "e0cd3451aa3de60d4b9a1e736885e4dea6b31617598026f12256ad566d63304a"
159
+ dependencies = [
160
+ "pest",
161
+ "pest_meta",
162
+ "proc-macro2",
163
+ "quote",
164
+ "syn",
165
+ ]
166
+
167
+ [[package]]
168
+ name = "pest_meta"
169
+ version = "2.9.0"
170
+ source = "registry+https://github.com/rust-lang/crates.io-index"
171
+ checksum = "e04d3a0849e241d7dfce834c83b1c5edc8622009e8dd51a12ba1927c32f05496"
172
+ dependencies = [
173
+ "pest",
174
+ ]
175
+
176
+ [[package]]
177
+ name = "portable-atomic"
178
+ version = "1.15.0"
179
+ source = "registry+https://github.com/rust-lang/crates.io-index"
180
+ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
181
+
182
+ [[package]]
183
+ name = "portable-atomic-util"
184
+ version = "0.2.7"
185
+ source = "registry+https://github.com/rust-lang/crates.io-index"
186
+ checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
187
+ dependencies = [
188
+ "portable-atomic",
189
+ ]
190
+
191
+ [[package]]
192
+ name = "ppv-lite86"
193
+ version = "0.2.21"
194
+ source = "registry+https://github.com/rust-lang/crates.io-index"
195
+ checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
196
+ dependencies = [
197
+ "zerocopy",
198
+ ]
199
+
200
+ [[package]]
201
+ name = "proc-macro2"
202
+ version = "1.0.107"
203
+ source = "registry+https://github.com/rust-lang/crates.io-index"
204
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
205
+ dependencies = [
206
+ "unicode-ident",
207
+ ]
208
+
209
+ [[package]]
210
+ name = "pyo3"
211
+ version = "0.29.2"
212
+ source = "registry+https://github.com/rust-lang/crates.io-index"
213
+ checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b"
214
+ dependencies = [
215
+ "libc",
216
+ "once_cell",
217
+ "portable-atomic",
218
+ "pyo3-build-config",
219
+ "pyo3-ffi",
220
+ "pyo3-macros",
221
+ ]
222
+
223
+ [[package]]
224
+ name = "pyo3-build-config"
225
+ version = "0.29.2"
226
+ source = "registry+https://github.com/rust-lang/crates.io-index"
227
+ checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9"
228
+ dependencies = [
229
+ "target-lexicon",
230
+ ]
231
+
232
+ [[package]]
233
+ name = "pyo3-ffi"
234
+ version = "0.29.2"
235
+ source = "registry+https://github.com/rust-lang/crates.io-index"
236
+ checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327"
237
+ dependencies = [
238
+ "libc",
239
+ "pyo3-build-config",
240
+ ]
241
+
242
+ [[package]]
243
+ name = "pyo3-macros"
244
+ version = "0.29.2"
245
+ source = "registry+https://github.com/rust-lang/crates.io-index"
246
+ checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c"
247
+ dependencies = [
248
+ "proc-macro2",
249
+ "pyo3-macros-backend",
250
+ "quote",
251
+ "syn",
252
+ ]
253
+
254
+ [[package]]
255
+ name = "pyo3-macros-backend"
256
+ version = "0.29.2"
257
+ source = "registry+https://github.com/rust-lang/crates.io-index"
258
+ checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952"
259
+ dependencies = [
260
+ "heck",
261
+ "proc-macro2",
262
+ "quote",
263
+ "syn",
264
+ ]
265
+
266
+ [[package]]
267
+ name = "quote"
268
+ version = "1.0.47"
269
+ source = "registry+https://github.com/rust-lang/crates.io-index"
270
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
271
+ dependencies = [
272
+ "proc-macro2",
273
+ ]
274
+
275
+ [[package]]
276
+ name = "r-efi"
277
+ version = "5.3.0"
278
+ source = "registry+https://github.com/rust-lang/crates.io-index"
279
+ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
280
+
281
+ [[package]]
282
+ name = "rand"
283
+ version = "0.9.5"
284
+ source = "registry+https://github.com/rust-lang/crates.io-index"
285
+ checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41"
286
+ dependencies = [
287
+ "rand_chacha",
288
+ "rand_core",
289
+ ]
290
+
291
+ [[package]]
292
+ name = "rand_chacha"
293
+ version = "0.9.0"
294
+ source = "registry+https://github.com/rust-lang/crates.io-index"
295
+ checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
296
+ dependencies = [
297
+ "ppv-lite86",
298
+ "rand_core",
299
+ ]
300
+
301
+ [[package]]
302
+ name = "rand_core"
303
+ version = "0.9.5"
304
+ source = "registry+https://github.com/rust-lang/crates.io-index"
305
+ checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
306
+ dependencies = [
307
+ "getrandom",
308
+ ]
309
+
310
+ [[package]]
311
+ name = "rawpointer"
312
+ version = "0.2.1"
313
+ source = "registry+https://github.com/rust-lang/crates.io-index"
314
+ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
315
+
316
+ [[package]]
317
+ name = "rustc-hash"
318
+ version = "2.1.3"
319
+ source = "registry+https://github.com/rust-lang/crates.io-index"
320
+ checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
321
+
322
+ [[package]]
323
+ name = "syn"
324
+ version = "2.0.119"
325
+ source = "registry+https://github.com/rust-lang/crates.io-index"
326
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
327
+ dependencies = [
328
+ "proc-macro2",
329
+ "quote",
330
+ "unicode-ident",
331
+ ]
332
+
333
+ [[package]]
334
+ name = "target-lexicon"
335
+ version = "0.13.5"
336
+ source = "registry+https://github.com/rust-lang/crates.io-index"
337
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
338
+
339
+ [[package]]
340
+ name = "ucd-trie"
341
+ version = "0.1.7"
342
+ source = "registry+https://github.com/rust-lang/crates.io-index"
343
+ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
344
+
345
+ [[package]]
346
+ name = "unicode-ident"
347
+ version = "1.0.24"
348
+ source = "registry+https://github.com/rust-lang/crates.io-index"
349
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
350
+
351
+ [[package]]
352
+ name = "wasip2"
353
+ version = "1.0.4+wasi-0.2.12"
354
+ source = "registry+https://github.com/rust-lang/crates.io-index"
355
+ checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
356
+ dependencies = [
357
+ "wit-bindgen",
358
+ ]
359
+
360
+ [[package]]
361
+ name = "wit-bindgen"
362
+ version = "0.57.1"
363
+ source = "registry+https://github.com/rust-lang/crates.io-index"
364
+ checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
365
+
366
+ [[package]]
367
+ name = "zerocopy"
368
+ version = "0.8.56"
369
+ source = "registry+https://github.com/rust-lang/crates.io-index"
370
+ checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb"
371
+ dependencies = [
372
+ "zerocopy-derive",
373
+ ]
374
+
375
+ [[package]]
376
+ name = "zerocopy-derive"
377
+ version = "0.8.56"
378
+ source = "registry+https://github.com/rust-lang/crates.io-index"
379
+ checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1"
380
+ dependencies = [
381
+ "proc-macro2",
382
+ "quote",
383
+ "syn",
384
+ ]
@@ -0,0 +1,26 @@
1
+ [package]
2
+ name = "merlin"
3
+ version = "0.1.0"
4
+ edition = "2024"
5
+ description = "Polynomial-time simulator for CNOT+T DCP-stabilizer states"
6
+ readme = "README.md"
7
+
8
+ [lib]
9
+ name = "merlin"
10
+ crate-type = ["cdylib", "rlib"]
11
+
12
+ [features]
13
+ default = []
14
+ python = ["dep:numpy", "dep:pyo3"]
15
+
16
+ [dependencies]
17
+ num-complex = "0.4"
18
+ numpy = { version = "0.29", optional = true }
19
+ pest = "2.8"
20
+ pest_derive = "2.8"
21
+ pyo3 = { version = "0.29", features = ["abi3-py310"], optional = true }
22
+ rand = "0.9"
23
+ rand_chacha = "0.9"
24
+
25
+ [profile.release]
26
+ debug = true