this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

init: Cargo workspace with tala-format, tala-srs, tala-cli

Sets up a three-crate workspace for the Typst-based SRS app.

- tala-format: walks typst-syntax 0.14 LinkedNode tree to extract
CardEntry (FrontBack, Cloze, ImgCloze) with byte spans; 7 unit tests
covering IDs, dir flag, blank indexing, and span correctness
- tala-srs: sidecar JSON schema (Sidecar, CardSchedule, Schedule,
RectEntry) with load/save and orphan/missing cross-check helpers
- tala-cli: `tala check` (parse + sidecar diff) and `tala review`
(stub) driven by the two libraries

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

oscillatory.net 5a75c74e

+5359
+1
.gitignore
··· 1 + /target
+4693
Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 4 4 + 5 + [[package]] 6 + name = "adler2" 7 + version = "2.0.1" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 10 + 11 + [[package]] 12 + name = "ahash" 13 + version = "0.8.12" 14 + source = "registry+https://github.com/rust-lang/crates.io-index" 15 + checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" 16 + dependencies = [ 17 + "cfg-if", 18 + "once_cell", 19 + "version_check", 20 + "zerocopy", 21 + ] 22 + 23 + [[package]] 24 + name = "aho-corasick" 25 + version = "1.1.4" 26 + source = "registry+https://github.com/rust-lang/crates.io-index" 27 + checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" 28 + dependencies = [ 29 + "memchr", 30 + ] 31 + 32 + [[package]] 33 + name = "allocator-api2" 34 + version = "0.2.21" 35 + source = "registry+https://github.com/rust-lang/crates.io-index" 36 + checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 37 + 38 + [[package]] 39 + name = "android_system_properties" 40 + version = "0.1.5" 41 + source = "registry+https://github.com/rust-lang/crates.io-index" 42 + checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 43 + dependencies = [ 44 + "libc", 45 + ] 46 + 47 + [[package]] 48 + name = "anstream" 49 + version = "1.0.0" 50 + source = "registry+https://github.com/rust-lang/crates.io-index" 51 + checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" 52 + dependencies = [ 53 + "anstyle", 54 + "anstyle-parse", 55 + "anstyle-query", 56 + "anstyle-wincon", 57 + "colorchoice", 58 + "is_terminal_polyfill", 59 + "utf8parse", 60 + ] 61 + 62 + [[package]] 63 + name = "anstyle" 64 + version = "1.0.14" 65 + source = "registry+https://github.com/rust-lang/crates.io-index" 66 + checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" 67 + 68 + [[package]] 69 + name = "anstyle-parse" 70 + version = "1.0.0" 71 + source = "registry+https://github.com/rust-lang/crates.io-index" 72 + checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" 73 + dependencies = [ 74 + "utf8parse", 75 + ] 76 + 77 + [[package]] 78 + name = "anstyle-query" 79 + version = "1.1.5" 80 + source = "registry+https://github.com/rust-lang/crates.io-index" 81 + checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" 82 + dependencies = [ 83 + "windows-sys 0.61.2", 84 + ] 85 + 86 + [[package]] 87 + name = "anstyle-wincon" 88 + version = "3.0.11" 89 + source = "registry+https://github.com/rust-lang/crates.io-index" 90 + checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" 91 + dependencies = [ 92 + "anstyle", 93 + "once_cell_polyfill", 94 + "windows-sys 0.61.2", 95 + ] 96 + 97 + [[package]] 98 + name = "anyhow" 99 + version = "1.0.102" 100 + source = "registry+https://github.com/rust-lang/crates.io-index" 101 + checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" 102 + 103 + [[package]] 104 + name = "arbitrary" 105 + version = "1.4.2" 106 + source = "registry+https://github.com/rust-lang/crates.io-index" 107 + checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" 108 + dependencies = [ 109 + "derive_arbitrary", 110 + ] 111 + 112 + [[package]] 113 + name = "arrayvec" 114 + version = "0.7.6" 115 + source = "registry+https://github.com/rust-lang/crates.io-index" 116 + checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 117 + 118 + [[package]] 119 + name = "ash" 120 + version = "0.38.0+1.3.281" 121 + source = "registry+https://github.com/rust-lang/crates.io-index" 122 + checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" 123 + dependencies = [ 124 + "libloading", 125 + ] 126 + 127 + [[package]] 128 + name = "async-channel" 129 + version = "2.5.0" 130 + source = "registry+https://github.com/rust-lang/crates.io-index" 131 + checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" 132 + dependencies = [ 133 + "concurrent-queue", 134 + "event-listener-strategy", 135 + "futures-core", 136 + "pin-project-lite", 137 + ] 138 + 139 + [[package]] 140 + name = "atomic_float" 141 + version = "1.1.0" 142 + source = "registry+https://github.com/rust-lang/crates.io-index" 143 + checksum = "628d228f918ac3b82fe590352cc719d30664a0c13ca3a60266fe02c7132d480a" 144 + 145 + [[package]] 146 + name = "autocfg" 147 + version = "1.5.0" 148 + source = "registry+https://github.com/rust-lang/crates.io-index" 149 + checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 150 + 151 + [[package]] 152 + name = "bincode" 153 + version = "2.0.1" 154 + source = "registry+https://github.com/rust-lang/crates.io-index" 155 + checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" 156 + dependencies = [ 157 + "serde", 158 + "unty", 159 + ] 160 + 161 + [[package]] 162 + name = "bit-set" 163 + version = "0.8.0" 164 + source = "registry+https://github.com/rust-lang/crates.io-index" 165 + checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" 166 + dependencies = [ 167 + "bit-vec", 168 + ] 169 + 170 + [[package]] 171 + name = "bit-vec" 172 + version = "0.8.0" 173 + source = "registry+https://github.com/rust-lang/crates.io-index" 174 + checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" 175 + 176 + [[package]] 177 + name = "bitflags" 178 + version = "1.3.2" 179 + source = "registry+https://github.com/rust-lang/crates.io-index" 180 + checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 181 + 182 + [[package]] 183 + name = "bitflags" 184 + version = "2.11.0" 185 + source = "registry+https://github.com/rust-lang/crates.io-index" 186 + checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" 187 + dependencies = [ 188 + "serde_core", 189 + ] 190 + 191 + [[package]] 192 + name = "block" 193 + version = "0.1.6" 194 + source = "registry+https://github.com/rust-lang/crates.io-index" 195 + checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 196 + 197 + [[package]] 198 + name = "bumpalo" 199 + version = "3.20.2" 200 + source = "registry+https://github.com/rust-lang/crates.io-index" 201 + checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" 202 + 203 + [[package]] 204 + name = "burn" 205 + version = "0.17.1" 206 + source = "registry+https://github.com/rust-lang/crates.io-index" 207 + checksum = "ec639306f45bd663957465e840cfb07bcd2ae18f7c045dd9aba8cb7a69c0654a" 208 + dependencies = [ 209 + "burn-autodiff", 210 + "burn-candle", 211 + "burn-core", 212 + "burn-cuda", 213 + "burn-ndarray", 214 + "burn-rocm", 215 + "burn-router", 216 + "burn-train", 217 + "burn-wgpu", 218 + ] 219 + 220 + [[package]] 221 + name = "burn-autodiff" 222 + version = "0.17.1" 223 + source = "registry+https://github.com/rust-lang/crates.io-index" 224 + checksum = "a178966322ab7ce71405f1324cdc14f79256d85a47138bbd2c8c4f0056148601" 225 + dependencies = [ 226 + "burn-common", 227 + "burn-tensor", 228 + "derive-new 0.7.0", 229 + "hashbrown 0.15.5", 230 + "log", 231 + "num-traits", 232 + "portable-atomic", 233 + "spin 0.10.0", 234 + ] 235 + 236 + [[package]] 237 + name = "burn-candle" 238 + version = "0.17.1" 239 + source = "registry+https://github.com/rust-lang/crates.io-index" 240 + checksum = "9ed0981b3c1d07e9df0f5bef1042921b6db6e88b5d91916fa5dbdd7f0ca921c3" 241 + dependencies = [ 242 + "burn-tensor", 243 + "candle-core", 244 + "derive-new 0.7.0", 245 + "half", 246 + ] 247 + 248 + [[package]] 249 + name = "burn-common" 250 + version = "0.17.1" 251 + source = "registry+https://github.com/rust-lang/crates.io-index" 252 + checksum = "1c3fae76798ea4dd14e6290b6753eb6235ac28c6ceaf6da35ff8396775d5494d" 253 + dependencies = [ 254 + "cubecl-common", 255 + "rayon", 256 + "serde", 257 + ] 258 + 259 + [[package]] 260 + name = "burn-core" 261 + version = "0.17.1" 262 + source = "registry+https://github.com/rust-lang/crates.io-index" 263 + checksum = "2afa81c868c1a9b3fad25c31176945d0cc5181ba7b77c0456bc05cf57fca975c" 264 + dependencies = [ 265 + "ahash", 266 + "bincode", 267 + "burn-common", 268 + "burn-dataset", 269 + "burn-derive", 270 + "burn-tensor", 271 + "data-encoding", 272 + "derive-new 0.7.0", 273 + "flate2", 274 + "half", 275 + "hashbrown 0.15.5", 276 + "log", 277 + "num-traits", 278 + "portable-atomic-util", 279 + "rand", 280 + "rmp-serde", 281 + "serde", 282 + "serde_json", 283 + "spin 0.10.0", 284 + "uuid", 285 + ] 286 + 287 + [[package]] 288 + name = "burn-cubecl" 289 + version = "0.17.1" 290 + source = "registry+https://github.com/rust-lang/crates.io-index" 291 + checksum = "c547cbe414274ab4022abcc85993e1e41aa7cdccc92395ba5658acfdac285e07" 292 + dependencies = [ 293 + "burn-common", 294 + "burn-ir", 295 + "burn-tensor", 296 + "bytemuck", 297 + "cubecl", 298 + "cubecl-std", 299 + "derive-new 0.7.0", 300 + "futures-lite", 301 + "half", 302 + "hashbrown 0.15.5", 303 + "log", 304 + "num-traits", 305 + "rand", 306 + "serde", 307 + "spin 0.10.0", 308 + "text_placeholder", 309 + ] 310 + 311 + [[package]] 312 + name = "burn-cuda" 313 + version = "0.17.1" 314 + source = "registry+https://github.com/rust-lang/crates.io-index" 315 + checksum = "995bd0b3f52a4cfe0cfe47c16b40b3fd33285d17a086dd583e5b432074857e02" 316 + dependencies = [ 317 + "burn-cubecl", 318 + "burn-tensor", 319 + "bytemuck", 320 + "cubecl", 321 + "derive-new 0.7.0", 322 + "half", 323 + "log", 324 + ] 325 + 326 + [[package]] 327 + name = "burn-dataset" 328 + version = "0.17.1" 329 + source = "registry+https://github.com/rust-lang/crates.io-index" 330 + checksum = "136c784dfc474c822f34d69e865f88a5675e9de9803ef38cee4ce14cdba34d54" 331 + dependencies = [ 332 + "csv", 333 + "derive-new 0.7.0", 334 + "dirs 6.0.0", 335 + "rand", 336 + "rmp-serde", 337 + "sanitize-filename 0.6.0", 338 + "serde", 339 + "serde_json", 340 + "strum 0.27.2", 341 + "tempfile", 342 + "thiserror 2.0.18", 343 + ] 344 + 345 + [[package]] 346 + name = "burn-derive" 347 + version = "0.17.1" 348 + source = "registry+https://github.com/rust-lang/crates.io-index" 349 + checksum = "12e9f07ccc658ef072bce2e996f0c38c80ee4c241598b6557afe1877dd87ae98" 350 + dependencies = [ 351 + "derive-new 0.7.0", 352 + "proc-macro2", 353 + "quote", 354 + "syn", 355 + ] 356 + 357 + [[package]] 358 + name = "burn-ir" 359 + version = "0.17.1" 360 + source = "registry+https://github.com/rust-lang/crates.io-index" 361 + checksum = "d63629f2c8b82ee52dbb9c18becded5117c2faf57365dc271a55c16d139cd91a" 362 + dependencies = [ 363 + "burn-tensor", 364 + "hashbrown 0.15.5", 365 + "portable-atomic-util", 366 + "serde", 367 + ] 368 + 369 + [[package]] 370 + name = "burn-ndarray" 371 + version = "0.17.1" 372 + source = "registry+https://github.com/rust-lang/crates.io-index" 373 + checksum = "7e883846578e6915e1dbaeeb5bce32cc04cff03e7cb79c5836e1e888bbce974f" 374 + dependencies = [ 375 + "atomic_float", 376 + "burn-autodiff", 377 + "burn-common", 378 + "burn-ir", 379 + "burn-tensor", 380 + "bytemuck", 381 + "derive-new 0.7.0", 382 + "itertools", 383 + "libm", 384 + "macerator", 385 + "matrixmultiply", 386 + "ndarray", 387 + "num-traits", 388 + "paste", 389 + "portable-atomic-util", 390 + "rand", 391 + "seq-macro", 392 + "spin 0.10.0", 393 + ] 394 + 395 + [[package]] 396 + name = "burn-rocm" 397 + version = "0.17.1" 398 + source = "registry+https://github.com/rust-lang/crates.io-index" 399 + checksum = "bd39d58202558b65b575921b57bff933845e6171296e2b8faf6a9d3610a344c5" 400 + dependencies = [ 401 + "burn-cubecl", 402 + "burn-tensor", 403 + "bytemuck", 404 + "cubecl", 405 + "derive-new 0.7.0", 406 + "half", 407 + "log", 408 + ] 409 + 410 + [[package]] 411 + name = "burn-router" 412 + version = "0.17.1" 413 + source = "registry+https://github.com/rust-lang/crates.io-index" 414 + checksum = "22ed8614e180f7a58f77e658bd52e206d2f4a1ee37fcb4665c635ea9da90ea8b" 415 + dependencies = [ 416 + "burn-common", 417 + "burn-ir", 418 + "burn-tensor", 419 + "hashbrown 0.15.5", 420 + "log", 421 + "spin 0.10.0", 422 + ] 423 + 424 + [[package]] 425 + name = "burn-tensor" 426 + version = "0.17.1" 427 + source = "registry+https://github.com/rust-lang/crates.io-index" 428 + checksum = "2a70d1562c0d00083939e34daad61dabebb0f8bc8c250d1ef2f5efc31eb93aaf" 429 + dependencies = [ 430 + "burn-common", 431 + "bytemuck", 432 + "colored", 433 + "cubecl", 434 + "derive-new 0.7.0", 435 + "half", 436 + "hashbrown 0.15.5", 437 + "num-traits", 438 + "rand", 439 + "rand_distr", 440 + "serde", 441 + "serde_bytes", 442 + ] 443 + 444 + [[package]] 445 + name = "burn-train" 446 + version = "0.17.1" 447 + source = "registry+https://github.com/rust-lang/crates.io-index" 448 + checksum = "140182cf5f1255d60e1d8c677fa45c6f71018c3c3c66aad093a9e4c3c222cf1c" 449 + dependencies = [ 450 + "async-channel", 451 + "burn-core", 452 + "burn-ndarray", 453 + "derive-new 0.7.0", 454 + "log", 455 + "nvml-wrapper", 456 + "rstest", 457 + "serde", 458 + "sysinfo", 459 + "systemstat", 460 + "tracing-appender", 461 + "tracing-core", 462 + "tracing-subscriber", 463 + ] 464 + 465 + [[package]] 466 + name = "burn-wgpu" 467 + version = "0.17.1" 468 + source = "registry+https://github.com/rust-lang/crates.io-index" 469 + checksum = "215bf0e641a27e17bcd3941a11867dcda411c9cb009488c6b6650c8206437c30" 470 + dependencies = [ 471 + "burn-cubecl", 472 + "burn-tensor", 473 + "cubecl", 474 + ] 475 + 476 + [[package]] 477 + name = "bytemuck" 478 + version = "1.25.0" 479 + source = "registry+https://github.com/rust-lang/crates.io-index" 480 + checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" 481 + dependencies = [ 482 + "bytemuck_derive", 483 + ] 484 + 485 + [[package]] 486 + name = "bytemuck_derive" 487 + version = "1.10.2" 488 + source = "registry+https://github.com/rust-lang/crates.io-index" 489 + checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" 490 + dependencies = [ 491 + "proc-macro2", 492 + "quote", 493 + "syn", 494 + ] 495 + 496 + [[package]] 497 + name = "byteorder" 498 + version = "1.5.0" 499 + source = "registry+https://github.com/rust-lang/crates.io-index" 500 + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 501 + 502 + [[package]] 503 + name = "bytesize" 504 + version = "1.3.3" 505 + source = "registry+https://github.com/rust-lang/crates.io-index" 506 + checksum = "2e93abca9e28e0a1b9877922aacb20576e05d4679ffa78c3d6dc22a26a216659" 507 + 508 + [[package]] 509 + name = "candle-core" 510 + version = "0.8.4" 511 + source = "registry+https://github.com/rust-lang/crates.io-index" 512 + checksum = "06ccf5ee3532e66868516d9b315f73aec9f34ea1a37ae98514534d458915dbf1" 513 + dependencies = [ 514 + "byteorder", 515 + "gemm 0.17.1", 516 + "half", 517 + "memmap2", 518 + "num-traits", 519 + "num_cpus", 520 + "rand", 521 + "rand_distr", 522 + "rayon", 523 + "safetensors", 524 + "thiserror 1.0.69", 525 + "ug", 526 + "yoke 0.7.5", 527 + "zip", 528 + ] 529 + 530 + [[package]] 531 + name = "cc" 532 + version = "1.2.57" 533 + source = "registry+https://github.com/rust-lang/crates.io-index" 534 + checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" 535 + dependencies = [ 536 + "find-msvc-tools", 537 + "jobserver", 538 + "libc", 539 + "shlex", 540 + ] 541 + 542 + [[package]] 543 + name = "cfg-if" 544 + version = "1.0.4" 545 + source = "registry+https://github.com/rust-lang/crates.io-index" 546 + checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" 547 + 548 + [[package]] 549 + name = "cfg_aliases" 550 + version = "0.2.1" 551 + source = "registry+https://github.com/rust-lang/crates.io-index" 552 + checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 553 + 554 + [[package]] 555 + name = "clap" 556 + version = "4.6.0" 557 + source = "registry+https://github.com/rust-lang/crates.io-index" 558 + checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" 559 + dependencies = [ 560 + "clap_builder", 561 + "clap_derive", 562 + ] 563 + 564 + [[package]] 565 + name = "clap_builder" 566 + version = "4.6.0" 567 + source = "registry+https://github.com/rust-lang/crates.io-index" 568 + checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" 569 + dependencies = [ 570 + "anstream", 571 + "anstyle", 572 + "clap_lex", 573 + "strsim", 574 + ] 575 + 576 + [[package]] 577 + name = "clap_derive" 578 + version = "4.6.0" 579 + source = "registry+https://github.com/rust-lang/crates.io-index" 580 + checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" 581 + dependencies = [ 582 + "heck", 583 + "proc-macro2", 584 + "quote", 585 + "syn", 586 + ] 587 + 588 + [[package]] 589 + name = "clap_lex" 590 + version = "1.1.0" 591 + source = "registry+https://github.com/rust-lang/crates.io-index" 592 + checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" 593 + 594 + [[package]] 595 + name = "codespan-reporting" 596 + version = "0.12.0" 597 + source = "registry+https://github.com/rust-lang/crates.io-index" 598 + checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" 599 + dependencies = [ 600 + "serde", 601 + "termcolor", 602 + "unicode-width", 603 + ] 604 + 605 + [[package]] 606 + name = "colorchoice" 607 + version = "1.0.5" 608 + source = "registry+https://github.com/rust-lang/crates.io-index" 609 + checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" 610 + 611 + [[package]] 612 + name = "colored" 613 + version = "3.1.1" 614 + source = "registry+https://github.com/rust-lang/crates.io-index" 615 + checksum = "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34" 616 + dependencies = [ 617 + "windows-sys 0.61.2", 618 + ] 619 + 620 + [[package]] 621 + name = "concurrent-queue" 622 + version = "2.5.0" 623 + source = "registry+https://github.com/rust-lang/crates.io-index" 624 + checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 625 + dependencies = [ 626 + "crossbeam-utils", 627 + ] 628 + 629 + [[package]] 630 + name = "core-foundation" 631 + version = "0.9.4" 632 + source = "registry+https://github.com/rust-lang/crates.io-index" 633 + checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 634 + dependencies = [ 635 + "core-foundation-sys", 636 + "libc", 637 + ] 638 + 639 + [[package]] 640 + name = "core-foundation-sys" 641 + version = "0.8.7" 642 + source = "registry+https://github.com/rust-lang/crates.io-index" 643 + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 644 + 645 + [[package]] 646 + name = "core-graphics-types" 647 + version = "0.1.3" 648 + source = "registry+https://github.com/rust-lang/crates.io-index" 649 + checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" 650 + dependencies = [ 651 + "bitflags 1.3.2", 652 + "core-foundation", 653 + "libc", 654 + ] 655 + 656 + [[package]] 657 + name = "crc32fast" 658 + version = "1.5.0" 659 + source = "registry+https://github.com/rust-lang/crates.io-index" 660 + checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" 661 + dependencies = [ 662 + "cfg-if", 663 + ] 664 + 665 + [[package]] 666 + name = "crossbeam-channel" 667 + version = "0.5.15" 668 + source = "registry+https://github.com/rust-lang/crates.io-index" 669 + checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" 670 + dependencies = [ 671 + "crossbeam-utils", 672 + ] 673 + 674 + [[package]] 675 + name = "crossbeam-deque" 676 + version = "0.8.6" 677 + source = "registry+https://github.com/rust-lang/crates.io-index" 678 + checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 679 + dependencies = [ 680 + "crossbeam-epoch", 681 + "crossbeam-utils", 682 + ] 683 + 684 + [[package]] 685 + name = "crossbeam-epoch" 686 + version = "0.9.18" 687 + source = "registry+https://github.com/rust-lang/crates.io-index" 688 + checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 689 + dependencies = [ 690 + "crossbeam-utils", 691 + ] 692 + 693 + [[package]] 694 + name = "crossbeam-utils" 695 + version = "0.8.21" 696 + source = "registry+https://github.com/rust-lang/crates.io-index" 697 + checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 698 + 699 + [[package]] 700 + name = "crunchy" 701 + version = "0.2.4" 702 + source = "registry+https://github.com/rust-lang/crates.io-index" 703 + checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" 704 + 705 + [[package]] 706 + name = "csv" 707 + version = "1.4.0" 708 + source = "registry+https://github.com/rust-lang/crates.io-index" 709 + checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938" 710 + dependencies = [ 711 + "csv-core", 712 + "itoa", 713 + "ryu", 714 + "serde_core", 715 + ] 716 + 717 + [[package]] 718 + name = "csv-core" 719 + version = "0.1.13" 720 + source = "registry+https://github.com/rust-lang/crates.io-index" 721 + checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782" 722 + dependencies = [ 723 + "memchr", 724 + ] 725 + 726 + [[package]] 727 + name = "cubecl" 728 + version = "0.5.0" 729 + source = "registry+https://github.com/rust-lang/crates.io-index" 730 + checksum = "b1e438056cf7c25b3adde38240b89842e1c924b8e914731c82ad81161d23e6ff" 731 + dependencies = [ 732 + "cubecl-core", 733 + "cubecl-cuda", 734 + "cubecl-hip", 735 + "cubecl-linalg", 736 + "cubecl-reduce", 737 + "cubecl-runtime", 738 + "cubecl-std", 739 + "cubecl-wgpu", 740 + "half", 741 + ] 742 + 743 + [[package]] 744 + name = "cubecl-common" 745 + version = "0.5.0" 746 + source = "registry+https://github.com/rust-lang/crates.io-index" 747 + checksum = "79251bfc7f067ac9038232fe38a317adc2f31cb2fc3800e69fd409ccac7abc1f" 748 + dependencies = [ 749 + "bytemuck", 750 + "derive-new 0.6.0", 751 + "derive_more", 752 + "dirs 5.0.1", 753 + "embassy-futures", 754 + "futures-lite", 755 + "half", 756 + "hashbrown 0.14.5", 757 + "log", 758 + "num-traits", 759 + "portable-atomic", 760 + "rand", 761 + "sanitize-filename 0.5.0", 762 + "serde", 763 + "serde_json", 764 + "spin 0.9.8", 765 + ] 766 + 767 + [[package]] 768 + name = "cubecl-core" 769 + version = "0.5.0" 770 + source = "registry+https://github.com/rust-lang/crates.io-index" 771 + checksum = "b03bf4211cdbd68bb0fb8291e0ed825c13da0d1ac01b7c02dce3cee44a6138be" 772 + dependencies = [ 773 + "bitflags 2.11.0", 774 + "bytemuck", 775 + "cubecl-common", 776 + "cubecl-ir", 777 + "cubecl-macros", 778 + "cubecl-runtime", 779 + "derive-new 0.6.0", 780 + "derive_more", 781 + "half", 782 + "hashbrown 0.14.5", 783 + "log", 784 + "num-traits", 785 + "paste", 786 + "serde", 787 + "serde_json", 788 + "variadics_please", 789 + ] 790 + 791 + [[package]] 792 + name = "cubecl-cpp" 793 + version = "0.5.0" 794 + source = "registry+https://github.com/rust-lang/crates.io-index" 795 + checksum = "a5eef85cbcc34be7e25fc9d39edf99ed68559862dbf25c1877ebdf4a9595d31b" 796 + dependencies = [ 797 + "bytemuck", 798 + "cubecl-common", 799 + "cubecl-core", 800 + "cubecl-runtime", 801 + "derive-new 0.6.0", 802 + "half", 803 + "log", 804 + ] 805 + 806 + [[package]] 807 + name = "cubecl-cuda" 808 + version = "0.5.0" 809 + source = "registry+https://github.com/rust-lang/crates.io-index" 810 + checksum = "71e091e4e3a3900faff440aec4053805ec4456f94f4acc4afe8e6b27519c6d16" 811 + dependencies = [ 812 + "bytemuck", 813 + "cubecl-common", 814 + "cubecl-core", 815 + "cubecl-cpp", 816 + "cubecl-runtime", 817 + "cudarc", 818 + "derive-new 0.6.0", 819 + "half", 820 + "log", 821 + "serde", 822 + ] 823 + 824 + [[package]] 825 + name = "cubecl-hip" 826 + version = "0.5.0" 827 + source = "registry+https://github.com/rust-lang/crates.io-index" 828 + checksum = "0c2f8c00207517de61cccdc4ca2724bc1db9dab94840beaf4329e43cead3bc4a" 829 + dependencies = [ 830 + "bytemuck", 831 + "cubecl-common", 832 + "cubecl-core", 833 + "cubecl-cpp", 834 + "cubecl-hip-sys", 835 + "cubecl-runtime", 836 + "derive-new 0.6.0", 837 + "half", 838 + "log", 839 + "paste", 840 + ] 841 + 842 + [[package]] 843 + name = "cubecl-hip-sys" 844 + version = "6.4.4348400" 845 + source = "registry+https://github.com/rust-lang/crates.io-index" 846 + checksum = "e49f4f0f2ca6942889f2f62780bee6b9629faec3a0e81f5c8dabe36f089c49f9" 847 + dependencies = [ 848 + "libc", 849 + "regex", 850 + ] 851 + 852 + [[package]] 853 + name = "cubecl-ir" 854 + version = "0.5.0" 855 + source = "registry+https://github.com/rust-lang/crates.io-index" 856 + checksum = "e096d77646590f0180ed4ce1aa7df4ecc7219f3c4616e9fe72d93ab63a352855" 857 + dependencies = [ 858 + "cubecl-common", 859 + "cubecl-macros-internal", 860 + "derive_more", 861 + "float-ord", 862 + "fnv", 863 + "half", 864 + "hashbrown 0.14.5", 865 + "num-traits", 866 + "portable-atomic", 867 + "serde", 868 + "variadics_please", 869 + ] 870 + 871 + [[package]] 872 + name = "cubecl-linalg" 873 + version = "0.5.0" 874 + source = "registry+https://github.com/rust-lang/crates.io-index" 875 + checksum = "75aacf86f6004c274e63589aed55c5edcbcdf1b292eaf4ce2c1688c04c41a194" 876 + dependencies = [ 877 + "bytemuck", 878 + "cubecl-common", 879 + "cubecl-core", 880 + "cubecl-reduce", 881 + "cubecl-runtime", 882 + "cubecl-std", 883 + "half", 884 + "serde", 885 + ] 886 + 887 + [[package]] 888 + name = "cubecl-macros" 889 + version = "0.5.0" 890 + source = "registry+https://github.com/rust-lang/crates.io-index" 891 + checksum = "cd74622b5c8cb161e3f7fa0b2b751784ef89ab45acfa355f511eb2219dde337e" 892 + dependencies = [ 893 + "cubecl-common", 894 + "darling", 895 + "derive-new 0.6.0", 896 + "ident_case", 897 + "prettyplease", 898 + "proc-macro2", 899 + "quote", 900 + "syn", 901 + ] 902 + 903 + [[package]] 904 + name = "cubecl-macros-internal" 905 + version = "0.5.0" 906 + source = "registry+https://github.com/rust-lang/crates.io-index" 907 + checksum = "6a89898212c1eaba0e2f0dffcadc9790b20b75d2ec8836da084370b043be2623" 908 + dependencies = [ 909 + "darling", 910 + "proc-macro2", 911 + "quote", 912 + "syn", 913 + ] 914 + 915 + [[package]] 916 + name = "cubecl-reduce" 917 + version = "0.5.0" 918 + source = "registry+https://github.com/rust-lang/crates.io-index" 919 + checksum = "7afbdfe03e7e3ca71f61890ebebc6b4390494204b545e6f6bf51a43755449073" 920 + dependencies = [ 921 + "cubecl-core", 922 + "cubecl-runtime", 923 + "cubecl-std", 924 + "num-traits", 925 + "serde", 926 + ] 927 + 928 + [[package]] 929 + name = "cubecl-runtime" 930 + version = "0.5.0" 931 + source = "registry+https://github.com/rust-lang/crates.io-index" 932 + checksum = "385234520c9e392382737f32ad372b05f345656eb798ba00b72d2722c68b698c" 933 + dependencies = [ 934 + "async-channel", 935 + "bytemuck", 936 + "cfg-if", 937 + "cfg_aliases", 938 + "cubecl-common", 939 + "cubecl-ir", 940 + "derive-new 0.6.0", 941 + "hashbrown 0.14.5", 942 + "log", 943 + "md5", 944 + "serde", 945 + "serde_json", 946 + "spin 0.9.8", 947 + "variadics_please", 948 + "wasm-bindgen-futures", 949 + ] 950 + 951 + [[package]] 952 + name = "cubecl-std" 953 + version = "0.5.0" 954 + source = "registry+https://github.com/rust-lang/crates.io-index" 955 + checksum = "38868eea6fdc183feb3c46bcf5e666c78e6cf0ddca2c4f3a877785cc0eabd71e" 956 + dependencies = [ 957 + "cubecl-core", 958 + "cubecl-runtime", 959 + "half", 960 + "serde", 961 + ] 962 + 963 + [[package]] 964 + name = "cubecl-wgpu" 965 + version = "0.5.0" 966 + source = "registry+https://github.com/rust-lang/crates.io-index" 967 + checksum = "77fa2dcfaa6d75cfbc5ff05cafe99ec4a7fb7c0fa7197917e0fd20f5b90979fe" 968 + dependencies = [ 969 + "async-channel", 970 + "bytemuck", 971 + "cfg-if", 972 + "cfg_aliases", 973 + "cubecl-common", 974 + "cubecl-core", 975 + "cubecl-runtime", 976 + "derive-new 0.6.0", 977 + "derive_more", 978 + "hashbrown 0.14.5", 979 + "log", 980 + "web-time", 981 + "wgpu", 982 + ] 983 + 984 + [[package]] 985 + name = "cudarc" 986 + version = "0.13.9" 987 + source = "registry+https://github.com/rust-lang/crates.io-index" 988 + checksum = "486c221362668c63a1636cfa51463b09574433b39029326cff40864b3ba12b6e" 989 + dependencies = [ 990 + "libloading", 991 + ] 992 + 993 + [[package]] 994 + name = "darling" 995 + version = "0.20.11" 996 + source = "registry+https://github.com/rust-lang/crates.io-index" 997 + checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" 998 + dependencies = [ 999 + "darling_core", 1000 + "darling_macro", 1001 + ] 1002 + 1003 + [[package]] 1004 + name = "darling_core" 1005 + version = "0.20.11" 1006 + source = "registry+https://github.com/rust-lang/crates.io-index" 1007 + checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" 1008 + dependencies = [ 1009 + "fnv", 1010 + "ident_case", 1011 + "proc-macro2", 1012 + "quote", 1013 + "strsim", 1014 + "syn", 1015 + ] 1016 + 1017 + [[package]] 1018 + name = "darling_macro" 1019 + version = "0.20.11" 1020 + source = "registry+https://github.com/rust-lang/crates.io-index" 1021 + checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" 1022 + dependencies = [ 1023 + "darling_core", 1024 + "quote", 1025 + "syn", 1026 + ] 1027 + 1028 + [[package]] 1029 + name = "data-encoding" 1030 + version = "2.10.0" 1031 + source = "registry+https://github.com/rust-lang/crates.io-index" 1032 + checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" 1033 + 1034 + [[package]] 1035 + name = "deranged" 1036 + version = "0.5.8" 1037 + source = "registry+https://github.com/rust-lang/crates.io-index" 1038 + checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" 1039 + dependencies = [ 1040 + "powerfmt", 1041 + ] 1042 + 1043 + [[package]] 1044 + name = "derive-new" 1045 + version = "0.6.0" 1046 + source = "registry+https://github.com/rust-lang/crates.io-index" 1047 + checksum = "d150dea618e920167e5973d70ae6ece4385b7164e0d799fe7c122dd0a5d912ad" 1048 + dependencies = [ 1049 + "proc-macro2", 1050 + "quote", 1051 + "syn", 1052 + ] 1053 + 1054 + [[package]] 1055 + name = "derive-new" 1056 + version = "0.7.0" 1057 + source = "registry+https://github.com/rust-lang/crates.io-index" 1058 + checksum = "2cdc8d50f426189eef89dac62fabfa0abb27d5cc008f25bf4156a0203325becc" 1059 + dependencies = [ 1060 + "proc-macro2", 1061 + "quote", 1062 + "syn", 1063 + ] 1064 + 1065 + [[package]] 1066 + name = "derive_arbitrary" 1067 + version = "1.4.2" 1068 + source = "registry+https://github.com/rust-lang/crates.io-index" 1069 + checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" 1070 + dependencies = [ 1071 + "proc-macro2", 1072 + "quote", 1073 + "syn", 1074 + ] 1075 + 1076 + [[package]] 1077 + name = "derive_more" 1078 + version = "1.0.0" 1079 + source = "registry+https://github.com/rust-lang/crates.io-index" 1080 + checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" 1081 + dependencies = [ 1082 + "derive_more-impl", 1083 + ] 1084 + 1085 + [[package]] 1086 + name = "derive_more-impl" 1087 + version = "1.0.0" 1088 + source = "registry+https://github.com/rust-lang/crates.io-index" 1089 + checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" 1090 + dependencies = [ 1091 + "proc-macro2", 1092 + "quote", 1093 + "syn", 1094 + "unicode-xid", 1095 + ] 1096 + 1097 + [[package]] 1098 + name = "dirs" 1099 + version = "5.0.1" 1100 + source = "registry+https://github.com/rust-lang/crates.io-index" 1101 + checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" 1102 + dependencies = [ 1103 + "dirs-sys 0.4.1", 1104 + ] 1105 + 1106 + [[package]] 1107 + name = "dirs" 1108 + version = "6.0.0" 1109 + source = "registry+https://github.com/rust-lang/crates.io-index" 1110 + checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" 1111 + dependencies = [ 1112 + "dirs-sys 0.5.0", 1113 + ] 1114 + 1115 + [[package]] 1116 + name = "dirs-sys" 1117 + version = "0.4.1" 1118 + source = "registry+https://github.com/rust-lang/crates.io-index" 1119 + checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" 1120 + dependencies = [ 1121 + "libc", 1122 + "option-ext", 1123 + "redox_users 0.4.6", 1124 + "windows-sys 0.48.0", 1125 + ] 1126 + 1127 + [[package]] 1128 + name = "dirs-sys" 1129 + version = "0.5.0" 1130 + source = "registry+https://github.com/rust-lang/crates.io-index" 1131 + checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" 1132 + dependencies = [ 1133 + "libc", 1134 + "option-ext", 1135 + "redox_users 0.5.2", 1136 + "windows-sys 0.61.2", 1137 + ] 1138 + 1139 + [[package]] 1140 + name = "displaydoc" 1141 + version = "0.2.5" 1142 + source = "registry+https://github.com/rust-lang/crates.io-index" 1143 + checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 1144 + dependencies = [ 1145 + "proc-macro2", 1146 + "quote", 1147 + "syn", 1148 + ] 1149 + 1150 + [[package]] 1151 + name = "document-features" 1152 + version = "0.2.12" 1153 + source = "registry+https://github.com/rust-lang/crates.io-index" 1154 + checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" 1155 + dependencies = [ 1156 + "litrs", 1157 + ] 1158 + 1159 + [[package]] 1160 + name = "dyn-stack" 1161 + version = "0.10.0" 1162 + source = "registry+https://github.com/rust-lang/crates.io-index" 1163 + checksum = "56e53799688f5632f364f8fb387488dd05db9fe45db7011be066fc20e7027f8b" 1164 + dependencies = [ 1165 + "bytemuck", 1166 + "reborrow", 1167 + ] 1168 + 1169 + [[package]] 1170 + name = "dyn-stack" 1171 + version = "0.13.2" 1172 + source = "registry+https://github.com/rust-lang/crates.io-index" 1173 + checksum = "1c4713e43e2886ba72b8271aa66c93d722116acf7a75555cce11dcde84388fe8" 1174 + dependencies = [ 1175 + "bytemuck", 1176 + "dyn-stack-macros", 1177 + ] 1178 + 1179 + [[package]] 1180 + name = "dyn-stack-macros" 1181 + version = "0.1.3" 1182 + source = "registry+https://github.com/rust-lang/crates.io-index" 1183 + checksum = "e1d926b4d407d372f141f93bb444696142c29d32962ccbd3531117cf3aa0bfa9" 1184 + 1185 + [[package]] 1186 + name = "ecow" 1187 + version = "0.2.6" 1188 + source = "registry+https://github.com/rust-lang/crates.io-index" 1189 + checksum = "78e4f79b296fbaab6ce2e22d52cb4c7f010fe0ebe7a32e34fa25885fd797bd02" 1190 + dependencies = [ 1191 + "serde", 1192 + ] 1193 + 1194 + [[package]] 1195 + name = "either" 1196 + version = "1.15.0" 1197 + source = "registry+https://github.com/rust-lang/crates.io-index" 1198 + checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 1199 + 1200 + [[package]] 1201 + name = "embassy-futures" 1202 + version = "0.1.2" 1203 + source = "registry+https://github.com/rust-lang/crates.io-index" 1204 + checksum = "dc2d050bdc5c21e0862a89256ed8029ae6c290a93aecefc73084b3002cdebb01" 1205 + 1206 + [[package]] 1207 + name = "enum-as-inner" 1208 + version = "0.6.1" 1209 + source = "registry+https://github.com/rust-lang/crates.io-index" 1210 + checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" 1211 + dependencies = [ 1212 + "heck", 1213 + "proc-macro2", 1214 + "quote", 1215 + "syn", 1216 + ] 1217 + 1218 + [[package]] 1219 + name = "equivalent" 1220 + version = "1.0.2" 1221 + source = "registry+https://github.com/rust-lang/crates.io-index" 1222 + checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 1223 + 1224 + [[package]] 1225 + name = "errno" 1226 + version = "0.3.14" 1227 + source = "registry+https://github.com/rust-lang/crates.io-index" 1228 + checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" 1229 + dependencies = [ 1230 + "libc", 1231 + "windows-sys 0.61.2", 1232 + ] 1233 + 1234 + [[package]] 1235 + name = "event-listener" 1236 + version = "5.4.1" 1237 + source = "registry+https://github.com/rust-lang/crates.io-index" 1238 + checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" 1239 + dependencies = [ 1240 + "concurrent-queue", 1241 + "parking", 1242 + "pin-project-lite", 1243 + ] 1244 + 1245 + [[package]] 1246 + name = "event-listener-strategy" 1247 + version = "0.5.4" 1248 + source = "registry+https://github.com/rust-lang/crates.io-index" 1249 + checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" 1250 + dependencies = [ 1251 + "event-listener", 1252 + "pin-project-lite", 1253 + ] 1254 + 1255 + [[package]] 1256 + name = "fastrand" 1257 + version = "2.3.0" 1258 + source = "registry+https://github.com/rust-lang/crates.io-index" 1259 + checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 1260 + 1261 + [[package]] 1262 + name = "find-msvc-tools" 1263 + version = "0.1.9" 1264 + source = "registry+https://github.com/rust-lang/crates.io-index" 1265 + checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" 1266 + 1267 + [[package]] 1268 + name = "flate2" 1269 + version = "1.1.9" 1270 + source = "registry+https://github.com/rust-lang/crates.io-index" 1271 + checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" 1272 + dependencies = [ 1273 + "crc32fast", 1274 + "miniz_oxide", 1275 + ] 1276 + 1277 + [[package]] 1278 + name = "float-ord" 1279 + version = "0.3.2" 1280 + source = "registry+https://github.com/rust-lang/crates.io-index" 1281 + checksum = "8ce81f49ae8a0482e4c55ea62ebbd7e5a686af544c00b9d090bba3ff9be97b3d" 1282 + 1283 + [[package]] 1284 + name = "fnv" 1285 + version = "1.0.7" 1286 + source = "registry+https://github.com/rust-lang/crates.io-index" 1287 + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1288 + 1289 + [[package]] 1290 + name = "foldhash" 1291 + version = "0.1.5" 1292 + source = "registry+https://github.com/rust-lang/crates.io-index" 1293 + checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 1294 + 1295 + [[package]] 1296 + name = "foreign-types" 1297 + version = "0.5.0" 1298 + source = "registry+https://github.com/rust-lang/crates.io-index" 1299 + checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" 1300 + dependencies = [ 1301 + "foreign-types-macros", 1302 + "foreign-types-shared", 1303 + ] 1304 + 1305 + [[package]] 1306 + name = "foreign-types-macros" 1307 + version = "0.2.3" 1308 + source = "registry+https://github.com/rust-lang/crates.io-index" 1309 + checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" 1310 + dependencies = [ 1311 + "proc-macro2", 1312 + "quote", 1313 + "syn", 1314 + ] 1315 + 1316 + [[package]] 1317 + name = "foreign-types-shared" 1318 + version = "0.3.1" 1319 + source = "registry+https://github.com/rust-lang/crates.io-index" 1320 + checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 1321 + 1322 + [[package]] 1323 + name = "form_urlencoded" 1324 + version = "1.2.2" 1325 + source = "registry+https://github.com/rust-lang/crates.io-index" 1326 + checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 1327 + dependencies = [ 1328 + "percent-encoding", 1329 + ] 1330 + 1331 + [[package]] 1332 + name = "fsrs" 1333 + version = "5.2.0" 1334 + source = "registry+https://github.com/rust-lang/crates.io-index" 1335 + checksum = "cab5f80c16d1d07e492a6828478ecb9f379f142ba6f19fa3b7955edd180ddc2e" 1336 + dependencies = [ 1337 + "burn", 1338 + "itertools", 1339 + "log", 1340 + "ndarray", 1341 + "priority-queue", 1342 + "rand", 1343 + "rayon", 1344 + "serde", 1345 + "snafu", 1346 + "strum 0.27.2", 1347 + ] 1348 + 1349 + [[package]] 1350 + name = "futures-core" 1351 + version = "0.3.32" 1352 + source = "registry+https://github.com/rust-lang/crates.io-index" 1353 + checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" 1354 + 1355 + [[package]] 1356 + name = "futures-io" 1357 + version = "0.3.32" 1358 + source = "registry+https://github.com/rust-lang/crates.io-index" 1359 + checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" 1360 + 1361 + [[package]] 1362 + name = "futures-lite" 1363 + version = "2.6.1" 1364 + source = "registry+https://github.com/rust-lang/crates.io-index" 1365 + checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" 1366 + dependencies = [ 1367 + "fastrand", 1368 + "futures-core", 1369 + "futures-io", 1370 + "parking", 1371 + "pin-project-lite", 1372 + ] 1373 + 1374 + [[package]] 1375 + name = "futures-macro" 1376 + version = "0.3.32" 1377 + source = "registry+https://github.com/rust-lang/crates.io-index" 1378 + checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" 1379 + dependencies = [ 1380 + "proc-macro2", 1381 + "quote", 1382 + "syn", 1383 + ] 1384 + 1385 + [[package]] 1386 + name = "futures-task" 1387 + version = "0.3.32" 1388 + source = "registry+https://github.com/rust-lang/crates.io-index" 1389 + checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" 1390 + 1391 + [[package]] 1392 + name = "futures-timer" 1393 + version = "3.0.3" 1394 + source = "registry+https://github.com/rust-lang/crates.io-index" 1395 + checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" 1396 + 1397 + [[package]] 1398 + name = "futures-util" 1399 + version = "0.3.32" 1400 + source = "registry+https://github.com/rust-lang/crates.io-index" 1401 + checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" 1402 + dependencies = [ 1403 + "futures-core", 1404 + "futures-macro", 1405 + "futures-task", 1406 + "pin-project-lite", 1407 + "slab", 1408 + ] 1409 + 1410 + [[package]] 1411 + name = "gemm" 1412 + version = "0.17.1" 1413 + source = "registry+https://github.com/rust-lang/crates.io-index" 1414 + checksum = "6ab24cc62135b40090e31a76a9b2766a501979f3070fa27f689c27ec04377d32" 1415 + dependencies = [ 1416 + "dyn-stack 0.10.0", 1417 + "gemm-c32 0.17.1", 1418 + "gemm-c64 0.17.1", 1419 + "gemm-common 0.17.1", 1420 + "gemm-f16 0.17.1", 1421 + "gemm-f32 0.17.1", 1422 + "gemm-f64 0.17.1", 1423 + "num-complex", 1424 + "num-traits", 1425 + "paste", 1426 + "raw-cpuid 10.7.0", 1427 + "seq-macro", 1428 + ] 1429 + 1430 + [[package]] 1431 + name = "gemm" 1432 + version = "0.18.2" 1433 + source = "registry+https://github.com/rust-lang/crates.io-index" 1434 + checksum = "ab96b703d31950f1aeddded248bc95543c9efc7ac9c4a21fda8703a83ee35451" 1435 + dependencies = [ 1436 + "dyn-stack 0.13.2", 1437 + "gemm-c32 0.18.2", 1438 + "gemm-c64 0.18.2", 1439 + "gemm-common 0.18.2", 1440 + "gemm-f16 0.18.2", 1441 + "gemm-f32 0.18.2", 1442 + "gemm-f64 0.18.2", 1443 + "num-complex", 1444 + "num-traits", 1445 + "paste", 1446 + "raw-cpuid 11.6.0", 1447 + "seq-macro", 1448 + ] 1449 + 1450 + [[package]] 1451 + name = "gemm-c32" 1452 + version = "0.17.1" 1453 + source = "registry+https://github.com/rust-lang/crates.io-index" 1454 + checksum = "b9c030d0b983d1e34a546b86e08f600c11696fde16199f971cd46c12e67512c0" 1455 + dependencies = [ 1456 + "dyn-stack 0.10.0", 1457 + "gemm-common 0.17.1", 1458 + "num-complex", 1459 + "num-traits", 1460 + "paste", 1461 + "raw-cpuid 10.7.0", 1462 + "seq-macro", 1463 + ] 1464 + 1465 + [[package]] 1466 + name = "gemm-c32" 1467 + version = "0.18.2" 1468 + source = "registry+https://github.com/rust-lang/crates.io-index" 1469 + checksum = "f6db9fd9f40421d00eea9dd0770045a5603b8d684654816637732463f4073847" 1470 + dependencies = [ 1471 + "dyn-stack 0.13.2", 1472 + "gemm-common 0.18.2", 1473 + "num-complex", 1474 + "num-traits", 1475 + "paste", 1476 + "raw-cpuid 11.6.0", 1477 + "seq-macro", 1478 + ] 1479 + 1480 + [[package]] 1481 + name = "gemm-c64" 1482 + version = "0.17.1" 1483 + source = "registry+https://github.com/rust-lang/crates.io-index" 1484 + checksum = "fbb5f2e79fefb9693d18e1066a557b4546cd334b226beadc68b11a8f9431852a" 1485 + dependencies = [ 1486 + "dyn-stack 0.10.0", 1487 + "gemm-common 0.17.1", 1488 + "num-complex", 1489 + "num-traits", 1490 + "paste", 1491 + "raw-cpuid 10.7.0", 1492 + "seq-macro", 1493 + ] 1494 + 1495 + [[package]] 1496 + name = "gemm-c64" 1497 + version = "0.18.2" 1498 + source = "registry+https://github.com/rust-lang/crates.io-index" 1499 + checksum = "dfcad8a3d35a43758330b635d02edad980c1e143dc2f21e6fd25f9e4eada8edf" 1500 + dependencies = [ 1501 + "dyn-stack 0.13.2", 1502 + "gemm-common 0.18.2", 1503 + "num-complex", 1504 + "num-traits", 1505 + "paste", 1506 + "raw-cpuid 11.6.0", 1507 + "seq-macro", 1508 + ] 1509 + 1510 + [[package]] 1511 + name = "gemm-common" 1512 + version = "0.17.1" 1513 + source = "registry+https://github.com/rust-lang/crates.io-index" 1514 + checksum = "a2e7ea062c987abcd8db95db917b4ffb4ecdfd0668471d8dc54734fdff2354e8" 1515 + dependencies = [ 1516 + "bytemuck", 1517 + "dyn-stack 0.10.0", 1518 + "half", 1519 + "num-complex", 1520 + "num-traits", 1521 + "once_cell", 1522 + "paste", 1523 + "pulp 0.18.22", 1524 + "raw-cpuid 10.7.0", 1525 + "rayon", 1526 + "seq-macro", 1527 + "sysctl 0.5.5", 1528 + ] 1529 + 1530 + [[package]] 1531 + name = "gemm-common" 1532 + version = "0.18.2" 1533 + source = "registry+https://github.com/rust-lang/crates.io-index" 1534 + checksum = "a352d4a69cbe938b9e2a9cb7a3a63b7e72f9349174a2752a558a8a563510d0f3" 1535 + dependencies = [ 1536 + "bytemuck", 1537 + "dyn-stack 0.13.2", 1538 + "half", 1539 + "libm", 1540 + "num-complex", 1541 + "num-traits", 1542 + "once_cell", 1543 + "paste", 1544 + "pulp 0.21.5", 1545 + "raw-cpuid 11.6.0", 1546 + "rayon", 1547 + "seq-macro", 1548 + "sysctl 0.6.0", 1549 + ] 1550 + 1551 + [[package]] 1552 + name = "gemm-f16" 1553 + version = "0.17.1" 1554 + source = "registry+https://github.com/rust-lang/crates.io-index" 1555 + checksum = "7ca4c06b9b11952071d317604acb332e924e817bd891bec8dfb494168c7cedd4" 1556 + dependencies = [ 1557 + "dyn-stack 0.10.0", 1558 + "gemm-common 0.17.1", 1559 + "gemm-f32 0.17.1", 1560 + "half", 1561 + "num-complex", 1562 + "num-traits", 1563 + "paste", 1564 + "raw-cpuid 10.7.0", 1565 + "rayon", 1566 + "seq-macro", 1567 + ] 1568 + 1569 + [[package]] 1570 + name = "gemm-f16" 1571 + version = "0.18.2" 1572 + source = "registry+https://github.com/rust-lang/crates.io-index" 1573 + checksum = "cff95ae3259432f3c3410eaa919033cd03791d81cebd18018393dc147952e109" 1574 + dependencies = [ 1575 + "dyn-stack 0.13.2", 1576 + "gemm-common 0.18.2", 1577 + "gemm-f32 0.18.2", 1578 + "half", 1579 + "num-complex", 1580 + "num-traits", 1581 + "paste", 1582 + "raw-cpuid 11.6.0", 1583 + "rayon", 1584 + "seq-macro", 1585 + ] 1586 + 1587 + [[package]] 1588 + name = "gemm-f32" 1589 + version = "0.17.1" 1590 + source = "registry+https://github.com/rust-lang/crates.io-index" 1591 + checksum = "e9a69f51aaefbd9cf12d18faf273d3e982d9d711f60775645ed5c8047b4ae113" 1592 + dependencies = [ 1593 + "dyn-stack 0.10.0", 1594 + "gemm-common 0.17.1", 1595 + "num-complex", 1596 + "num-traits", 1597 + "paste", 1598 + "raw-cpuid 10.7.0", 1599 + "seq-macro", 1600 + ] 1601 + 1602 + [[package]] 1603 + name = "gemm-f32" 1604 + version = "0.18.2" 1605 + source = "registry+https://github.com/rust-lang/crates.io-index" 1606 + checksum = "bc8d3d4385393304f407392f754cd2dc4b315d05063f62cf09f47b58de276864" 1607 + dependencies = [ 1608 + "dyn-stack 0.13.2", 1609 + "gemm-common 0.18.2", 1610 + "num-complex", 1611 + "num-traits", 1612 + "paste", 1613 + "raw-cpuid 11.6.0", 1614 + "seq-macro", 1615 + ] 1616 + 1617 + [[package]] 1618 + name = "gemm-f64" 1619 + version = "0.17.1" 1620 + source = "registry+https://github.com/rust-lang/crates.io-index" 1621 + checksum = "aa397a48544fadf0b81ec8741e5c0fba0043008113f71f2034def1935645d2b0" 1622 + dependencies = [ 1623 + "dyn-stack 0.10.0", 1624 + "gemm-common 0.17.1", 1625 + "num-complex", 1626 + "num-traits", 1627 + "paste", 1628 + "raw-cpuid 10.7.0", 1629 + "seq-macro", 1630 + ] 1631 + 1632 + [[package]] 1633 + name = "gemm-f64" 1634 + version = "0.18.2" 1635 + source = "registry+https://github.com/rust-lang/crates.io-index" 1636 + checksum = "35b2a4f76ce4b8b16eadc11ccf2e083252d8237c1b589558a49b0183545015bd" 1637 + dependencies = [ 1638 + "dyn-stack 0.13.2", 1639 + "gemm-common 0.18.2", 1640 + "num-complex", 1641 + "num-traits", 1642 + "paste", 1643 + "raw-cpuid 11.6.0", 1644 + "seq-macro", 1645 + ] 1646 + 1647 + [[package]] 1648 + name = "getrandom" 1649 + version = "0.2.17" 1650 + source = "registry+https://github.com/rust-lang/crates.io-index" 1651 + checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" 1652 + dependencies = [ 1653 + "cfg-if", 1654 + "libc", 1655 + "wasi", 1656 + ] 1657 + 1658 + [[package]] 1659 + name = "getrandom" 1660 + version = "0.3.4" 1661 + source = "registry+https://github.com/rust-lang/crates.io-index" 1662 + checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" 1663 + dependencies = [ 1664 + "cfg-if", 1665 + "libc", 1666 + "r-efi 5.3.0", 1667 + "wasip2", 1668 + ] 1669 + 1670 + [[package]] 1671 + name = "getrandom" 1672 + version = "0.4.2" 1673 + source = "registry+https://github.com/rust-lang/crates.io-index" 1674 + checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" 1675 + dependencies = [ 1676 + "cfg-if", 1677 + "libc", 1678 + "r-efi 6.0.0", 1679 + "wasip2", 1680 + "wasip3", 1681 + ] 1682 + 1683 + [[package]] 1684 + name = "git2" 1685 + version = "0.20.4" 1686 + source = "registry+https://github.com/rust-lang/crates.io-index" 1687 + checksum = "7b88256088d75a56f8ecfa070513a775dd9107f6530ef14919dac831af9cfe2b" 1688 + dependencies = [ 1689 + "bitflags 2.11.0", 1690 + "libc", 1691 + "libgit2-sys", 1692 + "log", 1693 + "openssl-probe", 1694 + "openssl-sys", 1695 + "url", 1696 + ] 1697 + 1698 + [[package]] 1699 + name = "gl_generator" 1700 + version = "0.14.0" 1701 + source = "registry+https://github.com/rust-lang/crates.io-index" 1702 + checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" 1703 + dependencies = [ 1704 + "khronos_api", 1705 + "log", 1706 + "xml-rs", 1707 + ] 1708 + 1709 + [[package]] 1710 + name = "glob" 1711 + version = "0.3.3" 1712 + source = "registry+https://github.com/rust-lang/crates.io-index" 1713 + checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" 1714 + 1715 + [[package]] 1716 + name = "glow" 1717 + version = "0.16.0" 1718 + source = "registry+https://github.com/rust-lang/crates.io-index" 1719 + checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" 1720 + dependencies = [ 1721 + "js-sys", 1722 + "slotmap", 1723 + "wasm-bindgen", 1724 + "web-sys", 1725 + ] 1726 + 1727 + [[package]] 1728 + name = "glutin_wgl_sys" 1729 + version = "0.6.1" 1730 + source = "registry+https://github.com/rust-lang/crates.io-index" 1731 + checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" 1732 + dependencies = [ 1733 + "gl_generator", 1734 + ] 1735 + 1736 + [[package]] 1737 + name = "gpu-alloc" 1738 + version = "0.6.0" 1739 + source = "registry+https://github.com/rust-lang/crates.io-index" 1740 + checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" 1741 + dependencies = [ 1742 + "bitflags 2.11.0", 1743 + "gpu-alloc-types", 1744 + ] 1745 + 1746 + [[package]] 1747 + name = "gpu-alloc-types" 1748 + version = "0.3.0" 1749 + source = "registry+https://github.com/rust-lang/crates.io-index" 1750 + checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" 1751 + dependencies = [ 1752 + "bitflags 2.11.0", 1753 + ] 1754 + 1755 + [[package]] 1756 + name = "gpu-allocator" 1757 + version = "0.27.0" 1758 + source = "registry+https://github.com/rust-lang/crates.io-index" 1759 + checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" 1760 + dependencies = [ 1761 + "log", 1762 + "presser", 1763 + "thiserror 1.0.69", 1764 + "windows 0.58.0", 1765 + ] 1766 + 1767 + [[package]] 1768 + name = "gpu-descriptor" 1769 + version = "0.3.2" 1770 + source = "registry+https://github.com/rust-lang/crates.io-index" 1771 + checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" 1772 + dependencies = [ 1773 + "bitflags 2.11.0", 1774 + "gpu-descriptor-types", 1775 + "hashbrown 0.15.5", 1776 + ] 1777 + 1778 + [[package]] 1779 + name = "gpu-descriptor-types" 1780 + version = "0.2.0" 1781 + source = "registry+https://github.com/rust-lang/crates.io-index" 1782 + checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" 1783 + dependencies = [ 1784 + "bitflags 2.11.0", 1785 + ] 1786 + 1787 + [[package]] 1788 + name = "half" 1789 + version = "2.7.1" 1790 + source = "registry+https://github.com/rust-lang/crates.io-index" 1791 + checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" 1792 + dependencies = [ 1793 + "bytemuck", 1794 + "cfg-if", 1795 + "crunchy", 1796 + "num-traits", 1797 + "rand", 1798 + "rand_distr", 1799 + "serde", 1800 + "zerocopy", 1801 + ] 1802 + 1803 + [[package]] 1804 + name = "hashbrown" 1805 + version = "0.13.2" 1806 + source = "registry+https://github.com/rust-lang/crates.io-index" 1807 + checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" 1808 + dependencies = [ 1809 + "ahash", 1810 + ] 1811 + 1812 + [[package]] 1813 + name = "hashbrown" 1814 + version = "0.14.5" 1815 + source = "registry+https://github.com/rust-lang/crates.io-index" 1816 + checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1817 + dependencies = [ 1818 + "ahash", 1819 + "allocator-api2", 1820 + "serde", 1821 + ] 1822 + 1823 + [[package]] 1824 + name = "hashbrown" 1825 + version = "0.15.5" 1826 + source = "registry+https://github.com/rust-lang/crates.io-index" 1827 + checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" 1828 + dependencies = [ 1829 + "allocator-api2", 1830 + "equivalent", 1831 + "foldhash", 1832 + "serde", 1833 + ] 1834 + 1835 + [[package]] 1836 + name = "hashbrown" 1837 + version = "0.16.1" 1838 + source = "registry+https://github.com/rust-lang/crates.io-index" 1839 + checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" 1840 + 1841 + [[package]] 1842 + name = "heck" 1843 + version = "0.5.0" 1844 + source = "registry+https://github.com/rust-lang/crates.io-index" 1845 + checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 1846 + 1847 + [[package]] 1848 + name = "hermit-abi" 1849 + version = "0.5.2" 1850 + source = "registry+https://github.com/rust-lang/crates.io-index" 1851 + checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" 1852 + 1853 + [[package]] 1854 + name = "hexf-parse" 1855 + version = "0.2.1" 1856 + source = "registry+https://github.com/rust-lang/crates.io-index" 1857 + checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" 1858 + 1859 + [[package]] 1860 + name = "icu_collections" 1861 + version = "2.1.1" 1862 + source = "registry+https://github.com/rust-lang/crates.io-index" 1863 + checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" 1864 + dependencies = [ 1865 + "displaydoc", 1866 + "potential_utf", 1867 + "yoke 0.8.1", 1868 + "zerofrom", 1869 + "zerovec", 1870 + ] 1871 + 1872 + [[package]] 1873 + name = "icu_locale_core" 1874 + version = "2.1.1" 1875 + source = "registry+https://github.com/rust-lang/crates.io-index" 1876 + checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" 1877 + dependencies = [ 1878 + "displaydoc", 1879 + "litemap", 1880 + "tinystr", 1881 + "writeable", 1882 + "zerovec", 1883 + ] 1884 + 1885 + [[package]] 1886 + name = "icu_normalizer" 1887 + version = "2.1.1" 1888 + source = "registry+https://github.com/rust-lang/crates.io-index" 1889 + checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" 1890 + dependencies = [ 1891 + "icu_collections", 1892 + "icu_normalizer_data", 1893 + "icu_properties", 1894 + "icu_provider", 1895 + "smallvec", 1896 + "zerovec", 1897 + ] 1898 + 1899 + [[package]] 1900 + name = "icu_normalizer_data" 1901 + version = "2.1.1" 1902 + source = "registry+https://github.com/rust-lang/crates.io-index" 1903 + checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" 1904 + 1905 + [[package]] 1906 + name = "icu_properties" 1907 + version = "2.1.2" 1908 + source = "registry+https://github.com/rust-lang/crates.io-index" 1909 + checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" 1910 + dependencies = [ 1911 + "icu_collections", 1912 + "icu_locale_core", 1913 + "icu_properties_data", 1914 + "icu_provider", 1915 + "zerotrie", 1916 + "zerovec", 1917 + ] 1918 + 1919 + [[package]] 1920 + name = "icu_properties_data" 1921 + version = "2.1.2" 1922 + source = "registry+https://github.com/rust-lang/crates.io-index" 1923 + checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" 1924 + 1925 + [[package]] 1926 + name = "icu_provider" 1927 + version = "2.1.1" 1928 + source = "registry+https://github.com/rust-lang/crates.io-index" 1929 + checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" 1930 + dependencies = [ 1931 + "displaydoc", 1932 + "icu_locale_core", 1933 + "writeable", 1934 + "yoke 0.8.1", 1935 + "zerofrom", 1936 + "zerotrie", 1937 + "zerovec", 1938 + ] 1939 + 1940 + [[package]] 1941 + name = "id-arena" 1942 + version = "2.3.0" 1943 + source = "registry+https://github.com/rust-lang/crates.io-index" 1944 + checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" 1945 + 1946 + [[package]] 1947 + name = "ident_case" 1948 + version = "1.0.1" 1949 + source = "registry+https://github.com/rust-lang/crates.io-index" 1950 + checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1951 + 1952 + [[package]] 1953 + name = "idna" 1954 + version = "1.1.0" 1955 + source = "registry+https://github.com/rust-lang/crates.io-index" 1956 + checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 1957 + dependencies = [ 1958 + "idna_adapter", 1959 + "smallvec", 1960 + "utf8_iter", 1961 + ] 1962 + 1963 + [[package]] 1964 + name = "idna_adapter" 1965 + version = "1.2.1" 1966 + source = "registry+https://github.com/rust-lang/crates.io-index" 1967 + checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 1968 + dependencies = [ 1969 + "icu_normalizer", 1970 + "icu_properties", 1971 + ] 1972 + 1973 + [[package]] 1974 + name = "indexmap" 1975 + version = "2.13.0" 1976 + source = "registry+https://github.com/rust-lang/crates.io-index" 1977 + checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" 1978 + dependencies = [ 1979 + "equivalent", 1980 + "hashbrown 0.16.1", 1981 + "serde", 1982 + "serde_core", 1983 + ] 1984 + 1985 + [[package]] 1986 + name = "is_terminal_polyfill" 1987 + version = "1.70.2" 1988 + source = "registry+https://github.com/rust-lang/crates.io-index" 1989 + checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" 1990 + 1991 + [[package]] 1992 + name = "itertools" 1993 + version = "0.14.0" 1994 + source = "registry+https://github.com/rust-lang/crates.io-index" 1995 + checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 1996 + dependencies = [ 1997 + "either", 1998 + ] 1999 + 2000 + [[package]] 2001 + name = "itoa" 2002 + version = "1.0.17" 2003 + source = "registry+https://github.com/rust-lang/crates.io-index" 2004 + checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" 2005 + 2006 + [[package]] 2007 + name = "jni-sys" 2008 + version = "0.3.0" 2009 + source = "registry+https://github.com/rust-lang/crates.io-index" 2010 + checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 2011 + 2012 + [[package]] 2013 + name = "jobserver" 2014 + version = "0.1.34" 2015 + source = "registry+https://github.com/rust-lang/crates.io-index" 2016 + checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" 2017 + dependencies = [ 2018 + "getrandom 0.3.4", 2019 + "libc", 2020 + ] 2021 + 2022 + [[package]] 2023 + name = "js-sys" 2024 + version = "0.3.91" 2025 + source = "registry+https://github.com/rust-lang/crates.io-index" 2026 + checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" 2027 + dependencies = [ 2028 + "once_cell", 2029 + "wasm-bindgen", 2030 + ] 2031 + 2032 + [[package]] 2033 + name = "khronos-egl" 2034 + version = "6.0.0" 2035 + source = "registry+https://github.com/rust-lang/crates.io-index" 2036 + checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" 2037 + dependencies = [ 2038 + "libc", 2039 + "libloading", 2040 + "pkg-config", 2041 + ] 2042 + 2043 + [[package]] 2044 + name = "khronos_api" 2045 + version = "3.1.0" 2046 + source = "registry+https://github.com/rust-lang/crates.io-index" 2047 + checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" 2048 + 2049 + [[package]] 2050 + name = "lazy_static" 2051 + version = "1.5.0" 2052 + source = "registry+https://github.com/rust-lang/crates.io-index" 2053 + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 2054 + 2055 + [[package]] 2056 + name = "leb128fmt" 2057 + version = "0.1.0" 2058 + source = "registry+https://github.com/rust-lang/crates.io-index" 2059 + checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" 2060 + 2061 + [[package]] 2062 + name = "libc" 2063 + version = "0.2.183" 2064 + source = "registry+https://github.com/rust-lang/crates.io-index" 2065 + checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" 2066 + 2067 + [[package]] 2068 + name = "libgit2-sys" 2069 + version = "0.18.3+1.9.2" 2070 + source = "registry+https://github.com/rust-lang/crates.io-index" 2071 + checksum = "c9b3acc4b91781bb0b3386669d325163746af5f6e4f73e6d2d630e09a35f3487" 2072 + dependencies = [ 2073 + "cc", 2074 + "libc", 2075 + "libssh2-sys", 2076 + "libz-sys", 2077 + "openssl-sys", 2078 + "pkg-config", 2079 + ] 2080 + 2081 + [[package]] 2082 + name = "libloading" 2083 + version = "0.8.9" 2084 + source = "registry+https://github.com/rust-lang/crates.io-index" 2085 + checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" 2086 + dependencies = [ 2087 + "cfg-if", 2088 + "windows-link", 2089 + ] 2090 + 2091 + [[package]] 2092 + name = "libm" 2093 + version = "0.2.16" 2094 + source = "registry+https://github.com/rust-lang/crates.io-index" 2095 + checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" 2096 + 2097 + [[package]] 2098 + name = "libredox" 2099 + version = "0.1.14" 2100 + source = "registry+https://github.com/rust-lang/crates.io-index" 2101 + checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" 2102 + dependencies = [ 2103 + "libc", 2104 + ] 2105 + 2106 + [[package]] 2107 + name = "libssh2-sys" 2108 + version = "0.3.1" 2109 + source = "registry+https://github.com/rust-lang/crates.io-index" 2110 + checksum = "220e4f05ad4a218192533b300327f5150e809b54c4ec83b5a1d91833601811b9" 2111 + dependencies = [ 2112 + "cc", 2113 + "libc", 2114 + "libz-sys", 2115 + "openssl-sys", 2116 + "pkg-config", 2117 + "vcpkg", 2118 + ] 2119 + 2120 + [[package]] 2121 + name = "libz-sys" 2122 + version = "1.1.25" 2123 + source = "registry+https://github.com/rust-lang/crates.io-index" 2124 + checksum = "d52f4c29e2a68ac30c9087e1b772dc9f44a2b66ed44edf2266cf2be9b03dafc1" 2125 + dependencies = [ 2126 + "cc", 2127 + "libc", 2128 + "pkg-config", 2129 + "vcpkg", 2130 + ] 2131 + 2132 + [[package]] 2133 + name = "linux-raw-sys" 2134 + version = "0.12.1" 2135 + source = "registry+https://github.com/rust-lang/crates.io-index" 2136 + checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" 2137 + 2138 + [[package]] 2139 + name = "litemap" 2140 + version = "0.8.1" 2141 + source = "registry+https://github.com/rust-lang/crates.io-index" 2142 + checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" 2143 + 2144 + [[package]] 2145 + name = "litrs" 2146 + version = "1.0.0" 2147 + source = "registry+https://github.com/rust-lang/crates.io-index" 2148 + checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" 2149 + 2150 + [[package]] 2151 + name = "lock_api" 2152 + version = "0.4.14" 2153 + source = "registry+https://github.com/rust-lang/crates.io-index" 2154 + checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" 2155 + dependencies = [ 2156 + "scopeguard", 2157 + ] 2158 + 2159 + [[package]] 2160 + name = "log" 2161 + version = "0.4.29" 2162 + source = "registry+https://github.com/rust-lang/crates.io-index" 2163 + checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" 2164 + 2165 + [[package]] 2166 + name = "macerator" 2167 + version = "0.2.10" 2168 + source = "registry+https://github.com/rust-lang/crates.io-index" 2169 + checksum = "84b0b2dbe8b22f9e96ba12e29964889010117f92e6bd006010887320ae58e2f0" 2170 + dependencies = [ 2171 + "bytemuck", 2172 + "cfg_aliases", 2173 + "half", 2174 + "macerator-macros", 2175 + "moddef", 2176 + "num-traits", 2177 + "paste", 2178 + "rustc_version", 2179 + ] 2180 + 2181 + [[package]] 2182 + name = "macerator-macros" 2183 + version = "0.1.4" 2184 + source = "registry+https://github.com/rust-lang/crates.io-index" 2185 + checksum = "23ee1819976b67f4d782390c55a75c13401c7a988517f7f8e60a33484dc2e00a" 2186 + dependencies = [ 2187 + "darling", 2188 + "proc-macro2", 2189 + "quote", 2190 + "syn", 2191 + ] 2192 + 2193 + [[package]] 2194 + name = "malloc_buf" 2195 + version = "0.0.6" 2196 + source = "registry+https://github.com/rust-lang/crates.io-index" 2197 + checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 2198 + dependencies = [ 2199 + "libc", 2200 + ] 2201 + 2202 + [[package]] 2203 + name = "matrixmultiply" 2204 + version = "0.3.10" 2205 + source = "registry+https://github.com/rust-lang/crates.io-index" 2206 + checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" 2207 + dependencies = [ 2208 + "autocfg", 2209 + "num_cpus", 2210 + "once_cell", 2211 + "rawpointer", 2212 + "thread-tree", 2213 + ] 2214 + 2215 + [[package]] 2216 + name = "md5" 2217 + version = "0.7.0" 2218 + source = "registry+https://github.com/rust-lang/crates.io-index" 2219 + checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" 2220 + 2221 + [[package]] 2222 + name = "memchr" 2223 + version = "2.8.0" 2224 + source = "registry+https://github.com/rust-lang/crates.io-index" 2225 + checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" 2226 + 2227 + [[package]] 2228 + name = "memmap2" 2229 + version = "0.9.10" 2230 + source = "registry+https://github.com/rust-lang/crates.io-index" 2231 + checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" 2232 + dependencies = [ 2233 + "libc", 2234 + "stable_deref_trait", 2235 + ] 2236 + 2237 + [[package]] 2238 + name = "metal" 2239 + version = "0.31.0" 2240 + source = "registry+https://github.com/rust-lang/crates.io-index" 2241 + checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" 2242 + dependencies = [ 2243 + "bitflags 2.11.0", 2244 + "block", 2245 + "core-graphics-types", 2246 + "foreign-types", 2247 + "log", 2248 + "objc", 2249 + "paste", 2250 + ] 2251 + 2252 + [[package]] 2253 + name = "minimal-lexical" 2254 + version = "0.2.1" 2255 + source = "registry+https://github.com/rust-lang/crates.io-index" 2256 + checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 2257 + 2258 + [[package]] 2259 + name = "miniz_oxide" 2260 + version = "0.8.9" 2261 + source = "registry+https://github.com/rust-lang/crates.io-index" 2262 + checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" 2263 + dependencies = [ 2264 + "adler2", 2265 + "simd-adler32", 2266 + ] 2267 + 2268 + [[package]] 2269 + name = "moddef" 2270 + version = "0.3.0" 2271 + source = "registry+https://github.com/rust-lang/crates.io-index" 2272 + checksum = "4a0b3262dc837d2513fe2ef31ff8461352ef932dcca31ba0c0abe33547cf6b9b" 2273 + 2274 + [[package]] 2275 + name = "naga" 2276 + version = "25.0.1" 2277 + source = "registry+https://github.com/rust-lang/crates.io-index" 2278 + checksum = "2b977c445f26e49757f9aca3631c3b8b836942cb278d69a92e7b80d3b24da632" 2279 + dependencies = [ 2280 + "arrayvec", 2281 + "bit-set", 2282 + "bitflags 2.11.0", 2283 + "cfg_aliases", 2284 + "codespan-reporting", 2285 + "half", 2286 + "hashbrown 0.15.5", 2287 + "hexf-parse", 2288 + "indexmap", 2289 + "log", 2290 + "num-traits", 2291 + "once_cell", 2292 + "rustc-hash 1.1.0", 2293 + "spirv", 2294 + "strum 0.26.3", 2295 + "thiserror 2.0.18", 2296 + "unicode-ident", 2297 + ] 2298 + 2299 + [[package]] 2300 + name = "ndarray" 2301 + version = "0.16.1" 2302 + source = "registry+https://github.com/rust-lang/crates.io-index" 2303 + checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" 2304 + dependencies = [ 2305 + "matrixmultiply", 2306 + "num-complex", 2307 + "num-integer", 2308 + "num-traits", 2309 + "portable-atomic", 2310 + "portable-atomic-util", 2311 + "rawpointer", 2312 + "rayon", 2313 + ] 2314 + 2315 + [[package]] 2316 + name = "ndk-sys" 2317 + version = "0.5.0+25.2.9519653" 2318 + source = "registry+https://github.com/rust-lang/crates.io-index" 2319 + checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" 2320 + dependencies = [ 2321 + "jni-sys", 2322 + ] 2323 + 2324 + [[package]] 2325 + name = "nom" 2326 + version = "7.1.3" 2327 + source = "registry+https://github.com/rust-lang/crates.io-index" 2328 + checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2329 + dependencies = [ 2330 + "memchr", 2331 + "minimal-lexical", 2332 + ] 2333 + 2334 + [[package]] 2335 + name = "ntapi" 2336 + version = "0.4.3" 2337 + source = "registry+https://github.com/rust-lang/crates.io-index" 2338 + checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae" 2339 + dependencies = [ 2340 + "winapi", 2341 + ] 2342 + 2343 + [[package]] 2344 + name = "nu-ansi-term" 2345 + version = "0.50.3" 2346 + source = "registry+https://github.com/rust-lang/crates.io-index" 2347 + checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" 2348 + dependencies = [ 2349 + "windows-sys 0.61.2", 2350 + ] 2351 + 2352 + [[package]] 2353 + name = "num" 2354 + version = "0.4.3" 2355 + source = "registry+https://github.com/rust-lang/crates.io-index" 2356 + checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" 2357 + dependencies = [ 2358 + "num-bigint", 2359 + "num-complex", 2360 + "num-integer", 2361 + "num-iter", 2362 + "num-rational", 2363 + "num-traits", 2364 + ] 2365 + 2366 + [[package]] 2367 + name = "num-bigint" 2368 + version = "0.4.6" 2369 + source = "registry+https://github.com/rust-lang/crates.io-index" 2370 + checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 2371 + dependencies = [ 2372 + "num-integer", 2373 + "num-traits", 2374 + ] 2375 + 2376 + [[package]] 2377 + name = "num-complex" 2378 + version = "0.4.6" 2379 + source = "registry+https://github.com/rust-lang/crates.io-index" 2380 + checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" 2381 + dependencies = [ 2382 + "bytemuck", 2383 + "num-traits", 2384 + ] 2385 + 2386 + [[package]] 2387 + name = "num-conv" 2388 + version = "0.2.0" 2389 + source = "registry+https://github.com/rust-lang/crates.io-index" 2390 + checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" 2391 + 2392 + [[package]] 2393 + name = "num-integer" 2394 + version = "0.1.46" 2395 + source = "registry+https://github.com/rust-lang/crates.io-index" 2396 + checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 2397 + dependencies = [ 2398 + "num-traits", 2399 + ] 2400 + 2401 + [[package]] 2402 + name = "num-iter" 2403 + version = "0.1.45" 2404 + source = "registry+https://github.com/rust-lang/crates.io-index" 2405 + checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 2406 + dependencies = [ 2407 + "autocfg", 2408 + "num-integer", 2409 + "num-traits", 2410 + ] 2411 + 2412 + [[package]] 2413 + name = "num-rational" 2414 + version = "0.4.2" 2415 + source = "registry+https://github.com/rust-lang/crates.io-index" 2416 + checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" 2417 + dependencies = [ 2418 + "num-bigint", 2419 + "num-integer", 2420 + "num-traits", 2421 + ] 2422 + 2423 + [[package]] 2424 + name = "num-traits" 2425 + version = "0.2.19" 2426 + source = "registry+https://github.com/rust-lang/crates.io-index" 2427 + checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 2428 + dependencies = [ 2429 + "autocfg", 2430 + "libm", 2431 + ] 2432 + 2433 + [[package]] 2434 + name = "num_cpus" 2435 + version = "1.17.0" 2436 + source = "registry+https://github.com/rust-lang/crates.io-index" 2437 + checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" 2438 + dependencies = [ 2439 + "hermit-abi", 2440 + "libc", 2441 + ] 2442 + 2443 + [[package]] 2444 + name = "num_enum" 2445 + version = "0.7.6" 2446 + source = "registry+https://github.com/rust-lang/crates.io-index" 2447 + checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" 2448 + dependencies = [ 2449 + "num_enum_derive", 2450 + "rustversion", 2451 + ] 2452 + 2453 + [[package]] 2454 + name = "num_enum_derive" 2455 + version = "0.7.6" 2456 + source = "registry+https://github.com/rust-lang/crates.io-index" 2457 + checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" 2458 + dependencies = [ 2459 + "proc-macro-crate", 2460 + "proc-macro2", 2461 + "quote", 2462 + "syn", 2463 + ] 2464 + 2465 + [[package]] 2466 + name = "nvml-wrapper" 2467 + version = "0.10.0" 2468 + source = "registry+https://github.com/rust-lang/crates.io-index" 2469 + checksum = "0c9bff0aa1d48904a1385ea2a8b97576fbdcbc9a3cfccd0d31fe978e1c4038c5" 2470 + dependencies = [ 2471 + "bitflags 2.11.0", 2472 + "libloading", 2473 + "nvml-wrapper-sys", 2474 + "static_assertions", 2475 + "thiserror 1.0.69", 2476 + "wrapcenum-derive", 2477 + ] 2478 + 2479 + [[package]] 2480 + name = "nvml-wrapper-sys" 2481 + version = "0.8.0" 2482 + source = "registry+https://github.com/rust-lang/crates.io-index" 2483 + checksum = "698d45156f28781a4e79652b6ebe2eaa0589057d588d3aec1333f6466f13fcb5" 2484 + dependencies = [ 2485 + "libloading", 2486 + ] 2487 + 2488 + [[package]] 2489 + name = "objc" 2490 + version = "0.2.7" 2491 + source = "registry+https://github.com/rust-lang/crates.io-index" 2492 + checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 2493 + dependencies = [ 2494 + "malloc_buf", 2495 + ] 2496 + 2497 + [[package]] 2498 + name = "once_cell" 2499 + version = "1.21.4" 2500 + source = "registry+https://github.com/rust-lang/crates.io-index" 2501 + checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" 2502 + 2503 + [[package]] 2504 + name = "once_cell_polyfill" 2505 + version = "1.70.2" 2506 + source = "registry+https://github.com/rust-lang/crates.io-index" 2507 + checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" 2508 + 2509 + [[package]] 2510 + name = "openssl-probe" 2511 + version = "0.1.6" 2512 + source = "registry+https://github.com/rust-lang/crates.io-index" 2513 + checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" 2514 + 2515 + [[package]] 2516 + name = "openssl-sys" 2517 + version = "0.9.112" 2518 + source = "registry+https://github.com/rust-lang/crates.io-index" 2519 + checksum = "57d55af3b3e226502be1526dfdba67ab0e9c96fc293004e79576b2b9edb0dbdb" 2520 + dependencies = [ 2521 + "cc", 2522 + "libc", 2523 + "pkg-config", 2524 + "vcpkg", 2525 + ] 2526 + 2527 + [[package]] 2528 + name = "option-ext" 2529 + version = "0.2.0" 2530 + source = "registry+https://github.com/rust-lang/crates.io-index" 2531 + checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" 2532 + 2533 + [[package]] 2534 + name = "ordered-float" 2535 + version = "4.6.0" 2536 + source = "registry+https://github.com/rust-lang/crates.io-index" 2537 + checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" 2538 + dependencies = [ 2539 + "num-traits", 2540 + ] 2541 + 2542 + [[package]] 2543 + name = "parking" 2544 + version = "2.2.1" 2545 + source = "registry+https://github.com/rust-lang/crates.io-index" 2546 + checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 2547 + 2548 + [[package]] 2549 + name = "parking_lot" 2550 + version = "0.12.5" 2551 + source = "registry+https://github.com/rust-lang/crates.io-index" 2552 + checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" 2553 + dependencies = [ 2554 + "lock_api", 2555 + "parking_lot_core", 2556 + ] 2557 + 2558 + [[package]] 2559 + name = "parking_lot_core" 2560 + version = "0.9.12" 2561 + source = "registry+https://github.com/rust-lang/crates.io-index" 2562 + checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" 2563 + dependencies = [ 2564 + "cfg-if", 2565 + "libc", 2566 + "redox_syscall", 2567 + "smallvec", 2568 + "windows-link", 2569 + ] 2570 + 2571 + [[package]] 2572 + name = "paste" 2573 + version = "1.0.15" 2574 + source = "registry+https://github.com/rust-lang/crates.io-index" 2575 + checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 2576 + 2577 + [[package]] 2578 + name = "percent-encoding" 2579 + version = "2.3.2" 2580 + source = "registry+https://github.com/rust-lang/crates.io-index" 2581 + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 2582 + 2583 + [[package]] 2584 + name = "pin-project-lite" 2585 + version = "0.2.17" 2586 + source = "registry+https://github.com/rust-lang/crates.io-index" 2587 + checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" 2588 + 2589 + [[package]] 2590 + name = "pkg-config" 2591 + version = "0.3.32" 2592 + source = "registry+https://github.com/rust-lang/crates.io-index" 2593 + checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 2594 + 2595 + [[package]] 2596 + name = "portable-atomic" 2597 + version = "1.13.1" 2598 + source = "registry+https://github.com/rust-lang/crates.io-index" 2599 + checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" 2600 + dependencies = [ 2601 + "serde", 2602 + ] 2603 + 2604 + [[package]] 2605 + name = "portable-atomic-util" 2606 + version = "0.2.6" 2607 + source = "registry+https://github.com/rust-lang/crates.io-index" 2608 + checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" 2609 + dependencies = [ 2610 + "portable-atomic", 2611 + ] 2612 + 2613 + [[package]] 2614 + name = "potential_utf" 2615 + version = "0.1.4" 2616 + source = "registry+https://github.com/rust-lang/crates.io-index" 2617 + checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" 2618 + dependencies = [ 2619 + "zerovec", 2620 + ] 2621 + 2622 + [[package]] 2623 + name = "powerfmt" 2624 + version = "0.2.0" 2625 + source = "registry+https://github.com/rust-lang/crates.io-index" 2626 + checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2627 + 2628 + [[package]] 2629 + name = "ppv-lite86" 2630 + version = "0.2.21" 2631 + source = "registry+https://github.com/rust-lang/crates.io-index" 2632 + checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 2633 + dependencies = [ 2634 + "zerocopy", 2635 + ] 2636 + 2637 + [[package]] 2638 + name = "presser" 2639 + version = "0.3.1" 2640 + source = "registry+https://github.com/rust-lang/crates.io-index" 2641 + checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" 2642 + 2643 + [[package]] 2644 + name = "prettyplease" 2645 + version = "0.2.37" 2646 + source = "registry+https://github.com/rust-lang/crates.io-index" 2647 + checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" 2648 + dependencies = [ 2649 + "proc-macro2", 2650 + "syn", 2651 + ] 2652 + 2653 + [[package]] 2654 + name = "priority-queue" 2655 + version = "2.5.0" 2656 + source = "registry+https://github.com/rust-lang/crates.io-index" 2657 + checksum = "5676d703dda103cbb035b653a9f11448c0a7216c7926bd35fcb5865475d0c970" 2658 + dependencies = [ 2659 + "autocfg", 2660 + "equivalent", 2661 + "indexmap", 2662 + ] 2663 + 2664 + [[package]] 2665 + name = "proc-macro-crate" 2666 + version = "3.5.0" 2667 + source = "registry+https://github.com/rust-lang/crates.io-index" 2668 + checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" 2669 + dependencies = [ 2670 + "toml_edit 0.25.5+spec-1.1.0", 2671 + ] 2672 + 2673 + [[package]] 2674 + name = "proc-macro2" 2675 + version = "1.0.106" 2676 + source = "registry+https://github.com/rust-lang/crates.io-index" 2677 + checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" 2678 + dependencies = [ 2679 + "unicode-ident", 2680 + ] 2681 + 2682 + [[package]] 2683 + name = "profiling" 2684 + version = "1.0.17" 2685 + source = "registry+https://github.com/rust-lang/crates.io-index" 2686 + checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" 2687 + 2688 + [[package]] 2689 + name = "pulp" 2690 + version = "0.18.22" 2691 + source = "registry+https://github.com/rust-lang/crates.io-index" 2692 + checksum = "a0a01a0dc67cf4558d279f0c25b0962bd08fc6dec0137699eae304103e882fe6" 2693 + dependencies = [ 2694 + "bytemuck", 2695 + "libm", 2696 + "num-complex", 2697 + "reborrow", 2698 + ] 2699 + 2700 + [[package]] 2701 + name = "pulp" 2702 + version = "0.21.5" 2703 + source = "registry+https://github.com/rust-lang/crates.io-index" 2704 + checksum = "96b86df24f0a7ddd5e4b95c94fc9ed8a98f1ca94d3b01bdce2824097e7835907" 2705 + dependencies = [ 2706 + "bytemuck", 2707 + "cfg-if", 2708 + "libm", 2709 + "num-complex", 2710 + "reborrow", 2711 + "version_check", 2712 + ] 2713 + 2714 + [[package]] 2715 + name = "quote" 2716 + version = "1.0.45" 2717 + source = "registry+https://github.com/rust-lang/crates.io-index" 2718 + checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" 2719 + dependencies = [ 2720 + "proc-macro2", 2721 + ] 2722 + 2723 + [[package]] 2724 + name = "r-efi" 2725 + version = "5.3.0" 2726 + source = "registry+https://github.com/rust-lang/crates.io-index" 2727 + checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 2728 + 2729 + [[package]] 2730 + name = "r-efi" 2731 + version = "6.0.0" 2732 + source = "registry+https://github.com/rust-lang/crates.io-index" 2733 + checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" 2734 + 2735 + [[package]] 2736 + name = "rand" 2737 + version = "0.9.2" 2738 + source = "registry+https://github.com/rust-lang/crates.io-index" 2739 + checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" 2740 + dependencies = [ 2741 + "rand_chacha", 2742 + "rand_core", 2743 + ] 2744 + 2745 + [[package]] 2746 + name = "rand_chacha" 2747 + version = "0.9.0" 2748 + source = "registry+https://github.com/rust-lang/crates.io-index" 2749 + checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 2750 + dependencies = [ 2751 + "ppv-lite86", 2752 + "rand_core", 2753 + ] 2754 + 2755 + [[package]] 2756 + name = "rand_core" 2757 + version = "0.9.5" 2758 + source = "registry+https://github.com/rust-lang/crates.io-index" 2759 + checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" 2760 + dependencies = [ 2761 + "getrandom 0.3.4", 2762 + ] 2763 + 2764 + [[package]] 2765 + name = "rand_distr" 2766 + version = "0.5.1" 2767 + source = "registry+https://github.com/rust-lang/crates.io-index" 2768 + checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463" 2769 + dependencies = [ 2770 + "num-traits", 2771 + "rand", 2772 + ] 2773 + 2774 + [[package]] 2775 + name = "range-alloc" 2776 + version = "0.1.5" 2777 + source = "registry+https://github.com/rust-lang/crates.io-index" 2778 + checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08" 2779 + 2780 + [[package]] 2781 + name = "raw-cpuid" 2782 + version = "10.7.0" 2783 + source = "registry+https://github.com/rust-lang/crates.io-index" 2784 + checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" 2785 + dependencies = [ 2786 + "bitflags 1.3.2", 2787 + ] 2788 + 2789 + [[package]] 2790 + name = "raw-cpuid" 2791 + version = "11.6.0" 2792 + source = "registry+https://github.com/rust-lang/crates.io-index" 2793 + checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" 2794 + dependencies = [ 2795 + "bitflags 2.11.0", 2796 + ] 2797 + 2798 + [[package]] 2799 + name = "raw-window-handle" 2800 + version = "0.6.2" 2801 + source = "registry+https://github.com/rust-lang/crates.io-index" 2802 + checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 2803 + 2804 + [[package]] 2805 + name = "rawpointer" 2806 + version = "0.2.1" 2807 + source = "registry+https://github.com/rust-lang/crates.io-index" 2808 + checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" 2809 + 2810 + [[package]] 2811 + name = "rayon" 2812 + version = "1.11.0" 2813 + source = "registry+https://github.com/rust-lang/crates.io-index" 2814 + checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" 2815 + dependencies = [ 2816 + "either", 2817 + "rayon-core", 2818 + ] 2819 + 2820 + [[package]] 2821 + name = "rayon-core" 2822 + version = "1.13.0" 2823 + source = "registry+https://github.com/rust-lang/crates.io-index" 2824 + checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" 2825 + dependencies = [ 2826 + "crossbeam-deque", 2827 + "crossbeam-utils", 2828 + ] 2829 + 2830 + [[package]] 2831 + name = "reborrow" 2832 + version = "0.5.5" 2833 + source = "registry+https://github.com/rust-lang/crates.io-index" 2834 + checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" 2835 + 2836 + [[package]] 2837 + name = "redox_syscall" 2838 + version = "0.5.18" 2839 + source = "registry+https://github.com/rust-lang/crates.io-index" 2840 + checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" 2841 + dependencies = [ 2842 + "bitflags 2.11.0", 2843 + ] 2844 + 2845 + [[package]] 2846 + name = "redox_users" 2847 + version = "0.4.6" 2848 + source = "registry+https://github.com/rust-lang/crates.io-index" 2849 + checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" 2850 + dependencies = [ 2851 + "getrandom 0.2.17", 2852 + "libredox", 2853 + "thiserror 1.0.69", 2854 + ] 2855 + 2856 + [[package]] 2857 + name = "redox_users" 2858 + version = "0.5.2" 2859 + source = "registry+https://github.com/rust-lang/crates.io-index" 2860 + checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" 2861 + dependencies = [ 2862 + "getrandom 0.2.17", 2863 + "libredox", 2864 + "thiserror 2.0.18", 2865 + ] 2866 + 2867 + [[package]] 2868 + name = "regex" 2869 + version = "1.12.3" 2870 + source = "registry+https://github.com/rust-lang/crates.io-index" 2871 + checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" 2872 + dependencies = [ 2873 + "aho-corasick", 2874 + "memchr", 2875 + "regex-automata", 2876 + "regex-syntax", 2877 + ] 2878 + 2879 + [[package]] 2880 + name = "regex-automata" 2881 + version = "0.4.14" 2882 + source = "registry+https://github.com/rust-lang/crates.io-index" 2883 + checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" 2884 + dependencies = [ 2885 + "aho-corasick", 2886 + "memchr", 2887 + "regex-syntax", 2888 + ] 2889 + 2890 + [[package]] 2891 + name = "regex-syntax" 2892 + version = "0.8.10" 2893 + source = "registry+https://github.com/rust-lang/crates.io-index" 2894 + checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" 2895 + 2896 + [[package]] 2897 + name = "relative-path" 2898 + version = "1.9.3" 2899 + source = "registry+https://github.com/rust-lang/crates.io-index" 2900 + checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" 2901 + 2902 + [[package]] 2903 + name = "renderdoc-sys" 2904 + version = "1.1.0" 2905 + source = "registry+https://github.com/rust-lang/crates.io-index" 2906 + checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" 2907 + 2908 + [[package]] 2909 + name = "rmp" 2910 + version = "0.8.15" 2911 + source = "registry+https://github.com/rust-lang/crates.io-index" 2912 + checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c" 2913 + dependencies = [ 2914 + "num-traits", 2915 + ] 2916 + 2917 + [[package]] 2918 + name = "rmp-serde" 2919 + version = "1.3.1" 2920 + source = "registry+https://github.com/rust-lang/crates.io-index" 2921 + checksum = "72f81bee8c8ef9b577d1681a70ebbc962c232461e397b22c208c43c04b67a155" 2922 + dependencies = [ 2923 + "rmp", 2924 + "serde", 2925 + ] 2926 + 2927 + [[package]] 2928 + name = "rstest" 2929 + version = "0.25.0" 2930 + source = "registry+https://github.com/rust-lang/crates.io-index" 2931 + checksum = "6fc39292f8613e913f7df8fa892b8944ceb47c247b78e1b1ae2f09e019be789d" 2932 + dependencies = [ 2933 + "futures-timer", 2934 + "futures-util", 2935 + "rstest_macros", 2936 + "rustc_version", 2937 + ] 2938 + 2939 + [[package]] 2940 + name = "rstest_macros" 2941 + version = "0.25.0" 2942 + source = "registry+https://github.com/rust-lang/crates.io-index" 2943 + checksum = "1f168d99749d307be9de54d23fd226628d99768225ef08f6ffb52e0182a27746" 2944 + dependencies = [ 2945 + "cfg-if", 2946 + "glob", 2947 + "proc-macro-crate", 2948 + "proc-macro2", 2949 + "quote", 2950 + "regex", 2951 + "relative-path", 2952 + "rustc_version", 2953 + "syn", 2954 + "unicode-ident", 2955 + ] 2956 + 2957 + [[package]] 2958 + name = "rustc-hash" 2959 + version = "1.1.0" 2960 + source = "registry+https://github.com/rust-lang/crates.io-index" 2961 + checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 2962 + 2963 + [[package]] 2964 + name = "rustc-hash" 2965 + version = "2.1.1" 2966 + source = "registry+https://github.com/rust-lang/crates.io-index" 2967 + checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 2968 + 2969 + [[package]] 2970 + name = "rustc_version" 2971 + version = "0.4.1" 2972 + source = "registry+https://github.com/rust-lang/crates.io-index" 2973 + checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" 2974 + dependencies = [ 2975 + "semver", 2976 + ] 2977 + 2978 + [[package]] 2979 + name = "rustix" 2980 + version = "1.1.4" 2981 + source = "registry+https://github.com/rust-lang/crates.io-index" 2982 + checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" 2983 + dependencies = [ 2984 + "bitflags 2.11.0", 2985 + "errno", 2986 + "libc", 2987 + "linux-raw-sys", 2988 + "windows-sys 0.61.2", 2989 + ] 2990 + 2991 + [[package]] 2992 + name = "rustversion" 2993 + version = "1.0.22" 2994 + source = "registry+https://github.com/rust-lang/crates.io-index" 2995 + checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" 2996 + 2997 + [[package]] 2998 + name = "ryu" 2999 + version = "1.0.23" 3000 + source = "registry+https://github.com/rust-lang/crates.io-index" 3001 + checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" 3002 + 3003 + [[package]] 3004 + name = "safetensors" 3005 + version = "0.4.5" 3006 + source = "registry+https://github.com/rust-lang/crates.io-index" 3007 + checksum = "44560c11236a6130a46ce36c836a62936dc81ebf8c36a37947423571be0e55b6" 3008 + dependencies = [ 3009 + "serde", 3010 + "serde_json", 3011 + ] 3012 + 3013 + [[package]] 3014 + name = "same-file" 3015 + version = "1.0.6" 3016 + source = "registry+https://github.com/rust-lang/crates.io-index" 3017 + checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 3018 + dependencies = [ 3019 + "winapi-util", 3020 + ] 3021 + 3022 + [[package]] 3023 + name = "sanitize-filename" 3024 + version = "0.5.0" 3025 + source = "registry+https://github.com/rust-lang/crates.io-index" 3026 + checksum = "2ed72fbaf78e6f2d41744923916966c4fbe3d7c74e3037a8ee482f1115572603" 3027 + dependencies = [ 3028 + "lazy_static", 3029 + "regex", 3030 + ] 3031 + 3032 + [[package]] 3033 + name = "sanitize-filename" 3034 + version = "0.6.0" 3035 + source = "registry+https://github.com/rust-lang/crates.io-index" 3036 + checksum = "bc984f4f9ceb736a7bb755c3e3bd17dc56370af2600c9780dcc48c66453da34d" 3037 + dependencies = [ 3038 + "regex", 3039 + ] 3040 + 3041 + [[package]] 3042 + name = "scopeguard" 3043 + version = "1.2.0" 3044 + source = "registry+https://github.com/rust-lang/crates.io-index" 3045 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 3046 + 3047 + [[package]] 3048 + name = "semver" 3049 + version = "1.0.27" 3050 + source = "registry+https://github.com/rust-lang/crates.io-index" 3051 + checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" 3052 + 3053 + [[package]] 3054 + name = "seq-macro" 3055 + version = "0.3.6" 3056 + source = "registry+https://github.com/rust-lang/crates.io-index" 3057 + checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" 3058 + 3059 + [[package]] 3060 + name = "serde" 3061 + version = "1.0.228" 3062 + source = "registry+https://github.com/rust-lang/crates.io-index" 3063 + checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" 3064 + dependencies = [ 3065 + "serde_core", 3066 + "serde_derive", 3067 + ] 3068 + 3069 + [[package]] 3070 + name = "serde_bytes" 3071 + version = "0.11.19" 3072 + source = "registry+https://github.com/rust-lang/crates.io-index" 3073 + checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" 3074 + dependencies = [ 3075 + "serde", 3076 + "serde_core", 3077 + ] 3078 + 3079 + [[package]] 3080 + name = "serde_core" 3081 + version = "1.0.228" 3082 + source = "registry+https://github.com/rust-lang/crates.io-index" 3083 + checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" 3084 + dependencies = [ 3085 + "serde_derive", 3086 + ] 3087 + 3088 + [[package]] 3089 + name = "serde_derive" 3090 + version = "1.0.228" 3091 + source = "registry+https://github.com/rust-lang/crates.io-index" 3092 + checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" 3093 + dependencies = [ 3094 + "proc-macro2", 3095 + "quote", 3096 + "syn", 3097 + ] 3098 + 3099 + [[package]] 3100 + name = "serde_json" 3101 + version = "1.0.149" 3102 + source = "registry+https://github.com/rust-lang/crates.io-index" 3103 + checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" 3104 + dependencies = [ 3105 + "itoa", 3106 + "memchr", 3107 + "serde", 3108 + "serde_core", 3109 + "zmij", 3110 + ] 3111 + 3112 + [[package]] 3113 + name = "serde_spanned" 3114 + version = "0.6.9" 3115 + source = "registry+https://github.com/rust-lang/crates.io-index" 3116 + checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" 3117 + dependencies = [ 3118 + "serde", 3119 + ] 3120 + 3121 + [[package]] 3122 + name = "sharded-slab" 3123 + version = "0.1.7" 3124 + source = "registry+https://github.com/rust-lang/crates.io-index" 3125 + checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 3126 + dependencies = [ 3127 + "lazy_static", 3128 + ] 3129 + 3130 + [[package]] 3131 + name = "shlex" 3132 + version = "1.3.0" 3133 + source = "registry+https://github.com/rust-lang/crates.io-index" 3134 + checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 3135 + 3136 + [[package]] 3137 + name = "simd-adler32" 3138 + version = "0.3.8" 3139 + source = "registry+https://github.com/rust-lang/crates.io-index" 3140 + checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" 3141 + 3142 + [[package]] 3143 + name = "siphasher" 3144 + version = "1.0.2" 3145 + source = "registry+https://github.com/rust-lang/crates.io-index" 3146 + checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" 3147 + 3148 + [[package]] 3149 + name = "slab" 3150 + version = "0.4.12" 3151 + source = "registry+https://github.com/rust-lang/crates.io-index" 3152 + checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" 3153 + 3154 + [[package]] 3155 + name = "slotmap" 3156 + version = "1.1.1" 3157 + source = "registry+https://github.com/rust-lang/crates.io-index" 3158 + checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" 3159 + dependencies = [ 3160 + "version_check", 3161 + ] 3162 + 3163 + [[package]] 3164 + name = "smallvec" 3165 + version = "1.15.1" 3166 + source = "registry+https://github.com/rust-lang/crates.io-index" 3167 + checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 3168 + 3169 + [[package]] 3170 + name = "snafu" 3171 + version = "0.8.9" 3172 + source = "registry+https://github.com/rust-lang/crates.io-index" 3173 + checksum = "6e84b3f4eacbf3a1ce05eac6763b4d629d60cbc94d632e4092c54ade71f1e1a2" 3174 + dependencies = [ 3175 + "snafu-derive", 3176 + ] 3177 + 3178 + [[package]] 3179 + name = "snafu-derive" 3180 + version = "0.8.9" 3181 + source = "registry+https://github.com/rust-lang/crates.io-index" 3182 + checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451" 3183 + dependencies = [ 3184 + "heck", 3185 + "proc-macro2", 3186 + "quote", 3187 + "syn", 3188 + ] 3189 + 3190 + [[package]] 3191 + name = "spin" 3192 + version = "0.9.8" 3193 + source = "registry+https://github.com/rust-lang/crates.io-index" 3194 + checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 3195 + dependencies = [ 3196 + "lock_api", 3197 + "portable-atomic", 3198 + ] 3199 + 3200 + [[package]] 3201 + name = "spin" 3202 + version = "0.10.0" 3203 + source = "registry+https://github.com/rust-lang/crates.io-index" 3204 + checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" 3205 + dependencies = [ 3206 + "lock_api", 3207 + "portable-atomic", 3208 + ] 3209 + 3210 + [[package]] 3211 + name = "spirv" 3212 + version = "0.3.0+sdk-1.3.268.0" 3213 + source = "registry+https://github.com/rust-lang/crates.io-index" 3214 + checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" 3215 + dependencies = [ 3216 + "bitflags 2.11.0", 3217 + ] 3218 + 3219 + [[package]] 3220 + name = "stable_deref_trait" 3221 + version = "1.2.1" 3222 + source = "registry+https://github.com/rust-lang/crates.io-index" 3223 + checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" 3224 + 3225 + [[package]] 3226 + name = "static_assertions" 3227 + version = "1.1.0" 3228 + source = "registry+https://github.com/rust-lang/crates.io-index" 3229 + checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 3230 + 3231 + [[package]] 3232 + name = "strsim" 3233 + version = "0.11.1" 3234 + source = "registry+https://github.com/rust-lang/crates.io-index" 3235 + checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 3236 + 3237 + [[package]] 3238 + name = "strum" 3239 + version = "0.26.3" 3240 + source = "registry+https://github.com/rust-lang/crates.io-index" 3241 + checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" 3242 + dependencies = [ 3243 + "strum_macros 0.26.4", 3244 + ] 3245 + 3246 + [[package]] 3247 + name = "strum" 3248 + version = "0.27.2" 3249 + source = "registry+https://github.com/rust-lang/crates.io-index" 3250 + checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" 3251 + dependencies = [ 3252 + "strum_macros 0.27.2", 3253 + ] 3254 + 3255 + [[package]] 3256 + name = "strum_macros" 3257 + version = "0.26.4" 3258 + source = "registry+https://github.com/rust-lang/crates.io-index" 3259 + checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" 3260 + dependencies = [ 3261 + "heck", 3262 + "proc-macro2", 3263 + "quote", 3264 + "rustversion", 3265 + "syn", 3266 + ] 3267 + 3268 + [[package]] 3269 + name = "strum_macros" 3270 + version = "0.27.2" 3271 + source = "registry+https://github.com/rust-lang/crates.io-index" 3272 + checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" 3273 + dependencies = [ 3274 + "heck", 3275 + "proc-macro2", 3276 + "quote", 3277 + "syn", 3278 + ] 3279 + 3280 + [[package]] 3281 + name = "syn" 3282 + version = "2.0.117" 3283 + source = "registry+https://github.com/rust-lang/crates.io-index" 3284 + checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" 3285 + dependencies = [ 3286 + "proc-macro2", 3287 + "quote", 3288 + "unicode-ident", 3289 + ] 3290 + 3291 + [[package]] 3292 + name = "synstructure" 3293 + version = "0.13.2" 3294 + source = "registry+https://github.com/rust-lang/crates.io-index" 3295 + checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 3296 + dependencies = [ 3297 + "proc-macro2", 3298 + "quote", 3299 + "syn", 3300 + ] 3301 + 3302 + [[package]] 3303 + name = "sysctl" 3304 + version = "0.5.5" 3305 + source = "registry+https://github.com/rust-lang/crates.io-index" 3306 + checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" 3307 + dependencies = [ 3308 + "bitflags 2.11.0", 3309 + "byteorder", 3310 + "enum-as-inner", 3311 + "libc", 3312 + "thiserror 1.0.69", 3313 + "walkdir", 3314 + ] 3315 + 3316 + [[package]] 3317 + name = "sysctl" 3318 + version = "0.6.0" 3319 + source = "registry+https://github.com/rust-lang/crates.io-index" 3320 + checksum = "01198a2debb237c62b6826ec7081082d951f46dbb64b0e8c7649a452230d1dfc" 3321 + dependencies = [ 3322 + "bitflags 2.11.0", 3323 + "byteorder", 3324 + "enum-as-inner", 3325 + "libc", 3326 + "thiserror 1.0.69", 3327 + "walkdir", 3328 + ] 3329 + 3330 + [[package]] 3331 + name = "sysinfo" 3332 + version = "0.33.1" 3333 + source = "registry+https://github.com/rust-lang/crates.io-index" 3334 + checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" 3335 + dependencies = [ 3336 + "core-foundation-sys", 3337 + "libc", 3338 + "memchr", 3339 + "ntapi", 3340 + "rayon", 3341 + "windows 0.57.0", 3342 + ] 3343 + 3344 + [[package]] 3345 + name = "systemstat" 3346 + version = "0.2.6" 3347 + source = "registry+https://github.com/rust-lang/crates.io-index" 3348 + checksum = "a6e89b75de097d0c52a1dc2114e19439d55f0e2e42d32168c6df44f139dfb66f" 3349 + dependencies = [ 3350 + "bytesize", 3351 + "lazy_static", 3352 + "libc", 3353 + "nom", 3354 + "time", 3355 + "winapi", 3356 + ] 3357 + 3358 + [[package]] 3359 + name = "tala-cli" 3360 + version = "0.1.0" 3361 + dependencies = [ 3362 + "clap", 3363 + "git2", 3364 + "serde_json", 3365 + "tala-format", 3366 + "tala-srs", 3367 + ] 3368 + 3369 + [[package]] 3370 + name = "tala-format" 3371 + version = "0.1.0" 3372 + dependencies = [ 3373 + "typst-syntax", 3374 + ] 3375 + 3376 + [[package]] 3377 + name = "tala-srs" 3378 + version = "0.1.0" 3379 + dependencies = [ 3380 + "fsrs", 3381 + "serde", 3382 + "serde_json", 3383 + ] 3384 + 3385 + [[package]] 3386 + name = "tempfile" 3387 + version = "3.27.0" 3388 + source = "registry+https://github.com/rust-lang/crates.io-index" 3389 + checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" 3390 + dependencies = [ 3391 + "fastrand", 3392 + "getrandom 0.4.2", 3393 + "once_cell", 3394 + "rustix", 3395 + "windows-sys 0.61.2", 3396 + ] 3397 + 3398 + [[package]] 3399 + name = "termcolor" 3400 + version = "1.4.1" 3401 + source = "registry+https://github.com/rust-lang/crates.io-index" 3402 + checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 3403 + dependencies = [ 3404 + "winapi-util", 3405 + ] 3406 + 3407 + [[package]] 3408 + name = "text_placeholder" 3409 + version = "0.5.1" 3410 + source = "registry+https://github.com/rust-lang/crates.io-index" 3411 + checksum = "dd5008f74a09742486ef0047596cf35df2b914e2a8dca5727fcb6ba6842a766b" 3412 + dependencies = [ 3413 + "hashbrown 0.13.2", 3414 + "serde", 3415 + "serde_json", 3416 + ] 3417 + 3418 + [[package]] 3419 + name = "thin-vec" 3420 + version = "0.2.14" 3421 + source = "registry+https://github.com/rust-lang/crates.io-index" 3422 + checksum = "144f754d318415ac792f9d69fc87abbbfc043ce2ef041c60f16ad828f638717d" 3423 + 3424 + [[package]] 3425 + name = "thiserror" 3426 + version = "1.0.69" 3427 + source = "registry+https://github.com/rust-lang/crates.io-index" 3428 + checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 3429 + dependencies = [ 3430 + "thiserror-impl 1.0.69", 3431 + ] 3432 + 3433 + [[package]] 3434 + name = "thiserror" 3435 + version = "2.0.18" 3436 + source = "registry+https://github.com/rust-lang/crates.io-index" 3437 + checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" 3438 + dependencies = [ 3439 + "thiserror-impl 2.0.18", 3440 + ] 3441 + 3442 + [[package]] 3443 + name = "thiserror-impl" 3444 + version = "1.0.69" 3445 + source = "registry+https://github.com/rust-lang/crates.io-index" 3446 + checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 3447 + dependencies = [ 3448 + "proc-macro2", 3449 + "quote", 3450 + "syn", 3451 + ] 3452 + 3453 + [[package]] 3454 + name = "thiserror-impl" 3455 + version = "2.0.18" 3456 + source = "registry+https://github.com/rust-lang/crates.io-index" 3457 + checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" 3458 + dependencies = [ 3459 + "proc-macro2", 3460 + "quote", 3461 + "syn", 3462 + ] 3463 + 3464 + [[package]] 3465 + name = "thread-tree" 3466 + version = "0.3.3" 3467 + source = "registry+https://github.com/rust-lang/crates.io-index" 3468 + checksum = "ffbd370cb847953a25954d9f63e14824a36113f8c72eecf6eccef5dc4b45d630" 3469 + dependencies = [ 3470 + "crossbeam-channel", 3471 + ] 3472 + 3473 + [[package]] 3474 + name = "thread_local" 3475 + version = "1.1.9" 3476 + source = "registry+https://github.com/rust-lang/crates.io-index" 3477 + checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" 3478 + dependencies = [ 3479 + "cfg-if", 3480 + ] 3481 + 3482 + [[package]] 3483 + name = "time" 3484 + version = "0.3.47" 3485 + source = "registry+https://github.com/rust-lang/crates.io-index" 3486 + checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" 3487 + dependencies = [ 3488 + "deranged", 3489 + "itoa", 3490 + "num-conv", 3491 + "powerfmt", 3492 + "serde_core", 3493 + "time-core", 3494 + "time-macros", 3495 + ] 3496 + 3497 + [[package]] 3498 + name = "time-core" 3499 + version = "0.1.8" 3500 + source = "registry+https://github.com/rust-lang/crates.io-index" 3501 + checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" 3502 + 3503 + [[package]] 3504 + name = "time-macros" 3505 + version = "0.2.27" 3506 + source = "registry+https://github.com/rust-lang/crates.io-index" 3507 + checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" 3508 + dependencies = [ 3509 + "num-conv", 3510 + "time-core", 3511 + ] 3512 + 3513 + [[package]] 3514 + name = "tinystr" 3515 + version = "0.8.2" 3516 + source = "registry+https://github.com/rust-lang/crates.io-index" 3517 + checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" 3518 + dependencies = [ 3519 + "displaydoc", 3520 + "zerovec", 3521 + ] 3522 + 3523 + [[package]] 3524 + name = "toml" 3525 + version = "0.8.23" 3526 + source = "registry+https://github.com/rust-lang/crates.io-index" 3527 + checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" 3528 + dependencies = [ 3529 + "serde", 3530 + "serde_spanned", 3531 + "toml_datetime 0.6.11", 3532 + "toml_edit 0.22.27", 3533 + ] 3534 + 3535 + [[package]] 3536 + name = "toml_datetime" 3537 + version = "0.6.11" 3538 + source = "registry+https://github.com/rust-lang/crates.io-index" 3539 + checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" 3540 + dependencies = [ 3541 + "serde", 3542 + ] 3543 + 3544 + [[package]] 3545 + name = "toml_datetime" 3546 + version = "1.0.1+spec-1.1.0" 3547 + source = "registry+https://github.com/rust-lang/crates.io-index" 3548 + checksum = "9b320e741db58cac564e26c607d3cc1fdc4a88fd36c879568c07856ed83ff3e9" 3549 + dependencies = [ 3550 + "serde_core", 3551 + ] 3552 + 3553 + [[package]] 3554 + name = "toml_edit" 3555 + version = "0.22.27" 3556 + source = "registry+https://github.com/rust-lang/crates.io-index" 3557 + checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" 3558 + dependencies = [ 3559 + "indexmap", 3560 + "serde", 3561 + "serde_spanned", 3562 + "toml_datetime 0.6.11", 3563 + "toml_write", 3564 + "winnow 0.7.15", 3565 + ] 3566 + 3567 + [[package]] 3568 + name = "toml_edit" 3569 + version = "0.25.5+spec-1.1.0" 3570 + source = "registry+https://github.com/rust-lang/crates.io-index" 3571 + checksum = "8ca1a40644a28bce036923f6a431df0b34236949d111cc07cb6dca830c9ef2e1" 3572 + dependencies = [ 3573 + "indexmap", 3574 + "toml_datetime 1.0.1+spec-1.1.0", 3575 + "toml_parser", 3576 + "winnow 1.0.0", 3577 + ] 3578 + 3579 + [[package]] 3580 + name = "toml_parser" 3581 + version = "1.0.10+spec-1.1.0" 3582 + source = "registry+https://github.com/rust-lang/crates.io-index" 3583 + checksum = "7df25b4befd31c4816df190124375d5a20c6b6921e2cad937316de3fccd63420" 3584 + dependencies = [ 3585 + "winnow 1.0.0", 3586 + ] 3587 + 3588 + [[package]] 3589 + name = "toml_write" 3590 + version = "0.1.2" 3591 + source = "registry+https://github.com/rust-lang/crates.io-index" 3592 + checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" 3593 + 3594 + [[package]] 3595 + name = "tracing" 3596 + version = "0.1.44" 3597 + source = "registry+https://github.com/rust-lang/crates.io-index" 3598 + checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" 3599 + dependencies = [ 3600 + "pin-project-lite", 3601 + "tracing-attributes", 3602 + "tracing-core", 3603 + ] 3604 + 3605 + [[package]] 3606 + name = "tracing-appender" 3607 + version = "0.2.4" 3608 + source = "registry+https://github.com/rust-lang/crates.io-index" 3609 + checksum = "786d480bce6247ab75f005b14ae1624ad978d3029d9113f0a22fa1ac773faeaf" 3610 + dependencies = [ 3611 + "crossbeam-channel", 3612 + "thiserror 2.0.18", 3613 + "time", 3614 + "tracing-subscriber", 3615 + ] 3616 + 3617 + [[package]] 3618 + name = "tracing-attributes" 3619 + version = "0.1.31" 3620 + source = "registry+https://github.com/rust-lang/crates.io-index" 3621 + checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" 3622 + dependencies = [ 3623 + "proc-macro2", 3624 + "quote", 3625 + "syn", 3626 + ] 3627 + 3628 + [[package]] 3629 + name = "tracing-core" 3630 + version = "0.1.36" 3631 + source = "registry+https://github.com/rust-lang/crates.io-index" 3632 + checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" 3633 + dependencies = [ 3634 + "once_cell", 3635 + "valuable", 3636 + ] 3637 + 3638 + [[package]] 3639 + name = "tracing-log" 3640 + version = "0.2.0" 3641 + source = "registry+https://github.com/rust-lang/crates.io-index" 3642 + checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 3643 + dependencies = [ 3644 + "log", 3645 + "once_cell", 3646 + "tracing-core", 3647 + ] 3648 + 3649 + [[package]] 3650 + name = "tracing-subscriber" 3651 + version = "0.3.23" 3652 + source = "registry+https://github.com/rust-lang/crates.io-index" 3653 + checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" 3654 + dependencies = [ 3655 + "nu-ansi-term", 3656 + "sharded-slab", 3657 + "smallvec", 3658 + "thread_local", 3659 + "tracing-core", 3660 + "tracing-log", 3661 + ] 3662 + 3663 + [[package]] 3664 + name = "typst-syntax" 3665 + version = "0.14.2" 3666 + source = "registry+https://github.com/rust-lang/crates.io-index" 3667 + checksum = "a95d9192060e23b1e491b0b94dff676acddc92a4d672aeb8ca3890a5a734e879" 3668 + dependencies = [ 3669 + "ecow", 3670 + "rustc-hash 2.1.1", 3671 + "serde", 3672 + "toml", 3673 + "typst-timing", 3674 + "typst-utils", 3675 + "unicode-ident", 3676 + "unicode-math-class", 3677 + "unicode-script", 3678 + "unicode-segmentation", 3679 + "unscanny", 3680 + ] 3681 + 3682 + [[package]] 3683 + name = "typst-timing" 3684 + version = "0.14.2" 3685 + source = "registry+https://github.com/rust-lang/crates.io-index" 3686 + checksum = "7be94f8faf19841b49574ef5c7fd7a12e2deb7c3d8deba5a596f35d2222024cd" 3687 + dependencies = [ 3688 + "parking_lot", 3689 + "serde", 3690 + "serde_json", 3691 + ] 3692 + 3693 + [[package]] 3694 + name = "typst-utils" 3695 + version = "0.14.2" 3696 + source = "registry+https://github.com/rust-lang/crates.io-index" 3697 + checksum = "a3966c92e8fa48c7ce898130d07000d985f18206d92b250f0f939287fbccdee3" 3698 + dependencies = [ 3699 + "once_cell", 3700 + "portable-atomic", 3701 + "rayon", 3702 + "rustc-hash 2.1.1", 3703 + "siphasher", 3704 + "thin-vec", 3705 + "unicode-math-class", 3706 + ] 3707 + 3708 + [[package]] 3709 + name = "ug" 3710 + version = "0.1.0" 3711 + source = "registry+https://github.com/rust-lang/crates.io-index" 3712 + checksum = "03719c61a91b51541f076dfdba45caacf750b230cefaa4b32d6f5411c3f7f437" 3713 + dependencies = [ 3714 + "gemm 0.18.2", 3715 + "half", 3716 + "libloading", 3717 + "memmap2", 3718 + "num", 3719 + "num-traits", 3720 + "num_cpus", 3721 + "rayon", 3722 + "safetensors", 3723 + "serde", 3724 + "thiserror 1.0.69", 3725 + "tracing", 3726 + "yoke 0.7.5", 3727 + ] 3728 + 3729 + [[package]] 3730 + name = "unicode-ident" 3731 + version = "1.0.24" 3732 + source = "registry+https://github.com/rust-lang/crates.io-index" 3733 + checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" 3734 + 3735 + [[package]] 3736 + name = "unicode-math-class" 3737 + version = "0.1.0" 3738 + source = "registry+https://github.com/rust-lang/crates.io-index" 3739 + checksum = "7d246cf599d5fae3c8d56e04b20eb519adb89a8af8d0b0fbcded369aa3647d65" 3740 + 3741 + [[package]] 3742 + name = "unicode-script" 3743 + version = "0.5.8" 3744 + source = "registry+https://github.com/rust-lang/crates.io-index" 3745 + checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" 3746 + 3747 + [[package]] 3748 + name = "unicode-segmentation" 3749 + version = "1.12.0" 3750 + source = "registry+https://github.com/rust-lang/crates.io-index" 3751 + checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 3752 + 3753 + [[package]] 3754 + name = "unicode-width" 3755 + version = "0.2.2" 3756 + source = "registry+https://github.com/rust-lang/crates.io-index" 3757 + checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" 3758 + 3759 + [[package]] 3760 + name = "unicode-xid" 3761 + version = "0.2.6" 3762 + source = "registry+https://github.com/rust-lang/crates.io-index" 3763 + checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 3764 + 3765 + [[package]] 3766 + name = "unscanny" 3767 + version = "0.1.0" 3768 + source = "registry+https://github.com/rust-lang/crates.io-index" 3769 + checksum = "e9df2af067a7953e9c3831320f35c1cc0600c30d44d9f7a12b01db1cd88d6b47" 3770 + 3771 + [[package]] 3772 + name = "unty" 3773 + version = "0.0.4" 3774 + source = "registry+https://github.com/rust-lang/crates.io-index" 3775 + checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" 3776 + 3777 + [[package]] 3778 + name = "url" 3779 + version = "2.5.8" 3780 + source = "registry+https://github.com/rust-lang/crates.io-index" 3781 + checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" 3782 + dependencies = [ 3783 + "form_urlencoded", 3784 + "idna", 3785 + "percent-encoding", 3786 + "serde", 3787 + ] 3788 + 3789 + [[package]] 3790 + name = "utf8_iter" 3791 + version = "1.0.4" 3792 + source = "registry+https://github.com/rust-lang/crates.io-index" 3793 + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 3794 + 3795 + [[package]] 3796 + name = "utf8parse" 3797 + version = "0.2.2" 3798 + source = "registry+https://github.com/rust-lang/crates.io-index" 3799 + checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" 3800 + 3801 + [[package]] 3802 + name = "uuid" 3803 + version = "1.22.0" 3804 + source = "registry+https://github.com/rust-lang/crates.io-index" 3805 + checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" 3806 + 3807 + [[package]] 3808 + name = "valuable" 3809 + version = "0.1.1" 3810 + source = "registry+https://github.com/rust-lang/crates.io-index" 3811 + checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 3812 + 3813 + [[package]] 3814 + name = "variadics_please" 3815 + version = "1.1.0" 3816 + source = "registry+https://github.com/rust-lang/crates.io-index" 3817 + checksum = "41b6d82be61465f97d42bd1d15bf20f3b0a3a0905018f38f9d6f6962055b0b5c" 3818 + dependencies = [ 3819 + "proc-macro2", 3820 + "quote", 3821 + "syn", 3822 + ] 3823 + 3824 + [[package]] 3825 + name = "vcpkg" 3826 + version = "0.2.15" 3827 + source = "registry+https://github.com/rust-lang/crates.io-index" 3828 + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 3829 + 3830 + [[package]] 3831 + name = "version_check" 3832 + version = "0.9.5" 3833 + source = "registry+https://github.com/rust-lang/crates.io-index" 3834 + checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 3835 + 3836 + [[package]] 3837 + name = "walkdir" 3838 + version = "2.5.0" 3839 + source = "registry+https://github.com/rust-lang/crates.io-index" 3840 + checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 3841 + dependencies = [ 3842 + "same-file", 3843 + "winapi-util", 3844 + ] 3845 + 3846 + [[package]] 3847 + name = "wasi" 3848 + version = "0.11.1+wasi-snapshot-preview1" 3849 + source = "registry+https://github.com/rust-lang/crates.io-index" 3850 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 3851 + 3852 + [[package]] 3853 + name = "wasip2" 3854 + version = "1.0.2+wasi-0.2.9" 3855 + source = "registry+https://github.com/rust-lang/crates.io-index" 3856 + checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" 3857 + dependencies = [ 3858 + "wit-bindgen", 3859 + ] 3860 + 3861 + [[package]] 3862 + name = "wasip3" 3863 + version = "0.4.0+wasi-0.3.0-rc-2026-01-06" 3864 + source = "registry+https://github.com/rust-lang/crates.io-index" 3865 + checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" 3866 + dependencies = [ 3867 + "wit-bindgen", 3868 + ] 3869 + 3870 + [[package]] 3871 + name = "wasm-bindgen" 3872 + version = "0.2.114" 3873 + source = "registry+https://github.com/rust-lang/crates.io-index" 3874 + checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" 3875 + dependencies = [ 3876 + "cfg-if", 3877 + "once_cell", 3878 + "rustversion", 3879 + "wasm-bindgen-macro", 3880 + "wasm-bindgen-shared", 3881 + ] 3882 + 3883 + [[package]] 3884 + name = "wasm-bindgen-futures" 3885 + version = "0.4.64" 3886 + source = "registry+https://github.com/rust-lang/crates.io-index" 3887 + checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" 3888 + dependencies = [ 3889 + "cfg-if", 3890 + "futures-util", 3891 + "js-sys", 3892 + "once_cell", 3893 + "wasm-bindgen", 3894 + "web-sys", 3895 + ] 3896 + 3897 + [[package]] 3898 + name = "wasm-bindgen-macro" 3899 + version = "0.2.114" 3900 + source = "registry+https://github.com/rust-lang/crates.io-index" 3901 + checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" 3902 + dependencies = [ 3903 + "quote", 3904 + "wasm-bindgen-macro-support", 3905 + ] 3906 + 3907 + [[package]] 3908 + name = "wasm-bindgen-macro-support" 3909 + version = "0.2.114" 3910 + source = "registry+https://github.com/rust-lang/crates.io-index" 3911 + checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" 3912 + dependencies = [ 3913 + "bumpalo", 3914 + "proc-macro2", 3915 + "quote", 3916 + "syn", 3917 + "wasm-bindgen-shared", 3918 + ] 3919 + 3920 + [[package]] 3921 + name = "wasm-bindgen-shared" 3922 + version = "0.2.114" 3923 + source = "registry+https://github.com/rust-lang/crates.io-index" 3924 + checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" 3925 + dependencies = [ 3926 + "unicode-ident", 3927 + ] 3928 + 3929 + [[package]] 3930 + name = "wasm-encoder" 3931 + version = "0.244.0" 3932 + source = "registry+https://github.com/rust-lang/crates.io-index" 3933 + checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" 3934 + dependencies = [ 3935 + "leb128fmt", 3936 + "wasmparser", 3937 + ] 3938 + 3939 + [[package]] 3940 + name = "wasm-metadata" 3941 + version = "0.244.0" 3942 + source = "registry+https://github.com/rust-lang/crates.io-index" 3943 + checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" 3944 + dependencies = [ 3945 + "anyhow", 3946 + "indexmap", 3947 + "wasm-encoder", 3948 + "wasmparser", 3949 + ] 3950 + 3951 + [[package]] 3952 + name = "wasmparser" 3953 + version = "0.244.0" 3954 + source = "registry+https://github.com/rust-lang/crates.io-index" 3955 + checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" 3956 + dependencies = [ 3957 + "bitflags 2.11.0", 3958 + "hashbrown 0.15.5", 3959 + "indexmap", 3960 + "semver", 3961 + ] 3962 + 3963 + [[package]] 3964 + name = "web-sys" 3965 + version = "0.3.91" 3966 + source = "registry+https://github.com/rust-lang/crates.io-index" 3967 + checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" 3968 + dependencies = [ 3969 + "js-sys", 3970 + "wasm-bindgen", 3971 + ] 3972 + 3973 + [[package]] 3974 + name = "web-time" 3975 + version = "1.1.0" 3976 + source = "registry+https://github.com/rust-lang/crates.io-index" 3977 + checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 3978 + dependencies = [ 3979 + "js-sys", 3980 + "wasm-bindgen", 3981 + ] 3982 + 3983 + [[package]] 3984 + name = "wgpu" 3985 + version = "25.0.2" 3986 + source = "registry+https://github.com/rust-lang/crates.io-index" 3987 + checksum = "ec8fb398f119472be4d80bc3647339f56eb63b2a331f6a3d16e25d8144197dd9" 3988 + dependencies = [ 3989 + "arrayvec", 3990 + "bitflags 2.11.0", 3991 + "cfg_aliases", 3992 + "document-features", 3993 + "hashbrown 0.15.5", 3994 + "js-sys", 3995 + "log", 3996 + "naga", 3997 + "parking_lot", 3998 + "portable-atomic", 3999 + "profiling", 4000 + "raw-window-handle", 4001 + "smallvec", 4002 + "static_assertions", 4003 + "wasm-bindgen", 4004 + "wasm-bindgen-futures", 4005 + "web-sys", 4006 + "wgpu-core", 4007 + "wgpu-hal", 4008 + "wgpu-types", 4009 + ] 4010 + 4011 + [[package]] 4012 + name = "wgpu-core" 4013 + version = "25.0.2" 4014 + source = "registry+https://github.com/rust-lang/crates.io-index" 4015 + checksum = "f7b882196f8368511d613c6aeec80655160db6646aebddf8328879a88d54e500" 4016 + dependencies = [ 4017 + "arrayvec", 4018 + "bit-set", 4019 + "bit-vec", 4020 + "bitflags 2.11.0", 4021 + "cfg_aliases", 4022 + "document-features", 4023 + "hashbrown 0.15.5", 4024 + "indexmap", 4025 + "log", 4026 + "naga", 4027 + "once_cell", 4028 + "parking_lot", 4029 + "portable-atomic", 4030 + "profiling", 4031 + "raw-window-handle", 4032 + "rustc-hash 1.1.0", 4033 + "smallvec", 4034 + "thiserror 2.0.18", 4035 + "wgpu-core-deps-apple", 4036 + "wgpu-core-deps-emscripten", 4037 + "wgpu-core-deps-windows-linux-android", 4038 + "wgpu-hal", 4039 + "wgpu-types", 4040 + ] 4041 + 4042 + [[package]] 4043 + name = "wgpu-core-deps-apple" 4044 + version = "25.0.0" 4045 + source = "registry+https://github.com/rust-lang/crates.io-index" 4046 + checksum = "cfd488b3239b6b7b185c3b045c39ca6bf8af34467a4c5de4e0b1a564135d093d" 4047 + dependencies = [ 4048 + "wgpu-hal", 4049 + ] 4050 + 4051 + [[package]] 4052 + name = "wgpu-core-deps-emscripten" 4053 + version = "25.0.0" 4054 + source = "registry+https://github.com/rust-lang/crates.io-index" 4055 + checksum = "f09ad7aceb3818e52539acc679f049d3475775586f3f4e311c30165cf2c00445" 4056 + dependencies = [ 4057 + "wgpu-hal", 4058 + ] 4059 + 4060 + [[package]] 4061 + name = "wgpu-core-deps-windows-linux-android" 4062 + version = "25.0.0" 4063 + source = "registry+https://github.com/rust-lang/crates.io-index" 4064 + checksum = "cba5fb5f7f9c98baa7c889d444f63ace25574833df56f5b817985f641af58e46" 4065 + dependencies = [ 4066 + "wgpu-hal", 4067 + ] 4068 + 4069 + [[package]] 4070 + name = "wgpu-hal" 4071 + version = "25.0.2" 4072 + source = "registry+https://github.com/rust-lang/crates.io-index" 4073 + checksum = "f968767fe4d3d33747bbd1473ccd55bf0f6451f55d733b5597e67b5deab4ad17" 4074 + dependencies = [ 4075 + "android_system_properties", 4076 + "arrayvec", 4077 + "ash", 4078 + "bit-set", 4079 + "bitflags 2.11.0", 4080 + "block", 4081 + "bytemuck", 4082 + "cfg-if", 4083 + "cfg_aliases", 4084 + "core-graphics-types", 4085 + "glow", 4086 + "glutin_wgl_sys", 4087 + "gpu-alloc", 4088 + "gpu-allocator", 4089 + "gpu-descriptor", 4090 + "hashbrown 0.15.5", 4091 + "js-sys", 4092 + "khronos-egl", 4093 + "libc", 4094 + "libloading", 4095 + "log", 4096 + "metal", 4097 + "naga", 4098 + "ndk-sys", 4099 + "objc", 4100 + "ordered-float", 4101 + "parking_lot", 4102 + "portable-atomic", 4103 + "profiling", 4104 + "range-alloc", 4105 + "raw-window-handle", 4106 + "renderdoc-sys", 4107 + "smallvec", 4108 + "thiserror 2.0.18", 4109 + "wasm-bindgen", 4110 + "web-sys", 4111 + "wgpu-types", 4112 + "windows 0.58.0", 4113 + "windows-core 0.58.0", 4114 + ] 4115 + 4116 + [[package]] 4117 + name = "wgpu-types" 4118 + version = "25.0.0" 4119 + source = "registry+https://github.com/rust-lang/crates.io-index" 4120 + checksum = "2aa49460c2a8ee8edba3fca54325540d904dd85b2e086ada762767e17d06e8bc" 4121 + dependencies = [ 4122 + "bitflags 2.11.0", 4123 + "bytemuck", 4124 + "js-sys", 4125 + "log", 4126 + "thiserror 2.0.18", 4127 + "web-sys", 4128 + ] 4129 + 4130 + [[package]] 4131 + name = "winapi" 4132 + version = "0.3.9" 4133 + source = "registry+https://github.com/rust-lang/crates.io-index" 4134 + checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 4135 + dependencies = [ 4136 + "winapi-i686-pc-windows-gnu", 4137 + "winapi-x86_64-pc-windows-gnu", 4138 + ] 4139 + 4140 + [[package]] 4141 + name = "winapi-i686-pc-windows-gnu" 4142 + version = "0.4.0" 4143 + source = "registry+https://github.com/rust-lang/crates.io-index" 4144 + checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 4145 + 4146 + [[package]] 4147 + name = "winapi-util" 4148 + version = "0.1.11" 4149 + source = "registry+https://github.com/rust-lang/crates.io-index" 4150 + checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" 4151 + dependencies = [ 4152 + "windows-sys 0.61.2", 4153 + ] 4154 + 4155 + [[package]] 4156 + name = "winapi-x86_64-pc-windows-gnu" 4157 + version = "0.4.0" 4158 + source = "registry+https://github.com/rust-lang/crates.io-index" 4159 + checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 4160 + 4161 + [[package]] 4162 + name = "windows" 4163 + version = "0.57.0" 4164 + source = "registry+https://github.com/rust-lang/crates.io-index" 4165 + checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" 4166 + dependencies = [ 4167 + "windows-core 0.57.0", 4168 + "windows-targets 0.52.6", 4169 + ] 4170 + 4171 + [[package]] 4172 + name = "windows" 4173 + version = "0.58.0" 4174 + source = "registry+https://github.com/rust-lang/crates.io-index" 4175 + checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" 4176 + dependencies = [ 4177 + "windows-core 0.58.0", 4178 + "windows-targets 0.52.6", 4179 + ] 4180 + 4181 + [[package]] 4182 + name = "windows-core" 4183 + version = "0.57.0" 4184 + source = "registry+https://github.com/rust-lang/crates.io-index" 4185 + checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" 4186 + dependencies = [ 4187 + "windows-implement 0.57.0", 4188 + "windows-interface 0.57.0", 4189 + "windows-result 0.1.2", 4190 + "windows-targets 0.52.6", 4191 + ] 4192 + 4193 + [[package]] 4194 + name = "windows-core" 4195 + version = "0.58.0" 4196 + source = "registry+https://github.com/rust-lang/crates.io-index" 4197 + checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" 4198 + dependencies = [ 4199 + "windows-implement 0.58.0", 4200 + "windows-interface 0.58.0", 4201 + "windows-result 0.2.0", 4202 + "windows-strings", 4203 + "windows-targets 0.52.6", 4204 + ] 4205 + 4206 + [[package]] 4207 + name = "windows-implement" 4208 + version = "0.57.0" 4209 + source = "registry+https://github.com/rust-lang/crates.io-index" 4210 + checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" 4211 + dependencies = [ 4212 + "proc-macro2", 4213 + "quote", 4214 + "syn", 4215 + ] 4216 + 4217 + [[package]] 4218 + name = "windows-implement" 4219 + version = "0.58.0" 4220 + source = "registry+https://github.com/rust-lang/crates.io-index" 4221 + checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" 4222 + dependencies = [ 4223 + "proc-macro2", 4224 + "quote", 4225 + "syn", 4226 + ] 4227 + 4228 + [[package]] 4229 + name = "windows-interface" 4230 + version = "0.57.0" 4231 + source = "registry+https://github.com/rust-lang/crates.io-index" 4232 + checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" 4233 + dependencies = [ 4234 + "proc-macro2", 4235 + "quote", 4236 + "syn", 4237 + ] 4238 + 4239 + [[package]] 4240 + name = "windows-interface" 4241 + version = "0.58.0" 4242 + source = "registry+https://github.com/rust-lang/crates.io-index" 4243 + checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" 4244 + dependencies = [ 4245 + "proc-macro2", 4246 + "quote", 4247 + "syn", 4248 + ] 4249 + 4250 + [[package]] 4251 + name = "windows-link" 4252 + version = "0.2.1" 4253 + source = "registry+https://github.com/rust-lang/crates.io-index" 4254 + checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" 4255 + 4256 + [[package]] 4257 + name = "windows-result" 4258 + version = "0.1.2" 4259 + source = "registry+https://github.com/rust-lang/crates.io-index" 4260 + checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" 4261 + dependencies = [ 4262 + "windows-targets 0.52.6", 4263 + ] 4264 + 4265 + [[package]] 4266 + name = "windows-result" 4267 + version = "0.2.0" 4268 + source = "registry+https://github.com/rust-lang/crates.io-index" 4269 + checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" 4270 + dependencies = [ 4271 + "windows-targets 0.52.6", 4272 + ] 4273 + 4274 + [[package]] 4275 + name = "windows-strings" 4276 + version = "0.1.0" 4277 + source = "registry+https://github.com/rust-lang/crates.io-index" 4278 + checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" 4279 + dependencies = [ 4280 + "windows-result 0.2.0", 4281 + "windows-targets 0.52.6", 4282 + ] 4283 + 4284 + [[package]] 4285 + name = "windows-sys" 4286 + version = "0.48.0" 4287 + source = "registry+https://github.com/rust-lang/crates.io-index" 4288 + checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 4289 + dependencies = [ 4290 + "windows-targets 0.48.5", 4291 + ] 4292 + 4293 + [[package]] 4294 + name = "windows-sys" 4295 + version = "0.61.2" 4296 + source = "registry+https://github.com/rust-lang/crates.io-index" 4297 + checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 4298 + dependencies = [ 4299 + "windows-link", 4300 + ] 4301 + 4302 + [[package]] 4303 + name = "windows-targets" 4304 + version = "0.48.5" 4305 + source = "registry+https://github.com/rust-lang/crates.io-index" 4306 + checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 4307 + dependencies = [ 4308 + "windows_aarch64_gnullvm 0.48.5", 4309 + "windows_aarch64_msvc 0.48.5", 4310 + "windows_i686_gnu 0.48.5", 4311 + "windows_i686_msvc 0.48.5", 4312 + "windows_x86_64_gnu 0.48.5", 4313 + "windows_x86_64_gnullvm 0.48.5", 4314 + "windows_x86_64_msvc 0.48.5", 4315 + ] 4316 + 4317 + [[package]] 4318 + name = "windows-targets" 4319 + version = "0.52.6" 4320 + source = "registry+https://github.com/rust-lang/crates.io-index" 4321 + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 4322 + dependencies = [ 4323 + "windows_aarch64_gnullvm 0.52.6", 4324 + "windows_aarch64_msvc 0.52.6", 4325 + "windows_i686_gnu 0.52.6", 4326 + "windows_i686_gnullvm", 4327 + "windows_i686_msvc 0.52.6", 4328 + "windows_x86_64_gnu 0.52.6", 4329 + "windows_x86_64_gnullvm 0.52.6", 4330 + "windows_x86_64_msvc 0.52.6", 4331 + ] 4332 + 4333 + [[package]] 4334 + name = "windows_aarch64_gnullvm" 4335 + version = "0.48.5" 4336 + source = "registry+https://github.com/rust-lang/crates.io-index" 4337 + checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 4338 + 4339 + [[package]] 4340 + name = "windows_aarch64_gnullvm" 4341 + version = "0.52.6" 4342 + source = "registry+https://github.com/rust-lang/crates.io-index" 4343 + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 4344 + 4345 + [[package]] 4346 + name = "windows_aarch64_msvc" 4347 + version = "0.48.5" 4348 + source = "registry+https://github.com/rust-lang/crates.io-index" 4349 + checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 4350 + 4351 + [[package]] 4352 + name = "windows_aarch64_msvc" 4353 + version = "0.52.6" 4354 + source = "registry+https://github.com/rust-lang/crates.io-index" 4355 + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 4356 + 4357 + [[package]] 4358 + name = "windows_i686_gnu" 4359 + version = "0.48.5" 4360 + source = "registry+https://github.com/rust-lang/crates.io-index" 4361 + checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 4362 + 4363 + [[package]] 4364 + name = "windows_i686_gnu" 4365 + version = "0.52.6" 4366 + source = "registry+https://github.com/rust-lang/crates.io-index" 4367 + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 4368 + 4369 + [[package]] 4370 + name = "windows_i686_gnullvm" 4371 + version = "0.52.6" 4372 + source = "registry+https://github.com/rust-lang/crates.io-index" 4373 + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 4374 + 4375 + [[package]] 4376 + name = "windows_i686_msvc" 4377 + version = "0.48.5" 4378 + source = "registry+https://github.com/rust-lang/crates.io-index" 4379 + checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 4380 + 4381 + [[package]] 4382 + name = "windows_i686_msvc" 4383 + version = "0.52.6" 4384 + source = "registry+https://github.com/rust-lang/crates.io-index" 4385 + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 4386 + 4387 + [[package]] 4388 + name = "windows_x86_64_gnu" 4389 + version = "0.48.5" 4390 + source = "registry+https://github.com/rust-lang/crates.io-index" 4391 + checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 4392 + 4393 + [[package]] 4394 + name = "windows_x86_64_gnu" 4395 + version = "0.52.6" 4396 + source = "registry+https://github.com/rust-lang/crates.io-index" 4397 + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 4398 + 4399 + [[package]] 4400 + name = "windows_x86_64_gnullvm" 4401 + version = "0.48.5" 4402 + source = "registry+https://github.com/rust-lang/crates.io-index" 4403 + checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 4404 + 4405 + [[package]] 4406 + name = "windows_x86_64_gnullvm" 4407 + version = "0.52.6" 4408 + source = "registry+https://github.com/rust-lang/crates.io-index" 4409 + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 4410 + 4411 + [[package]] 4412 + name = "windows_x86_64_msvc" 4413 + version = "0.48.5" 4414 + source = "registry+https://github.com/rust-lang/crates.io-index" 4415 + checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 4416 + 4417 + [[package]] 4418 + name = "windows_x86_64_msvc" 4419 + version = "0.52.6" 4420 + source = "registry+https://github.com/rust-lang/crates.io-index" 4421 + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 4422 + 4423 + [[package]] 4424 + name = "winnow" 4425 + version = "0.7.15" 4426 + source = "registry+https://github.com/rust-lang/crates.io-index" 4427 + checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" 4428 + dependencies = [ 4429 + "memchr", 4430 + ] 4431 + 4432 + [[package]] 4433 + name = "winnow" 4434 + version = "1.0.0" 4435 + source = "registry+https://github.com/rust-lang/crates.io-index" 4436 + checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8" 4437 + dependencies = [ 4438 + "memchr", 4439 + ] 4440 + 4441 + [[package]] 4442 + name = "wit-bindgen" 4443 + version = "0.51.0" 4444 + source = "registry+https://github.com/rust-lang/crates.io-index" 4445 + checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" 4446 + dependencies = [ 4447 + "wit-bindgen-rust-macro", 4448 + ] 4449 + 4450 + [[package]] 4451 + name = "wit-bindgen-core" 4452 + version = "0.51.0" 4453 + source = "registry+https://github.com/rust-lang/crates.io-index" 4454 + checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" 4455 + dependencies = [ 4456 + "anyhow", 4457 + "heck", 4458 + "wit-parser", 4459 + ] 4460 + 4461 + [[package]] 4462 + name = "wit-bindgen-rust" 4463 + version = "0.51.0" 4464 + source = "registry+https://github.com/rust-lang/crates.io-index" 4465 + checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" 4466 + dependencies = [ 4467 + "anyhow", 4468 + "heck", 4469 + "indexmap", 4470 + "prettyplease", 4471 + "syn", 4472 + "wasm-metadata", 4473 + "wit-bindgen-core", 4474 + "wit-component", 4475 + ] 4476 + 4477 + [[package]] 4478 + name = "wit-bindgen-rust-macro" 4479 + version = "0.51.0" 4480 + source = "registry+https://github.com/rust-lang/crates.io-index" 4481 + checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" 4482 + dependencies = [ 4483 + "anyhow", 4484 + "prettyplease", 4485 + "proc-macro2", 4486 + "quote", 4487 + "syn", 4488 + "wit-bindgen-core", 4489 + "wit-bindgen-rust", 4490 + ] 4491 + 4492 + [[package]] 4493 + name = "wit-component" 4494 + version = "0.244.0" 4495 + source = "registry+https://github.com/rust-lang/crates.io-index" 4496 + checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" 4497 + dependencies = [ 4498 + "anyhow", 4499 + "bitflags 2.11.0", 4500 + "indexmap", 4501 + "log", 4502 + "serde", 4503 + "serde_derive", 4504 + "serde_json", 4505 + "wasm-encoder", 4506 + "wasm-metadata", 4507 + "wasmparser", 4508 + "wit-parser", 4509 + ] 4510 + 4511 + [[package]] 4512 + name = "wit-parser" 4513 + version = "0.244.0" 4514 + source = "registry+https://github.com/rust-lang/crates.io-index" 4515 + checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" 4516 + dependencies = [ 4517 + "anyhow", 4518 + "id-arena", 4519 + "indexmap", 4520 + "log", 4521 + "semver", 4522 + "serde", 4523 + "serde_derive", 4524 + "serde_json", 4525 + "unicode-xid", 4526 + "wasmparser", 4527 + ] 4528 + 4529 + [[package]] 4530 + name = "wrapcenum-derive" 4531 + version = "0.4.1" 4532 + source = "registry+https://github.com/rust-lang/crates.io-index" 4533 + checksum = "a76ff259533532054cfbaefb115c613203c73707017459206380f03b3b3f266e" 4534 + dependencies = [ 4535 + "darling", 4536 + "proc-macro2", 4537 + "quote", 4538 + "syn", 4539 + ] 4540 + 4541 + [[package]] 4542 + name = "writeable" 4543 + version = "0.6.2" 4544 + source = "registry+https://github.com/rust-lang/crates.io-index" 4545 + checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" 4546 + 4547 + [[package]] 4548 + name = "xml-rs" 4549 + version = "0.8.28" 4550 + source = "registry+https://github.com/rust-lang/crates.io-index" 4551 + checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" 4552 + 4553 + [[package]] 4554 + name = "yoke" 4555 + version = "0.7.5" 4556 + source = "registry+https://github.com/rust-lang/crates.io-index" 4557 + checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" 4558 + dependencies = [ 4559 + "serde", 4560 + "stable_deref_trait", 4561 + "yoke-derive 0.7.5", 4562 + "zerofrom", 4563 + ] 4564 + 4565 + [[package]] 4566 + name = "yoke" 4567 + version = "0.8.1" 4568 + source = "registry+https://github.com/rust-lang/crates.io-index" 4569 + checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" 4570 + dependencies = [ 4571 + "stable_deref_trait", 4572 + "yoke-derive 0.8.1", 4573 + "zerofrom", 4574 + ] 4575 + 4576 + [[package]] 4577 + name = "yoke-derive" 4578 + version = "0.7.5" 4579 + source = "registry+https://github.com/rust-lang/crates.io-index" 4580 + checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" 4581 + dependencies = [ 4582 + "proc-macro2", 4583 + "quote", 4584 + "syn", 4585 + "synstructure", 4586 + ] 4587 + 4588 + [[package]] 4589 + name = "yoke-derive" 4590 + version = "0.8.1" 4591 + source = "registry+https://github.com/rust-lang/crates.io-index" 4592 + checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" 4593 + dependencies = [ 4594 + "proc-macro2", 4595 + "quote", 4596 + "syn", 4597 + "synstructure", 4598 + ] 4599 + 4600 + [[package]] 4601 + name = "zerocopy" 4602 + version = "0.8.47" 4603 + source = "registry+https://github.com/rust-lang/crates.io-index" 4604 + checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87" 4605 + dependencies = [ 4606 + "zerocopy-derive", 4607 + ] 4608 + 4609 + [[package]] 4610 + name = "zerocopy-derive" 4611 + version = "0.8.47" 4612 + source = "registry+https://github.com/rust-lang/crates.io-index" 4613 + checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89" 4614 + dependencies = [ 4615 + "proc-macro2", 4616 + "quote", 4617 + "syn", 4618 + ] 4619 + 4620 + [[package]] 4621 + name = "zerofrom" 4622 + version = "0.1.6" 4623 + source = "registry+https://github.com/rust-lang/crates.io-index" 4624 + checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 4625 + dependencies = [ 4626 + "zerofrom-derive", 4627 + ] 4628 + 4629 + [[package]] 4630 + name = "zerofrom-derive" 4631 + version = "0.1.6" 4632 + source = "registry+https://github.com/rust-lang/crates.io-index" 4633 + checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 4634 + dependencies = [ 4635 + "proc-macro2", 4636 + "quote", 4637 + "syn", 4638 + "synstructure", 4639 + ] 4640 + 4641 + [[package]] 4642 + name = "zerotrie" 4643 + version = "0.2.3" 4644 + source = "registry+https://github.com/rust-lang/crates.io-index" 4645 + checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" 4646 + dependencies = [ 4647 + "displaydoc", 4648 + "yoke 0.8.1", 4649 + "zerofrom", 4650 + ] 4651 + 4652 + [[package]] 4653 + name = "zerovec" 4654 + version = "0.11.5" 4655 + source = "registry+https://github.com/rust-lang/crates.io-index" 4656 + checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" 4657 + dependencies = [ 4658 + "yoke 0.8.1", 4659 + "zerofrom", 4660 + "zerovec-derive", 4661 + ] 4662 + 4663 + [[package]] 4664 + name = "zerovec-derive" 4665 + version = "0.11.2" 4666 + source = "registry+https://github.com/rust-lang/crates.io-index" 4667 + checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" 4668 + dependencies = [ 4669 + "proc-macro2", 4670 + "quote", 4671 + "syn", 4672 + ] 4673 + 4674 + [[package]] 4675 + name = "zip" 4676 + version = "1.1.4" 4677 + source = "registry+https://github.com/rust-lang/crates.io-index" 4678 + checksum = "9cc23c04387f4da0374be4533ad1208cbb091d5c11d070dfef13676ad6497164" 4679 + dependencies = [ 4680 + "arbitrary", 4681 + "crc32fast", 4682 + "crossbeam-utils", 4683 + "displaydoc", 4684 + "indexmap", 4685 + "num_enum", 4686 + "thiserror 1.0.69", 4687 + ] 4688 + 4689 + [[package]] 4690 + name = "zmij" 4691 + version = "1.0.21" 4692 + source = "registry+https://github.com/rust-lang/crates.io-index" 4693 + checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+15
Cargo.toml
··· 1 + [workspace] 2 + members = [ 3 + "crates/tala-format", 4 + "crates/tala-srs", 5 + "crates/tala-cli", 6 + ] 7 + resolver = "2" 8 + 9 + [workspace.dependencies] 10 + typst-syntax = "0.14.2" 11 + serde = { version = "1.0.228", features = ["derive"] } 12 + serde_json = "1.0.149" 13 + fsrs = "5.2.0" 14 + clap = { version = "4.6.0", features = ["derive"] } 15 + git2 = "0.20.4"
+15
crates/tala-cli/Cargo.toml
··· 1 + [package] 2 + name = "tala-cli" 3 + version = "0.1.0" 4 + edition = "2024" 5 + 6 + [[bin]] 7 + name = "tala" 8 + path = "src/main.rs" 9 + 10 + [dependencies] 11 + tala-format = { path = "../tala-format" } 12 + tala-srs = { path = "../tala-srs" } 13 + clap = { workspace = true } 14 + git2 = { workspace = true } 15 + serde_json = { workspace = true }
+109
crates/tala-cli/src/main.rs
··· 1 + use std::path::{Path, PathBuf}; 2 + 3 + use clap::{Parser, Subcommand}; 4 + use tala_format::{parse_cards, CardKind}; 5 + use tala_srs::Sidecar; 6 + 7 + #[derive(Parser)] 8 + #[command(name = "tala", about = "Tala flashcard tools")] 9 + struct Cli { 10 + #[command(subcommand)] 11 + command: Command, 12 + } 13 + 14 + #[derive(Subcommand)] 15 + enum Command { 16 + /// Parse a deck directory and report card stats, missing IDs, and orphaned 17 + /// sidecar entries. 18 + Check { 19 + /// Path to the deck directory (must contain cards.typ). 20 + deck: PathBuf, 21 + }, 22 + /// Run an interactive review session for the due cards in a deck. 23 + Review { 24 + deck: PathBuf, 25 + }, 26 + } 27 + 28 + fn main() { 29 + let cli = Cli::parse(); 30 + let result = match cli.command { 31 + Command::Check { deck } => cmd_check(&deck), 32 + Command::Review { deck } => cmd_review(&deck), 33 + }; 34 + if let Err(e) = result { 35 + eprintln!("error: {e}"); 36 + std::process::exit(1); 37 + } 38 + } 39 + 40 + // ── check ───────────────────────────────────────────────────────────────────── 41 + 42 + fn cmd_check(deck: &Path) -> Result<(), Box<dyn std::error::Error>> { 43 + let source_path = deck.join("cards.typ"); 44 + let source = std::fs::read_to_string(&source_path) 45 + .map_err(|_| format!("could not read {}", source_path.display()))?; 46 + 47 + let cards = parse_cards(&source); 48 + let ids: Vec<String> = cards.iter().map(|c| c.id.clone()).collect(); 49 + 50 + println!("{} cards found", cards.len()); 51 + 52 + // Per-type breakdown 53 + let n_fb = cards.iter().filter(|c| matches!(c.kind, CardKind::FrontBack { .. })).count(); 54 + let n_cloze = cards.iter().filter(|c| matches!(c.kind, CardKind::Cloze { .. })).count(); 55 + let n_img = cards.iter().filter(|c| matches!(c.kind, CardKind::ImgCloze { .. })).count(); 56 + println!(" front/back: {n_fb} cloze: {n_cloze} img-cloze: {n_img}"); 57 + 58 + // Duplicate IDs 59 + let mut seen = std::collections::HashSet::new(); 60 + let mut dupes = Vec::new(); 61 + for id in &ids { 62 + if !seen.insert(id) { 63 + dupes.push(id.as_str()); 64 + } 65 + } 66 + if !dupes.is_empty() { 67 + eprintln!("duplicate IDs: {}", dupes.join(", ")); 68 + } 69 + 70 + // Sidecar cross-check 71 + let sidecar = Sidecar::load_or_empty(deck)?; 72 + let orphans = sidecar.orphaned(&ids); 73 + let missing = sidecar.missing(&ids); 74 + 75 + if orphans.is_empty() && missing.is_empty() { 76 + println!("sidecar: ok"); 77 + } else { 78 + if !orphans.is_empty() { 79 + println!("sidecar orphans (in JSON, not in .typ): {}", orphans.join(", ")); 80 + } 81 + if !missing.is_empty() { 82 + println!("sidecar missing (in .typ, not in JSON): {}", missing.join(", ")); 83 + } 84 + } 85 + 86 + Ok(()) 87 + } 88 + 89 + // ── review ──────────────────────────────────────────────────────────────────── 90 + 91 + fn cmd_review(deck: &Path) -> Result<(), Box<dyn std::error::Error>> { 92 + // Stub — full review loop comes in step 5. 93 + let source_path = deck.join("cards.typ"); 94 + let source = std::fs::read_to_string(&source_path) 95 + .map_err(|_| format!("could not read {}", source_path.display()))?; 96 + 97 + let cards = parse_cards(&source); 98 + let sidecar = Sidecar::load_or_empty(deck)?; 99 + 100 + let due: Vec<_> = cards.iter().filter(|c| { 101 + match sidecar.get(&c.id) { 102 + None => true, // unseen = due 103 + Some(_sched) => true, // TODO: compare due date to today 104 + } 105 + }).collect(); 106 + 107 + println!("{} cards due (review loop not yet implemented)", due.len()); 108 + Ok(()) 109 + }
+7
crates/tala-format/Cargo.toml
··· 1 + [package] 2 + name = "tala-format" 3 + version = "0.1.0" 4 + edition = "2024" 5 + 6 + [dependencies] 7 + typst-syntax = { workspace = true }
+321
crates/tala-format/src/lib.rs
··· 1 + use std::collections::HashMap; 2 + use std::ops::Range; 3 + 4 + use typst_syntax::ast; 5 + use typst_syntax::{LinkedNode, SyntaxKind}; 6 + 7 + // ── Public types ───────────────────────────────────────────────────────────── 8 + 9 + #[derive(Debug, Clone)] 10 + pub struct CardEntry { 11 + pub id: String, 12 + pub kind: CardKind, 13 + /// Byte range of the full `#card[...][...]` call in the source. 14 + pub span: Range<usize>, 15 + } 16 + 17 + #[derive(Debug, Clone)] 18 + pub enum CardKind { 19 + FrontBack { 20 + front_span: Range<usize>, 21 + back_span: Range<usize>, 22 + dir: Direction, 23 + }, 24 + Cloze { 25 + body_span: Range<usize>, 26 + blanks: Vec<BlankEntry>, 27 + }, 28 + ImgCloze { 29 + src: String, 30 + }, 31 + } 32 + 33 + #[derive(Debug, Clone)] 34 + pub struct BlankEntry { 35 + /// 0-based index within its parent cloze card. 36 + pub index: usize, 37 + /// Byte range of the full `#blank[...]` call. 38 + pub span: Range<usize>, 39 + /// Byte range of the content block `[...]` (inner text only). 40 + pub content_span: Range<usize>, 41 + } 42 + 43 + #[derive(Debug, Clone, PartialEq, Eq)] 44 + pub enum Direction { 45 + Forward, 46 + Bidirectional, 47 + } 48 + 49 + // ── Entry point ─────────────────────────────────────────────────────────────── 50 + 51 + /// Parse a `.typ` card file and return every card entry found. 52 + pub fn parse_cards(source: &str) -> Vec<CardEntry> { 53 + let root = typst_syntax::parse(source); 54 + let linked = LinkedNode::new(&root); 55 + let mut out = Vec::new(); 56 + walk(&linked, &mut out); 57 + out 58 + } 59 + 60 + // ── Tree walking ────────────────────────────────────────────────────────────── 61 + 62 + fn walk(node: &LinkedNode<'_>, out: &mut Vec<CardEntry>) { 63 + if node.kind() == SyntaxKind::FuncCall { 64 + if let Some(entry) = try_parse_card(node) { 65 + out.push(entry); 66 + // Don't recurse into a card we just consumed. 67 + return; 68 + } 69 + } 70 + for child in node.children() { 71 + walk(&child, out); 72 + } 73 + } 74 + 75 + fn try_parse_card(node: &LinkedNode<'_>) -> Option<CardEntry> { 76 + let name = func_ident(node)?; 77 + let span = node.range(); 78 + match name.as_str() { 79 + "card" => parse_front_back(node, span), 80 + "cloze" => parse_cloze(node, span), 81 + "img_cloze" => parse_img_cloze(node, span), 82 + _ => None, 83 + } 84 + } 85 + 86 + // ── Helpers ─────────────────────────────────────────────────────────────────── 87 + 88 + /// Return the plain identifier name of a FuncCall node, or None if the callee 89 + /// is not a simple ident (e.g. a field-access expression). 90 + fn func_ident(fc_node: &LinkedNode<'_>) -> Option<String> { 91 + for child in fc_node.children() { 92 + match child.kind() { 93 + SyntaxKind::Ident => { 94 + return child.cast::<ast::Ident>().map(|i| i.as_str().to_owned()); 95 + } 96 + // The Args node always follows the callee; stop here. 97 + SyntaxKind::Args => break, 98 + _ => {} 99 + } 100 + } 101 + None 102 + } 103 + 104 + /// Return the Args child of a FuncCall node. 105 + fn args_of<'a>(fc_node: &LinkedNode<'a>) -> Option<LinkedNode<'a>> { 106 + fc_node.children().find(|c| c.kind() == SyntaxKind::Args) 107 + } 108 + 109 + /// Walk an Args node and collect named string args and content-block spans. 110 + fn collect_args(args: &LinkedNode<'_>) -> (HashMap<String, String>, Vec<Range<usize>>) { 111 + let mut named: HashMap<String, String> = HashMap::new(); 112 + let mut content_blocks: Vec<Range<usize>> = Vec::new(); 113 + 114 + for child in args.children() { 115 + match child.kind() { 116 + SyntaxKind::Named => { 117 + if let Some((k, v)) = parse_named_str(&child) { 118 + named.insert(k, v); 119 + } 120 + } 121 + SyntaxKind::ContentBlock => { 122 + content_blocks.push(child.range()); 123 + } 124 + _ => {} 125 + } 126 + } 127 + (named, content_blocks) 128 + } 129 + 130 + /// Extract `key: "string-value"` from a Named node. 131 + /// Returns None if the value is not a string literal. 132 + fn parse_named_str(named: &LinkedNode<'_>) -> Option<(String, String)> { 133 + let mut key: Option<String> = None; 134 + let mut val: Option<String> = None; 135 + 136 + for child in named.children() { 137 + match child.kind() { 138 + SyntaxKind::Ident if key.is_none() => { 139 + key = child.cast::<ast::Ident>().map(|i| i.as_str().to_owned()); 140 + } 141 + SyntaxKind::Str => { 142 + val = child.cast::<ast::Str>().map(|s| s.get().to_string()); 143 + } 144 + _ => {} 145 + } 146 + } 147 + Some((key?, val?)) 148 + } 149 + 150 + // ── Card-type parsers ───────────────────────────────────────────────────────── 151 + 152 + fn parse_front_back(node: &LinkedNode<'_>, span: Range<usize>) -> Option<CardEntry> { 153 + let args = args_of(node)?; 154 + let (named, content_blocks) = collect_args(&args); 155 + 156 + let id = named.get("id")?.clone(); 157 + if content_blocks.len() < 2 { 158 + return None; 159 + } 160 + let dir = match named.get("dir").map(|s| s.as_str()) { 161 + Some("bi") => Direction::Bidirectional, 162 + _ => Direction::Forward, 163 + }; 164 + 165 + Some(CardEntry { 166 + id, 167 + span, 168 + kind: CardKind::FrontBack { 169 + front_span: content_blocks[0].clone(), 170 + back_span: content_blocks[1].clone(), 171 + dir, 172 + }, 173 + }) 174 + } 175 + 176 + fn parse_cloze(node: &LinkedNode<'_>, span: Range<usize>) -> Option<CardEntry> { 177 + let args = args_of(node)?; 178 + let (named, content_blocks) = collect_args(&args); 179 + 180 + let id = named.get("id")?.clone(); 181 + let body_span = content_blocks.first()?.clone(); 182 + 183 + // Walk the body ContentBlock for #blank[] calls. 184 + let body_node = args.children().find(|c| c.kind() == SyntaxKind::ContentBlock)?; 185 + let mut blanks = Vec::new(); 186 + find_blanks(&body_node, &mut blanks); 187 + 188 + Some(CardEntry { 189 + id, 190 + span, 191 + kind: CardKind::Cloze { body_span, blanks }, 192 + }) 193 + } 194 + 195 + fn parse_img_cloze(node: &LinkedNode<'_>, span: Range<usize>) -> Option<CardEntry> { 196 + let args = args_of(node)?; 197 + let (named, _) = collect_args(&args); 198 + 199 + let id = named.get("id")?.clone(); 200 + let src = named.get("src")?.clone(); 201 + 202 + Some(CardEntry { 203 + id, 204 + span, 205 + kind: CardKind::ImgCloze { src }, 206 + }) 207 + } 208 + 209 + // ── Blank extraction ────────────────────────────────────────────────────────── 210 + 211 + fn find_blanks(node: &LinkedNode<'_>, out: &mut Vec<BlankEntry>) { 212 + if node.kind() == SyntaxKind::FuncCall { 213 + if let Some(name) = func_ident(node) { 214 + if name == "blank" { 215 + if let Some(content_span) = blank_content_span(node) { 216 + out.push(BlankEntry { 217 + index: out.len(), 218 + span: node.range(), 219 + content_span, 220 + }); 221 + } 222 + return; 223 + } 224 + } 225 + } 226 + for child in node.children() { 227 + find_blanks(&child, out); 228 + } 229 + } 230 + 231 + fn blank_content_span(blank_node: &LinkedNode<'_>) -> Option<Range<usize>> { 232 + let args = args_of(blank_node)?; 233 + args.children() 234 + .find(|c| c.kind() == SyntaxKind::ContentBlock) 235 + .map(|c| c.range()) 236 + } 237 + 238 + // ── Tests ───────────────────────────────────────────────────────────────────── 239 + 240 + #[cfg(test)] 241 + mod tests { 242 + use super::*; 243 + 244 + const SAMPLE: &str = r#" 245 + #card(id: "fb-001")[ 246 + What is the circuit model of an actual capacitor? 247 + ][ 248 + Series: ESR + ESL + ideal C 249 + ] 250 + 251 + #card(id: "fb-002", dir: "bi")[ 252 + $P_"avg"$ 253 + ][ 254 + $ P_"avg" = V_"rms"^2 / R $ 255 + ] 256 + 257 + #cloze(id: "cl-001")[ 258 + The resonant frequency is where #blank[inductance (ESL)] and #blank[capacitance (C)] cancel. 259 + ] 260 + 261 + #img_cloze(id: "ic-001", src: "capacitor-photo") 262 + "#; 263 + 264 + #[test] 265 + fn card_count() { 266 + let cards = parse_cards(SAMPLE); 267 + assert_eq!(cards.len(), 4); 268 + } 269 + 270 + #[test] 271 + fn front_back_ids() { 272 + let cards = parse_cards(SAMPLE); 273 + assert_eq!(cards[0].id, "fb-001"); 274 + assert_eq!(cards[1].id, "fb-002"); 275 + } 276 + 277 + #[test] 278 + fn bidirectional_flag() { 279 + let cards = parse_cards(SAMPLE); 280 + let CardKind::FrontBack { dir, .. } = &cards[1].kind else { panic!() }; 281 + assert_eq!(*dir, Direction::Bidirectional); 282 + } 283 + 284 + #[test] 285 + fn cloze_blanks() { 286 + let cards = parse_cards(SAMPLE); 287 + let CardKind::Cloze { blanks, .. } = &cards[2].kind else { panic!() }; 288 + assert_eq!(blanks.len(), 2); 289 + assert_eq!(blanks[0].index, 0); 290 + assert_eq!(blanks[1].index, 1); 291 + } 292 + 293 + #[test] 294 + fn img_cloze_src() { 295 + let cards = parse_cards(SAMPLE); 296 + let CardKind::ImgCloze { src } = &cards[3].kind else { panic!() }; 297 + assert_eq!(src, "capacitor-photo"); 298 + } 299 + 300 + #[test] 301 + fn spans_are_non_empty() { 302 + for card in parse_cards(SAMPLE) { 303 + assert!(!card.span.is_empty(), "card {} has empty span", card.id); 304 + } 305 + } 306 + 307 + #[test] 308 + fn span_text_starts_with_card_call() { 309 + // Note: in typst markup, the '#' sigil is *outside* the FuncCall node, 310 + // so spans start with the bare function name, not '#'. 311 + // The caller can recover the '#' via span.start - 1 if needed. 312 + let cards = parse_cards(SAMPLE); 313 + for card in &cards { 314 + let text = &SAMPLE[card.span.clone()]; 315 + assert!( 316 + text.starts_with("card") || text.starts_with("cloze") || text.starts_with("img_cloze"), 317 + "card {} span text: {:?}", card.id, &text[..20.min(text.len())] 318 + ); 319 + } 320 + } 321 + }
+9
crates/tala-srs/Cargo.toml
··· 1 + [package] 2 + name = "tala-srs" 3 + version = "0.1.0" 4 + edition = "2024" 5 + 6 + [dependencies] 7 + serde = { workspace = true } 8 + serde_json = { workspace = true } 9 + fsrs = { workspace = true }
+189
crates/tala-srs/src/lib.rs
··· 1 + use std::collections::HashMap; 2 + use std::path::Path; 3 + 4 + use serde::{Deserialize, Serialize}; 5 + 6 + // ── Schedule ────────────────────────────────────────────────────────────────── 7 + 8 + /// FSRS scheduling state for a single reviewable item. 9 + #[derive(Debug, Clone, Serialize, Deserialize)] 10 + pub struct Schedule { 11 + /// ISO 8601 due date (e.g. "2026-03-20"). 12 + pub due: String, 13 + pub stability: f32, 14 + pub difficulty: f32, 15 + } 16 + 17 + // ── Per-card schedule shapes ─────────────────────────────────────────────────── 18 + 19 + #[derive(Debug, Clone, Serialize, Deserialize)] 20 + #[serde(tag = "type", rename_all = "snake_case")] 21 + pub enum CardSchedule { 22 + FrontBack { 23 + forward_schedule: Option<Schedule>, 24 + /// Only present for `dir: "bi"` cards. 25 + reverse_schedule: Option<Schedule>, 26 + }, 27 + Cloze { 28 + /// Indexed by blank ID: "b0", "b1", … 29 + blanks: HashMap<String, Schedule>, 30 + }, 31 + ImgCloze { 32 + rects: Vec<RectEntry>, 33 + }, 34 + } 35 + 36 + #[derive(Debug, Clone, Serialize, Deserialize)] 37 + pub struct RectEntry { 38 + pub id: String, 39 + /// Normalised [x, y, w, h] in [0, 1] relative to image dimensions. 40 + pub rect: [f32; 4], 41 + pub schedule: Schedule, 42 + } 43 + 44 + // ── Sidecar file ─────────────────────────────────────────────────────────────── 45 + 46 + #[derive(Debug, Clone, Serialize, Deserialize)] 47 + pub struct Sidecar { 48 + pub version: u32, 49 + pub cards: HashMap<String, CardSchedule>, 50 + } 51 + 52 + impl Sidecar { 53 + pub fn empty() -> Self { 54 + Self { version: 1, cards: HashMap::new() } 55 + } 56 + 57 + pub fn load(path: &Path) -> Result<Self, Error> { 58 + let text = std::fs::read_to_string(path)?; 59 + let sidecar = serde_json::from_str(&text)?; 60 + Ok(sidecar) 61 + } 62 + 63 + /// Load from `<deck_dir>/cards.srs.json`, returning an empty sidecar if 64 + /// the file does not yet exist. 65 + pub fn load_or_empty(deck_dir: &Path) -> Result<Self, Error> { 66 + let path = deck_dir.join("cards.srs.json"); 67 + if path.exists() { 68 + Self::load(&path) 69 + } else { 70 + Ok(Self::empty()) 71 + } 72 + } 73 + 74 + pub fn save(&self, path: &Path) -> Result<(), Error> { 75 + let text = serde_json::to_string_pretty(self)?; 76 + std::fs::write(path, text)?; 77 + Ok(()) 78 + } 79 + 80 + pub fn save_to_deck(&self, deck_dir: &Path) -> Result<(), Error> { 81 + self.save(&deck_dir.join("cards.srs.json")) 82 + } 83 + 84 + // ── Schedule accessors ──────────────────────────────────────────────────── 85 + 86 + pub fn get(&self, card_id: &str) -> Option<&CardSchedule> { 87 + self.cards.get(card_id) 88 + } 89 + 90 + pub fn get_mut(&mut self, card_id: &str) -> Option<&mut CardSchedule> { 91 + self.cards.get_mut(card_id) 92 + } 93 + 94 + pub fn insert(&mut self, card_id: String, sched: CardSchedule) { 95 + self.cards.insert(card_id, sched); 96 + } 97 + 98 + /// Return IDs present in the sidecar but absent from `known_ids`. 99 + pub fn orphaned<'a>(&'a self, known_ids: &[String]) -> Vec<&'a str> { 100 + self.cards 101 + .keys() 102 + .filter(|id| !known_ids.contains(id)) 103 + .map(|s| s.as_str()) 104 + .collect() 105 + } 106 + 107 + /// Return IDs present in `known_ids` but absent from the sidecar. 108 + pub fn missing<'a>(&self, known_ids: &'a [String]) -> Vec<&'a str> { 109 + known_ids 110 + .iter() 111 + .filter(|id| !self.cards.contains_key(*id)) 112 + .map(|s| s.as_str()) 113 + .collect() 114 + } 115 + } 116 + 117 + // ── Error ───────────────────────────────────────────────────────────────────── 118 + 119 + #[derive(Debug)] 120 + pub enum Error { 121 + Io(std::io::Error), 122 + Json(serde_json::Error), 123 + } 124 + 125 + impl std::fmt::Display for Error { 126 + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 127 + match self { 128 + Error::Io(e) => write!(f, "io: {e}"), 129 + Error::Json(e) => write!(f, "json: {e}"), 130 + } 131 + } 132 + } 133 + 134 + impl std::error::Error for Error {} 135 + 136 + impl From<std::io::Error> for Error { fn from(e: std::io::Error) -> Self { Error::Io(e) } } 137 + impl From<serde_json::Error> for Error { fn from(e: serde_json::Error) -> Self { Error::Json(e) } } 138 + 139 + // ── Tests ───────────────────────────────────────────────────────────────────── 140 + 141 + #[cfg(test)] 142 + mod tests { 143 + use super::*; 144 + 145 + fn sample_sidecar() -> Sidecar { 146 + let mut s = Sidecar::empty(); 147 + s.insert("fb-001".into(), CardSchedule::FrontBack { 148 + forward_schedule: Some(Schedule { 149 + due: "2026-03-20".into(), 150 + stability: 12.3, 151 + difficulty: 0.4, 152 + }), 153 + reverse_schedule: None, 154 + }); 155 + s.insert("cl-001".into(), CardSchedule::Cloze { 156 + blanks: { 157 + let mut m = HashMap::new(); 158 + m.insert("b0".into(), Schedule { due: "2026-03-21".into(), stability: 4.1, difficulty: 0.6 }); 159 + m 160 + }, 161 + }); 162 + s 163 + } 164 + 165 + #[test] 166 + fn round_trip_json() { 167 + let original = sample_sidecar(); 168 + let json = serde_json::to_string_pretty(&original).unwrap(); 169 + let parsed: Sidecar = serde_json::from_str(&json).unwrap(); 170 + assert_eq!(parsed.cards.len(), original.cards.len()); 171 + } 172 + 173 + #[test] 174 + fn orphan_detection() { 175 + let s = sample_sidecar(); 176 + let known = vec!["fb-001".to_string()]; // cl-001 not listed 177 + let orphans = s.orphaned(&known); 178 + assert_eq!(orphans, vec!["cl-001"]); 179 + } 180 + 181 + #[test] 182 + fn missing_detection() { 183 + let s = sample_sidecar(); 184 + let known = vec!["fb-001".to_string(), "fb-002".to_string()]; 185 + let missing = s.missing(&known); 186 + assert!(missing.contains(&"fb-002")); 187 + assert!(!missing.contains(&"fb-001")); 188 + } 189 + }