ironnest 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 (97) hide show
  1. ironnest-0.1.0/Cargo.lock +496 -0
  2. ironnest-0.1.0/Cargo.toml +34 -0
  3. ironnest-0.1.0/PKG-INFO +57 -0
  4. ironnest-0.1.0/README.md +34 -0
  5. ironnest-0.1.0/crates/cde/Cargo.toml +23 -0
  6. ironnest-0.1.0/crates/cde/src/collision_detection/cd_engine.rs +369 -0
  7. ironnest-0.1.0/crates/cde/src/collision_detection/hazards/collector.rs +71 -0
  8. ironnest-0.1.0/crates/cde/src/collision_detection/hazards/filter.rs +81 -0
  9. ironnest-0.1.0/crates/cde/src/collision_detection/hazards/hazard.rs +83 -0
  10. ironnest-0.1.0/crates/cde/src/collision_detection/hazards/mod.rs +18 -0
  11. ironnest-0.1.0/crates/cde/src/collision_detection/mod.rs +18 -0
  12. ironnest-0.1.0/crates/cde/src/collision_detection/quadtree/mod.rs +18 -0
  13. ironnest-0.1.0/crates/cde/src/collision_detection/quadtree/qt_hazard.rs +182 -0
  14. ironnest-0.1.0/crates/cde/src/collision_detection/quadtree/qt_hazard_vec.rs +125 -0
  15. ironnest-0.1.0/crates/cde/src/collision_detection/quadtree/qt_node.rs +194 -0
  16. ironnest-0.1.0/crates/cde/src/collision_detection/quadtree/qt_partial_hazard.rs +77 -0
  17. ironnest-0.1.0/crates/cde/src/collision_detection/quadtree/qt_traits.rs +189 -0
  18. ironnest-0.1.0/crates/cde/src/entities/container.rs +143 -0
  19. ironnest-0.1.0/crates/cde/src/entities/instance.rs +23 -0
  20. ironnest-0.1.0/crates/cde/src/entities/item.rs +59 -0
  21. ironnest-0.1.0/crates/cde/src/entities/layout.rs +176 -0
  22. ironnest-0.1.0/crates/cde/src/entities/mod.rs +36 -0
  23. ironnest-0.1.0/crates/cde/src/entities/placed_item.rs +43 -0
  24. ironnest-0.1.0/crates/cde/src/io/export.rs +50 -0
  25. ironnest-0.1.0/crates/cde/src/io/ext_repr.rs +126 -0
  26. ironnest-0.1.0/crates/cde/src/io/import.rs +266 -0
  27. ironnest-0.1.0/crates/cde/src/io/mod.rs +15 -0
  28. ironnest-0.1.0/crates/cde/src/lib.rs +54 -0
  29. ironnest-0.1.0/crates/cde/src/probs/bpp/entities/bin.rs +31 -0
  30. ironnest-0.1.0/crates/cde/src/probs/bpp/entities/instance.rs +73 -0
  31. ironnest-0.1.0/crates/cde/src/probs/bpp/entities/mod.rs +23 -0
  32. ironnest-0.1.0/crates/cde/src/probs/bpp/entities/problem.rs +275 -0
  33. ironnest-0.1.0/crates/cde/src/probs/bpp/entities/solution.rs +48 -0
  34. ironnest-0.1.0/crates/cde/src/probs/bpp/io/export.rs +26 -0
  35. ironnest-0.1.0/crates/cde/src/probs/bpp/io/ext_repr.rs +52 -0
  36. ironnest-0.1.0/crates/cde/src/probs/bpp/io/import.rs +78 -0
  37. ironnest-0.1.0/crates/cde/src/probs/bpp/io/mod.rs +17 -0
  38. ironnest-0.1.0/crates/cde/src/probs/bpp/mod.rs +12 -0
  39. ironnest-0.1.0/crates/cde/src/probs/bpp/util/assertions.rs +34 -0
  40. ironnest-0.1.0/crates/cde/src/probs/bpp/util/mod.rs +5 -0
  41. ironnest-0.1.0/crates/cde/src/probs/mod.rs +9 -0
  42. ironnest-0.1.0/crates/cde/src/util/assertions.rs +282 -0
  43. ironnest-0.1.0/crates/cde/src/util/mod.rs +9 -0
  44. ironnest-0.1.0/crates/cde/tests/cde_smoke.rs +114 -0
  45. ironnest-0.1.0/crates/geo/Cargo.toml +36 -0
  46. ironnest-0.1.0/crates/geo/src/buffer/NOTICE +19 -0
  47. ironnest-0.1.0/crates/geo/src/buffer/mod.rs +398 -0
  48. ironnest-0.1.0/crates/geo/src/buffer/priority_queue/mod.rs +78 -0
  49. ironnest-0.1.0/crates/geo/src/buffer/skeleton/mod.rs +953 -0
  50. ironnest-0.1.0/crates/geo/src/buffer/util/coordinate/mod.rs +258 -0
  51. ironnest-0.1.0/crates/geo/src/buffer/util/mod.rs +48 -0
  52. ironnest-0.1.0/crates/geo/src/buffer/util/ray/mod.rs +349 -0
  53. ironnest-0.1.0/crates/geo/src/buffer/vertex_queue/mod.rs +273 -0
  54. ironnest-0.1.0/crates/geo/src/convex_hull.rs +75 -0
  55. ironnest-0.1.0/crates/geo/src/d_transformation.rs +90 -0
  56. ironnest-0.1.0/crates/geo/src/fail_fast/mod.rs +22 -0
  57. ironnest-0.1.0/crates/geo/src/fail_fast/piers.rs +237 -0
  58. ironnest-0.1.0/crates/geo/src/fail_fast/pole.rs +141 -0
  59. ironnest-0.1.0/crates/geo/src/fail_fast/sp_surrogate.rs +149 -0
  60. ironnest-0.1.0/crates/geo/src/fpa.rs +43 -0
  61. ironnest-0.1.0/crates/geo/src/geo_enums.rs +34 -0
  62. ironnest-0.1.0/crates/geo/src/geo_traits.rs +62 -0
  63. ironnest-0.1.0/crates/geo/src/lib.rs +85 -0
  64. ironnest-0.1.0/crates/geo/src/original_shape.rs +78 -0
  65. ironnest-0.1.0/crates/geo/src/primitives/circle.rs +238 -0
  66. ironnest-0.1.0/crates/geo/src/primitives/edge.rs +253 -0
  67. ironnest-0.1.0/crates/geo/src/primitives/mod.rs +22 -0
  68. ironnest-0.1.0/crates/geo/src/primitives/point.rs +93 -0
  69. ironnest-0.1.0/crates/geo/src/primitives/rect.rs +417 -0
  70. ironnest-0.1.0/crates/geo/src/primitives/simple_polygon.rs +373 -0
  71. ironnest-0.1.0/crates/geo/src/shape_modification.rs +601 -0
  72. ironnest-0.1.0/crates/geo/src/transformation.rs +242 -0
  73. ironnest-0.1.0/crates/geo/tests/geometry.rs +118 -0
  74. ironnest-0.1.0/crates/ironnest/Cargo.toml +14 -0
  75. ironnest-0.1.0/crates/ironnest/src/lib.rs +23 -0
  76. ironnest-0.1.0/crates/optimizer/Cargo.toml +24 -0
  77. ironnest-0.1.0/crates/optimizer/examples/density.rs +79 -0
  78. ironnest-0.1.0/crates/optimizer/src/bin/golden_dump.rs +176 -0
  79. ironnest-0.1.0/crates/optimizer/src/improve.rs +170 -0
  80. ironnest-0.1.0/crates/optimizer/src/lib.rs +472 -0
  81. ironnest-0.1.0/crates/optimizer/src/loss.rs +51 -0
  82. ironnest-0.1.0/crates/optimizer/src/prng.rs +176 -0
  83. ironnest-0.1.0/crates/optimizer/src/search.rs +157 -0
  84. ironnest-0.1.0/crates/optimizer/src/sep/evaluator.rs +224 -0
  85. ironnest-0.1.0/crates/optimizer/src/sep/mod.rs +105 -0
  86. ironnest-0.1.0/crates/optimizer/src/sep/proxy.rs +205 -0
  87. ironnest-0.1.0/crates/optimizer/src/sep/search.rs +478 -0
  88. ironnest-0.1.0/crates/optimizer/src/sep/separator.rs +162 -0
  89. ironnest-0.1.0/crates/optimizer/src/sep/tracker.rs +354 -0
  90. ironnest-0.1.0/crates/optimizer/tests/golden.rs +51 -0
  91. ironnest-0.1.0/crates/optimizer/tests/nest.rs +419 -0
  92. ironnest-0.1.0/crates/optimizer/tests/snapshots/golden__golden_placements_match_snapshot.snap +58 -0
  93. ironnest-0.1.0/crates/py/Cargo.toml +24 -0
  94. ironnest-0.1.0/crates/py/README.md +34 -0
  95. ironnest-0.1.0/crates/py/src/lib.rs +158 -0
  96. ironnest-0.1.0/crates/py/tests/test_ironnest.py +88 -0
  97. ironnest-0.1.0/pyproject.toml +39 -0
