Browse Source

Make wasm-bindgen parallel/disable log, speed up 2-10x (#3161)

* wip: pull out incr linker intercept and debug=true for wasm for faster builds

* make walrus parallel

* clean up impl
Jonathan Kelley 7 months ago
parent
commit
8b586352a2

+ 178 - 171
Cargo.lock

@@ -11,12 +11,6 @@ dependencies = [
  "gimli 0.31.1",
  "gimli 0.31.1",
 ]
 ]
 
 
-[[package]]
-name = "adler"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-
 [[package]]
 [[package]]
 name = "adler2"
 name = "adler2"
 version = "2.0.0"
 version = "2.0.0"
@@ -189,9 +183,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "anstyle"
 name = "anstyle"
-version = "1.0.9"
+version = "1.0.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56"
+checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
 
 
 [[package]]
 [[package]]
 name = "anstyle-parse"
 name = "anstyle-parse"
@@ -223,9 +217,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "anyhow"
 name = "anyhow"
-version = "1.0.91"
+version = "1.0.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8"
+checksum = "74f37166d7d48a0284b99dd824694c26119c700b53bf0d1540cdb147dbdaaf13"
 
 
 [[package]]
 [[package]]
 name = "anymap2"
 name = "anymap2"
@@ -426,7 +420,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -653,7 +647,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -719,7 +713,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -736,7 +730,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -924,9 +918,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "aws-sdk-s3"
 name = "aws-sdk-s3"
