+1109
-9
Cargo.lock
+1109
-9
Cargo.lock
···
3
3
version = 4
4
4
5
5
[[package]]
6
+
name = "android_system_properties"
7
+
version = "0.1.5"
8
+
source = "registry+https://github.com/rust-lang/crates.io-index"
9
+
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
10
+
dependencies = [
11
+
"libc",
12
+
]
13
+
14
+
[[package]]
6
15
name = "anstream"
7
16
version = "0.6.21"
8
17
source = "registry+https://github.com/rust-lang/crates.io-index"
···
53
62
]
54
63
55
64
[[package]]
65
+
name = "arrayvec"
66
+
version = "0.7.6"
67
+
source = "registry+https://github.com/rust-lang/crates.io-index"
68
+
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
69
+
70
+
[[package]]
71
+
name = "ash"
72
+
version = "0.38.0+1.3.281"
73
+
source = "registry+https://github.com/rust-lang/crates.io-index"
74
+
checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f"
75
+
dependencies = [
76
+
"libloading",
77
+
]
78
+
79
+
[[package]]
80
+
name = "autocfg"
81
+
version = "1.5.0"
82
+
source = "registry+https://github.com/rust-lang/crates.io-index"
83
+
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
84
+
85
+
[[package]]
86
+
name = "bit-set"
87
+
version = "0.8.0"
88
+
source = "registry+https://github.com/rust-lang/crates.io-index"
89
+
checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
90
+
dependencies = [
91
+
"bit-vec",
92
+
]
93
+
94
+
[[package]]
95
+
name = "bit-vec"
96
+
version = "0.8.0"
97
+
source = "registry+https://github.com/rust-lang/crates.io-index"
98
+
checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
99
+
100
+
[[package]]
56
101
name = "bitflags"
57
102
version = "2.9.4"
58
103
source = "registry+https://github.com/rust-lang/crates.io-index"
59
104
checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
60
105
61
106
[[package]]
107
+
name = "block"
108
+
version = "0.1.6"
109
+
source = "registry+https://github.com/rust-lang/crates.io-index"
110
+
checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
111
+
112
+
[[package]]
113
+
name = "bumpalo"
114
+
version = "3.19.0"
115
+
source = "registry+https://github.com/rust-lang/crates.io-index"
116
+
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
117
+
118
+
[[package]]
119
+
name = "bytemuck"
120
+
version = "1.24.0"
121
+
source = "registry+https://github.com/rust-lang/crates.io-index"
122
+
checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
123
+
dependencies = [
124
+
"bytemuck_derive",
125
+
]
126
+
127
+
[[package]]
128
+
name = "bytemuck_derive"
129
+
version = "1.10.2"
130
+
source = "registry+https://github.com/rust-lang/crates.io-index"
131
+
checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff"
132
+
dependencies = [
133
+
"proc-macro2",
134
+
"quote",
135
+
"syn",
136
+
]
137
+
138
+
[[package]]
62
139
name = "cfg-if"
63
140
version = "1.0.3"
64
141
source = "registry+https://github.com/rust-lang/crates.io-index"
···
111
188
checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675"
112
189
113
190
[[package]]
191
+
name = "codespan-reporting"
192
+
version = "0.12.0"
193
+
source = "registry+https://github.com/rust-lang/crates.io-index"
194
+
checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81"
195
+
dependencies = [
196
+
"serde",
197
+
"termcolor",
198
+
"unicode-width",
199
+
]
200
+
201
+
[[package]]
114
202
name = "colorchoice"
115
203
version = "1.0.4"
116
204
source = "registry+https://github.com/rust-lang/crates.io-index"
117
205
checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
118
206
119
207
[[package]]
208
+
name = "core-foundation"
209
+
version = "0.10.1"
210
+
source = "registry+https://github.com/rust-lang/crates.io-index"
211
+
checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
212
+
dependencies = [
213
+
"core-foundation-sys",
214
+
"libc",
215
+
]
216
+
217
+
[[package]]
218
+
name = "core-foundation-sys"
219
+
version = "0.8.7"
220
+
source = "registry+https://github.com/rust-lang/crates.io-index"
221
+
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
222
+
223
+
[[package]]
224
+
name = "core-graphics-types"
225
+
version = "0.2.0"
226
+
source = "registry+https://github.com/rust-lang/crates.io-index"
227
+
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
228
+
dependencies = [
229
+
"bitflags",
230
+
"core-foundation",
231
+
"libc",
232
+
]
233
+
234
+
[[package]]
235
+
name = "crunchy"
236
+
version = "0.2.4"
237
+
source = "registry+https://github.com/rust-lang/crates.io-index"
238
+
checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
239
+
240
+
[[package]]
120
241
name = "ctrlc"
121
242
version = "3.5.0"
122
243
source = "registry+https://github.com/rust-lang/crates.io-index"
···
134
255
checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
135
256
136
257
[[package]]
258
+
name = "document-features"
259
+
version = "0.2.11"
260
+
source = "registry+https://github.com/rust-lang/crates.io-index"
261
+
checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d"
262
+
dependencies = [
263
+
"litrs",
264
+
]
265
+
266
+
[[package]]
267
+
name = "equivalent"
268
+
version = "1.0.2"
269
+
source = "registry+https://github.com/rust-lang/crates.io-index"
270
+
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
271
+
272
+
[[package]]
273
+
name = "foldhash"
274
+
version = "0.1.5"
275
+
source = "registry+https://github.com/rust-lang/crates.io-index"
276
+
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
277
+
278
+
[[package]]
279
+
name = "foldhash"
280
+
version = "0.2.0"
281
+
source = "registry+https://github.com/rust-lang/crates.io-index"
282
+
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
283
+
284
+
[[package]]
285
+
name = "foreign-types"
286
+
version = "0.5.0"
287
+
source = "registry+https://github.com/rust-lang/crates.io-index"
288
+
checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
289
+
dependencies = [
290
+
"foreign-types-macros",
291
+
"foreign-types-shared",
292
+
]
293
+
294
+
[[package]]
295
+
name = "foreign-types-macros"
296
+
version = "0.2.3"
297
+
source = "registry+https://github.com/rust-lang/crates.io-index"
298
+
checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
299
+
dependencies = [
300
+
"proc-macro2",
301
+
"quote",
302
+
"syn",
303
+
]
304
+
305
+
[[package]]
306
+
name = "foreign-types-shared"
307
+
version = "0.3.1"
308
+
source = "registry+https://github.com/rust-lang/crates.io-index"
309
+
checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
310
+
311
+
[[package]]
312
+
name = "gl_generator"
313
+
version = "0.14.0"
314
+
source = "registry+https://github.com/rust-lang/crates.io-index"
315
+
checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d"
316
+
dependencies = [
317
+
"khronos_api",
318
+
"log",
319
+
"xml-rs",
320
+
]
321
+
322
+
[[package]]
323
+
name = "glow"
324
+
version = "0.16.0"
325
+
source = "registry+https://github.com/rust-lang/crates.io-index"
326
+
checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08"
327
+
dependencies = [
328
+
"js-sys",
329
+
"slotmap",
330
+
"wasm-bindgen",
331
+
"web-sys",
332
+
]
333
+
334
+
[[package]]
335
+
name = "glutin_wgl_sys"
336
+
version = "0.6.1"
337
+
source = "registry+https://github.com/rust-lang/crates.io-index"
338
+
checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e"
339
+
dependencies = [
340
+
"gl_generator",
341
+
]
342
+
343
+
[[package]]
344
+
name = "gpu-alloc"
345
+
version = "0.6.0"
346
+
source = "registry+https://github.com/rust-lang/crates.io-index"
347
+
checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171"
348
+
dependencies = [
349
+
"bitflags",
350
+
"gpu-alloc-types",
351
+
]
352
+
353
+
[[package]]
354
+
name = "gpu-alloc-types"
355
+
version = "0.3.0"
356
+
source = "registry+https://github.com/rust-lang/crates.io-index"
357
+
checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4"
358
+
dependencies = [
359
+
"bitflags",
360
+
]
361
+
362
+
[[package]]
363
+
name = "gpu-allocator"
364
+
version = "0.27.0"
365
+
source = "registry+https://github.com/rust-lang/crates.io-index"
366
+
checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd"
367
+
dependencies = [
368
+
"log",
369
+
"presser",
370
+
"thiserror 1.0.69",
371
+
"windows",
372
+
]
373
+
374
+
[[package]]
375
+
name = "gpu-descriptor"
376
+
version = "0.3.2"
377
+
source = "registry+https://github.com/rust-lang/crates.io-index"
378
+
checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca"
379
+
dependencies = [
380
+
"bitflags",
381
+
"gpu-descriptor-types",
382
+
"hashbrown 0.15.5",
383
+
]
384
+
385
+
[[package]]
386
+
name = "gpu-descriptor-types"
387
+
version = "0.2.0"
388
+
source = "registry+https://github.com/rust-lang/crates.io-index"
389
+
checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91"
390
+
dependencies = [
391
+
"bitflags",
392
+
]
393
+
394
+
[[package]]
395
+
name = "half"
396
+
version = "2.7.0"
397
+
source = "registry+https://github.com/rust-lang/crates.io-index"
398
+
checksum = "e54c115d4f30f52c67202f079c5f9d8b49db4691f460fdb0b4c2e838261b2ba5"
399
+
dependencies = [
400
+
"cfg-if",
401
+
"crunchy",
402
+
"num-traits",
403
+
"zerocopy",
404
+
]
405
+
406
+
[[package]]
407
+
name = "hashbrown"
408
+
version = "0.15.5"
409
+
source = "registry+https://github.com/rust-lang/crates.io-index"
410
+
checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
411
+
dependencies = [
412
+
"foldhash 0.1.5",
413
+
]
414
+
415
+
[[package]]
416
+
name = "hashbrown"
417
+
version = "0.16.0"
418
+
source = "registry+https://github.com/rust-lang/crates.io-index"
419
+
checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
420
+
dependencies = [
421
+
"foldhash 0.2.0",
422
+
]
423
+
424
+
[[package]]
137
425
name = "heater"
138
426
version = "0.1.0"
139
427
dependencies = [
428
+
"bytemuck",
140
429
"clap",
141
430
"ctrlc",
142
431
"num_cpus",
432
+
"pollster",
433
+
"wgpu",
143
434
]
144
435
145
436
[[package]]
···
155
446
checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
156
447
157
448
[[package]]
449
+
name = "hexf-parse"
450
+
version = "0.2.1"
451
+
source = "registry+https://github.com/rust-lang/crates.io-index"
452
+
checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"
453
+
454
+
[[package]]
455
+
name = "indexmap"
456
+
version = "2.11.4"
457
+
source = "registry+https://github.com/rust-lang/crates.io-index"
458
+
checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5"
459
+
dependencies = [
460
+
"equivalent",
461
+
"hashbrown 0.16.0",
462
+
]
463
+
464
+
[[package]]
158
465
name = "is_terminal_polyfill"
159
466
version = "1.70.1"
160
467
source = "registry+https://github.com/rust-lang/crates.io-index"
161
468
checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
162
469
163
470
[[package]]
471
+
name = "jni-sys"
472
+
version = "0.3.0"
473
+
source = "registry+https://github.com/rust-lang/crates.io-index"
474
+
checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
475
+
476
+
[[package]]
477
+
name = "js-sys"
478
+
version = "0.3.81"
479
+
source = "registry+https://github.com/rust-lang/crates.io-index"
480
+
checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305"
481
+
dependencies = [
482
+
"once_cell",
483
+
"wasm-bindgen",
484
+
]
485
+
486
+
[[package]]
487
+
name = "khronos-egl"
488
+
version = "6.0.0"
489
+
source = "registry+https://github.com/rust-lang/crates.io-index"
490
+
checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76"
491
+
dependencies = [
492
+
"libc",
493
+
"libloading",
494
+
"pkg-config",
495
+
]
496
+
497
+
[[package]]
498
+
name = "khronos_api"
499
+
version = "3.1.0"
500
+
source = "registry+https://github.com/rust-lang/crates.io-index"
501
+
checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc"
502
+
503
+
[[package]]
164
504
name = "libc"
165
505
version = "0.2.177"
166
506
source = "registry+https://github.com/rust-lang/crates.io-index"
167
507
checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
168
508
169
509
[[package]]
510
+
name = "libloading"
511
+
version = "0.8.9"
512
+
source = "registry+https://github.com/rust-lang/crates.io-index"
513
+
checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
514
+
dependencies = [
515
+
"cfg-if",
516
+
"windows-link",
517
+
]
518
+
519
+
[[package]]
520
+
name = "libm"
521
+
version = "0.2.15"
522
+
source = "registry+https://github.com/rust-lang/crates.io-index"
523
+
checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"
524
+
525
+
[[package]]
526
+
name = "litrs"
527
+
version = "0.4.2"
528
+
source = "registry+https://github.com/rust-lang/crates.io-index"
529
+
checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed"
530
+
531
+
[[package]]
532
+
name = "lock_api"
533
+
version = "0.4.14"
534
+
source = "registry+https://github.com/rust-lang/crates.io-index"
535
+
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
536
+
dependencies = [
537
+
"scopeguard",
538
+
]
539
+
540
+
[[package]]
541
+
name = "log"
542
+
version = "0.4.28"
543
+
source = "registry+https://github.com/rust-lang/crates.io-index"
544
+
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
545
+
546
+
[[package]]
547
+
name = "malloc_buf"
548
+
version = "0.0.6"
549
+
source = "registry+https://github.com/rust-lang/crates.io-index"
550
+
checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
551
+
dependencies = [
552
+
"libc",
553
+
]
554
+
555
+
[[package]]
556
+
name = "metal"
557
+
version = "0.32.0"
558
+
source = "registry+https://github.com/rust-lang/crates.io-index"
559
+
checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605"
560
+
dependencies = [
561
+
"bitflags",
562
+
"block",
563
+
"core-graphics-types",
564
+
"foreign-types",
565
+
"log",
566
+
"objc",
567
+
"paste",
568
+
]
569
+
570
+
[[package]]
571
+
name = "naga"
572
+
version = "27.0.0"
573
+
source = "registry+https://github.com/rust-lang/crates.io-index"
574
+
checksum = "12b2e757b11b47345d44e7760e45458339bc490463d9548cd8651c53ae523153"
575
+
dependencies = [
576
+
"arrayvec",
577
+
"bit-set",
578
+
"bitflags",
579
+
"cfg-if",
580
+
"cfg_aliases",
581
+
"codespan-reporting",
582
+
"half",
583
+
"hashbrown 0.16.0",
584
+
"hexf-parse",
585
+
"indexmap",
586
+
"libm",
587
+
"log",
588
+
"num-traits",
589
+
"once_cell",
590
+
"rustc-hash",
591
+
"spirv",
592
+
"thiserror 2.0.17",
593
+
"unicode-ident",
594
+
]
595
+
596
+
[[package]]
597
+
name = "ndk-sys"
598
+
version = "0.6.0+11769913"
599
+
source = "registry+https://github.com/rust-lang/crates.io-index"
600
+
checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873"
601
+
dependencies = [
602
+
"jni-sys",
603
+
]
604
+
605
+
[[package]]
170
606
name = "nix"
171
607
version = "0.30.1"
172
608
source = "registry+https://github.com/rust-lang/crates.io-index"
···
179
615
]
180
616
181
617
[[package]]
618
+
name = "num-traits"
619
+
version = "0.2.19"
620
+
source = "registry+https://github.com/rust-lang/crates.io-index"
621
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
622
+
dependencies = [
623
+
"autocfg",
624
+
"libm",
625
+
]
626
+
627
+
[[package]]
182
628
name = "num_cpus"
183
629
version = "1.17.0"
184
630
source = "registry+https://github.com/rust-lang/crates.io-index"
···
189
635
]
190
636
191
637
[[package]]
638
+
name = "objc"
639
+
version = "0.2.7"
640
+
source = "registry+https://github.com/rust-lang/crates.io-index"
641
+
checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
642
+
dependencies = [
643
+
"malloc_buf",
644
+
]
645
+
646
+
[[package]]
647
+
name = "once_cell"
648
+
version = "1.21.3"
649
+
source = "registry+https://github.com/rust-lang/crates.io-index"
650
+
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
651
+
652
+
[[package]]
192
653
name = "once_cell_polyfill"
193
654
version = "1.70.1"
194
655
source = "registry+https://github.com/rust-lang/crates.io-index"
195
656
checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad"
196
657
197
658
[[package]]
659
+
name = "ordered-float"
660
+
version = "5.0.0"
661
+
source = "registry+https://github.com/rust-lang/crates.io-index"
662
+
checksum = "e2c1f9f56e534ac6a9b8a4600bdf0f530fb393b5f393e7b4d03489c3cf0c3f01"
663
+
dependencies = [
664
+
"num-traits",
665
+
]
666
+
667
+
[[package]]
668
+
name = "parking_lot"
669
+
version = "0.12.5"
670
+
source = "registry+https://github.com/rust-lang/crates.io-index"
671
+
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
672
+
dependencies = [
673
+
"lock_api",
674
+
"parking_lot_core",
675
+
]
676
+
677
+
[[package]]
678
+
name = "parking_lot_core"
679
+
version = "0.9.12"
680
+
source = "registry+https://github.com/rust-lang/crates.io-index"
681
+
checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
682
+
dependencies = [
683
+
"cfg-if",
684
+
"libc",
685
+
"redox_syscall",
686
+
"smallvec",
687
+
"windows-link",
688
+
]
689
+
690
+
[[package]]
691
+
name = "paste"
692
+
version = "1.0.15"
693
+
source = "registry+https://github.com/rust-lang/crates.io-index"
694
+
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
695
+
696
+
[[package]]
697
+
name = "pkg-config"
698
+
version = "0.3.32"
699
+
source = "registry+https://github.com/rust-lang/crates.io-index"
700
+
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
701
+
702
+
[[package]]
703
+
name = "pollster"
704
+
version = "0.4.0"
705
+
source = "registry+https://github.com/rust-lang/crates.io-index"
706
+
checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3"
707
+
708
+
[[package]]
709
+
name = "portable-atomic"
710
+
version = "1.11.1"
711
+
source = "registry+https://github.com/rust-lang/crates.io-index"
712
+
checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
713
+
714
+
[[package]]
715
+
name = "portable-atomic-util"
716
+
version = "0.2.4"
717
+
source = "registry+https://github.com/rust-lang/crates.io-index"
718
+
checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507"
719
+
dependencies = [
720
+
"portable-atomic",
721
+
]
722
+
723
+
[[package]]
724
+
name = "presser"
725
+
version = "0.3.1"
726
+
source = "registry+https://github.com/rust-lang/crates.io-index"
727
+
checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa"
728
+
729
+
[[package]]
198
730
name = "proc-macro2"
199
731
version = "1.0.101"
200
732
source = "registry+https://github.com/rust-lang/crates.io-index"
···
204
736
]
205
737
206
738
[[package]]
739
+
name = "profiling"
740
+
version = "1.0.17"
741
+
source = "registry+https://github.com/rust-lang/crates.io-index"
742
+
checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773"
743
+
744
+
[[package]]
207
745
name = "quote"
208
746
version = "1.0.41"
209
747
source = "registry+https://github.com/rust-lang/crates.io-index"
···
213
751
]
214
752
215
753
[[package]]
754
+
name = "range-alloc"
755
+
version = "0.1.4"
756
+
source = "registry+https://github.com/rust-lang/crates.io-index"
757
+
checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde"
758
+
759
+
[[package]]
760
+
name = "raw-window-handle"
761
+
version = "0.6.2"
762
+
source = "registry+https://github.com/rust-lang/crates.io-index"
763
+
checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
764
+
765
+
[[package]]
766
+
name = "redox_syscall"
767
+
version = "0.5.18"
768
+
source = "registry+https://github.com/rust-lang/crates.io-index"
769
+
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
770
+
dependencies = [
771
+
"bitflags",
772
+
]
773
+
774
+
[[package]]
775
+
name = "renderdoc-sys"
776
+
version = "1.1.0"
777
+
source = "registry+https://github.com/rust-lang/crates.io-index"
778
+
checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
779
+
780
+
[[package]]
781
+
name = "rustc-hash"
782
+
version = "1.1.0"
783
+
source = "registry+https://github.com/rust-lang/crates.io-index"
784
+
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
785
+
786
+
[[package]]
787
+
name = "rustversion"
788
+
version = "1.0.22"
789
+
source = "registry+https://github.com/rust-lang/crates.io-index"
790
+
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
791
+
792
+
[[package]]
793
+
name = "scopeguard"
794
+
version = "1.2.0"
795
+
source = "registry+https://github.com/rust-lang/crates.io-index"
796
+
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
797
+
798
+
[[package]]
799
+
name = "serde"
800
+
version = "1.0.228"
801
+
source = "registry+https://github.com/rust-lang/crates.io-index"
802
+
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
803
+
dependencies = [
804
+
"serde_core",
805
+
"serde_derive",
806
+
]
807
+
808
+
[[package]]
809
+
name = "serde_core"
810
+
version = "1.0.228"
811
+
source = "registry+https://github.com/rust-lang/crates.io-index"
812
+
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
813
+
dependencies = [
814
+
"serde_derive",
815
+
]
816
+
817
+
[[package]]
818
+
name = "serde_derive"
819
+
version = "1.0.228"
820
+
source = "registry+https://github.com/rust-lang/crates.io-index"
821
+
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
822
+
dependencies = [
823
+
"proc-macro2",
824
+
"quote",
825
+
"syn",
826
+
]
827
+
828
+
[[package]]
829
+
name = "slotmap"
830
+
version = "1.0.7"
831
+
source = "registry+https://github.com/rust-lang/crates.io-index"
832
+
checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a"
833
+
dependencies = [
834
+
"version_check",
835
+
]
836
+
837
+
[[package]]
838
+
name = "smallvec"
839
+
version = "1.15.1"
840
+
source = "registry+https://github.com/rust-lang/crates.io-index"
841
+
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
842
+
843
+
[[package]]
844
+
name = "spirv"
845
+
version = "0.3.0+sdk-1.3.268.0"
846
+
source = "registry+https://github.com/rust-lang/crates.io-index"
847
+
checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844"
848
+
dependencies = [
849
+
"bitflags",
850
+
]
851
+
852
+
[[package]]
853
+
name = "static_assertions"
854
+
version = "1.1.0"
855
+
source = "registry+https://github.com/rust-lang/crates.io-index"
856
+
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
857
+
858
+
[[package]]
216
859
name = "strsim"
217
860
version = "0.11.1"
218
861
source = "registry+https://github.com/rust-lang/crates.io-index"
···
230
873
]
231
874
232
875
[[package]]
876
+
name = "termcolor"
877
+
version = "1.4.1"
878
+
source = "registry+https://github.com/rust-lang/crates.io-index"
879
+
checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
880
+
dependencies = [
881
+
"winapi-util",
882
+
]
883
+
884
+
[[package]]
885
+
name = "thiserror"
886
+
version = "1.0.69"
887
+
source = "registry+https://github.com/rust-lang/crates.io-index"
888
+
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
889
+
dependencies = [
890
+
"thiserror-impl 1.0.69",
891
+
]
892
+
893
+
[[package]]
894
+
name = "thiserror"
895
+
version = "2.0.17"
896
+
source = "registry+https://github.com/rust-lang/crates.io-index"
897
+
checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
898
+
dependencies = [
899
+
"thiserror-impl 2.0.17",
900
+
]
901
+
902
+
[[package]]
903
+
name = "thiserror-impl"
904
+
version = "1.0.69"
905
+
source = "registry+https://github.com/rust-lang/crates.io-index"
906
+
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
907
+
dependencies = [
908
+
"proc-macro2",
909
+
"quote",
910
+
"syn",
911
+
]
912
+
913
+
[[package]]
914
+
name = "thiserror-impl"
915
+
version = "2.0.17"
916
+
source = "registry+https://github.com/rust-lang/crates.io-index"
917
+
checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
918
+
dependencies = [
919
+
"proc-macro2",
920
+
"quote",
921
+
"syn",
922
+
]
923
+
924
+
[[package]]
233
925
name = "unicode-ident"
234
926
version = "1.0.19"
235
927
source = "registry+https://github.com/rust-lang/crates.io-index"
236
928
checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d"
237
929
238
930
[[package]]
931
+
name = "unicode-width"
932
+
version = "0.2.2"
933
+
source = "registry+https://github.com/rust-lang/crates.io-index"
934
+
checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
935
+
936
+
[[package]]
239
937
name = "utf8parse"
240
938
version = "0.2.2"
241
939
source = "registry+https://github.com/rust-lang/crates.io-index"
242
940
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
243
941
244
942
[[package]]
943
+
name = "version_check"
944
+
version = "0.9.5"
945
+
source = "registry+https://github.com/rust-lang/crates.io-index"
946
+
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
947
+
948
+
[[package]]
949
+
name = "wasm-bindgen"
950
+
version = "0.2.104"
951
+
source = "registry+https://github.com/rust-lang/crates.io-index"
952
+
checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d"
953
+
dependencies = [
954
+
"cfg-if",
955
+
"once_cell",
956
+
"rustversion",
957
+
"wasm-bindgen-macro",
958
+
"wasm-bindgen-shared",
959
+
]
960
+
961
+
[[package]]
962
+
name = "wasm-bindgen-backend"
963
+
version = "0.2.104"
964
+
source = "registry+https://github.com/rust-lang/crates.io-index"
965
+
checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19"
966
+
dependencies = [
967
+
"bumpalo",
968
+
"log",
969
+
"proc-macro2",
970
+
"quote",
971
+
"syn",
972
+
"wasm-bindgen-shared",
973
+
]
974
+
975
+
[[package]]
976
+
name = "wasm-bindgen-futures"
977
+
version = "0.4.54"
978
+
source = "registry+https://github.com/rust-lang/crates.io-index"
979
+
checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c"
980
+
dependencies = [
981
+
"cfg-if",
982
+
"js-sys",
983
+
"once_cell",
984
+
"wasm-bindgen",
985
+
"web-sys",
986
+
]
987
+
988
+
[[package]]
989
+
name = "wasm-bindgen-macro"
990
+
version = "0.2.104"
991
+
source = "registry+https://github.com/rust-lang/crates.io-index"
992
+
checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119"
993
+
dependencies = [
994
+
"quote",
995
+
"wasm-bindgen-macro-support",
996
+
]
997
+
998
+
[[package]]
999
+
name = "wasm-bindgen-macro-support"
1000
+
version = "0.2.104"
1001
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1002
+
checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7"
1003
+
dependencies = [
1004
+
"proc-macro2",
1005
+
"quote",
1006
+
"syn",
1007
+
"wasm-bindgen-backend",
1008
+
"wasm-bindgen-shared",
1009
+
]
1010
+
1011
+
[[package]]
1012
+
name = "wasm-bindgen-shared"
1013
+
version = "0.2.104"
1014
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1015
+
checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1"
1016
+
dependencies = [
1017
+
"unicode-ident",
1018
+
]
1019
+
1020
+
[[package]]
1021
+
name = "web-sys"
1022
+
version = "0.3.81"
1023
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1024
+
checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120"
1025
+
dependencies = [
1026
+
"js-sys",
1027
+
"wasm-bindgen",
1028
+
]
1029
+
1030
+
[[package]]
1031
+
name = "wgpu"
1032
+
version = "27.0.1"
1033
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1034
+
checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77"
1035
+
dependencies = [
1036
+
"arrayvec",
1037
+
"bitflags",
1038
+
"cfg-if",
1039
+
"cfg_aliases",
1040
+
"document-features",
1041
+
"hashbrown 0.16.0",
1042
+
"js-sys",
1043
+
"log",
1044
+
"naga",
1045
+
"parking_lot",
1046
+
"portable-atomic",
1047
+
"profiling",
1048
+
"raw-window-handle",
1049
+
"smallvec",
1050
+
"static_assertions",
1051
+
"wasm-bindgen",
1052
+
"wasm-bindgen-futures",
1053
+
"web-sys",
1054
+
"wgpu-core",
1055
+
"wgpu-hal",
1056
+
"wgpu-types",
1057
+
]
1058
+
1059
+
[[package]]
1060
+
name = "wgpu-core"
1061
+
version = "27.0.1"
1062
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1063
+
checksum = "e3d654c0b6c6335edfca18c11bdaed964def641b8e9997d3a495a2ff4077c922"
1064
+
dependencies = [
1065
+
"arrayvec",
1066
+
"bit-set",
1067
+
"bit-vec",
1068
+
"bitflags",
1069
+
"bytemuck",
1070
+
"cfg_aliases",
1071
+
"document-features",
1072
+
"hashbrown 0.16.0",
1073
+
"indexmap",
1074
+
"log",
1075
+
"naga",
1076
+
"once_cell",
1077
+
"parking_lot",
1078
+
"portable-atomic",
1079
+
"profiling",
1080
+
"raw-window-handle",
1081
+
"rustc-hash",
1082
+
"smallvec",
1083
+
"thiserror 2.0.17",
1084
+
"wgpu-core-deps-apple",
1085
+
"wgpu-core-deps-emscripten",
1086
+
"wgpu-core-deps-windows-linux-android",
1087
+
"wgpu-hal",
1088
+
"wgpu-types",
1089
+
]
1090
+
1091
+
[[package]]
1092
+
name = "wgpu-core-deps-apple"
1093
+
version = "27.0.0"
1094
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1095
+
checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233"
1096
+
dependencies = [
1097
+
"wgpu-hal",
1098
+
]
1099
+
1100
+
[[package]]
1101
+
name = "wgpu-core-deps-emscripten"
1102
+
version = "27.0.0"
1103
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1104
+
checksum = "b06ac3444a95b0813ecfd81ddb2774b66220b264b3e2031152a4a29fda4da6b5"
1105
+
dependencies = [
1106
+
"wgpu-hal",
1107
+
]
1108
+
1109
+
[[package]]
1110
+
name = "wgpu-core-deps-windows-linux-android"
1111
+
version = "27.0.0"
1112
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1113
+
checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3"
1114
+
dependencies = [
1115
+
"wgpu-hal",
1116
+
]
1117
+
1118
+
[[package]]
1119
+
name = "wgpu-hal"
1120
+
version = "27.0.2"
1121
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1122
+
checksum = "2618a2d6b8a5964ecc1ac32a5db56cb3b1e518725fcd773fd9a782e023453f2b"
1123
+
dependencies = [
1124
+
"android_system_properties",
1125
+
"arrayvec",
1126
+
"ash",
1127
+
"bit-set",
1128
+
"bitflags",
1129
+
"block",
1130
+
"bytemuck",
1131
+
"cfg-if",
1132
+
"cfg_aliases",
1133
+
"core-graphics-types",
1134
+
"glow",
1135
+
"glutin_wgl_sys",
1136
+
"gpu-alloc",
1137
+
"gpu-allocator",
1138
+
"gpu-descriptor",
1139
+
"hashbrown 0.16.0",
1140
+
"js-sys",
1141
+
"khronos-egl",
1142
+
"libc",
1143
+
"libloading",
1144
+
"log",
1145
+
"metal",
1146
+
"naga",
1147
+
"ndk-sys",
1148
+
"objc",
1149
+
"once_cell",
1150
+
"ordered-float",
1151
+
"parking_lot",
1152
+
"portable-atomic",
1153
+
"portable-atomic-util",
1154
+
"profiling",
1155
+
"range-alloc",
1156
+
"raw-window-handle",
1157
+
"renderdoc-sys",
1158
+
"smallvec",
1159
+
"thiserror 2.0.17",
1160
+
"wasm-bindgen",
1161
+
"web-sys",
1162
+
"wgpu-types",
1163
+
"windows",
1164
+
"windows-core",
1165
+
]
1166
+
1167
+
[[package]]
1168
+
name = "wgpu-types"
1169
+
version = "27.0.1"
1170
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1171
+
checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb"
1172
+
dependencies = [
1173
+
"bitflags",
1174
+
"bytemuck",
1175
+
"js-sys",
1176
+
"log",
1177
+
"thiserror 2.0.17",
1178
+
"web-sys",
1179
+
]
1180
+
1181
+
[[package]]
1182
+
name = "winapi-util"
1183
+
version = "0.1.11"
1184
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1185
+
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
1186
+
dependencies = [
1187
+
"windows-sys 0.61.2",
1188
+
]
1189
+
1190
+
[[package]]
1191
+
name = "windows"
1192
+
version = "0.58.0"
1193
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1194
+
checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6"
1195
+
dependencies = [
1196
+
"windows-core",
1197
+
"windows-targets 0.52.6",
1198
+
]
1199
+
1200
+
[[package]]
1201
+
name = "windows-core"
1202
+
version = "0.58.0"
1203
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1204
+
checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99"
1205
+
dependencies = [
1206
+
"windows-implement",
1207
+
"windows-interface",
1208
+
"windows-result",
1209
+
"windows-strings",
1210
+
"windows-targets 0.52.6",
1211
+
]
1212
+
1213
+
[[package]]
1214
+
name = "windows-implement"
1215
+
version = "0.58.0"
1216
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1217
+
checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
1218
+
dependencies = [
1219
+
"proc-macro2",
1220
+
"quote",
1221
+
"syn",
1222
+
]
1223
+
1224
+
[[package]]
1225
+
name = "windows-interface"
1226
+
version = "0.58.0"
1227
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1228
+
checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
1229
+
dependencies = [
1230
+
"proc-macro2",
1231
+
"quote",
1232
+
"syn",
1233
+
]
1234
+
1235
+
[[package]]
245
1236
name = "windows-link"
246
1237
version = "0.2.1"
247
1238
source = "registry+https://github.com/rust-lang/crates.io-index"
248
1239
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
249
1240
250
1241
[[package]]
1242
+
name = "windows-result"
1243
+
version = "0.2.0"
1244
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1245
+
checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
1246
+
dependencies = [
1247
+
"windows-targets 0.52.6",
1248
+
]
1249
+
1250
+
[[package]]
1251
+
name = "windows-strings"
1252
+
version = "0.1.0"
1253
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1254
+
checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
1255
+
dependencies = [
1256
+
"windows-result",
1257
+
"windows-targets 0.52.6",
1258
+
]
1259
+
1260
+
[[package]]
251
1261
name = "windows-sys"
252
1262
version = "0.60.2"
253
1263
source = "registry+https://github.com/rust-lang/crates.io-index"
254
1264
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
255
1265
dependencies = [
256
-
"windows-targets",
1266
+
"windows-targets 0.53.5",
257
1267
]
258
1268
259
1269
[[package]]
···
267
1277
268
1278
[[package]]
269
1279
name = "windows-targets"
1280
+
version = "0.52.6"
1281
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1282
+
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
1283
+
dependencies = [
1284
+
"windows_aarch64_gnullvm 0.52.6",
1285
+
"windows_aarch64_msvc 0.52.6",
1286
+
"windows_i686_gnu 0.52.6",
1287
+
"windows_i686_gnullvm 0.52.6",
1288
+
"windows_i686_msvc 0.52.6",
1289
+
"windows_x86_64_gnu 0.52.6",
1290
+
"windows_x86_64_gnullvm 0.52.6",
1291
+
"windows_x86_64_msvc 0.52.6",
1292
+
]
1293
+
1294
+
[[package]]
1295
+
name = "windows-targets"
270
1296
version = "0.53.5"
271
1297
source = "registry+https://github.com/rust-lang/crates.io-index"
272
1298
checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
273
1299
dependencies = [
274
1300
"windows-link",
275
-
"windows_aarch64_gnullvm",
276
-
"windows_aarch64_msvc",
277
-
"windows_i686_gnu",
278
-
"windows_i686_gnullvm",
279
-
"windows_i686_msvc",
280
-
"windows_x86_64_gnu",
281
-
"windows_x86_64_gnullvm",
282
-
"windows_x86_64_msvc",
1301
+
"windows_aarch64_gnullvm 0.53.1",
1302
+
"windows_aarch64_msvc 0.53.1",
1303
+
"windows_i686_gnu 0.53.1",
1304
+
"windows_i686_gnullvm 0.53.1",
1305
+
"windows_i686_msvc 0.53.1",
1306
+
"windows_x86_64_gnu 0.53.1",
1307
+
"windows_x86_64_gnullvm 0.53.1",
1308
+
"windows_x86_64_msvc 0.53.1",
283
1309
]
284
1310
285
1311
[[package]]
286
1312
name = "windows_aarch64_gnullvm"
1313
+
version = "0.52.6"
1314
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1315
+
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
1316
+
1317
+
[[package]]
1318
+
name = "windows_aarch64_gnullvm"
287
1319
version = "0.53.1"
288
1320
source = "registry+https://github.com/rust-lang/crates.io-index"
289
1321
checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
290
1322
291
1323
[[package]]
292
1324
name = "windows_aarch64_msvc"
1325
+
version = "0.52.6"
1326
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1327
+
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
1328
+
1329
+
[[package]]
1330
+
name = "windows_aarch64_msvc"
293
1331
version = "0.53.1"
294
1332
source = "registry+https://github.com/rust-lang/crates.io-index"
295
1333
checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
296
1334
297
1335
[[package]]
298
1336
name = "windows_i686_gnu"
1337
+
version = "0.52.6"
1338
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1339
+
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
1340
+
1341
+
[[package]]
1342
+
name = "windows_i686_gnu"
299
1343
version = "0.53.1"
300
1344
source = "registry+https://github.com/rust-lang/crates.io-index"
301
1345
checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
302
1346
303
1347
[[package]]
304
1348
name = "windows_i686_gnullvm"
1349
+
version = "0.52.6"
1350
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1351
+
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
1352
+
1353
+
[[package]]
1354
+
name = "windows_i686_gnullvm"
305
1355
version = "0.53.1"
306
1356
source = "registry+https://github.com/rust-lang/crates.io-index"
307
1357
checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
308
1358
309
1359
[[package]]
310
1360
name = "windows_i686_msvc"
1361
+
version = "0.52.6"
1362
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1363
+
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
1364
+
1365
+
[[package]]
1366
+
name = "windows_i686_msvc"
311
1367
version = "0.53.1"
312
1368
source = "registry+https://github.com/rust-lang/crates.io-index"
313
1369
checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
314
1370
315
1371
[[package]]
316
1372
name = "windows_x86_64_gnu"
1373
+
version = "0.52.6"
1374
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1375
+
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
1376
+
1377
+
[[package]]
1378
+
name = "windows_x86_64_gnu"
317
1379
version = "0.53.1"
318
1380
source = "registry+https://github.com/rust-lang/crates.io-index"
319
1381
checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
320
1382
321
1383
[[package]]
322
1384
name = "windows_x86_64_gnullvm"
1385
+
version = "0.52.6"
1386
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1387
+
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
1388
+
1389
+
[[package]]
1390
+
name = "windows_x86_64_gnullvm"
323
1391
version = "0.53.1"
324
1392
source = "registry+https://github.com/rust-lang/crates.io-index"
325
1393
checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
326
1394
327
1395
[[package]]
328
1396
name = "windows_x86_64_msvc"
1397
+
version = "0.52.6"
1398
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1399
+
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
1400
+
1401
+
[[package]]
1402
+
name = "windows_x86_64_msvc"
329
1403
version = "0.53.1"
330
1404
source = "registry+https://github.com/rust-lang/crates.io-index"
331
1405
checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
1406
+
1407
+
[[package]]
1408
+
name = "xml-rs"
1409
+
version = "0.8.27"
1410
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1411
+
checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7"
1412
+
1413
+
[[package]]
1414
+
name = "zerocopy"
1415
+
version = "0.8.27"
1416
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1417
+
checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
1418
+
dependencies = [
1419
+
"zerocopy-derive",
1420
+
]
1421
+
1422
+
[[package]]
1423
+
name = "zerocopy-derive"
1424
+
version = "0.8.27"
1425
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1426
+
checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
1427
+
dependencies = [
1428
+
"proc-macro2",
1429
+
"quote",
1430
+
"syn",
1431
+
]
+3
Cargo.toml
+3
Cargo.toml
+79
-17
README.md
+79
-17
README.md
···
1
-
# Heater
1
+
# Heater 🔥
2
2
3
-
A Rust command-line application that churns your CPU cores at maximum capacity so your laptop isn't cold
3
+
A Rust command-line application that churns your CPU and GPU at maximum capacity for testing, benchmarking, or keeping your system warm.
4
+
5
+
## Features
6
+
7
+
- 🔥 Maximizes CPU usage across multiple cores
8
+
- 🎮 Optional GPU heating using compute shaders
9
+
- 🛡️ Leaves one core free by default (configurable)
10
+
- ⏱️ Run for a specific duration or indefinitely
11
+
- 🛑 Graceful shutdown with Ctrl+C
12
+
- 📊 Real-time thread and GPU iteration status
13
+
- 🌐 Cross-platform GPU support (Metal, Vulkan, DX12, OpenGL)
4
14
5
15
## Build
6
16
···
12
22
13
23
## Usage
14
24
15
-
### Run indefinitely (until Ctrl+C)
25
+
### CPU heating only (default)
16
26
```bash
27
+
# Run indefinitely (until Ctrl+C)
17
28
cargo run --release
18
-
# or
19
-
./target/release/heater
20
-
```
21
29
22
-
### Run for a specific duration (in seconds)
23
-
```bash
30
+
# Run for 30 seconds
24
31
cargo run --release -- --duration 30
25
-
# or
26
-
./target/release/heater --duration 30
27
-
```
28
32
29
-
### Customize the number of free cores
30
-
```bash
31
33
# Leave 2 cores free
32
34
cargo run --release -- --free-cores 2
35
+
```
33
36
34
-
# Use ALL cores (leave 0 free)
35
-
cargo run --release -- --free-cores 0
37
+
### GPU heating
38
+
```bash
39
+
# Enable GPU heating with the --gpu flag
40
+
cargo run --release -- --gpu
36
41
37
-
# Run for 60 seconds, leaving 2 cores free
38
-
cargo run --release -- --duration 60 --free-cores 2
42
+
# GPU + CPU for 60 seconds
43
+
cargo run --release -- --gpu --duration 60
44
+
45
+
# Max heat: all cores + GPU
46
+
cargo run --release -- --gpu --free-cores 0
47
+
```
48
+
49
+
### Advanced examples
50
+
```bash
51
+
# Use ALL cores (leave 0 free) + GPU for 2 minutes
52
+
./target/release/heater --gpu --free-cores 0 --duration 120
53
+
54
+
# CPU only, leaving 3 cores free, run indefinitely
55
+
./target/release/heater --free-cores 3
39
56
```
40
57
41
58
## Options
···
43
60
```
44
61
-d, --duration <DURATION> Duration to run in seconds (omit for indefinite run)
45
62
-f, --free-cores <FREE_CORES> Number of cores to leave free (default: 1)
63
+
-g, --gpu Enable GPU heating (requires compatible GPU)
46
64
-h, --help Print help
47
65
-V, --version Print version
48
66
```
67
+
68
+
## How It Works
69
+
70
+
### CPU Heating
71
+
The application:
72
+
1. Detects the number of logical CPU cores on your system
73
+
2. Spawns threads equal to (total cores - free cores)
74
+
3. Each thread performs intensive mathematical operations in a tight loop
75
+
4. Continues until the specified duration expires or you press Ctrl+C
76
+
77
+
### GPU Heating
78
+
When `--gpu` is enabled:
79
+
1. Initializes GPU using wgpu (supports Metal, Vulkan, DX12, OpenGL)
80
+
2. Creates compute shaders that perform intensive trigonometric and exponential operations
81
+
3. Dispatches large workgroups (256x256) continuously to maximize GPU utilization
82
+
4. Runs in parallel with CPU heating threads
83
+
84
+
## Use Cases
85
+
86
+
- CPU/GPU stress testing
87
+
- Thermal testing and validation
88
+
- Benchmarking cooling solutions
89
+
- Testing throttling behavior
90
+
- Power consumption testing
91
+
- Keeping your laptop warm in winter ❄️
92
+
93
+
## GPU Compatibility
94
+
95
+
The GPU heater uses `wgpu` which supports:
96
+
- **macOS**: Metal
97
+
- **Windows**: DirectX 12, Vulkan
98
+
- **Linux**: Vulkan, OpenGL
99
+
- **Web**: WebGPU
100
+
101
+
If GPU initialization fails, the app will fall back to CPU-only heating.
102
+
103
+
## Safety Notes
104
+
105
+
⚠️ **Warning**: This application will significantly increase CPU and GPU temperature and power consumption.
106
+
107
+
- Ensure your system has adequate cooling before running for extended periods
108
+
- Monitor temperatures if running for long durations
109
+
- Some laptops may throttle or shut down if temperatures get too high
110
+
- Use `--free-cores` to leave headroom for system processes
+30
src/heater.wgsl
+30
src/heater.wgsl
···
1
+
// GPU compute shader for heating
2
+
// Performs intensive matrix-like operations on data
3
+
4
+
@group(0) @binding(0)
5
+
var<storage, read> input: array<f32>;
6
+
7
+
@group(0) @binding(1)
8
+
var<storage, read_write> output: array<f32>;
9
+
10
+
@compute @workgroup_size(256)
11
+
fn main(@builtin(global_invocation_id) global_id: vec3<u32>) {
12
+
let index = global_id.x;
13
+
14
+
// Perform intensive math operations
15
+
var value = f32(index);
16
+
17
+
// Matrix-like computations (unrolled for more heat)
18
+
for (var i = 0u; i < 100u; i++) {
19
+
value = sin(value) * cos(value * 1.234);
20
+
value = value * value + sqrt(abs(value));
21
+
value = pow(abs(value), 1.5) * 0.001;
22
+
value = exp(value * 0.01) - log(abs(value) + 1.0);
23
+
value = tan(value * 0.1) + atan(value);
24
+
}
25
+
26
+
// Write result (if index is in bounds)
27
+
if (index < arrayLength(&output)) {
28
+
output[index] = value;
29
+
}
30
+
}
+171
-3
src/main.rs
+171
-3
src/main.rs
···
5
5
use std::time::{Duration, Instant};
6
6
7
7
#[derive(Parser, Debug)]
8
-
#[command(author, version, about = "A CPU heater that churns CPU cores", long_about = None)]
8
+
#[command(author, version, about = "A CPU/GPU heater that churns hardware", long_about = None)]
9
9
struct Args {
10
10
/// Duration to run in seconds (omit for indefinite run)
11
11
#[arg(short, long)]
···
14
14
/// Number of cores to leave free (default: 1)
15
15
#[arg(short = 'f', long, default_value_t = 1)]
16
16
free_cores: usize,
17
+
18
+
/// Enable GPU heating (requires compatible GPU)
19
+
#[arg(short, long)]
20
+
gpu: bool,
17
21
}
18
22
19
23
fn main() {
···
26
30
println!("Total CPU cores: {}", total_cores);
27
31
println!("Cores to heat: {}", cores_to_use);
28
32
println!("Cores to leave free: {}", args.free_cores);
33
+
if args.gpu {
34
+
println!("GPU heating: ENABLED");
35
+
}
29
36
30
37
match args.duration {
31
38
Some(seconds) => println!("Running for {} seconds", seconds),
···
44
51
45
52
let start_time = Instant::now();
46
53
let duration = args.duration.map(Duration::from_secs);
54
+
55
+
// Start GPU heating if requested
56
+
let gpu_handle = if args.gpu {
57
+
let running = running.clone();
58
+
Some(thread::spawn(move || {
59
+
match run_gpu_heater(running) {
60
+
Ok(_) => println!("GPU heater stopped successfully"),
61
+
Err(e) => eprintln!("GPU heater error: {}", e),
62
+
}
63
+
}))
64
+
} else {
65
+
None
66
+
};
47
67
48
68
// Spawn threads to churn CPU
49
69
let mut handles = vec![];
50
70
for i in 0..cores_to_use {
51
71
let running = running.clone();
52
72
let handle = thread::spawn(move || {
53
-
println!("Thread {} started", i);
73
+
println!("CPU Thread {} started", i);
54
74
let mut counter: u64 = 0;
55
75
while running.load(Ordering::SeqCst) {
56
76
//compute something meaningless but CPU-intensive
···
62
82
.wrapping_rem(2147483648);
63
83
}
64
84
}
65
-
println!("Thread {} stopped after {} iterations", i, counter);
85
+
println!("CPU Thread {} stopped after {} iterations", i, counter);
66
86
});
67
87
handles.push(handle);
68
88
}
···
78
98
for handle in handles {
79
99
handle.join().unwrap();
80
100
}
101
+
if let Some(handle) = gpu_handle {
102
+
handle.join().unwrap();
103
+
}
81
104
return;
82
105
}
83
106
···
85
108
for handle in handles {
86
109
handle.join().unwrap();
87
110
}
111
+
if let Some(handle) = gpu_handle {
112
+
handle.join().unwrap();
113
+
}
88
114
89
115
println!("Finished heating for {:?}", start_time.elapsed());
90
116
}
117
+
118
+
fn run_gpu_heater(running: Arc<AtomicBool>) -> Result<(), Box<dyn std::error::Error>> {
119
+
// Initialize GPU
120
+
let instance = wgpu::Instance::new(&wgpu::InstanceDescriptor {
121
+
backends: wgpu::Backends::all(),
122
+
..Default::default()
123
+
});
124
+
125
+
let adapter = pollster::block_on(instance.request_adapter(&wgpu::RequestAdapterOptions {
126
+
power_preference: wgpu::PowerPreference::HighPerformance,
127
+
compatible_surface: None,
128
+
force_fallback_adapter: false,
129
+
}));
130
+
131
+
let adapter = match adapter {
132
+
Ok(a) => a,
133
+
Err(_) => return Err("Failed to find GPU adapter".into()),
134
+
};
135
+
136
+
println!("GPU: {} ({:?})", adapter.get_info().name, adapter.get_info().backend);
137
+
138
+
let (device, queue) = pollster::block_on(adapter.request_device(
139
+
&wgpu::DeviceDescriptor {
140
+
label: Some("GPU Heater Device"),
141
+
required_features: wgpu::Features::empty(),
142
+
required_limits: wgpu::Limits::default(),
143
+
memory_hints: Default::default(),
144
+
experimental_features: Default::default(),
145
+
trace: Default::default(),
146
+
},
147
+
))?;
148
+
149
+
// Create compute shader that does intensive matrix operations
150
+
let shader = device.create_shader_module(wgpu::ShaderModuleDescriptor {
151
+
label: Some("GPU Heater Shader"),
152
+
source: wgpu::ShaderSource::Wgsl(include_str!("heater.wgsl").into()),
153
+
});
154
+
155
+
// Create buffers for computation
156
+
let buffer_size = 1024 * 1024 * 4; // 4MB of data
157
+
let input_buffer = device.create_buffer(&wgpu::BufferDescriptor {
158
+
label: Some("Input Buffer"),
159
+
size: buffer_size,
160
+
usage: wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_DST,
161
+
mapped_at_creation: false,
162
+
});
163
+
164
+
let output_buffer = device.create_buffer(&wgpu::BufferDescriptor {
165
+
label: Some("Output Buffer"),
166
+
size: buffer_size,
167
+
usage: wgpu::BufferUsages::STORAGE | wgpu::BufferUsages::COPY_SRC,
168
+
mapped_at_creation: false,
169
+
});
170
+
171
+
let bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor {
172
+
label: Some("Compute Bind Group Layout"),
173
+
entries: &[
174
+
wgpu::BindGroupLayoutEntry {
175
+
binding: 0,
176
+
visibility: wgpu::ShaderStages::COMPUTE,
177
+
ty: wgpu::BindingType::Buffer {
178
+
ty: wgpu::BufferBindingType::Storage { read_only: true },
179
+
has_dynamic_offset: false,
180
+
min_binding_size: None,
181
+
},
182
+
count: None,
183
+
},
184
+
wgpu::BindGroupLayoutEntry {
185
+
binding: 1,
186
+
visibility: wgpu::ShaderStages::COMPUTE,
187
+
ty: wgpu::BindingType::Buffer {
188
+
ty: wgpu::BufferBindingType::Storage { read_only: false },
189
+
has_dynamic_offset: false,
190
+
min_binding_size: None,
191
+
},
192
+
count: None,
193
+
},
194
+
],
195
+
});
196
+
197
+
let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor {
198
+
label: Some("Compute Bind Group"),
199
+
layout: &bind_group_layout,
200
+
entries: &[
201
+
wgpu::BindGroupEntry {
202
+
binding: 0,
203
+
resource: input_buffer.as_entire_binding(),
204
+
},
205
+
wgpu::BindGroupEntry {
206
+
binding: 1,
207
+
resource: output_buffer.as_entire_binding(),
208
+
},
209
+
],
210
+
});
211
+
212
+
let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
213
+
label: Some("Compute Pipeline Layout"),
214
+
bind_group_layouts: &[&bind_group_layout],
215
+
push_constant_ranges: &[],
216
+
});
217
+
218
+
let compute_pipeline = device.create_compute_pipeline(&wgpu::ComputePipelineDescriptor {
219
+
label: Some("Compute Pipeline"),
220
+
layout: Some(&pipeline_layout),
221
+
module: &shader,
222
+
entry_point: Some("main"),
223
+
compilation_options: Default::default(),
224
+
cache: None,
225
+
});
226
+
227
+
println!("GPU heater started");
228
+
let mut iteration = 0u64;
229
+
230
+
// Main GPU compute loop
231
+
while running.load(Ordering::SeqCst) {
232
+
let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor {
233
+
label: Some("Compute Encoder"),
234
+
});
235
+
236
+
{
237
+
let mut compute_pass = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor {
238
+
label: Some("Compute Pass"),
239
+
timestamp_writes: None,
240
+
});
241
+
compute_pass.set_pipeline(&compute_pipeline);
242
+
compute_pass.set_bind_group(0, &bind_group, &[]);
243
+
// Dispatch enough work to keep GPU busy
244
+
compute_pass.dispatch_workgroups(256, 256, 1);
245
+
}
246
+
247
+
queue.submit(Some(encoder.finish()));
248
+
// Queue submission handles synchronization
249
+
250
+
iteration += 1;
251
+
//if iteration % 100 == 0 {
252
+
// println!("GPU iterations: {}", iteration);
253
+
//}
254
+
}
255
+
256
+
println!("GPU heater stopped after {} iterations", iteration);
257
+
Ok(())
258
+
}