diff --git a/Cargo.lock b/Cargo.lock index 0809e2bcb..05faa980c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -669,7 +669,7 @@ dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", "aws-smithy-types", - "h2 0.4.14", + "h2 0.4.16", "http 1.4.0", "hyper 1.10.1", "hyper-rustls 0.27.9", @@ -1375,9 +1375,9 @@ checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" [[package]] name = "cap-fs-ext" -version = "3.4.5" +version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5528f85b1e134ae811704e41ef80930f56e795923f866813255bc342cc20654" +checksum = "476f0d0003a760918ed4b1e039a59e11769030416f79c8222551d22785f7f70d" dependencies = [ "cap-primitives", "cap-std", @@ -1387,9 +1387,9 @@ dependencies = [ [[package]] name = "cap-net-ext" -version = "3.4.5" +version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20a158160765c6a7d0d8c072a53d772e4cb243f38b04bfcf6b4939cfbe7482e7" +checksum = "150941cefd3df4de2fea24604ba4949371576f62e527410298333f7d431a1bc6" dependencies = [ "cap-primitives", "cap-std", @@ -1399,9 +1399,9 @@ dependencies = [ [[package]] name = "cap-primitives" -version = "3.4.5" +version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6cf3aea8a5081171859ef57bc1606b1df6999df4f1110f8eef68b30098d1d3a" +checksum = "8e0bf07d379916947be6c4a07f43684153d710a2896c31f9e97781362895596c" dependencies = [ "ambient-authority", "fs-set-times", @@ -1417,9 +1417,9 @@ dependencies = [ [[package]] name = "cap-std" -version = "3.4.5" +version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6dc3090992a735d23219de5c204927163d922f42f575a0189b005c62d37549a" +checksum = "a59e59fa26472d29680ece6a9f8ee8b0551a719a33df2f5240bde065ecbddfd7" dependencies = [ "camino", "cap-primitives", @@ -1430,9 +1430,9 @@ dependencies = [ [[package]] name = "cap-time-ext" -version = "3.4.5" +version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def102506ce40c11710a9b16e614af0cde8e76ae51b1f48c04b8d79f4b671a80" +checksum = "b54c289326c70f1c697ebf0a31842a480932e5942b5fac92fcc46e87286b48e2" dependencies = [ "ambient-authority", "cap-primitives", @@ -1820,27 +1820,27 @@ dependencies = [ [[package]] name = "cranelift-assembler-x64" -version = "0.132.3" +version = "0.133.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d521bdbc6098937af83ef4ab6d5c07398126bc71878f7ef4ea9499977978ef5" +checksum = "0aadfd45214f09461ba0406f7dacecce5cac39bf0bdb4890eeb468f4ef090e07" dependencies = [ "cranelift-assembler-x64-meta", ] [[package]] name = "cranelift-assembler-x64-meta" -version = "0.132.3" +version = "0.133.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dde0b83164d4a497860af4236271178bc640512b067101e0853e4f74eaa4df5" +checksum = "57069faede9bd1f926364b4cf69ccc9bebc6f4af5ab897083581b7bc991bf20a" dependencies = [ "cranelift-srcgen", ] [[package]] name = "cranelift-bforest" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0111d110b72b4efad69a372e29e21628652fd0bcab66967e5c8350ab679affd5" +checksum = "353b309eef494e4adb4c6cca76f30ef27daa907534db7d05b5986500f51aa4e1" dependencies = [ "cranelift-entity", "wasmtime-internal-core", @@ -1848,9 +1848,9 @@ dependencies = [ [[package]] name = "cranelift-bitset" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf01ecc92fc5499789d79c3b817299d5a8ddd828d31dcf0f9cc3cc66f38dbb36" +checksum = "e3cafe127a4c5d9765b1df54052245d2cbaca7238782805bb5ac94986ccdb591" dependencies = [ "serde", "serde_derive", @@ -1859,9 +1859,9 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cd2563bead0090c3879a7ff7327f7550c9d59bb5d05ecc8cd7886977aa3125a" +checksum = "3964f31c6dc9d21e926ef884d3eec2f1ca83266a233521da4a737143262ceb84" dependencies = [ "bumpalo", "cranelift-assembler-x64", @@ -1876,10 +1876,13 @@ dependencies = [ "hashbrown 0.17.1", "libm", "log", + "postcard", "pulley-interpreter", "regalloc2", "rustc-hash 2.1.2", "serde", + "serde_derive", + "sha2 0.10.9", "smallvec", "target-lexicon", "wasmtime-internal-core", @@ -1887,9 +1890,9 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9640d250d26f9381a73dc7f9862b27928d4809119aec73be0e556612e67b6a99" +checksum = "b2f8b35746603b792e4ae34499a39251f310a06c98d4bc2ca02cf4bd29ce3c84" dependencies = [ "cranelift-assembler-x64-meta", "cranelift-codegen-shared", @@ -1900,24 +1903,24 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.132.3" +version = "0.133.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07f156b90efc94371ddb3536f76e4ab671ad2e093bfa5511e10198cadbb0c47" +checksum = "6095e7095930b6169490138b4262fe7ec24290d3f604d7fe62e1e3138e740daa" [[package]] name = "cranelift-control" -version = "0.132.3" +version = "0.133.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a76fd9dd37dcbc3d2d2e00abe3281a7e88adc035fba3b8114cc69981576ec" +checksum = "e61dfa0766c0eadf42b3febd145a35f81f31086e207f534e5fb406fc3d08fc47" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eea22522144ba08c7e7ef94bfc25d474ef016c2771974b8ab1986734ac85965" +checksum = "42ad4f0c556d3d57580d07477be9e665f4d2a826971a5ab4642ead20a19df443" dependencies = [ "cranelift-bitset", "serde", @@ -1927,11 +1930,12 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efa2826c80dff1d93b19b3cfbcaf9fae44c78d739a98d146dd5bd89c51e14367" +checksum = "29d69a6b7d8412c716e8599c7330dfbd122c1bc145f3bda05a9e237fba20419d" dependencies = [ "cranelift-codegen", + "hashbrown 0.17.1", "log", "smallvec", "target-lexicon", @@ -1939,15 +1943,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e238a69b95c5415456f22189494a12db94f313bb72b6ec9cc88ddf2f1056e28e" +checksum = "52fcdcd4a5c7fa8bfea35e72c0979ad5a699c836364870f0a84169d02a085a88" [[package]] name = "cranelift-native" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eceb0ebd8d6aef6bb287e8d532a164b0db1c0062961211e9c22a91f67521c098" +checksum = "0fee933cf8ec90e58e68163a02bdb0e4d29f2260a7592b3f09cbba52fcd34d12" dependencies = [ "cranelift-codegen", "libc", @@ -1956,9 +1960,9 @@ dependencies = [ [[package]] name = "cranelift-srcgen" -version = "0.132.3" +version = "0.133.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004643f39a7bec553de5263d650db30e5b9caec1d5cbe065fd732b7ec9ae40d0" +checksum = "4b3f161aa81ee5dd8d7b0eb8828988f57baf2f78d288e62b6b3714b37aa6d6a1" [[package]] name = "crc32fast" @@ -2459,7 +2463,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -2655,7 +2659,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -3225,9 +3229,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.14" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733" +checksum = "a9f37a958b41b3b19ee2707c06439c0e9e547e847223eb791ecb0cb821c65e27" dependencies = [ "atomic-waker", "bytes", @@ -3550,7 +3554,7 @@ dependencies = [ "bytes", "futures-channel", "futures-core", - "h2 0.4.14", + "h2 0.4.16", "http 1.4.0", "http-body 1.0.1", "httparse", @@ -3653,7 +3657,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.3", + "socket2 0.5.10", "system-configuration", "tokio", "tower-service", @@ -4477,12 +4481,9 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" [[package]] name = "mach2" -version = "0.4.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" -dependencies = [ - "libc", -] +checksum = "dae608c151f68243f2b000364e1f7b186d9c29845f7d2d85bd31b9ad77ad552b" [[package]] name = "markup5ever" @@ -4778,7 +4779,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -5656,7 +5657,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", - "itertools 0.14.0", + "itertools 0.12.1", "proc-macro2", "quote", "syn 2.0.117", @@ -5693,9 +5694,9 @@ dependencies = [ [[package]] name = "pulley-interpreter" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b04adf8f93264685f2c70a3edb8f828c791e71b22659253319c33f29d1165aef" +checksum = "3683e69168d2e2374cea51a79fce2e9870e7c622366b8bf7af87fb5c2428a2a9" dependencies = [ "cranelift-bitset", "log", @@ -5705,9 +5706,9 @@ dependencies = [ [[package]] name = "pulley-macros" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c120a6af1a574a42efcd9df2ad27cb78bc04118c5e0c69e90599f17301a1c7a" +checksum = "8ebbd6dada1e3df36ea4a4b8feca2ed230aa92d59e55bf5714eb4286cdd632b0" dependencies = [ "proc-macro2", "quote", @@ -5733,7 +5734,7 @@ dependencies = [ "quinn-udp", "rustc-hash 2.1.2", "rustls 0.23.40", - "socket2 0.6.3", + "socket2 0.5.10", "thiserror 2.0.18", "tokio", "tracing", @@ -5771,9 +5772,9 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.3", + "socket2 0.5.10", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -6102,6 +6103,7 @@ dependencies = [ "hashbrown 0.17.1", "log", "rustc-hash 2.1.2", + "serde", "smallvec", ] @@ -6208,7 +6210,7 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.4.14", + "h2 0.4.16", "http 1.4.0", "http-body 1.0.1", "http-body-util", @@ -6593,7 +6595,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.12.1", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -6698,7 +6700,7 @@ dependencies = [ "security-framework 3.7.0", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -7561,7 +7563,7 @@ dependencies = [ "getrandom 0.4.2", "once_cell", "rustix 1.1.4", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -8158,7 +8160,7 @@ dependencies = [ "axum 0.8.9", "base64 0.22.1", "bytes", - "h2 0.4.14", + "h2 0.4.16", "http 1.4.0", "http-body 1.0.1", "http-body-util", @@ -8959,9 +8961,9 @@ dependencies = [ [[package]] name = "wasm-compose" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96ba953e2b9b4b4b52a31cf4e3ee1c1374c872b6e012cf2138d1c37cba00bfd6" +checksum = "b089037d7eb453ed57b560fe7833de0707411c8b9fdc429745ced77e2a1bacb9" dependencies = [ "anyhow", "heck 0.5.0", @@ -8969,8 +8971,8 @@ dependencies = [ "log", "petgraph", "smallvec", - "wasm-encoder 0.248.0", - "wasmparser 0.248.0", + "wasm-encoder 0.251.0", + "wasmparser 0.251.0", "wat", ] @@ -8986,22 +8988,22 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac92cf547bc18d27ecc521015c08c353b4f18b84ab388bb6d1b6b682c620d9b6" +checksum = "5a879a421bd17c528b74721b2abf4c62e8f1d1889c2ba8c3c50d02deaf2ce395" dependencies = [ "leb128fmt", - "wasmparser 0.248.0", + "wasmparser 0.251.0", ] [[package]] name = "wasm-encoder" -version = "0.249.0" +version = "0.257.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69830ccbbf41c55eb585991659fb70867ef628193af3a495f09a6956f7615e59" +checksum = "7d8ad9f0a39050867bda22e6486c316e2e52d20a42154d5bc433934bf738d085" dependencies = [ "leb128fmt", - "wasmparser 0.249.0", + "wasmparser 0.257.1", ] [[package]] @@ -9070,9 +9072,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4439c5eee9df71ee0c6efb37f63b1fcb1fec38f85f5142c54e7ed05d33091a" +checksum = "437970b35b1a85cfde9c74b2398352d8d653f3bd8e3a3db0c063ea8f5b4b36ff" dependencies = [ "bitflags 2.11.1", "hashbrown 0.17.1", @@ -9083,9 +9085,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.249.0" +version = "0.257.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30538cae9a794215f490b532df01c557e2e2bfac92569482554acd0992a102ea" +checksum = "d92fc335fb6d48f46bda1d8b26b69e28320c15ac3272208333833d6e217e2b4a" dependencies = [ "bitflags 2.11.1", "indexmap 2.14.0", @@ -9094,20 +9096,20 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b264a5410b008d4d199a92bf536eae703cbd614482fc1ec53831cf19e1c183" +checksum = "8798c1a699bd25648b6708eefe94d97c6f9891febb94b42cca1f7a4b086ea64e" dependencies = [ "anyhow", "termcolor", - "wasmparser 0.248.0", + "wasmparser 0.251.0", ] [[package]] name = "wasmtime" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a83ef84ac8bab735c89e27b0268b0586099fbe81281ae45be2b8e4f407b2daa" +checksum = "ed27b4a4a5271d2608406a99c8d1cf8aea1e894fe4ec361d470063bcf342f1d7" dependencies = [ "addr2line", "async-trait", @@ -9138,8 +9140,8 @@ dependencies = [ "target-lexicon", "tempfile", "wasm-compose", - "wasm-encoder 0.248.0", - "wasmparser 0.248.0", + "wasm-encoder 0.251.0", + "wasmparser 0.251.0", "wasmtime-environ", "wasmtime-internal-cache", "wasmtime-internal-component-macro", @@ -9151,16 +9153,16 @@ dependencies = [ "wasmtime-internal-jit-icache-coherence", "wasmtime-internal-unwinder", "wasmtime-internal-versioned-export-macros", - "wasmtime-internal-winch", "wat", "windows-sys 0.61.2", + "wit-parser 0.251.0", ] [[package]] name = "wasmtime-environ" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439686d3deb38525c86b88bbc90f7ba669f70c8edc7d6b35147c738bbef5ff76" +checksum = "7712f99b0920d4638023405eb9723ef200efd6d39bfc7466c92e926ca5d130f0" dependencies = [ "anyhow", "cpp_demangle", @@ -9180,8 +9182,8 @@ dependencies = [ "sha2 0.10.9", "smallvec", "target-lexicon", - "wasm-encoder 0.248.0", - "wasmparser 0.248.0", + "wasm-encoder 0.251.0", + "wasmparser 0.251.0", "wasmprinter", "wasmtime-internal-component-util", "wasmtime-internal-core", @@ -9189,9 +9191,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-cache" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f2799e6c35393c2a38999f13e4c80ab5d5d9756082bb554cbd1f60485a18293" +checksum = "bb07d96412d6958817749712969cfd6416cbce11639c3f3431dc659816d84ace" dependencies = [ "base64 0.22.1", "directories-next", @@ -9209,9 +9211,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-component-macro" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d2c5850fb8c448792453765d97f6f01096a32708f3c36798e86220763c90c0" +checksum = "f60f3492a55dbd4eb2e4f1f33ed0626d141f5f4cf4c0194168a4c5006f6601b0" dependencies = [ "anyhow", "proc-macro2", @@ -9219,20 +9221,20 @@ dependencies = [ "syn 2.0.117", "wasmtime-internal-component-util", "wasmtime-internal-wit-bindgen", - "wit-parser 0.248.0", + "wit-parser 0.251.0", ] [[package]] name = "wasmtime-internal-component-util" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed79c4e9ab416dcc5e46b9d1ec9b7c2e3c730deab525996b0de45a35fc8b2c3" +checksum = "c777c83bb4c3414b23fe84fecd47a46016a0a0b0a39aa786cad0a701fe3cbc7f" [[package]] name = "wasmtime-internal-core" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3073c03f97f871fe6400e68621c863b93ba79296f8e570285231952d23fcc804" +checksum = "ffb54b5de8723a9acf2c0bc531df8e773462796a5f87e8f49a3d5ea5c3b32ef7" dependencies = [ "anyhow", "hashbrown 0.17.1", @@ -9242,9 +9244,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-cranelift" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a15981261d361f9c93b42929f446b4009840853ceea181ad6e17730f4016a0b" +checksum = "9c60bb70116a88791ccceef605b31010c4888a7305e450f01dc7d4f430ad25f0" dependencies = [ "cfg-if", "cranelift-codegen", @@ -9260,7 +9262,7 @@ dependencies = [ "smallvec", "target-lexicon", "thiserror 2.0.18", - "wasmparser 0.248.0", + "wasmparser 0.251.0", "wasmtime-environ", "wasmtime-internal-core", "wasmtime-internal-unwinder", @@ -9269,9 +9271,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-fiber" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33aed9d91d54c9f861ba7e3c3130bded8a7a63e01fe58c3a9a36b45d6ee0fb57" +checksum = "24bdf54907e0bad31ad6676d03ed1008fa21489725635136f9c38979c39a98ed" dependencies = [ "cc", "cfg-if", @@ -9284,9 +9286,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-jit-debug" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "944942118aab67e7b4febfe88a65d0af4cfd10af8ed0e79fd6cf39d75359ab7e" +checksum = "ef4edaf07e20511f3ca070a4a0f026c407969f09e536075729872f548ca6f8d4" dependencies = [ "cc", "object", @@ -9296,9 +9298,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-jit-icache-coherence" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37dee05e8c35759826f6b926cd949c51f771b6a58619d8e60c63c3f3d3e5e59b" +checksum = "f96a6d7eb246d1306b7db8915a169cd8628a9e6b8299d1d1f8ab109801ef0a66" dependencies = [ "cfg-if", "libc", @@ -9308,9 +9310,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-unwinder" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a83f7ebe911a6f1605ff0d3a678472ddb1fcc57c3e2f6bae5dd4d170b625b3ed" +checksum = "39472572ea3eb11b7cc7fe7bd6df0005cef87b580eb06a3378d103ac99d45bc3" dependencies = [ "cfg-if", "cranelift-codegen", @@ -9321,50 +9323,33 @@ dependencies = [ [[package]] name = "wasmtime-internal-versioned-export-macros" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75980644456dc003238766254b0e5f002704630237ccd0728747991fe2739d7" +checksum = "7bf2eff1c108b01566a7c8870de34821e7bda7d327e86e12a548c026e1e3677d" dependencies = [ "proc-macro2", "quote", "syn 2.0.117", ] -[[package]] -name = "wasmtime-internal-winch" -version = "45.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81af36995b4720b32e3d667541b548a27184a859d09a6ee745eaba095f5a6f6e" -dependencies = [ - "cranelift-codegen", - "gimli", - "log", - "object", - "target-lexicon", - "wasmparser 0.248.0", - "wasmtime-environ", - "wasmtime-internal-cranelift", - "winch-codegen", -] - [[package]] name = "wasmtime-internal-wit-bindgen" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ada06667b7948892703fcc9f0b9b337c2e78c334d74d4fa62e2f75f07fbb3659" +checksum = "d1d9d3ffd05d6e864adc35cff702f56307c454caec3b1d2d89dd6c843219b663" dependencies = [ "anyhow", "bitflags 2.11.1", "heck 0.5.0", "indexmap 2.14.0", - "wit-parser 0.248.0", + "wit-parser 0.251.0", ] [[package]] name = "wasmtime-wasi" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd8e9db77f7b60f4c5f6f72847f55eb646ed7ed2f68e362559ee07dc543fb408" +checksum = "b88f243a21e600902fd03bd970df7e4671d760d724c9fad202166fd98c842548" dependencies = [ "async-trait", "bitflags 2.11.1", @@ -9374,7 +9359,6 @@ dependencies = [ "cap-std", "cap-time-ext", "cfg-if", - "fs-set-times", "futures", "io-extras", "io-lifetimes", @@ -9392,9 +9376,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi-io" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3805f02be91374a4fd02c0f947daf07bbaa6fbebb5909de5305fa5b0e9568f30" +checksum = "0373c9dc92c9373aa9cee05963ea438bc318bf07bb284bede77a9ce24b39f682" dependencies = [ "async-trait", "bytes", @@ -9414,24 +9398,24 @@ dependencies = [ [[package]] name = "wast" -version = "249.0.0" +version = "257.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2474a321bf9ae2808e9fa23ac4ec2b27300e70985e30bcb5a38d43b76bfc901a" +checksum = "3c416ee8044cf88c5280e3d87c322b009525eb25142cf7428f0a90ea88febc3b" dependencies = [ "bumpalo", "leb128fmt", "memchr", "unicode-width 0.2.2", - "wasm-encoder 0.249.0", + "wasm-encoder 0.257.1", ] [[package]] name = "wat" -version = "1.249.0" +version = "1.257.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28af699d0a9c7e4e250b7b8e36167ae5215fbb4b7ae526bb4ce7b234ba0afc90" +checksum = "672e5495f00c5fc6c6b502205bae4708aa4dd13d969754438743afe0a8af0f1d" dependencies = [ - "wast 249.0.0", + "wast 257.0.1", ] [[package]] @@ -9526,9 +9510,9 @@ dependencies = [ [[package]] name = "wiggle" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aca130e25a57e29bbb541441b6e261970a8469580bffebe904d96f0df67e41d" +checksum = "9914a7e8ac8cb37be90753103e2aa96959e9e5d2f549a2d081bcfeb8fa97e08d" dependencies = [ "bitflags 2.11.1", "thiserror 2.0.18", @@ -9540,9 +9524,9 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f0a45b47e893521cad81819f2e0db18a8b05086fd4bfb35369ed8830a8f0148" +checksum = "789b4c6d82c1ae0f5003eb6c5b9d3c9fb80112c4be50ad2690eb7347f0edd852" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -9554,9 +9538,9 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e297e0325cffa6d368386b6e672e9d6c6a7ad34bdb8a5f49319db4decef2a990" +checksum = "c5be72b12200c1270ee5cc9c6c30450e9ba5abdcb5fe8d09d08b516b7bd974d3" dependencies = [ "proc-macro2", "quote", @@ -9586,7 +9570,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.48.0", ] [[package]] @@ -9595,25 +9579,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "winch-codegen" -version = "45.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d73bc25d27222248f9bafc7e9945f61e74275360c3ea0d34008810d436140a53" -dependencies = [ - "cranelift-assembler-x64", - "cranelift-codegen", - "gimli", - "regalloc2", - "smallvec", - "target-lexicon", - "thiserror 2.0.18", - "wasmparser 0.248.0", - "wasmtime-environ", - "wasmtime-internal-core", - "wasmtime-internal-cranelift", -] - [[package]] name = "windows-core" version = "0.62.2" @@ -9711,15 +9676,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", -] - [[package]] name = "windows-sys" version = "0.61.2" @@ -9753,30 +9709,13 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", + "windows_i686_gnullvm", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", -] - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -9789,12 +9728,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -9807,12 +9740,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -9825,24 +9752,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -9855,12 +9770,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -9873,12 +9782,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -9891,12 +9794,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -9909,12 +9806,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - [[package]] name = "winnow" version = "0.5.40" @@ -10048,9 +9939,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "247ad505da2915a082fe13204c5ba8788425aea1de54f43b284818cf82637856" +checksum = "e960732e824fab95099971a09e638979347c94ca48568d3c854c945729196947" dependencies = [ "anyhow", "hashbrown 0.17.1", @@ -10062,7 +9953,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.248.0", + "wasmparser 0.251.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 7995fd173..9b690b180 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,7 @@ exclude = [ name = "axinite" version = "0.18.0" edition = "2024" -rust-version = "1.93" +rust-version = "1.94" description = "Secure personal AI assistant that protects your data and expands its capabilities on the fly" authors = ["Payton McIntosh ", "NEAR AI "] license = "MIT OR Apache-2.0" @@ -130,8 +130,8 @@ open = "5" pgvector = { version = "0.4", features = ["postgres"], optional = true } # WASM sandbox for untrusted tool execution -wasmtime = { version = "45.0.3", features = ["cache", "component-model"] } -wasmtime-wasi = "45.0.3" # WASI support for component model +wasmtime = { version = "46.0.2", features = ["cache", "component-model"] } +wasmtime-wasi = "46.0.2" # WASI support for component model wasmparser = "0.220" # WASM binary parsing for validation # Cryptography for secrets management diff --git a/Dockerfile b/Dockerfile index ab15f57a1..bb8f71608 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ # docker run --env-file .env -p 3000:3000 axinite:latest # Stage 1: Build -FROM rust:1.93-slim-bookworm AS builder +FROM rust:1.94-slim-bookworm AS builder RUN apt-get update && apt-get install -y --no-install-recommends \ pkg-config libssl-dev cmake gcc g++ \ diff --git a/Dockerfile.worker b/Dockerfile.worker index 64100a8d9..0f92ef84a 100644 --- a/Dockerfile.worker +++ b/Dockerfile.worker @@ -9,7 +9,7 @@ # The image includes common development tools so workers can build software, # run tests, and execute shell commands. -FROM rust:1.93-bookworm AS builder +FROM rust:1.94-bookworm AS builder WORKDIR /build COPY . . @@ -46,7 +46,7 @@ RUN apt-get update \ ENV RUSTUP_HOME=/usr/local/rustup \ CARGO_HOME=/usr/local/cargo \ PATH=/usr/local/cargo/bin:$PATH -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.93.0 \ +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.94.0 \ && chmod -R a+r /usr/local/rustup /usr/local/cargo # Install Claude Code CLI (for claude-bridge mode) diff --git a/Makefile b/Makefile index 49ef3b055..08a7564b5 100644 --- a/Makefile +++ b/Makefile @@ -53,6 +53,12 @@ GITHUB_TOOL_WASM_TARGET := wasm32-wasip2 # https://github.com/leynos/axinite/issues/212. # RUSTSEC-2025-0134: rustls-pemfile 2.2.0 is unmaintained via the libsql TLS # chain. Track removal in https://github.com/leynos/axinite/issues/213. +# RUSTSEC-2026-0235: rkyv 0.7.46 is an optional rust_decimal dependency. No +# Axinite feature enables rust_decimal's rkyv feature; remove when rust_decimal +# no longer records rkyv <0.8.17 in its published dependency metadata. +# RUSTSEC-2026-0258: h2 0.3.27 is required by libsql 0.9's remote-replica +# client stack. Remote replicas are supported, so remove when libsql no longer +# requires h2 <0.4.16. # kuchikikiki 0.9.2 is yanked via readabilityrs. cargo-audit exposes no # advisory ID to ignore for this warning; track removal in # https://github.com/leynos/axinite/issues/214. @@ -64,7 +70,9 @@ AUDIT_FLAGS ?= \ --ignore RUSTSEC-2026-0185 \ --ignore RUSTSEC-2025-0141 \ --ignore RUSTSEC-2024-0370 \ - --ignore RUSTSEC-2025-0134 + --ignore RUSTSEC-2025-0134 \ + --ignore RUSTSEC-2026-0235 \ + --ignore RUSTSEC-2026-0258 .PHONY: all install install-with-overrides sync-local-wasm-overrides build-github-tool-wasm fmt check-fmt typecheck lint lint-clippy lint-whitaker markdownlint spelling spelling-phrase-check spelling-config spelling-config-write spelling-helper-test nixie audit rust-audit test test-cargo test-matrix test-matrix-cargo test-workflow-contracts clean diff --git a/docs/developers-guide.md b/docs/developers-guide.md index 1157798bd..54ea15afd 100644 --- a/docs/developers-guide.md +++ b/docs/developers-guide.md @@ -28,7 +28,7 @@ with the current CI setup. Install these tools before running the standard repository commands: -1. Rust `1.93` via `rustup`. +1. Rust `1.94` via `rustup`. 2. `clang` on Linux or WSL. 3. `mold` on Linux or WSL. 4. The `wasm32-wasip2` Rust target. @@ -39,7 +39,7 @@ Install these tools before running the standard repository commands: 9. `make`. 10. Git. -The root crate declares `rust-version = "1.93"` in `Cargo.toml`. The repository +The root crate declares `rust-version = "1.94"` in `Cargo.toml`. The repository also includes standalone WebAssembly (WASM) tool and channel crates, so WASM tooling is required for more than release-only workflows. diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 0df36a2bf..4734ccc27 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -841,9 +841,9 @@ dependencies = [ [[package]] name = "cap-fs-ext" -version = "3.4.5" +version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5528f85b1e134ae811704e41ef80930f56e795923f866813255bc342cc20654" +checksum = "476f0d0003a760918ed4b1e039a59e11769030416f79c8222551d22785f7f70d" dependencies = [ "cap-primitives", "cap-std", @@ -853,9 +853,9 @@ dependencies = [ [[package]] name = "cap-net-ext" -version = "3.4.5" +version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20a158160765c6a7d0d8c072a53d772e4cb243f38b04bfcf6b4939cfbe7482e7" +checksum = "150941cefd3df4de2fea24604ba4949371576f62e527410298333f7d431a1bc6" dependencies = [ "cap-primitives", "cap-std", @@ -865,9 +865,9 @@ dependencies = [ [[package]] name = "cap-primitives" -version = "3.4.5" +version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6cf3aea8a5081171859ef57bc1606b1df6999df4f1110f8eef68b30098d1d3a" +checksum = "8e0bf07d379916947be6c4a07f43684153d710a2896c31f9e97781362895596c" dependencies = [ "ambient-authority", "fs-set-times", @@ -883,9 +883,9 @@ dependencies = [ [[package]] name = "cap-std" -version = "3.4.5" +version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6dc3090992a735d23219de5c204927163d922f42f575a0189b005c62d37549a" +checksum = "a59e59fa26472d29680ece6a9f8ee8b0551a719a33df2f5240bde065ecbddfd7" dependencies = [ "cap-primitives", "io-extras", @@ -895,9 +895,9 @@ dependencies = [ [[package]] name = "cap-time-ext" -version = "3.4.5" +version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def102506ce40c11710a9b16e614af0cde8e76ae51b1f48c04b8d79f4b671a80" +checksum = "b54c289326c70f1c697ebf0a31842a480932e5942b5fac92fcc46e87286b48e2" dependencies = [ "ambient-authority", "cap-primitives", @@ -1265,27 +1265,27 @@ dependencies = [ [[package]] name = "cranelift-assembler-x64" -version = "0.132.3" +version = "0.133.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d521bdbc6098937af83ef4ab6d5c07398126bc71878f7ef4ea9499977978ef5" +checksum = "0aadfd45214f09461ba0406f7dacecce5cac39bf0bdb4890eeb468f4ef090e07" dependencies = [ "cranelift-assembler-x64-meta", ] [[package]] name = "cranelift-assembler-x64-meta" -version = "0.132.3" +version = "0.133.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dde0b83164d4a497860af4236271178bc640512b067101e0853e4f74eaa4df5" +checksum = "57069faede9bd1f926364b4cf69ccc9bebc6f4af5ab897083581b7bc991bf20a" dependencies = [ "cranelift-srcgen", ] [[package]] name = "cranelift-bforest" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0111d110b72b4efad69a372e29e21628652fd0bcab66967e5c8350ab679affd5" +checksum = "353b309eef494e4adb4c6cca76f30ef27daa907534db7d05b5986500f51aa4e1" dependencies = [ "cranelift-entity", "wasmtime-internal-core", @@ -1293,9 +1293,9 @@ dependencies = [ [[package]] name = "cranelift-bitset" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf01ecc92fc5499789d79c3b817299d5a8ddd828d31dcf0f9cc3cc66f38dbb36" +checksum = "e3cafe127a4c5d9765b1df54052245d2cbaca7238782805bb5ac94986ccdb591" dependencies = [ "serde", "serde_derive", @@ -1304,9 +1304,9 @@ dependencies = [ [[package]] name = "cranelift-codegen" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cd2563bead0090c3879a7ff7327f7550c9d59bb5d05ecc8cd7886977aa3125a" +checksum = "3964f31c6dc9d21e926ef884d3eec2f1ca83266a233521da4a737143262ceb84" dependencies = [ "bumpalo", "cranelift-assembler-x64", @@ -1321,10 +1321,13 @@ dependencies = [ "hashbrown 0.17.1", "libm", "log", + "postcard", "pulley-interpreter", "regalloc2", "rustc-hash 2.1.3", "serde", + "serde_derive", + "sha2 0.10.9", "smallvec", "target-lexicon", "wasmtime-internal-core", @@ -1332,9 +1335,9 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9640d250d26f9381a73dc7f9862b27928d4809119aec73be0e556612e67b6a99" +checksum = "b2f8b35746603b792e4ae34499a39251f310a06c98d4bc2ca02cf4bd29ce3c84" dependencies = [ "cranelift-assembler-x64-meta", "cranelift-codegen-shared", @@ -1345,24 +1348,24 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.132.3" +version = "0.133.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07f156b90efc94371ddb3536f76e4ab671ad2e093bfa5511e10198cadbb0c47" +checksum = "6095e7095930b6169490138b4262fe7ec24290d3f604d7fe62e1e3138e740daa" [[package]] name = "cranelift-control" -version = "0.132.3" +version = "0.133.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a76fd9dd37dcbc3d2d2e00abe3281a7e88adc035fba3b8114cc69981576ec" +checksum = "e61dfa0766c0eadf42b3febd145a35f81f31086e207f534e5fb406fc3d08fc47" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eea22522144ba08c7e7ef94bfc25d474ef016c2771974b8ab1986734ac85965" +checksum = "42ad4f0c556d3d57580d07477be9e665f4d2a826971a5ab4642ead20a19df443" dependencies = [ "cranelift-bitset", "serde", @@ -1372,11 +1375,12 @@ dependencies = [ [[package]] name = "cranelift-frontend" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efa2826c80dff1d93b19b3cfbcaf9fae44c78d739a98d146dd5bd89c51e14367" +checksum = "29d69a6b7d8412c716e8599c7330dfbd122c1bc145f3bda05a9e237fba20419d" dependencies = [ "cranelift-codegen", + "hashbrown 0.17.1", "log", "smallvec", "target-lexicon", @@ -1384,15 +1388,15 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e238a69b95c5415456f22189494a12db94f313bb72b6ec9cc88ddf2f1056e28e" +checksum = "52fcdcd4a5c7fa8bfea35e72c0979ad5a699c836364870f0a84169d02a085a88" [[package]] name = "cranelift-native" -version = "0.132.3" +version = "0.133.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eceb0ebd8d6aef6bb287e8d532a164b0db1c0062961211e9c22a91f67521c098" +checksum = "0fee933cf8ec90e58e68163a02bdb0e4d29f2260a7592b3f09cbba52fcd34d12" dependencies = [ "cranelift-codegen", "libc", @@ -1401,9 +1405,9 @@ dependencies = [ [[package]] name = "cranelift-srcgen" -version = "0.132.3" +version = "0.133.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004643f39a7bec553de5263d650db30e5b9caec1d5cbe065fd732b7ec9ae40d0" +checksum = "4b3f161aa81ee5dd8d7b0eb8828988f57baf2f78d288e62b6b3714b37aa6d6a1" [[package]] name = "crc32fast" @@ -1839,7 +1843,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -2012,7 +2016,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -2450,9 +2454,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.15" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" +checksum = "a9f37a958b41b3b19ee2707c06439c0e9e547e847223eb791ecb0cb821c65e27" dependencies = [ "atomic-waker", "bytes", @@ -2754,7 +2758,7 @@ dependencies = [ "bytes", "futures-channel", "futures-core", - "h2 0.4.15", + "h2 0.4.16", "http 1.4.2", "http-body 1.1.0", "httparse", @@ -2844,7 +2848,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.5", + "socket2 0.5.10", "system-configuration", "tokio", "tower-service", @@ -3561,12 +3565,9 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" [[package]] name = "mach2" -version = "0.4.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" -dependencies = [ - "libc", -] +checksum = "dae608c151f68243f2b000364e1f7b186d9c29845f7d2d85bd31b9ad77ad552b" [[package]] name = "markup5ever" @@ -3820,7 +3821,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -4503,9 +4504,9 @@ dependencies = [ [[package]] name = "pulley-interpreter" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b04adf8f93264685f2c70a3edb8f828c791e71b22659253319c33f29d1165aef" +checksum = "3683e69168d2e2374cea51a79fce2e9870e7c622366b8bf7af87fb5c2428a2a9" dependencies = [ "cranelift-bitset", "log", @@ -4515,9 +4516,9 @@ dependencies = [ [[package]] name = "pulley-macros" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c120a6af1a574a42efcd9df2ad27cb78bc04118c5e0c69e90599f17301a1c7a" +checksum = "8ebbd6dada1e3df36ea4a4b8feca2ed230aa92d59e55bf5714eb4286cdd632b0" dependencies = [ "proc-macro2", "quote", @@ -4537,7 +4538,7 @@ dependencies = [ "quinn-udp", "rustc-hash 2.1.3", "rustls 0.23.42", - "socket2 0.6.5", + "socket2 0.5.10", "thiserror 2.0.18", "tokio", "tracing", @@ -4576,9 +4577,9 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.5", + "socket2 0.5.10", "tracing", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -4898,6 +4899,7 @@ dependencies = [ "hashbrown 0.17.1", "log", "rustc-hash 2.1.3", + "serde", "smallvec", ] @@ -4992,7 +4994,7 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.4.15", + "h2 0.4.16", "http 1.4.2", "http-body 1.1.0", "http-body-util", @@ -5224,7 +5226,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.12.1", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -5328,7 +5330,7 @@ dependencies = [ "security-framework 3.7.0", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -6070,10 +6072,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.3", + "getrandom 0.3.4", "once_cell", "rustix 1.1.4", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -7122,9 +7124,9 @@ dependencies = [ [[package]] name = "wasm-compose" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96ba953e2b9b4b4b52a31cf4e3ee1c1374c872b6e012cf2138d1c37cba00bfd6" +checksum = "b089037d7eb453ed57b560fe7833de0707411c8b9fdc429745ced77e2a1bacb9" dependencies = [ "anyhow", "heck 0.5.0", @@ -7132,19 +7134,19 @@ dependencies = [ "log", "petgraph", "smallvec", - "wasm-encoder 0.248.0", - "wasmparser 0.248.0", + "wasm-encoder 0.251.0", + "wasmparser 0.251.0", "wat", ] [[package]] name = "wasm-encoder" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac92cf547bc18d27ecc521015c08c353b4f18b84ab388bb6d1b6b682c620d9b6" +checksum = "5a879a421bd17c528b74721b2abf4c62e8f1d1889c2ba8c3c50d02deaf2ce395" dependencies = [ "leb128fmt", - "wasmparser 0.248.0", + "wasmparser 0.251.0", ] [[package]] @@ -7199,9 +7201,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4439c5eee9df71ee0c6efb37f63b1fcb1fec38f85f5142c54e7ed05d33091a" +checksum = "437970b35b1a85cfde9c74b2398352d8d653f3bd8e3a3db0c063ea8f5b4b36ff" dependencies = [ "bitflags 2.13.1", "hashbrown 0.17.1", @@ -7223,20 +7225,20 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b264a5410b008d4d199a92bf536eae703cbd614482fc1ec53831cf19e1c183" +checksum = "8798c1a699bd25648b6708eefe94d97c6f9891febb94b42cca1f7a4b086ea64e" dependencies = [ "anyhow", "termcolor", - "wasmparser 0.248.0", + "wasmparser 0.251.0", ] [[package]] name = "wasmtime" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a83ef84ac8bab735c89e27b0268b0586099fbe81281ae45be2b8e4f407b2daa" +checksum = "ed27b4a4a5271d2608406a99c8d1cf8aea1e894fe4ec361d470063bcf342f1d7" dependencies = [ "addr2line", "async-trait", @@ -7267,8 +7269,8 @@ dependencies = [ "target-lexicon", "tempfile", "wasm-compose", - "wasm-encoder 0.248.0", - "wasmparser 0.248.0", + "wasm-encoder 0.251.0", + "wasmparser 0.251.0", "wasmtime-environ", "wasmtime-internal-cache", "wasmtime-internal-component-macro", @@ -7280,16 +7282,16 @@ dependencies = [ "wasmtime-internal-jit-icache-coherence", "wasmtime-internal-unwinder", "wasmtime-internal-versioned-export-macros", - "wasmtime-internal-winch", "wat", "windows-sys 0.61.2", + "wit-parser", ] [[package]] name = "wasmtime-environ" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439686d3deb38525c86b88bbc90f7ba669f70c8edc7d6b35147c738bbef5ff76" +checksum = "7712f99b0920d4638023405eb9723ef200efd6d39bfc7466c92e926ca5d130f0" dependencies = [ "anyhow", "cpp_demangle", @@ -7309,8 +7311,8 @@ dependencies = [ "sha2 0.10.9", "smallvec", "target-lexicon", - "wasm-encoder 0.248.0", - "wasmparser 0.248.0", + "wasm-encoder 0.251.0", + "wasmparser 0.251.0", "wasmprinter", "wasmtime-internal-component-util", "wasmtime-internal-core", @@ -7318,9 +7320,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-cache" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f2799e6c35393c2a38999f13e4c80ab5d5d9756082bb554cbd1f60485a18293" +checksum = "bb07d96412d6958817749712969cfd6416cbce11639c3f3431dc659816d84ace" dependencies = [ "base64 0.22.1", "directories-next", @@ -7338,9 +7340,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-component-macro" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d2c5850fb8c448792453765d97f6f01096a32708f3c36798e86220763c90c0" +checksum = "f60f3492a55dbd4eb2e4f1f33ed0626d141f5f4cf4c0194168a4c5006f6601b0" dependencies = [ "anyhow", "proc-macro2", @@ -7353,15 +7355,15 @@ dependencies = [ [[package]] name = "wasmtime-internal-component-util" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed79c4e9ab416dcc5e46b9d1ec9b7c2e3c730deab525996b0de45a35fc8b2c3" +checksum = "c777c83bb4c3414b23fe84fecd47a46016a0a0b0a39aa786cad0a701fe3cbc7f" [[package]] name = "wasmtime-internal-core" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3073c03f97f871fe6400e68621c863b93ba79296f8e570285231952d23fcc804" +checksum = "ffb54b5de8723a9acf2c0bc531df8e773462796a5f87e8f49a3d5ea5c3b32ef7" dependencies = [ "anyhow", "hashbrown 0.17.1", @@ -7371,9 +7373,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-cranelift" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a15981261d361f9c93b42929f446b4009840853ceea181ad6e17730f4016a0b" +checksum = "9c60bb70116a88791ccceef605b31010c4888a7305e450f01dc7d4f430ad25f0" dependencies = [ "cfg-if", "cranelift-codegen", @@ -7389,7 +7391,7 @@ dependencies = [ "smallvec", "target-lexicon", "thiserror 2.0.18", - "wasmparser 0.248.0", + "wasmparser 0.251.0", "wasmtime-environ", "wasmtime-internal-core", "wasmtime-internal-unwinder", @@ -7398,9 +7400,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-fiber" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33aed9d91d54c9f861ba7e3c3130bded8a7a63e01fe58c3a9a36b45d6ee0fb57" +checksum = "24bdf54907e0bad31ad6676d03ed1008fa21489725635136f9c38979c39a98ed" dependencies = [ "cc", "cfg-if", @@ -7413,9 +7415,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-jit-debug" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "944942118aab67e7b4febfe88a65d0af4cfd10af8ed0e79fd6cf39d75359ab7e" +checksum = "ef4edaf07e20511f3ca070a4a0f026c407969f09e536075729872f548ca6f8d4" dependencies = [ "cc", "object", @@ -7425,9 +7427,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-jit-icache-coherence" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37dee05e8c35759826f6b926cd949c51f771b6a58619d8e60c63c3f3d3e5e59b" +checksum = "f96a6d7eb246d1306b7db8915a169cd8628a9e6b8299d1d1f8ab109801ef0a66" dependencies = [ "cfg-if", "libc", @@ -7437,9 +7439,9 @@ dependencies = [ [[package]] name = "wasmtime-internal-unwinder" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a83f7ebe911a6f1605ff0d3a678472ddb1fcc57c3e2f6bae5dd4d170b625b3ed" +checksum = "39472572ea3eb11b7cc7fe7bd6df0005cef87b580eb06a3378d103ac99d45bc3" dependencies = [ "cfg-if", "cranelift-codegen", @@ -7450,37 +7452,20 @@ dependencies = [ [[package]] name = "wasmtime-internal-versioned-export-macros" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75980644456dc003238766254b0e5f002704630237ccd0728747991fe2739d7" +checksum = "7bf2eff1c108b01566a7c8870de34821e7bda7d327e86e12a548c026e1e3677d" dependencies = [ "proc-macro2", "quote", "syn 2.0.119", ] -[[package]] -name = "wasmtime-internal-winch" -version = "45.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81af36995b4720b32e3d667541b548a27184a859d09a6ee745eaba095f5a6f6e" -dependencies = [ - "cranelift-codegen", - "gimli", - "log", - "object", - "target-lexicon", - "wasmparser 0.248.0", - "wasmtime-environ", - "wasmtime-internal-cranelift", - "winch-codegen", -] - [[package]] name = "wasmtime-internal-wit-bindgen" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ada06667b7948892703fcc9f0b9b337c2e78c334d74d4fa62e2f75f07fbb3659" +checksum = "d1d9d3ffd05d6e864adc35cff702f56307c454caec3b1d2d89dd6c843219b663" dependencies = [ "anyhow", "bitflags 2.13.1", @@ -7491,9 +7476,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd8e9db77f7b60f4c5f6f72847f55eb646ed7ed2f68e362559ee07dc543fb408" +checksum = "b88f243a21e600902fd03bd970df7e4671d760d724c9fad202166fd98c842548" dependencies = [ "async-trait", "bitflags 2.13.1", @@ -7503,7 +7488,6 @@ dependencies = [ "cap-std", "cap-time-ext", "cfg-if", - "fs-set-times", "futures", "io-extras", "io-lifetimes", @@ -7521,9 +7505,9 @@ dependencies = [ [[package]] name = "wasmtime-wasi-io" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3805f02be91374a4fd02c0f947daf07bbaa6fbebb5909de5305fa5b0e9568f30" +checksum = "0373c9dc92c9373aa9cee05963ea438bc318bf07bb284bede77a9ce24b39f682" dependencies = [ "async-trait", "bytes", @@ -7655,9 +7639,9 @@ dependencies = [ [[package]] name = "wiggle" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aca130e25a57e29bbb541441b6e261970a8469580bffebe904d96f0df67e41d" +checksum = "9914a7e8ac8cb37be90753103e2aa96959e9e5d2f549a2d081bcfeb8fa97e08d" dependencies = [ "bitflags 2.13.1", "thiserror 2.0.18", @@ -7669,9 +7653,9 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f0a45b47e893521cad81819f2e0db18a8b05086fd4bfb35369ed8830a8f0148" +checksum = "789b4c6d82c1ae0f5003eb6c5b9d3c9fb80112c4be50ad2690eb7347f0edd852" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -7683,9 +7667,9 @@ dependencies = [ [[package]] name = "wiggle-macro" -version = "45.0.3" +version = "46.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e297e0325cffa6d368386b6e672e9d6c6a7ad34bdb8a5f49319db4decef2a990" +checksum = "c5be72b12200c1270ee5cc9c6c30450e9ba5abdcb5fe8d09d08b516b7bd974d3" dependencies = [ "proc-macro2", "quote", @@ -7715,7 +7699,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.48.0", ] [[package]] @@ -7724,25 +7708,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "winch-codegen" -version = "45.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d73bc25d27222248f9bafc7e9945f61e74275360c3ea0d34008810d436140a53" -dependencies = [ - "cranelift-assembler-x64", - "cranelift-codegen", - "gimli", - "regalloc2", - "smallvec", - "target-lexicon", - "thiserror 2.0.18", - "wasmparser 0.248.0", - "wasmtime-environ", - "wasmtime-internal-core", - "wasmtime-internal-cranelift", -] - [[package]] name = "windows-core" version = "0.62.2" @@ -8015,9 +7980,9 @@ checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] name = "wit-parser" -version = "0.248.0" +version = "0.251.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "247ad505da2915a082fe13204c5ba8788425aea1de54f43b284818cf82637856" +checksum = "e960732e824fab95099971a09e638979347c94ca48568d3c854c945729196947" dependencies = [ "anyhow", "hashbrown 0.17.1", @@ -8029,7 +7994,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.248.0", + "wasmparser 0.251.0", ] [[package]] diff --git a/src/db/libsql/workspace/vector_search.rs b/src/db/libsql/workspace/vector_search.rs index 35d08996c..524b51d31 100644 --- a/src/db/libsql/workspace/vector_search.rs +++ b/src/db/libsql/workspace/vector_search.rs @@ -92,11 +92,11 @@ pub(super) fn deserialize_embedding(blob: &[u8]) -> Vec { return Vec::new(); } - blob.chunks_exact(4) - .map(|chunk| { - let bytes = [chunk[0], chunk[1], chunk[2], chunk[3]]; - f32::from_le_bytes(bytes) - }) + blob.as_chunks::<4>() + .0 + .iter() + .copied() + .map(f32::from_le_bytes) .collect() } diff --git a/tests/html_to_markdown.rs b/tests/html_to_markdown.rs index a123af205..8c03c9b17 100644 --- a/tests/html_to_markdown.rs +++ b/tests/html_to_markdown.rs @@ -6,6 +6,8 @@ use std::path::Path; +use proptest::prelude::*; + #[derive(Debug, Default, serde::Deserialize)] #[serde(default)] struct PageMetadata { @@ -17,25 +19,183 @@ struct PageMetadata { url: Option, } +#[derive(Clone, Copy)] +struct FenceDelimiter { + character: char, + length: usize, +} + +impl FenceDelimiter { + fn from_line(line: &str) -> Option { + let character = line.chars().next()?; + if !matches!(character, '`' | '~') { + return None; + } + + let length = line + .chars() + .take_while(|&marker| marker == character) + .count(); + (length >= 3).then_some(Self { character, length }) + } + + fn closes(self, candidate: Self) -> bool { + self.character == candidate.character && candidate.length >= self.length + } +} + +#[derive(Default)] +struct NormalizationState { + lines: Vec, + paragraph: String, + fence: Option, +} + +impl NormalizationState { + fn push_line(&mut self, line: &str) { + let structural_line = line.trim_start(); + if self.push_fence_line(line, structural_line) { + return; + } + if self.push_fenced_line(line) { + return; + } + if structural_line.is_empty() { + self.push_blank_line(); + return; + } + if is_markdown_block_line(structural_line) { + self.push_markdown_block_line(line); + return; + } + if self.extends_previous_list_item() { + self.push_list_continuation(structural_line.trim()); + return; + } + self.push_paragraph_text(trim_paragraph_line(structural_line)); + } + + fn push_fence_line(&mut self, line: &str, structural_line: &str) -> bool { + let Some(candidate) = FenceDelimiter::from_line(structural_line) else { + return false; + }; + if self.fence.is_some_and(|opener| !opener.closes(candidate)) { + return false; + } + + push_paragraph(&mut self.lines, &mut self.paragraph); + self.lines.push(line.to_string()); + self.fence = self.fence.map_or(Some(candidate), |_| None); + true + } + + fn push_fenced_line(&mut self, line: &str) -> bool { + if self.fence.is_some() { + self.lines.push(line.to_string()); + true + } else { + false + } + } + + fn extends_previous_list_item(&self) -> bool { + self.paragraph.is_empty() + && self + .lines + .last() + .is_some_and(|previous| is_markdown_list_item(previous)) + } + + fn push_blank_line(&mut self) { + push_paragraph(&mut self.lines, &mut self.paragraph); + if self + .lines + .last() + .is_some_and(|previous| !previous.is_empty()) + { + self.lines.push(String::new()); + } + } + + fn push_markdown_block_line(&mut self, line: &str) { + push_paragraph(&mut self.lines, &mut self.paragraph); + self.lines.push(line.to_string()); + } + + fn push_list_continuation(&mut self, line: &str) { + if let Some(previous) = self.lines.last_mut() { + previous.push(' '); + previous.push_str(line); + } + } + + fn push_paragraph_text(&mut self, line: &str) { + if needs_soft_wrap_separator(&self.paragraph, line) { + self.paragraph.push(' '); + } + self.paragraph.push_str(line); + if is_markdown_hard_break(line) { + push_paragraph(&mut self.lines, &mut self.paragraph); + } + } +} + fn normalize(s: &str) -> String { let s = s.replace("\r\n", "\n"); - let s = s.trim(); - - // Collapse runs of two or more blank lines down to a single blank line, - // but keep lone blank lines intact: paragraph boundaries (a single blank - // line) are meaningful and must not be erased by normalization. - let mut lines: Vec<&str> = Vec::new(); - let mut previous_was_blank = false; - for line in s.lines().map(|l| l.trim()) { - let is_blank = line.is_empty(); - if is_blank && previous_was_blank { - continue; - } - lines.push(line); - previous_was_blank = is_blank; + let s = s.trim_matches('\n'); + + let mut state = NormalizationState::default(); + for line in s.lines() { + state.push_line(line); + } + push_paragraph(&mut state.lines, &mut state.paragraph); + + state.lines.join("\n") +} + +fn needs_soft_wrap_separator(paragraph: &str, line: &str) -> bool { + !paragraph.is_empty() && !(paragraph.ends_with('"') && line.starts_with('[')) +} + +fn trim_paragraph_line(line: &str) -> &str { + if is_markdown_hard_break(line) { + line + } else { + line.trim_end() } +} + +fn is_markdown_hard_break(line: &str) -> bool { + line.ends_with(" ") + || line + .as_bytes() + .iter() + .rev() + .take_while(|&&character| character == b'\\') + .count() + % 2 + == 1 +} - lines.join("\n").trim_end().to_string() +fn push_paragraph(lines: &mut Vec, paragraph: &mut String) { + if !paragraph.is_empty() { + lines.push(std::mem::take(paragraph)); + } +} + +fn is_markdown_block_line(line: &str) -> bool { + matches!(line.chars().next(), Some('#' | '>' | '|')) + || is_markdown_list_item(line) + || ["---", "***"].iter().any(|prefix| line.starts_with(prefix)) +} + +fn is_markdown_list_item(line: &str) -> bool { + ["- ", "* ", "+ "] + .iter() + .any(|prefix| line.starts_with(prefix)) + || line.split_once(". ").is_some_and(|(prefix, _)| { + !prefix.is_empty() && prefix.chars().all(|character| character.is_ascii_digit()) + }) } /// Normalize typographic/smart punctuation to ASCII so tests match converter output @@ -45,6 +205,150 @@ fn normalize_smart_punctuation(s: &str) -> String { .replace(['\u{201C}', '\u{201D}'], "\"") } +#[test] +fn normalize_ignores_soft_wrapping_without_merging_markdown_blocks() { + let wrapped = concat!( + "A paragraph split\nacross lines.\n\n", + "A quote: \"\n[T]ext.\n\n", + "## Heading\n\n- first\n- second", + ); + let unwrapped = concat!( + "A paragraph split across lines.\n\n", + "A quote: \"[T]ext.\n\n", + "## Heading\n\n- first\n- second", + ); + + assert_eq!(normalize(wrapped), normalize(unwrapped)); +} + +#[test] +fn normalize_preserves_fenced_code_line_breaks() { + let input = "before\n\n```rust\nlet one = 1;\nlet two = 2;\n```\n\nafter"; + let expected = "before\n\n```rust\nlet one = 1;\nlet two = 2;\n```\n\nafter"; + + assert_eq!(normalize(input), expected); +} + +#[test] +fn normalize_preserves_indented_fenced_code() { + let input = concat!( + "before\n\n", + " ```rust \n", + "\tlet one = 1; \n", + " let two = 2;\n", + " ``` \n\n", + "after", + ); + + assert_eq!(normalize(input), input); +} + +#[test] +fn normalize_preserves_indented_fence_at_input_start() { + let input = " ```rust\n let value = 1;\n ```"; + + assert_eq!(normalize(input), input); +} + +#[test] +fn normalize_preserves_nested_list_indentation() { + let input = "- outer\n - nested\n - deeper\n- next"; + + assert_eq!(normalize(input), input); +} + +#[test] +fn normalize_preserves_markdown_hard_breaks() { + let input = "first line \nsecond line"; + + assert_eq!(normalize(input), input); +} + +#[test] +fn normalize_preserves_terminal_hard_break_spaces() { + let input = "final line "; + + assert_eq!(normalize(input), input); +} + +#[test] +fn normalize_preserves_unescaped_backslash_hard_breaks() { + let input = "first\\\nsecond"; + + assert_eq!(normalize(input), input); +} + +#[test] +fn normalize_keeps_mismatched_fence_markers_as_content() { + let input = "```\n~~~\n```"; + + assert_eq!(normalize(input), input); +} + +#[test] +fn normalize_keeps_shorter_fence_markers_as_content() { + let input = "````\n```\n````"; + + assert_eq!(normalize(input), input); +} + +#[test] +fn normalize_joins_wrapped_list_item_continuations() { + let input = "- first line\ncontinuation\n- second item"; + let expected = "- first line continuation\n- second item"; + + assert_eq!(normalize(input), expected); +} + +proptest! { + #![proptest_config(ProptestConfig::with_cases(32))] + + #[test] + fn normalize_matches_generated_soft_wraps(words in prop::collection::vec("[a-z]{1,12}", 1..8)) { + let input = words.join("\n"); + prop_assert_eq!(normalize(&input), words.join(" ")); + } + + #[test] + fn normalize_preserves_generated_fenced_blocks( + indentation in prop_oneof![Just(" "), Just(" "), Just("\t")], + lines in prop::collection::vec("[a-zA-Z0-9 \\t]{0,24}", 0..8), + ) { + let input = format!( + "before\n{indentation}```rust\n{}\n{indentation}```\nafter", + lines.join("\n"), + ); + prop_assert_eq!(normalize(&input), input); + } + + #[test] + fn normalize_joins_generated_list_continuations( + item in "[a-z]{1,12}", + continuation in "[a-z]{1,12}", + ) { + let input = format!("- {item}\n{continuation}"); + prop_assert_eq!(normalize(&input), format!("- {item} {continuation}")); + } + + #[test] + fn normalize_is_idempotent_for_generated_line_sequences( + lines in prop::collection::vec( + prop_oneof![ + Just(String::new()), + Just("```".to_string()), + Just("~~~".to_string()), + Just("- item".to_string()), + Just(" - nested".to_string()), + "[a-z]{1,12}", + ], + 0..16, + ), + ) { + let normalized = normalize(&lines.join("\n")); + prop_assert_eq!(normalize(&normalized), normalized); + } +} + #[test] fn convert_test_pages_to_markdown() { let test_pages = Path::new(env!("CARGO_MANIFEST_DIR")) diff --git a/typos.local.toml b/typos.local.toml index cb081d526..b241b80d8 100644 --- a/typos.local.toml +++ b/typos.local.toml @@ -63,7 +63,7 @@ ignore = [ '\b(?:manifest|self)\.artifacts\b', '\.artifacts\["wasm32-wasip2"\]', '\bartifacts_matrix\b', - "Reddit\\ \u2014\\ Best\\ way\\ to\\ organise\\ tests\\ in\\ Rust,\\ accessed\\ on\\ July\\ 15,\\ 2025,", + "organise\\ tests\\ in\\ Rust,\\ accessed\\ on\\ July\\ 15,\\ 2025,", "\\ \\ \\ \\ \\ \\ \\ \\ \"Analyze\\ an\\ image\\ using\\ a\\ vision\\-capable\\ AI\\ model\\.\\ Provide\\ a\\ workspace\\ path\\ to\\ the\\ image\\ and\\ an\\ optional\\ analysis\\ question\\.\"", "\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \"artifact_path\":\\ result\\.artifact_path\\.display\\(\\)\\.to_string\\(\\),", "\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \"description\":\\ \"Cell\\ background\\ color\\ as\\ hex\\ \\(e\\.g\\.,\\ '\\#FFFF00'\\)\\.\\ Used\\ by:\\ format_cells\"", diff --git a/typos.toml b/typos.toml index fb17a0552..db3410d41 100644 --- a/typos.toml +++ b/typos.toml @@ -94,7 +94,6 @@ extend-ignore-re = [ "(?:^|[;{]\\s*)color\\s*:", "(?s)```.*?```", "--color\\b", - "Reddit\\ —\\ Best\\ way\\ to\\ organise\\ tests\\ in\\ Rust,\\ accessed\\ on\\ July\\ 15,\\ 2025,", "\\ \\ \\ \\ \\ \\ \\ \\ \"Analyze\\ an\\ image\\ using\\ a\\ vision\\-capable\\ AI\\ model\\.\\ Provide\\ a\\ workspace\\ path\\ to\\ the\\ image\\ and\\ an\\ optional\\ analysis\\ question\\.\"", "\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \"artifact_path\":\\ result\\.artifact_path\\.display\\(\\)\\.to_string\\(\\),", "\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \"description\":\\ \"Cell\\ background\\ color\\ as\\ hex\\ \\(e\\.g\\.,\\ '\\#FFFF00'\\)\\.\\ Used\\ by:\\ format_cells\"", @@ -177,6 +176,7 @@ extend-ignore-re = [ "`[^`\\n]+`", "deepseek-r1-distill-qwen-32b", "fulfill\\ the\\ required\\ lifetime\"\\)\\ because\\ the\\ returned\\ future\\ also\\ captures\\ the", + "organise\\ tests\\ in\\ Rust,\\ accessed\\ on\\ July\\ 15,\\ 2025,", "pub\\ mod\\ artifacts;", "style=\"color:", "task and sub-task items with a GitHub Flavored",