-version = "1.58.0"
+version = "1.59.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0656a79cf5e6ab0d4bb2465cd750a7a2fd7ea26c062183ed94225f5782e22365"
+checksum = "9f883bb1e349fa8343dc46336c252c0f32ceb6e81acb146aeef2e0f8afc9183e"
 dependencies = [
 dependencies = [
  "aws-credential-types",
  "aws-credential-types",
  "aws-runtime",
  "aws-runtime",
@@ -958,9 +952,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "aws-sdk-sso"
 name = "aws-sdk-sso"
-version = "1.47.0"
+version = "1.48.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8776850becacbd3a82a4737a9375ddb5c6832a51379f24443a98e61513f852c"
+checksum = "ded855583fa1d22e88fe39fd6062b062376e50a8211989e07cf5e38d52eb3453"
 dependencies = [
 dependencies = [
  "aws-credential-types",
  "aws-credential-types",
  "aws-runtime",
  "aws-runtime",
@@ -980,9 +974,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "aws-sdk-ssooidc"
 name = "aws-sdk-ssooidc"
-version = "1.48.0"
+version = "1.49.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0007b5b8004547133319b6c4e87193eee2a0bcb3e4c18c75d09febe9dab7b383"
+checksum = "9177ea1192e6601ae16c7273385690d88a7ed386a00b74a6bc894d12103cd933"
 dependencies = [
 dependencies = [
  "aws-credential-types",
  "aws-credential-types",
  "aws-runtime",
  "aws-runtime",
@@ -1002,9 +996,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "aws-sdk-sts"
 name = "aws-sdk-sts"
-version = "1.47.0"
+version = "1.48.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fffaa356e7f1c725908b75136d53207fa714e348f365671df14e95a60530ad3"
+checksum = "823ef553cf36713c97453e2ddff1eb8f62be7f4523544e2a5db64caf80100f0a"
 dependencies = [
 dependencies = [
  "aws-credential-types",
  "aws-credential-types",
  "aws-runtime",
  "aws-runtime",
@@ -1364,7 +1358,7 @@ checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -1382,7 +1376,7 @@ dependencies = [
  "hyper 1.5.0",
  "hyper 1.5.0",
  "hyper-util",
  "hyper-util",
  "pin-project-lite",
  "pin-project-lite",
- "rustls 0.23.15",
+ "rustls 0.23.16",
  "rustls-pemfile 2.2.0",
  "rustls-pemfile 2.2.0",
  "rustls-pki-types",
  "rustls-pki-types",
  "tokio",
  "tokio",
@@ -1456,7 +1450,7 @@ dependencies = [
  "addr2line",
  "addr2line",
  "cfg-if",
  "cfg-if",
  "libc",
  "libc",
- "miniz_oxide 0.8.0",
+ "miniz_oxide",
  "object 0.36.5",
  "object 0.36.5",
  "rustc-demangle",
  "rustc-demangle",
  "windows-targets 0.52.6",
  "windows-targets 0.52.6",
@@ -1542,7 +1536,7 @@ dependencies = [
  "regex",
  "regex",
  "rustc-hash 1.1.0",
  "rustc-hash 1.1.0",
  "shlex",
  "shlex",
- "syn 2.0.85",
+ "syn 2.0.86",
  "which",
  "which",
 ]
 ]
 
 
@@ -1704,7 +1698,7 @@ dependencies = [
  "proc-macro-crate 3.2.0",
  "proc-macro-crate 3.2.0",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
  "syn_derive",
  "syn_derive",
 ]
 ]
 
 
@@ -2030,9 +2024,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "cc"
 name = "cc"
-version = "1.1.31"
+version = "1.1.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f"
+checksum = "e3788d6ac30243803df38a3e9991cf37e41210232916d41a8222ae378f912624"
 dependencies = [
 dependencies = [
  "jobserver",
  "jobserver",
  "libc",
  "libc",
@@ -2206,7 +2200,7 @@ dependencies = [
  "heck 0.5.0",
  "heck 0.5.0",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -2847,7 +2841,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
 checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
 dependencies = [
 dependencies = [
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -2857,7 +2851,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f"
 checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f"
 dependencies = [
 dependencies = [
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -2904,7 +2898,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -2940,7 +2934,7 @@ dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
  "scratch",
  "scratch",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -2957,7 +2951,7 @@ checksum = "a1719100f31492cd6adeeab9a0f46cdbc846e615fdb66d7b398aa46ec7fdd06f"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -2981,7 +2975,7 @@ dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
  "strsim",
  "strsim",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -2992,7 +2986,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
 dependencies = [
 dependencies = [
  "darling_core",
  "darling_core",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -3062,7 +3056,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -3083,7 +3077,7 @@ dependencies = [
  "darling",
  "darling",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -3093,7 +3087,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"
 checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"
 dependencies = [
 dependencies = [
  "derive_builder_core",
  "derive_builder_core",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -3106,7 +3100,7 @@ dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
  "rustc_version",
  "rustc_version",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -3199,7 +3193,7 @@ dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
  "serde",
  "serde",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -3211,7 +3205,7 @@ dependencies = [
  "pretty_assertions",
  "pretty_assertions",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -3262,6 +3256,7 @@ dependencies = [
  "ignore",
  "ignore",
  "itertools 0.13.0",
  "itertools 0.13.0",
  "krates",
  "krates",
+ "log",
  "manganis-core",
  "manganis-core",
  "notify",
  "notify",
  "object 0.36.5",
  "object 0.36.5",
@@ -3272,12 +3267,12 @@ dependencies = [
  "ratatui",
  "ratatui",
  "rayon",
  "rayon",
  "regex",
  "regex",
- "reqwest 0.12.8",
- "rustls 0.23.15",
+ "reqwest 0.12.9",
+ "rustls 0.23.16",
  "serde",
  "serde",
  "serde_json",
  "serde_json",
  "strum 0.26.3",
  "strum 0.26.3",
- "syn 2.0.85",
+ "syn 2.0.86",
  "tar",
  "tar",
  "tauri-bundler",
  "tauri-bundler",
  "tauri-utils",
  "tauri-utils",
@@ -3296,6 +3291,7 @@ dependencies = [
  "unicode-segmentation",
  "unicode-segmentation",
  "uuid",
  "uuid",
  "walkdir",
  "walkdir",
+ "walrus",
  "wasm-bindgen-cli-support",
  "wasm-bindgen-cli-support",
  "wasm-bindgen-shared",
  "wasm-bindgen-shared",
  "wasm-opt",
  "wasm-opt",
@@ -3329,7 +3325,7 @@ dependencies = [
  "longest-increasing-subsequence",
  "longest-increasing-subsequence",
  "pretty_assertions",
  "pretty_assertions",
  "rand 0.8.5",
  "rand 0.8.5",
- "reqwest 0.12.8",
+ "reqwest 0.12.9",
  "rustc-hash 1.1.0",
  "rustc-hash 1.1.0",
  "rustversion",
  "rustversion",
  "serde",
  "serde",
@@ -3354,7 +3350,7 @@ dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
  "rustversion",
  "rustversion",
- "syn 2.0.85",
+ "syn 2.0.86",
  "tokio",
  "tokio",
  "trybuild",
  "trybuild",
 ]
 ]
@@ -3398,7 +3394,7 @@ dependencies = [
  "objc_id",
  "objc_id",
  "once_cell",
  "once_cell",
  "rand 0.8.5",
  "rand 0.8.5",
- "reqwest 0.12.8",
+ "reqwest 0.12.9",
  "rfd",
  "rfd",
  "rustc-hash 1.1.0",
  "rustc-hash 1.1.0",
  "separator",
  "separator",
@@ -3472,7 +3468,7 @@ dependencies = [
  "getrandom 0.2.15",
  "getrandom 0.2.15",
  "http-range",
  "http-range",
  "rand 0.8.5",
  "rand 0.8.5",
- "reqwest 0.12.8",
+ "reqwest 0.12.9",
  "separator",
  "separator",
  "serde",
  "serde",
  "serde_json",
  "serde_json",
@@ -3487,7 +3483,7 @@ dependencies = [
  "dioxus-autofmt",
  "dioxus-autofmt",
  "dioxus-rsx-rosetta",
  "dioxus-rsx-rosetta",
  "html_parser",
  "html_parser",
- "syn 2.0.85",
+ "syn 2.0.86",
  "wasm-bindgen",
  "wasm-bindgen",
 ]
 ]
 
 
@@ -3522,7 +3518,7 @@ dependencies = [
  "once_cell",
  "once_cell",
  "parking_lot",
  "parking_lot",
  "pin-project",
  "pin-project",
- "rustls 0.23.15",
+ "rustls 0.23.16",
  "serde",
  "serde",
  "server_fn",
  "server_fn",
  "thiserror",
  "thiserror",
@@ -3556,7 +3552,7 @@ dependencies = [
  "futures-channel",
  "futures-channel",
  "futures-util",
  "futures-util",
  "generational-box",
  "generational-box",
- "reqwest 0.12.8",
+ "reqwest 0.12.9",
  "rustversion",
  "rustversion",
  "slab",
  "slab",
  "tokio",
  "tokio",
@@ -3601,7 +3597,7 @@ dependencies = [
  "convert_case 0.6.0",
  "convert_case 0.6.0",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
  "trybuild",
  "trybuild",
 ]
 ]
 
 
@@ -3770,7 +3766,7 @@ dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
  "slab",
  "slab",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -3782,7 +3778,7 @@ dependencies = [
  "proc-macro2",
  "proc-macro2",
  "proc-macro2-diagnostics",
  "proc-macro2-diagnostics",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -3796,7 +3792,7 @@ dependencies = [
  "proc-macro2",
  "proc-macro2",
  "proc-macro2-diagnostics",
  "proc-macro2-diagnostics",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
  "tracing",
  "tracing",
 ]
 ]
 
 
@@ -3813,7 +3809,7 @@ dependencies = [
  "pretty_assertions",
  "pretty_assertions",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -3828,7 +3824,7 @@ dependencies = [
  "once_cell",
  "once_cell",
  "parking_lot",
  "parking_lot",
  "rand 0.8.5",
  "rand 0.8.5",
- "reqwest 0.12.8",
+ "reqwest 0.12.9",
  "rustc-hash 1.1.0",
  "rustc-hash 1.1.0",
  "serde",
  "serde",
  "simple_logger",
  "simple_logger",
@@ -3927,7 +3923,7 @@ dependencies = [
  "quote",
  "quote",
  "serde",
  "serde",
  "server_fn_macro",
  "server_fn_macro",
- "syn 2.0.85",
+ "syn 2.0.86",
  "tower-http",
  "tower-http",
 ]
 ]
 
 
@@ -3987,7 +3983,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -4016,7 +4012,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -4119,7 +4115,7 @@ version = "0.1.1"
 dependencies = [
 dependencies = [
  "chrono",
  "chrono",
  "dioxus",
  "dioxus",
- "reqwest 0.12.8",
+ "reqwest 0.12.9",
  "serde",
  "serde",
 ]
 ]
 
 
@@ -4237,7 +4233,7 @@ checksum = "ba7795da175654fe16979af73f81f26a8ea27638d8d9823d317016888a63dc4c"
 dependencies = [
 dependencies = [
  "num-traits",
  "num-traits",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -4258,7 +4254,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -4279,7 +4275,7 @@ dependencies = [
  "darling",
  "darling",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -4420,7 +4416,7 @@ checksum = "ce8cd46a041ad005ab9c71263f9a0ff5b529eac0fe4cc9b4a20f4f0765d8cf4b"
 dependencies = [
 dependencies = [
  "execute-command-tokens",
  "execute-command-tokens",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -4437,15 +4433,14 @@ checksum = "de853764b47027c2e862a995c34978ffa63c1501f2e15f987ba11bd4f9bba193"
 
 
 [[package]]
 [[package]]
 name = "exr"
 name = "exr"
-version = "1.72.0"
+version = "1.73.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4"
+checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0"
 dependencies = [
 dependencies = [
  "bit_field",
  "bit_field",
- "flume",
  "half",
  "half",
  "lebe",
  "lebe",
- "miniz_oxide 0.7.4",
+ "miniz_oxide",
  "rayon-core",
  "rayon-core",
  "smallvec",
  "smallvec",
  "zune-inflate",
  "zune-inflate",
@@ -4471,9 +4466,9 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
 
 
 [[package]]
 [[package]]
 name = "fdeflate"
 name = "fdeflate"
-version = "0.3.5"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab"
+checksum = "07c6f4c64c1d33a3111c4466f7365ebdcc37c5bd1ea0d62aae2e3d722aacbedb"
 dependencies = [
 dependencies = [
  "simd-adler32",
  "simd-adler32",
 ]
 ]
@@ -4563,7 +4558,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
 checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
 dependencies = [
 dependencies = [
  "crc32fast",
  "crc32fast",
- "miniz_oxide 0.8.0",
+ "miniz_oxide",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -4625,7 +4620,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -4733,7 +4728,7 @@ version = "0.1.0"
 dependencies = [
 dependencies = [
  "chrono",
  "chrono",
  "dioxus",
  "dioxus",
- "reqwest 0.12.8",
+ "reqwest 0.12.9",
  "serde",
  "serde",
  "tracing",
  "tracing",
  "tracing-subscriber",
  "tracing-subscriber",
@@ -4745,7 +4740,7 @@ name = "fullstack-hello-world-example"
 version = "0.1.0"
 version = "0.1.0"
 dependencies = [
 dependencies = [
  "dioxus",
  "dioxus",
- "reqwest 0.12.8",
+ "reqwest 0.12.9",
  "serde",
  "serde",
  "simple_logger",
  "simple_logger",
  "tracing",
  "tracing",
@@ -4856,9 +4851,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
 
 
 [[package]]
 [[package]]
 name = "futures-lite"
 name = "futures-lite"
-version = "2.3.0"
+version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
+checksum = "3f1fa2f9765705486b33fd2acf1577f8ec449c2ba1f318ae5447697b7c08d210"
 dependencies = [
 dependencies = [
  "fastrand",
  "fastrand",
  "futures-core",
  "futures-core",
@@ -4875,7 +4870,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -5421,7 +5416,7 @@ dependencies = [
  "proc-macro-error",
  "proc-macro-error",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -5629,7 +5624,7 @@ dependencies = [
  "proc-macro-error",
  "proc-macro-error",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -5682,11 +5677,12 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "handlebars"
 name = "handlebars"
-version = "6.1.0"
+version = "6.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce25b617d1375ef96eeb920ae717e3da34a02fc979fe632c75128350f9e1f74a"
+checksum = "fd4ccde012831f9a071a637b0d4e31df31c0f6c525784b35ae76a9ac6bc1e315"
 dependencies = [
 dependencies = [
  "log",
  "log",
+ "num-order",
  "pest",
  "pest",
  "pest_derive",
  "pest_derive",
  "serde",
  "serde",
@@ -6029,7 +6025,7 @@ dependencies = [
  "hyper 1.5.0",
  "hyper 1.5.0",
  "hyper-util",
  "hyper-util",
  "log",
  "log",
- "rustls 0.23.15",
+ "rustls 0.23.16",
  "rustls-native-certs 0.8.0",
  "rustls-native-certs 0.8.0",
  "rustls-pki-types",
  "rustls-pki-types",
  "tokio",
  "tokio",
@@ -6068,9 +6064,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "hyper-util"
 name = "hyper-util"
-version = "0.1.9"
+version = "0.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b"
+checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4"
 dependencies = [
 dependencies = [
  "bytes",
  "bytes",
  "futures-channel",
  "futures-channel",
@@ -6113,6 +6109,9 @@ name = "id-arena"
 version = "2.2.1"
 version = "2.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005"
 checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005"
+dependencies = [
+ "rayon",
+]
 
 
 [[package]]
 [[package]]
 name = "idea"
 name = "idea"
@@ -6296,7 +6295,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b23a0c8dfe501baac4adf6ebbfa6eddf8f0c07f56b058cc1288017e32397846c"
 checksum = "b23a0c8dfe501baac4adf6ebbfa6eddf8f0c07f56b058cc1288017e32397846c"
 dependencies = [
 dependencies = [
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -6326,7 +6325,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -6806,9 +6805,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "libm"
 name = "libm"
-version = "0.2.8"
+version = "0.2.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
+checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"
 
 
 [[package]]
 [[package]]
 name = "libredox"
 name = "libredox"
@@ -6931,7 +6930,7 @@ checksum = "3b51f1d220e3fa869e24cfd75915efe3164bd09bb11b3165db3f37f57bf673e3"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -7064,7 +7063,7 @@ dependencies = [
  "quote",
  "quote",
  "serde",
  "serde",
  "serde_json",
  "serde_json",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -7203,15 +7202,6 @@ version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 
-[[package]]
-name = "miniz_oxide"
-version = "0.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
-dependencies = [
- "adler",
-]
-
 [[package]]
 [[package]]
 name = "miniz_oxide"
 name = "miniz_oxide"
 version = "0.8.0"
 version = "0.8.0"
@@ -7537,7 +7527,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -7560,6 +7550,21 @@ dependencies = [
  "num-traits",
  "num-traits",
 ]
 ]
 
 
+[[package]]
+name = "num-modular"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f"
+
+[[package]]
+name = "num-order"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6"
+dependencies = [
+ "num-modular",
+]
+
 [[package]]
 [[package]]
 name = "num-rational"
 name = "num-rational"
 version = "0.4.2"
 version = "0.4.2"
@@ -7599,7 +7604,7 @@ dependencies = [
  "proc-macro-crate 3.2.0",
  "proc-macro-crate 3.2.0",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -7864,7 +7869,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8137,7 +8142,7 @@ dependencies = [
  "proc-macro2",
  "proc-macro2",
  "proc-macro2-diagnostics",
  "proc-macro2-diagnostics",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8196,7 +8201,7 @@ dependencies = [
  "pest_meta",
  "pest_meta",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8388,7 +8393,7 @@ dependencies = [
  "phf_shared 0.11.2",
  "phf_shared 0.11.2",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8435,7 +8440,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8555,7 +8560,7 @@ dependencies = [
  "crc32fast",
  "crc32fast",
  "fdeflate",
  "fdeflate",
  "flate2",
  "flate2",
- "miniz_oxide 0.8.0",
+ "miniz_oxide",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8625,7 +8630,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "32db37eb2b0ec0af154e9c1b33425902d8cd9481e35167c4e9ffb28fec3916bb"
 checksum = "32db37eb2b0ec0af154e9c1b33425902d8cd9481e35167c4e9ffb28fec3916bb"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8655,7 +8660,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033"
 checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8742,7 +8747,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
  "version_check",
  "version_check",
  "yansi",
  "yansi",
 ]
 ]
@@ -8769,7 +8774,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30"
 checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30"
 dependencies = [
 dependencies = [
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8792,7 +8797,7 @@ dependencies = [
  "itertools 0.12.1",
  "itertools 0.12.1",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8859,7 +8864,7 @@ dependencies = [
  "quinn-proto",
  "quinn-proto",
  "quinn-udp",
  "quinn-udp",
  "rustc-hash 2.0.0",
  "rustc-hash 2.0.0",
- "rustls 0.23.15",
+ "rustls 0.23.16",
  "socket2",
  "socket2",
  "thiserror",
  "thiserror",
  "tokio",
  "tokio",
@@ -8876,7 +8881,7 @@ dependencies = [
  "rand 0.8.5",
  "rand 0.8.5",
  "ring",
  "ring",
  "rustc-hash 2.0.0",
  "rustc-hash 2.0.0",
- "rustls 0.23.15",
+ "rustls 0.23.16",
  "slab",
  "slab",
  "thiserror",
  "thiserror",
  "tinyvec",
  "tinyvec",
@@ -8885,10 +8890,11 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "quinn-udp"
 name = "quinn-udp"
-version = "0.5.5"
+version = "0.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b"
+checksum = "e346e016eacfff12233c243718197ca12f148c84e1e84268a896699b41c71780"
 dependencies = [
 dependencies = [
+ "cfg_aliases 0.2.1",
  "libc",
  "libc",
  "once_cell",
  "once_cell",
  "socket2",
  "socket2",
@@ -9278,9 +9284,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "reqwest"
 name = "reqwest"
-version = "0.12.8"
+version = "0.12.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b"
+checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f"
 dependencies = [
 dependencies = [
  "base64 0.22.1",
  "base64 0.22.1",
  "bytes",
  "bytes",
@@ -9306,7 +9312,7 @@ dependencies = [
  "percent-encoding",
  "percent-encoding",
  "pin-project-lite",
  "pin-project-lite",
  "quinn",
  "quinn",
- "rustls 0.23.15",
+ "rustls 0.23.16",
  "rustls-pemfile 2.2.0",
  "rustls-pemfile 2.2.0",
  "rustls-pki-types",
  "rustls-pki-types",
  "serde",
  "serde",
@@ -9403,7 +9409,7 @@ checksum = "a5a11a05ee1ce44058fa3d5961d05194fdbe3ad6b40f904af764d81b86450e6b"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -9571,9 +9577,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "rustix"
 name = "rustix"
-version = "0.38.37"
+version = "0.38.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
+checksum = "aa260229e6538e52293eeb577aabd09945a09d6d9cc0fc550ed7529056c2e32a"
 dependencies = [
 dependencies = [
  "bitflags 2.6.0",
  "bitflags 2.6.0",
  "errno",
  "errno",
@@ -9610,9 +9616,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "rustls"
 name = "rustls"
-version = "0.23.15"
+version = "0.23.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993"
+checksum = "eee87ff5d9b36712a58574e12e9f0ea80f915a5b0ac518d322b24a465617925e"
 dependencies = [
 dependencies = [
  "aws-lc-rs",
  "aws-lc-rs",
  "log",
  "log",
@@ -9803,7 +9809,7 @@ checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -9919,9 +9925,9 @@ checksum = "f97841a747eef040fcd2e7b3b9a220a7205926e60488e673d9e4926d27772ce5"
 
 
 [[package]]
 [[package]]
 name = "serde"
 name = "serde"
-version = "1.0.213"
+version = "1.0.214"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1"
+checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5"
 dependencies = [
 dependencies = [
  "serde_derive",
  "serde_derive",
 ]
 ]
@@ -9962,13 +9968,13 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "serde_derive"
 name = "serde_derive"
-version = "1.0.213"
+version = "1.0.214"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5"
+checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -10012,7 +10018,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -10063,7 +10069,7 @@ dependencies = [
  "darling",
  "darling",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -10097,7 +10103,7 @@ dependencies = [
  "inventory",
  "inventory",
  "js-sys",
  "js-sys",
  "once_cell",
  "once_cell",
- "reqwest 0.12.8",
+ "reqwest 0.12.9",
  "send_wrapper",
  "send_wrapper",
  "serde",
  "serde",
  "serde_json",
  "serde_json",
@@ -10124,7 +10130,7 @@ dependencies = [
  "convert_case 0.6.0",
  "convert_case 0.6.0",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
  "xxhash-rust",
  "xxhash-rust",
 ]
 ]
 
 
@@ -10135,7 +10141,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7f2aa8119b558a17992e0ac1fd07f080099564f24532858811ce04f742542440"
 checksum = "7f2aa8119b558a17992e0ac1fd07f080099564f24532858811ce04f742542440"
 dependencies = [
 dependencies = [
  "server_fn_macro",
  "server_fn_macro",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -10358,7 +10364,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "33a1b4f13e2bbf2f5b29d09dfebc9de69229ffee245aed80e3b70f9b5fd28c06"
 checksum = "33a1b4f13e2bbf2f5b29d09dfebc9de69229ffee245aed80e3b70f9b5fd28c06"
 dependencies = [
 dependencies = [
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -10834,7 +10840,7 @@ dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
  "rustversion",
  "rustversion",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -10884,9 +10890,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "syn"
 name = "syn"
-version = "2.0.85"
+version = "2.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56"
+checksum = "e89275301d38033efb81a6e60e3497e734dfcc62571f2854bf4b16690398824c"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
@@ -10902,7 +10908,7 @@ dependencies = [
  "proc-macro-error",
  "proc-macro-error",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -11002,9 +11008,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "tao"
 name = "tao"
-version = "0.30.3"
+version = "0.30.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0dbbebe82d02044dfa481adca1550d6dd7bd16e086bc34fa0fbecceb5a63751"
+checksum = "63f1f6b2017cc33d7f6fc9c6186a2c0f5dfc985899a7b4fe9e64985c17533db3"
 dependencies = [
 dependencies = [
  "bitflags 2.6.0",
  "bitflags 2.6.0",
  "cocoa 0.26.0",
  "cocoa 0.26.0",
@@ -11048,7 +11054,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -11059,9 +11065,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
 
 
 [[package]]
 [[package]]
 name = "tar"
 name = "tar"
-version = "0.4.42"
+version = "0.4.43"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020"
+checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6"
 dependencies = [
 dependencies = [
  "filetime",
  "filetime",
  "libc",
  "libc",
@@ -11253,22 +11259,22 @@ checksum = "a38c90d48152c236a3ab59271da4f4ae63d678c5d7ad6b7714d7cb9760be5e4b"
 
 
 [[package]]
 [[package]]
 name = "thiserror"
 name = "thiserror"
-version = "1.0.65"
+version = "1.0.66"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5"
+checksum = "5d171f59dbaa811dbbb1aee1e73db92ec2b122911a48e1390dfe327a821ddede"
 dependencies = [
 dependencies = [
  "thiserror-impl",
  "thiserror-impl",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "thiserror-impl"
 name = "thiserror-impl"
-version = "1.0.65"
+version = "1.0.66"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602"
+checksum = "b08be0f17bd307950653ce45db00cd31200d82b624b36e181337d9c7d92765b5"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -11406,7 +11412,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -11435,7 +11441,7 @@ version = "0.26.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
 checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
 dependencies = [
 dependencies = [
- "rustls 0.23.15",
+ "rustls 0.23.16",
  "rustls-pki-types",
  "rustls-pki-types",
  "tokio",
  "tokio",
 ]
 ]
@@ -11461,7 +11467,7 @@ dependencies = [
  "futures-util",
  "futures-util",
  "log",
  "log",
  "native-tls",
  "native-tls",
- "rustls 0.23.15",
+ "rustls 0.23.16",
  "tokio",
  "tokio",
  "tokio-native-tls",
  "tokio-native-tls",
  "tungstenite 0.23.0",
  "tungstenite 0.23.0",
@@ -11679,7 +11685,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -12087,7 +12093,7 @@ dependencies = [
  "base64 0.22.1",
  "base64 0.22.1",
  "log",
  "log",
  "once_cell",
  "once_cell",
- "rustls 0.23.15",
+ "rustls 0.23.16",
  "rustls-pki-types",
  "rustls-pki-types",
  "socks",
  "socks",
  "url",
  "url",
@@ -12215,6 +12221,7 @@ dependencies = [
  "id-arena",
  "id-arena",
  "leb128",
  "leb128",
  "log",
  "log",
+ "rayon",
  "walrus-macro",
  "walrus-macro",
  "wasm-encoder",
  "wasm-encoder",
  "wasmparser 0.212.0",
  "wasmparser 0.212.0",
@@ -12229,7 +12236,7 @@ dependencies = [
  "heck 0.5.0",
  "heck 0.5.0",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -12259,7 +12266,7 @@ checksum = "59195a1db0e95b920366d949ba5e0d3fc0e70b67c09be15ce5abb790106b0571"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -12302,7 +12309,7 @@ dependencies = [
  "once_cell",
  "once_cell",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
  "wasm-bindgen-shared",
  "wasm-bindgen-shared",
 ]
 ]
 
 
@@ -12370,7 +12377,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
  "wasm-bindgen-backend",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
  "wasm-bindgen-shared",
 ]
 ]
@@ -12415,7 +12422,7 @@ checksum = "c97b2ef2c8d627381e51c071c2ab328eac606d3f69dd82bcbca20a9e389d95f0"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -12668,7 +12675,7 @@ checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -12810,7 +12817,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -12821,7 +12828,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -13338,7 +13345,7 @@ dependencies = [
  "proc-macro-crate 3.2.0",
  "proc-macro-crate 3.2.0",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
  "zvariant_utils",
  "zvariant_utils",
 ]
 ]
 
 
@@ -13371,7 +13378,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -13391,7 +13398,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -13550,7 +13557,7 @@ dependencies = [
  "proc-macro-crate 3.2.0",
  "proc-macro-crate 3.2.0",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
  "zvariant_utils",
  "zvariant_utils",
 ]
 ]
 
 
@@ -13562,5 +13569,5 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.85",
+ "syn 2.0.86",
 ]
 ]

+ 5 - 0
Cargo.toml

@@ -245,6 +245,11 @@ tray-icon = "0.19"
 incremental = true
 incremental = true
 debug = 0
 debug = 0
 
 
+[profile.release-max-opt]
+inherits = "release"
+lto = true
+codegen-units = 1
+
 # Disable debug assertions to check the released path of core and other packages, but build without optimizations to keep build times quick
 # Disable debug assertions to check the released path of core and other packages, but build without optimizations to keep build times quick
 [profile.release-unoptimized]
 [profile.release-unoptimized]
 inherits = "dev"
 inherits = "dev"

+ 4 - 0
packages/cli/Cargo.toml

@@ -61,6 +61,7 @@ syn = { workspace = true, features = ["full", "extra-traits", "visit", "visit-mu
 
 
 headers = "0.4.0"
 headers = "0.4.0"
 walkdir = "2"
 walkdir = "2"
+walrus = { workspace = true, features = ["parallel"] }
 
 
 # tools download
 # tools download
 dirs = { workspace = true }
 dirs = { workspace = true }
@@ -99,6 +100,9 @@ ansi-to-tui = "6.0"
 ansi-to-html = "0.2.1"
 ansi-to-html = "0.2.1"
 ratatui = { version = "0.28.0", features = ["crossterm", "unstable"] }
 ratatui = { version = "0.28.0", features = ["crossterm", "unstable"] }
 
 
+# disable `log` entirely since `walrus` uses it and is *much* slower with it enableda
+log = { version = "0.4", features = ["max_level_off", "release_max_level_off"] }
+
 # link intercept
 # link intercept
 tempfile = "3.3"
 tempfile = "3.3"
 manganis-core = { workspace = true }
 manganis-core = { workspace = true }

+ 8 - 18
packages/cli/src/assets.rs

@@ -15,6 +15,7 @@ pub(crate) struct AssetManifest {
 }
 }
 
 
 impl AssetManifest {
 impl AssetManifest {
+    #[allow(dead_code)]
     pub(crate) fn load_from_file(path: &Path) -> anyhow::Result<Self> {
     pub(crate) fn load_from_file(path: &Path) -> anyhow::Result<Self> {
         let src = std::fs::read_to_string(path)
         let src = std::fs::read_to_string(path)
             .context("Failed to read asset manifest from filesystem")?;
             .context("Failed to read asset manifest from filesystem")?;
@@ -24,31 +25,20 @@ impl AssetManifest {
 
 
     /// Fill this manifest with a file object/rlib files, typically extracted from the linker intercepted
     /// Fill this manifest with a file object/rlib files, typically extracted from the linker intercepted
     pub(crate) fn add_from_object_path(&mut self, path: PathBuf) -> anyhow::Result<()> {
     pub(crate) fn add_from_object_path(&mut self, path: PathBuf) -> anyhow::Result<()> {
-        let Some(ext) = path.extension() else {
-            return Ok(());
-        };
-
-        let Some(ext) = ext.to_str() else {
-            return Ok(());
-        };
-
         let data = std::fs::read(path.clone())?;
         let data = std::fs::read(path.clone())?;
 
 
-        match ext {
-            // Parse an unarchived object file
-            "o" => {
-                if let Ok(object) = object::File::parse(&*data) {
-                    self.add_from_object_file(&object)?;
-                }
-            }
-
+        match path.extension().and_then(|ext| ext.to_str()) {
             // Parse an rlib as a collection of objects
             // Parse an rlib as a collection of objects
-            "rlib" => {
+            Some("rlib") => {
                 if let Ok(archive) = object::read::archive::ArchiveFile::parse(&*data) {
                 if let Ok(archive) = object::read::archive::ArchiveFile::parse(&*data) {
                     self.add_from_archive_file(&archive, &data)?;
                     self.add_from_archive_file(&archive, &data)?;
                 }
                 }
             }
             }
-            _ => {}
+            _ => {
+                if let Ok(object) = object::File::parse(&*data) {
+                    self.add_from_object_file(&object)?;
+                }
+            }
         }
         }
 
 
         Ok(())
         Ok(())

+ 56 - 38
packages/cli/src/builder/build.rs

@@ -6,7 +6,10 @@ use crate::{build::BuildArgs, link::LinkAction};
 use crate::{AppBundle, Platform};
 use crate::{AppBundle, Platform};
 use anyhow::Context;
 use anyhow::Context;
 use serde::Deserialize;
 use serde::Deserialize;
-use std::{path::PathBuf, process::Stdio};
+use std::{
+    path::{Path, PathBuf},
+    process::Stdio,
+};
 use tokio::{io::AsyncBufReadExt, process::Command};
 use tokio::{io::AsyncBufReadExt, process::Command};
 
 
 #[derive(Clone, Debug)]
 #[derive(Clone, Debug)]
@@ -50,7 +53,7 @@ impl BuildRequest {
     pub(crate) async fn build_app(&self) -> Result<BuildArtifacts> {
     pub(crate) async fn build_app(&self) -> Result<BuildArtifacts> {
         tracing::debug!("Building app...");
         tracing::debug!("Building app...");
         let exe = self.build_cargo().await?;
         let exe = self.build_cargo().await?;
-        let assets = self.collect_assets().await?;
+        let assets = self.collect_assets(&exe).await?;
         Ok(BuildArtifacts { exe, assets })
         Ok(BuildArtifacts { exe, assets })
     }
     }
 
 
@@ -185,7 +188,7 @@ impl BuildRequest {
     /// This will execute `dx` with an env var set to force `dx` to operate as a linker, and then
     /// This will execute `dx` with an env var set to force `dx` to operate as a linker, and then
     /// traverse the .o and .rlib files rustc passes that new `dx` instance, collecting the link
     /// traverse the .o and .rlib files rustc passes that new `dx` instance, collecting the link
     /// tables marked by manganis and parsing them as a ResourceAsset.
     /// tables marked by manganis and parsing them as a ResourceAsset.
-    pub(crate) async fn collect_assets(&self) -> anyhow::Result<AssetManifest> {
+    pub(crate) async fn collect_assets(&self, exe: &Path) -> Result<AssetManifest> {
         tracing::debug!("Collecting assets ...");
         tracing::debug!("Collecting assets ...");
 
 
         // If assets are skipped, we don't need to collect them
         // If assets are skipped, we don't need to collect them
@@ -193,43 +196,11 @@ impl BuildRequest {
             return Ok(AssetManifest::default());
             return Ok(AssetManifest::default());
         }
         }
 
 
-        // Create a temp file to put the output of the args
-        // We need to do this since rustc won't actually print the link args to stdout, so we need to
-        // give `dx` a file to dump its env::args into
-        let tmp_file = tempfile::NamedTempFile::new()?;
+        let mut manifest = AssetManifest::default();
 
 
-        // Run `cargo rustc` again, but this time with a custom linker (dx) and an env var to force
-        // `dx` to act as a linker
-        //
-        // This will force `dx` to look through the incremental cache and find the assets from the previous build
-        Command::new("cargo")
-            // .env("RUSTFLAGS", self.rust_flags())
-            .arg("rustc")
-            .args(self.build_arguments())
-            .arg("--offline") /* don't use the network, should already be resolved */
-            .arg("--")
-            .arg(format!(
-                "-Clinker={}",
-                std::env::current_exe()
-                    .unwrap()
-                    .canonicalize()
-                    .unwrap()
-                    .display()
-            ))
-            .env(
-                LinkAction::ENV_VAR_NAME,
-                LinkAction::BuildAssetManifest {
-                    destination: tmp_file.path().to_path_buf(),
-                }
-                .to_json(),
-            )
-            .stdout(Stdio::piped())
-            .stderr(Stdio::piped())
-            .output()
-            .await?;
+        _ = manifest.add_from_object_path(exe.to_path_buf());
 
 
-        // The linker wrote the manifest to the temp file, let's load it!
-        AssetManifest::load_from_file(tmp_file.path())
+        Ok(manifest)
     }
     }
 
 
     /// Create a list of arguments for cargo builds
     /// Create a list of arguments for cargo builds
@@ -416,4 +387,51 @@ impl BuildRequest {
                 / 3.5) as usize
                 / 3.5) as usize
         })
         })
     }
     }
+
+    /// We used to require traversing incremental artifacts for assets that were included but not
+    /// directly exposed to the final binary. Now, however, we force APIs to carry items created
+    /// from asset calls into top-level items such that they *do* get included in the final binary.
+    ///
+    /// There's a chance that's not actually true, so this function is kept around in case we do
+    /// need to revert to "deep extraction".
+    #[allow(unused)]
+    async fn deep_linker_asset_extract(&self) -> Result<AssetManifest> {
+        // Create a temp file to put the output of the args
+        // We need to do this since rustc won't actually print the link args to stdout, so we need to
+        // give `dx` a file to dump its env::args into
+        let tmp_file = tempfile::NamedTempFile::new()?;
+
+        // Run `cargo rustc` again, but this time with a custom linker (dx) and an env var to force
+        // `dx` to act as a linker
+        //
+        // This will force `dx` to look through the incremental cache and find the assets from the previous build
+        Command::new("cargo")
+            // .env("RUSTFLAGS", self.rust_flags())
+            .arg("rustc")
+            .args(self.build_arguments())
+            .arg("--offline") /* don't use the network, should already be resolved */
+            .arg("--")
+            .arg(format!(
+                "-Clinker={}",
+                std::env::current_exe()
+                    .unwrap()
+                    .canonicalize()
+                    .unwrap()
+                    .display()
+            ))
+            .env(
+                LinkAction::ENV_VAR_NAME,
+                LinkAction::BuildAssetManifest {
+                    destination: tmp_file.path().to_path_buf(),
+                }
+                .to_json(),
+            )
+            .stdout(Stdio::piped())
+            .stderr(Stdio::piped())
+            .output()
+            .await?;
+
+        // The linker wrote the manifest to the temp file, let's load it!
+        Ok(AssetManifest::load_from_file(tmp_file.path())?)
+    }
 }
 }

+ 5 - 4
packages/cli/src/builder/bundle.rs

@@ -653,7 +653,8 @@ impl AppBundle {
         let input_path = input_path.to_path_buf();
         let input_path = input_path.to_path_buf();
         let bindgen_outdir = bindgen_outdir.to_path_buf();
         let bindgen_outdir = bindgen_outdir.to_path_buf();
         let name = self.build.krate.executable_name().to_string();
         let name = self.build.krate.executable_name().to_string();
-        let keep_debug = self.build.krate.config.web.wasm_opt.debug || (!self.build.build.release);
+        let keep_debug = self.build.krate.config.web.wasm_opt.debug;
+        let reference_types = self.build.krate.config.web.wasm_opt.reference_types;
 
 
         let start = std::time::Instant::now();
         let start = std::time::Instant::now();
         tokio::task::spawn_blocking(move || {
         tokio::task::spawn_blocking(move || {
@@ -664,9 +665,9 @@ impl AppBundle {
                 .debug(keep_debug)
                 .debug(keep_debug)
                 .demangle(keep_debug)
                 .demangle(keep_debug)
                 .keep_debug(keep_debug)
                 .keep_debug(keep_debug)
-                .reference_types(true)
-                .remove_name_section(!keep_debug)
-                .remove_producers_section(!keep_debug)
+                .reference_types(reference_types)
+                .remove_name_section(true)
+                .remove_producers_section(true)
                 .out_name(&name)
                 .out_name(&name)
                 .generate(&bindgen_outdir)
                 .generate(&bindgen_outdir)
         })
         })

+ 4 - 0
packages/cli/src/config/web.rs

@@ -58,6 +58,10 @@ pub(crate) struct WasmOptConfig {
     /// Keep debug symbols in the wasm file
     /// Keep debug symbols in the wasm file
     #[serde(default = "false_bool")]
     #[serde(default = "false_bool")]
     pub(crate) debug: bool,
     pub(crate) debug: bool,
+
+    /// Enable reference types
+    #[serde(default = "false_bool")]
+    pub(crate) reference_types: bool,
 }
 }
 
 
 /// The wasm-opt level to use for release web builds [default: 4]
 /// The wasm-opt level to use for release web builds [default: 4]