@@ -0,0 +1,496 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "anyhow"
7
+ version = "1.0.102"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
10
+
11
+ [[package]]
12
+ name = "approx"
13
+ version = "0.5.1"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
16
+ dependencies = [
17
+ "num-traits",
18
+ ]
19
+
20
+ [[package]]
21
+ name = "autocfg"
22
+ version = "1.5.1"
23
+ source = "registry+https://github.com/rust-lang/crates.io-index"
24
+ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
25
+
26
+ [[package]]
27
+ name = "bitflags"
28
+ version = "2.13.0"
29
+ source = "registry+https://github.com/rust-lang/crates.io-index"
30
+ checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
31
+
32
+ [[package]]
33
+ name = "cfg-if"
34
+ version = "1.0.4"
35
+ source = "registry+https://github.com/rust-lang/crates.io-index"
36
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
37
+
38
+ [[package]]
39
+ name = "console"
40
+ version = "0.16.3"
41
+ source = "registry+https://github.com/rust-lang/crates.io-index"
42
+ checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87"
43
+ dependencies = [
44
+ "encode_unicode",
45
+ "libc",
46
+ "windows-sys",
47
+ ]
48
+
49
+ [[package]]
50
+ name = "either"
51
+ version = "1.16.0"
52
+ source = "registry+https://github.com/rust-lang/crates.io-index"
53
+ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
54
+
55
+ [[package]]
56
+ name = "encode_unicode"
57
+ version = "1.0.0"
58
+ source = "registry+https://github.com/rust-lang/crates.io-index"
59
+ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
60
+
61
+ [[package]]
62
+ name = "errno"
63
+ version = "0.3.14"
64
+ source = "registry+https://github.com/rust-lang/crates.io-index"
65
+ checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
66
+ dependencies = [
67
+ "libc",
68
+ "windows-sys",
69
+ ]
70
+
71
+ [[package]]
72
+ name = "fastrand"
73
+ version = "2.4.1"
74
+ source = "registry+https://github.com/rust-lang/crates.io-index"
75
+ checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
76
+
77
+ [[package]]
78
+ name = "float-cmp"
79
+ version = "0.10.0"
80
+ source = "registry+https://github.com/rust-lang/crates.io-index"
81
+ checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8"
82
+ dependencies = [
83
+ "num-traits",
84
+ ]
85
+
86
+ [[package]]
87
+ name = "geo-types"
88
+ version = "0.7.19"
89
+ source = "registry+https://github.com/rust-lang/crates.io-index"
90
+ checksum = "94776032c45f950d30a13af6113c2ad5625316c9abfbccee4dd5a6695f8fe0f5"
91
+ dependencies = [
92
+ "approx",
93
+ "num-traits",
94
+ "serde",
95
+ ]
96
+
97
+ [[package]]
98
+ name = "getrandom"
99
+ version = "0.4.3"
100
+ source = "registry+https://github.com/rust-lang/crates.io-index"
101
+ checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
102
+ dependencies = [
103
+ "cfg-if",
104
+ "libc",
105
+ "r-efi",
106
+ ]
107
+
108
+ [[package]]
109
+ name = "heck"
110
+ version = "0.5.0"
111
+ source = "registry+https://github.com/rust-lang/crates.io-index"
112
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
113
+
114
+ [[package]]
115
+ name = "insta"
116
+ version = "1.48.0"
117
+ source = "registry+https://github.com/rust-lang/crates.io-index"
118
+ checksum = "86f0f8fee8c926415c58d6ae43a08523a26faccb2323f5e6b644fe7dd4ef6b82"
119
+ dependencies = [
120
+ "console",
121
+ "once_cell",
122
+ "similar",
123
+ "tempfile",
124
+ ]
125
+
126
+ [[package]]
127
+ name = "ironnest"
128
+ version = "0.1.0"
129
+ dependencies = [
130
+ "ironnest-optimizer",
131
+ ]
132
+
133
+ [[package]]
134
+ name = "ironnest-cde"
135
+ version = "0.1.0"
136
+ dependencies = [
137
+ "anyhow",
138
+ "float-cmp",
139
+ "ironnest-geo",
140
+ "itertools",
141
+ "log",
142
+ "serde",
143
+ "slotmap",
144
+ ]
145
+
146
+ [[package]]
147
+ name = "ironnest-geo"
148
+ version = "0.1.0"
149
+ dependencies = [
150
+ "anyhow",
151
+ "float-cmp",
152
+ "geo-types",
153
+ "itertools",
154
+ "libm",
155
+ "log",
156
+ "ndarray",
157
+ "num-traits",
158
+ "ordered-float",
159
+ "serde",
160
+ ]
161
+
162
+ [[package]]
163
+ name = "ironnest-optimizer"
164
+ version = "0.1.0"
165
+ dependencies = [
166
+ "insta",
167
+ "ironnest-cde",
168
+ "ironnest-geo",
169
+ "slotmap",
170
+ ]
171
+
172
+ [[package]]
173
+ name = "ironnest-py"
174
+ version = "0.1.0"
175
+ dependencies = [
176
+ "ironnest",
177
+ "pyo3",
178
+ ]
179
+
180
+ [[package]]
181
+ name = "itertools"
182
+ version = "0.14.0"
183
+ source = "registry+https://github.com/rust-lang/crates.io-index"
184
+ checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
185
+ dependencies = [
186
+ "either",
187
+ ]
188
+
189
+ [[package]]
190
+ name = "libc"
191
+ version = "0.2.186"
192
+ source = "registry+https://github.com/rust-lang/crates.io-index"
193
+ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
194
+
195
+ [[package]]
196
+ name = "libm"
197
+ version = "0.2.16"
198
+ source = "registry+https://github.com/rust-lang/crates.io-index"
199
+ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
200
+
201
+ [[package]]
202
+ name = "linux-raw-sys"
203
+ version = "0.12.1"
204
+ source = "registry+https://github.com/rust-lang/crates.io-index"
205
+ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
206
+
207
+ [[package]]
208
+ name = "log"
209
+ version = "0.4.33"
210
+ source = "registry+https://github.com/rust-lang/crates.io-index"
211
+ checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
212
+
213
+ [[package]]
214
+ name = "matrixmultiply"
215
+ version = "0.3.10"
216
+ source = "registry+https://github.com/rust-lang/crates.io-index"
217
+ checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
218
+ dependencies = [
219
+ "autocfg",
220
+ "rawpointer",
221
+ ]
222
+
223
+ [[package]]
224
+ name = "ndarray"
225
+ version = "0.17.2"
226
+ source = "registry+https://github.com/rust-lang/crates.io-index"
227
+ checksum = "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d"
228
+ dependencies = [
229
+ "matrixmultiply",
230
+ "num-complex",
231
+ "num-integer",
232
+ "num-traits",
233
+ "portable-atomic",
234
+ "portable-atomic-util",
235
+ "rawpointer",
236
+ ]
237
+
238
+ [[package]]
239
+ name = "num-complex"
240
+ version = "0.4.6"
241
+ source = "registry+https://github.com/rust-lang/crates.io-index"
242
+ checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
243
+ dependencies = [
244
+ "num-traits",
245
+ ]
246
+
247
+ [[package]]
248
+ name = "num-integer"
249
+ version = "0.1.46"
250
+ source = "registry+https://github.com/rust-lang/crates.io-index"
251
+ checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
252
+ dependencies = [
253
+ "num-traits",
254
+ ]
255
+
256
+ [[package]]
257
+ name = "num-traits"
258
+ version = "0.2.19"
259
+ source = "registry+https://github.com/rust-lang/crates.io-index"
260
+ checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
261
+ dependencies = [
262
+ "autocfg",
263
+ "libm",
264
+ ]
265
+
266
+ [[package]]
267
+ name = "once_cell"
268
+ version = "1.21.4"
269
+ source = "registry+https://github.com/rust-lang/crates.io-index"
270
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
271
+
272
+ [[package]]
273
+ name = "ordered-float"
274
+ version = "5.3.0"
275
+ source = "registry+https://github.com/rust-lang/crates.io-index"
276
+ checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e"
277
+ dependencies = [
278
+ "num-traits",
279
+ ]
280
+
281
+ [[package]]
282
+ name = "portable-atomic"
283
+ version = "1.13.1"
284
+ source = "registry+https://github.com/rust-lang/crates.io-index"
285
+ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
286
+
287
+ [[package]]
288
+ name = "portable-atomic-util"
289
+ version = "0.2.7"
290
+ source = "registry+https://github.com/rust-lang/crates.io-index"
291
+ checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
292
+ dependencies = [
293
+ "portable-atomic",
294
+ ]
295
+
296
+ [[package]]
297
+ name = "proc-macro2"
298
+ version = "1.0.106"
299
+ source = "registry+https://github.com/rust-lang/crates.io-index"
300
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
301
+ dependencies = [
302
+ "unicode-ident",
303
+ ]
304
+
305
+ [[package]]
306
+ name = "pyo3"
307
+ version = "0.29.0"
308
+ source = "registry+https://github.com/rust-lang/crates.io-index"
309
+ checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
310
+ dependencies = [
311
+ "libc",
312
+ "once_cell",
313
+ "portable-atomic",
314
+ "pyo3-build-config",
315
+ "pyo3-ffi",
316
+ "pyo3-macros",
317
+ ]
318
+
319
+ [[package]]
320
+ name = "pyo3-build-config"
321
+ version = "0.29.0"
322
+ source = "registry+https://github.com/rust-lang/crates.io-index"
323
+ checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
324
+ dependencies = [
325
+ "target-lexicon",
326
+ ]
327
+
328
+ [[package]]
329
+ name = "pyo3-ffi"
330
+ version = "0.29.0"
331
+ source = "registry+https://github.com/rust-lang/crates.io-index"
332
+ checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
333
+ dependencies = [
334
+ "libc",
335
+ "pyo3-build-config",
336
+ ]
337
+
338
+ [[package]]
339
+ name = "pyo3-macros"
340
+ version = "0.29.0"
341
+ source = "registry+https://github.com/rust-lang/crates.io-index"
342
+ checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
343
+ dependencies = [
344
+ "proc-macro2",
345
+ "pyo3-macros-backend",
346
+ "quote",
347
+ "syn",
348
+ ]
349
+
350
+ [[package]]
351
+ name = "pyo3-macros-backend"
352
+ version = "0.29.0"
353
+ source = "registry+https://github.com/rust-lang/crates.io-index"
354
+ checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
355
+ dependencies = [
356
+ "heck",
357
+ "proc-macro2",
358
+ "quote",
359
+ "syn",
360
+ ]
361
+
362
+ [[package]]
363
+ name = "quote"
364
+ version = "1.0.45"
365
+ source = "registry+https://github.com/rust-lang/crates.io-index"
366
+ checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
367
+ dependencies = [
368
+ "proc-macro2",
369
+ ]
370
+
371
+ [[package]]
372
+ name = "r-efi"
373
+ version = "6.0.0"
374
+ source = "registry+https://github.com/rust-lang/crates.io-index"
375
+ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
376
+
377
+ [[package]]
378
+ name = "rawpointer"
379
+ version = "0.2.1"
380
+ source = "registry+https://github.com/rust-lang/crates.io-index"
381
+ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
382
+
383
+ [[package]]
384
+ name = "rustix"
385
+ version = "1.1.4"
386
+ source = "registry+https://github.com/rust-lang/crates.io-index"
387
+ checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
388
+ dependencies = [
389
+ "bitflags",
390
+ "errno",
391
+ "libc",
392
+ "linux-raw-sys",
393
+ "windows-sys",
394
+ ]
395
+
396
+ [[package]]
397
+ name = "serde"
398
+ version = "1.0.228"
399
+ source = "registry+https://github.com/rust-lang/crates.io-index"
400
+ checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
401
+ dependencies = [
402
+ "serde_core",
403
+ "serde_derive",
404
+ ]
405
+
406
+ [[package]]
407
+ name = "serde_core"
408
+ version = "1.0.228"
409
+ source = "registry+https://github.com/rust-lang/crates.io-index"
410
+ checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
411
+ dependencies = [
412
+ "serde_derive",
413
+ ]
414
+
415
+ [[package]]
416
+ name = "serde_derive"
417
+ version = "1.0.228"
418
+ source = "registry+https://github.com/rust-lang/crates.io-index"
419
+ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
420
+ dependencies = [
421
+ "proc-macro2",
422
+ "quote",
423
+ "syn",
424
+ ]
425
+
426
+ [[package]]
427
+ name = "similar"
428
+ version = "2.7.0"
429
+ source = "registry+https://github.com/rust-lang/crates.io-index"
430
+ checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa"
431
+
432
+ [[package]]
433
+ name = "slotmap"
434
+ version = "1.1.1"
435
+ source = "registry+https://github.com/rust-lang/crates.io-index"
436
+ checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038"
437
+ dependencies = [
438
+ "version_check",
439
+ ]
440
+
441
+ [[package]]
442
+ name = "syn"
443
+ version = "2.0.118"
444
+ source = "registry+https://github.com/rust-lang/crates.io-index"
445
+ checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
446
+ dependencies = [
447
+ "proc-macro2",
448
+ "quote",
449
+ "unicode-ident",
450
+ ]
451
+
452
+ [[package]]
453
+ name = "target-lexicon"
454
+ version = "0.13.5"
455
+ source = "registry+https://github.com/rust-lang/crates.io-index"
456
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
457
+
458
+ [[package]]
459
+ name = "tempfile"
460
+ version = "3.27.0"
461
+ source = "registry+https://github.com/rust-lang/crates.io-index"
462
+ checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
463
+ dependencies = [
464
+ "fastrand",
465
+ "getrandom",
466
+ "once_cell",
467
+ "rustix",
468
+ "windows-sys",
469
+ ]
470
+
471
+ [[package]]
472
+ name = "unicode-ident"
473
+ version = "1.0.24"
474
+ source = "registry+https://github.com/rust-lang/crates.io-index"
475
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
476
+
477
+ [[package]]
478
+ name = "version_check"
479
+ version = "0.9.5"
480
+ source = "registry+https://github.com/rust-lang/crates.io-index"
481
+ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
482
+
483
+ [[package]]
484
+ name = "windows-link"
485
+ version = "0.2.1"
486
+ source = "registry+https://github.com/rust-lang/crates.io-index"
487
+ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
488
+
489
+ [[package]]
490
+ name = "windows-sys"
491
+ version = "0.61.2"
492
+ source = "registry+https://github.com/rust-lang/crates.io-index"
493
+ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
494
+ dependencies = [
495
+ "windows-link",
496
+ ]
@@ -0,0 +1,34 @@
1
+ # ironnest — Cargo workspace (virtual manifest).
2
+ # Layered architecture (see docs/00 §3): geo ← cde ← optimizer ← ironnest ; py → pyo3
3
+ [workspace]
4
+ resolver = "3"
5
+ members = ["crates/geo", "crates/cde", "crates/optimizer", "crates/ironnest", "crates/py"]
6
+
7
+ [workspace.package]
8
+ version = "0.1.0" # first tagged release (alpha) — bump deliberately, re-bless goldens
9
+ edition = "2024" # jagua-rs lineage; edition 2024 needs Rust ≥ 1.85
10
+ rust-version = "1.87" # MSRV floor: jagua's forked code uses {integer}::cast_signed/cast_unsigned
11
+ # (stable 1.87). We build on the pinned 1.96.0 — see rust-toolchain.toml.
12
+ license = "MPL-2.0" # uniform across the repo
13
+
14
+ [workspace.dependencies]
15
+ # Internal crates wired through the layered architecture (path deps).
16
+ ironnest-geo = { path = "crates/geo" }
17
+ ironnest-cde = { path = "crates/cde" }
18
+ ironnest-optimizer = { path = "crates/optimizer" }
19
+ ironnest = { path = "crates/ironnest" }
20
+ # External — pinned; pure-Rust, no C / no build.rs (clean cross-platform wheels).
21
+ pyo3 = { version = "0.29", features = ["abi3-py313", "extension-module"] }
22
+
23
+ # Determinism: codegen-units=1 removes parallel-codegen nondeterminism from the shipped artifact.
24
+ # (Never build with `-C target-cpu=native` — it diverges across the Mac/Win/Linux fleet.)
25
+ [profile.release]
26
+ codegen-units = 1
27
+ lto = "thin"
28
+
29
+ # Make the determinism prime directive a build gate. clippy.toml supplies the banned lists;
30
+ # this enables the lints. Engine crates opt in with `[lints] workspace = true` (py does not,
31
+ # to avoid false positives from pyo3 macro expansion). Promoted to errors by `-D warnings`.
32
+ [workspace.lints.clippy]
33
+ disallowed_types = "warn"
34
+ disallowed_methods = "warn"
@@ -0,0 +1,57 @@
1
+ Metadata-Version: 2.4
2
+ Name: ironnest
3
+ Version: 0.1.0
4
+ Classifier: Development Status :: 3 - Alpha
5
+ Classifier: Programming Language :: Rust
6
+ Classifier: Programming Language :: Python :: 3 :: Only
7
+ Classifier: Programming Language :: Python :: 3.13
8
+ Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
9
+ Classifier: Operating System :: POSIX :: Linux
10
+ Classifier: Operating System :: MacOS
11
+ Classifier: Operating System :: Microsoft :: Windows
12
+ Classifier: Topic :: Scientific/Engineering
13
+ Classifier: Intended Audience :: Manufacturing
14
+ Classifier: Intended Audience :: Developers
15
+ Summary: Deterministic, embeddable, true-shape 2D nesting engine for irregular parts
16
+ Keywords: nesting,packing,2d,irregular,deterministic,cnc,plasma,cutting
17
+ Author-email: Jeff West <jeffw10278@proton.me>
18
+ License: MPL-2.0
19
+ Requires-Python: >=3.13
20
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
21
+ Project-URL: Repository, https://github.com/TexasCoding/ironnest
22
+
23
+ # ironnest
24
+
25
+ **Deterministic, embeddable, true-shape 2D nesting engine for irregular parts** — a Rust core
26
+ (a [jagua-rs](https://github.com/JeroenGar/jagua-rs) fork at f64) exposed to Python via PyO3.
27
+
28
+ The differentiator is **determinism**: the same inputs produce **byte-identical** placements on every
29
+ platform (macOS-arm64 / Windows-x64 / linux-x64), proven by a cross-platform CI golden — so a re-nest
30
+ reproduces a byte-identical downstream cut program for a machine audit trail.
31
+
32
+ ```python
33
+ import ironnest
34
+
35
+ # one outline per part type, item-local coords
36
+ items = [[(0.0, 0.0), (10.0, 0.0), (10.0, 10.0), (0.0, 10.0)]]
37
+ container = [(0.0, 0.0), (100.0, 0.0), (100.0, 100.0), (0.0, 100.0)]
38
+
39
+ placements, unplaced = ironnest.nest(
40
+ items,
41
+ qty=[4],
42
+ container=container,
43
+ min_sep=0.0, # 0.0 keeps output byte-identical across platforms
44
+ rotations=[0.0, 90.0, 180.0, 270.0],
45
+ seed=1, # explicit — no entropy fallback, ever
46
+ budget=1000, # a fixed sample budget, never a wall clock
47
+ )
48
+ # placements: list[(item, x, y, rotation_deg)] with placed = Rot(rotation_deg)·original + (x, y)
49
+ # unplaced: list[int] (item-type index per instance that did not fit)
50
+ ```
51
+
52
+ The engine is a pure **placement oracle**: it knows nothing about kerf, lead-ins, pierces, cut
53
+ sequencing, or G-code — those belong to the consuming CAD/CAM application, which re-validates every
54
+ layout. See the [project repository](https://github.com/TexasCoding/ironnest) for the full design.
55
+
56
+ Licensed under **MPL-2.0**.
57
+
@@ -0,0 +1,34 @@
1
+ # ironnest
2
+
3
+ **Deterministic, embeddable, true-shape 2D nesting engine for irregular parts** — a Rust core
4
+ (a [jagua-rs](https://github.com/JeroenGar/jagua-rs) fork at f64) exposed to Python via PyO3.
5
+
6
+ The differentiator is **determinism**: the same inputs produce **byte-identical** placements on every
7
+ platform (macOS-arm64 / Windows-x64 / linux-x64), proven by a cross-platform CI golden — so a re-nest
8
+ reproduces a byte-identical downstream cut program for a machine audit trail.
9
+
10
+ ```python
11
+ import ironnest
12
+
13
+ # one outline per part type, item-local coords
14
+ items = [[(0.0, 0.0), (10.0, 0.0), (10.0, 10.0), (0.0, 10.0)]]
15
+ container = [(0.0, 0.0), (100.0, 0.0), (100.0, 100.0), (0.0, 100.0)]
16
+
17
+ placements, unplaced = ironnest.nest(
18
+ items,
19
+ qty=[4],
20
+ container=container,
21
+ min_sep=0.0, # 0.0 keeps output byte-identical across platforms
22
+ rotations=[0.0, 90.0, 180.0, 270.0],
23
+ seed=1, # explicit — no entropy fallback, ever
24
+ budget=1000, # a fixed sample budget, never a wall clock
25
+ )
26
+ # placements: list[(item, x, y, rotation_deg)] with placed = Rot(rotation_deg)·original + (x, y)
27
+ # unplaced: list[int] (item-type index per instance that did not fit)
28
+ ```
29
+
30
+ The engine is a pure **placement oracle**: it knows nothing about kerf, lead-ins, pierces, cut
31
+ sequencing, or G-code — those belong to the consuming CAD/CAM application, which re-validates every
32
+ layout. See the [project repository](https://github.com/TexasCoding/ironnest) for the full design.
33
+
34
+ Licensed under **MPL-2.0**.
@@ -0,0 +1,23 @@
1
+ [package]
2
+ name = "ironnest-cde"
3
+ description = "ironnest — forked jagua-rs collision-detection engine + entities + io + bpp (f64)"
4
+ version.workspace = true
5
+ edition.workspace = true
6
+ rust-version.workspace = true
7
+ license.workspace = true
8
+ publish = false
9
+
10
+ [lints]
11
+ workspace = true
12
+
13
+ [dependencies]
14
+ ironnest-geo = { workspace = true }
15
+ # Pinned to jagua-rs 0.7.2's versions (pure-Rust, no C / no build.rs).
16
+ slotmap = "1.0" # deterministic keyed storage (core)
17
+ itertools = "0.14"
18
+ anyhow = "1.0"
19
+ log = "0.4"
20
+ serde = { version = "1.0", features = ["derive"] }
21
+ float-cmp = "0.10"
22
+ # Deliberately ABSENT (determinism scrub): `rayon` (par_iter → sequential iter), `web-time`
23
+ # (wall-clock Instant → u64 logical stamp). `ordered-float` reaches us via `ironnest_geo`.