From 201d0febe1e16d26ad4c73beab93520741e2c5cd Mon Sep 17 00:00:00 2001 From: Bradley Byrd Date: Mon, 29 Sep 2025 03:46:00 -0500 Subject: [PATCH 1/9] fix: Synchronize Cargo.lock with Cargo.toml version 25.9.3 - Cargo.lock was stuck at version 25.9.1 while Cargo.toml was at 25.9.3 - Ran cargo update to regenerate Cargo.lock with correct version - This resolves version synchronization issue between build files --- Cargo.lock | 793 ++++++++++++++++++++++++++++------------------------- 1 file changed, 422 insertions(+), 371 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1b366f27..1b1ead5e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 4 [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" @@ -32,12 +32,6 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -77,9 +71,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", @@ -119,15 +113,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", @@ -135,7 +129,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -152,9 +146,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.7.3" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "beef" @@ -170,9 +164,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.0" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" dependencies = [ "serde", ] @@ -188,9 +182,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byteorder" @@ -212,26 +206,26 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.19" +version = "1.2.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" +checksum = "e1354349954c6fc9cb0deab020f27f783cf0b604e8bb754dc4658ecf0d29c35f" dependencies = [ + "find-msvc-tools", "shlex", ] [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "chrono" -version = "0.4.40" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", @@ -350,9 +344,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" dependencies = [ "crc-catalog", ] @@ -435,9 +429,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" @@ -481,9 +475,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" dependencies = [ "powerfmt", ] @@ -578,12 +572,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.11" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.1", ] [[package]] @@ -609,9 +603,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" dependencies = [ "concurrent-queue", "parking", @@ -635,6 +629,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959" + [[package]] name = "flume" version = "0.11.1" @@ -675,9 +675,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -793,44 +793,44 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", ] [[package]] name = "getrandom" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi 0.14.7+wasi-0.2.4", ] [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "h2" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" dependencies = [ "bytes", "fnv", @@ -838,7 +838,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.9.0", + "indexmap 2.11.4", "slab", "tokio", "tokio-util", @@ -869,22 +869,28 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", "foldhash", ] +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + [[package]] name = "hashlink" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.5", ] [[package]] @@ -928,9 +934,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -1012,9 +1018,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "hyper" @@ -1033,7 +1039,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -1055,9 +1061,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1079,21 +1085,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -1102,31 +1109,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -1134,72 +1121,59 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -1208,9 +1182,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -1228,12 +1202,23 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.16.0", +] + +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "libc", ] [[package]] @@ -1248,7 +1233,7 @@ version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ - "hermit-abi 0.5.0", + "hermit-abi 0.5.2", "libc", "windows-sys 0.59.0", ] @@ -1270,9 +1255,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ "once_cell", "wasm-bindgen", @@ -1289,15 +1274,26 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.172" +version = "0.2.176" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" [[package]] name = "libm" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +dependencies = [ + "bitflags 2.9.4", + "libc", + "redox_syscall", +] [[package]] name = "libsqlite3-sys" @@ -1318,21 +1314,21 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -1340,24 +1336,24 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "logos" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab6f536c1af4c7cc81edf73da1f8029896e7e1e16a219ef09b184e76a296f3db" +checksum = "ff472f899b4ec2d99161c51f60ff7075eeb3097069a36050d8037a6325eb8154" dependencies = [ "logos-derive", ] [[package]] name = "logos-codegen" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "189bbfd0b61330abea797e5e9276408f2edbe4f822d7ad08685d67419aafb34e" +checksum = "192a3a2b90b0c05b27a0b2c43eecdb7c415e29243acc3f89cc8247a5b693045c" dependencies = [ "beef", "fnv", @@ -1371,9 +1367,9 @@ dependencies = [ [[package]] name = "logos-derive" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebfe8e1a19049ddbfccbd14ac834b215e11b85b90bab0c2dba7c7b92fb5d5cba" +checksum = "605d9697bcd5ef3a42d38efc51541aa3d6a4a25f7ab6d1ed0da5ac632a26b470" dependencies = [ "logos-codegen", ] @@ -1403,9 +1399,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "mime" @@ -1425,9 +1421,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] @@ -1440,13 +1436,13 @@ checksum = "c505b3e17ed6b70a7ed2e67fbb2c560ee327353556120d6e72f5232b6880d536" [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] @@ -1568,9 +1564,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.7" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] @@ -1589,11 +1585,11 @@ checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] name = "openssl" -version = "0.10.72" +version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "cfg-if", "foreign-types", "libc", @@ -1621,9 +1617,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.107" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", @@ -1645,9 +1641,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -1655,9 +1651,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", @@ -1677,9 +1673,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pin-project" @@ -1768,6 +1764,15 @@ dependencies = [ "plotters-backend", ] +[[package]] +name = "potential_utf" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -1785,27 +1790,27 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "radix_trie" @@ -1830,9 +1835,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", @@ -1864,7 +1869,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", ] [[package]] @@ -1873,14 +1878,14 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", ] [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -1888,9 +1893,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -1898,18 +1903,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.11" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" dependencies = [ "aho-corasick", "memchr", @@ -1919,9 +1924,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" dependencies = [ "aho-corasick", "memchr", @@ -1930,9 +1935,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "reqwest" @@ -1982,7 +1987,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", "untrusted", "windows-sys 0.52.0", @@ -2010,9 +2015,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -2035,7 +2040,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "errno", "libc", "linux-raw-sys 0.4.15", @@ -2044,22 +2049,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.5" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "errno", "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.1", ] [[package]] name = "rustls" -version = "0.23.26" +version = "0.23.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0" +checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" dependencies = [ "once_cell", "ring", @@ -2080,15 +2085,18 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] [[package]] name = "rustls-webpki" -version = "0.103.1" +version = "0.103.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" +checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" dependencies = [ "ring", "rustls-pki-types", @@ -2097,9 +2105,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rustyline" @@ -2107,7 +2115,7 @@ version = "12.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "994eca4bca05c87e86e15d90fc7a91d1be64b4482b38cb2d27474568fe7c9db9" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "cfg-if", "clipboard-win", "fd-lock", @@ -2141,11 +2149,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.1", ] [[package]] @@ -2166,7 +2174,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.4", "core-foundation", "core-foundation-sys", "libc", @@ -2175,9 +2183,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -2185,24 +2193,34 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -2211,14 +2229,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -2257,9 +2276,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -2274,9 +2293,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" dependencies = [ "libc", ] @@ -2304,32 +2323,39 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ "serde", ] [[package]] name = "socket2" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "spin" version = "0.9.8" @@ -2351,9 +2377,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c3a85280daca669cfd3bcb68a337882a8bc57ec882f72c5d13a430613a738e" +checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" dependencies = [ "sqlx-core", "sqlx-macros", @@ -2364,9 +2390,9 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f743f2a3cea30a58cd479013f75550e879009e3a02f616f18ca699335aa248c3" +checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" dependencies = [ "base64 0.22.1", "bytes", @@ -2378,9 +2404,9 @@ dependencies = [ "futures-intrusive", "futures-io", "futures-util", - "hashbrown 0.15.2", + "hashbrown 0.15.5", "hashlink", - "indexmap 2.9.0", + "indexmap 2.11.4", "log", "memchr", "once_cell", @@ -2390,19 +2416,19 @@ dependencies = [ "serde_json", "sha2", "smallvec", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", "url", - "webpki-roots", + "webpki-roots 0.26.11", ] [[package]] name = "sqlx-macros" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4200e0fde19834956d4252347c12a083bdcb237d7a1a1446bffd8768417dce" +checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" dependencies = [ "proc-macro2", "quote", @@ -2413,9 +2439,9 @@ dependencies = [ [[package]] name = "sqlx-macros-core" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "882ceaa29cade31beca7129b6beeb05737f44f82dbe2a9806ecea5a7093d00b7" +checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" dependencies = [ "dotenvy", "either", @@ -2432,20 +2458,19 @@ dependencies = [ "sqlx-postgres", "sqlx-sqlite", "syn", - "tempfile", "tokio", "url", ] [[package]] name = "sqlx-mysql" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0afdd3aa7a629683c2d750c2df343025545087081ab5942593a5288855b1b7a7" +checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.0", + "bitflags 2.9.4", "byteorder", "bytes", "crc", @@ -2474,20 +2499,20 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", "whoami", ] [[package]] name = "sqlx-postgres" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0bedbe1bbb5e2615ef347a5e9d8cd7680fb63e77d9dafc0f29be15e53f1ebe6" +checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.0", + "bitflags 2.9.4", "byteorder", "crc", "dotenvy", @@ -2511,16 +2536,16 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", "whoami", ] [[package]] name = "sqlx-sqlite" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c26083e9a520e8eb87a06b12347679b142dc2ea29e6e409f805644a7a979a5bc" +checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" dependencies = [ "atoi", "flume", @@ -2535,7 +2560,7 @@ dependencies = [ "serde", "serde_urlencoded", "sqlx-core", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", "url", ] @@ -2571,9 +2596,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.100" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -2588,9 +2613,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", @@ -2620,15 +2645,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.19.1" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.2", + "getrandom 0.3.3", "once_cell", - "rustix 1.0.5", - "windows-sys 0.59.0", + "rustix 1.1.2", + "windows-sys 0.61.1", ] [[package]] @@ -2657,11 +2682,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.17", ] [[package]] @@ -2677,9 +2702,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", @@ -2694,9 +2719,9 @@ checksum = "3bf63baf9f5039dadc247375c29eb13706706cfde997d0330d05aa63a77d8820" [[package]] name = "time" -version = "0.3.41" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -2711,15 +2736,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -2727,9 +2752,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -2747,9 +2772,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -2762,20 +2787,22 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.44.2" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "slab", + "socket2 0.6.0", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2837,9 +2864,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.14" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -2922,9 +2949,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", @@ -2933,9 +2960,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", ] @@ -2985,9 +3012,9 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-normalization" @@ -3024,9 +3051,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", @@ -3040,12 +3067,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -3120,17 +3141,26 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.2+wasi-0.2.4" +version = "0.14.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] @@ -3141,21 +3171,22 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" dependencies = [ "bumpalo", "log", @@ -3167,9 +3198,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", @@ -3180,9 +3211,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3190,9 +3221,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", @@ -3203,18 +3234,18 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", @@ -3222,16 +3253,25 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.8" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.2", +] + +[[package]] +name = "webpki-roots" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" dependencies = [ "rustls-pki-types", ] [[package]] name = "wfl" -version = "25.9.1" +version = "25.9.3" dependencies = [ "chrono", "codespan-reporting", @@ -3242,7 +3282,7 @@ dependencies = [ "log", "logos", "once_cell", - "rand 0.9.1", + "rand 0.9.2", "regex", "reqwest", "rustyline", @@ -3270,11 +3310,11 @@ dependencies = [ [[package]] name = "whoami" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" +checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" dependencies = [ - "redox_syscall", + "libredox", "wasite", ] @@ -3296,11 +3336,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.1", ] [[package]] @@ -3311,9 +3351,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.61.0" +version = "0.62.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +checksum = "6844ee5416b285084d3d3fffd743b925a6c9385455f64f6d4fa3031c4c2749a9" dependencies = [ "windows-implement", "windows-interface", @@ -3324,9 +3364,9 @@ dependencies = [ [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "edb307e42a74fb6de9bf3a02d9712678b22399c87e6fa869d6dfcd8c1b7754e0" dependencies = [ "proc-macro2", "quote", @@ -3335,9 +3375,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "c0abd1ddbc6964ac14db11c7213d6532ef34bd9aa042c2e5935f59d7908b46a5" dependencies = [ "proc-macro2", "quote", @@ -3346,24 +3386,24 @@ dependencies = [ [[package]] name = "windows-link" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" [[package]] name = "windows-result" -version = "0.3.2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" dependencies = [ "windows-link", ] [[package]] name = "windows-strings" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" dependencies = [ "windows-link", ] @@ -3395,6 +3435,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.61.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -3527,31 +3576,22 @@ dependencies = [ ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.0", -] - -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -3561,9 +3601,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", @@ -3573,18 +3613,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.24" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.24" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", @@ -3618,11 +3658,22 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ "yoke", "zerofrom", @@ -3631,9 +3682,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", From 6365206610d9bdb36457f77958187687a4dff6e0 Mon Sep 17 00:00:00 2001 From: Bradley Byrd Date: Mon, 29 Sep 2025 03:47:38 -0500 Subject: [PATCH 2/9] fix: Add Cargo.lock synchronization to version bump script - Added update_cargo_lock() function to run 'cargo update --package wfl' - Integrated Cargo.lock update into --update-all workflow - This prevents version drift between Cargo.toml and Cargo.lock - Includes proper error handling and subprocess management - Resolves root cause of version synchronization issues --- scripts/bump_version.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/scripts/bump_version.py b/scripts/bump_version.py index dd391ec2..61f46313 100755 --- a/scripts/bump_version.py +++ b/scripts/bump_version.py @@ -113,6 +113,44 @@ def update_cargo_toml(version): MODIFIED_FILES.append(CARGO_TOML) return True +def update_cargo_lock(): + """Update Cargo.lock to match Cargo.toml version by running cargo update.""" + import subprocess + + CARGO_LOCK = "Cargo.lock" + + if not os.path.exists(CARGO_TOML): + print(f"Warning: {CARGO_TOML} not found, skipping Cargo.lock update") + return False + + print("Updating Cargo.lock to match Cargo.toml version...") + + try: + # Run cargo update to regenerate Cargo.lock with new version + result = subprocess.run( + ["cargo", "update", "--package", "wfl"], + capture_output=True, + text=True, + check=True + ) + + if os.path.exists(CARGO_LOCK): + MODIFIED_FILES.append(CARGO_LOCK) + print("Successfully updated Cargo.lock") + return True + else: + print(f"Warning: {CARGO_LOCK} not found after cargo update") + return False + + except subprocess.CalledProcessError as e: + print(f"Error running cargo update: {e}") + print(f"stdout: {e.stdout}") + print(f"stderr: {e.stderr}") + return False + except FileNotFoundError: + print("Error: cargo command not found. Make sure Rust/Cargo is installed.") + return False + def update_wix_toml(version): """Update version in wix.toml.""" if not os.path.exists(WIX_TOML): @@ -214,6 +252,8 @@ def main(): # Update additional files based on arguments if args.update_all: update_cargo_toml(version) + # Update Cargo.lock after Cargo.toml to ensure version synchronization + update_cargo_lock() update_vscode_extensions(version) update_wix_toml(version) print(f"Updated all version references to {version}") From 8f9fe4738f46a88d2e54bac1c14688de66419f6f Mon Sep 17 00:00:00 2001 From: Bradley Byrd Date: Mon, 29 Sep 2025 03:51:41 -0500 Subject: [PATCH 3/9] Adds version sync documentation Provides a comprehensive guide on how version synchronization works across project files. Explains the causes of version drift, details automated and manual synchronization processes, and outlines prevention strategies. Includes troubleshooting tips and best practices to ensure consistency and prevent build or deployment issues. --- Docs/development/version-synchronization.md | 158 ++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 Docs/development/version-synchronization.md diff --git a/Docs/development/version-synchronization.md b/Docs/development/version-synchronization.md new file mode 100644 index 00000000..3dade611 --- /dev/null +++ b/Docs/development/version-synchronization.md @@ -0,0 +1,158 @@ +# Version Synchronization Guide + +This document explains how version synchronization works in the WFL project and how to prevent version drift between build files. + +## Overview + +The WFL project uses multiple files to track version information: +- `Cargo.toml` - Main Rust package version +- `Cargo.lock` - Lock file with exact dependency versions (including WFL itself) +- `src/version.rs` - Runtime version constant +- `.build_meta.json` - Build metadata with version tracking +- Various package.json files for VS Code extensions +- `wix.toml` - Windows installer version + +## The Problem + +When versions are updated manually or through automated processes, it's possible for these files to become out of sync. The most common issue is when `Cargo.toml` is updated but `Cargo.lock` is not regenerated, leading to: + +- Build inconsistencies +- Confusion about the actual project version +- Potential deployment issues +- CI/CD pipeline failures + +## Automated Version Management + +### Version Bump Script + +The project uses `scripts/bump_version.py` to handle version updates across all files: + +```bash +# Update all version files +python scripts/bump_version.py --update-all + +# Skip git commit (for testing) +python scripts/bump_version.py --update-all --skip-git + +# Only update wix.toml +python scripts/bump_version.py --update-wix-only +``` + +### CI/CD Integration + +The `.github/workflows/versioning.yml` workflow automatically: +1. Runs the version bump script with `--update-all` +2. Commits changes with `[skip ci]` to prevent infinite loops +3. Tags the new version +4. Pushes changes to the repository + +## Manual Version Synchronization + +If you need to manually fix version synchronization: + +### Step 1: Update Cargo.lock +```bash +# Update Cargo.lock to match Cargo.toml +cargo update --package wfl + +# Or update all dependencies +cargo update +``` + +### Step 2: Verify Synchronization +```bash +# Check that versions match +grep 'version = ' Cargo.toml +grep 'name = "wfl"' -A1 Cargo.lock + +# Build to ensure everything works +cargo build +``` + +### Step 3: Commit Changes +```bash +git add Cargo.lock +git commit -m "fix: Synchronize Cargo.lock with Cargo.toml version" +``` + +## Prevention Strategies + +### 1. Always Use the Version Bump Script +Never manually edit version numbers. Always use: +```bash +python scripts/bump_version.py --update-all +``` + +### 2. Pre-commit Hooks (Recommended) +Consider adding a pre-commit hook to verify version synchronization: + +```bash +#!/bin/bash +# .git/hooks/pre-commit +CARGO_VERSION=$(grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/') +LOCK_VERSION=$(grep -A1 'name = "wfl"' Cargo.lock | grep version | sed 's/version = "\(.*\)"/\1/') + +if [ "$CARGO_VERSION" != "$LOCK_VERSION" ]; then + echo "Error: Version mismatch between Cargo.toml ($CARGO_VERSION) and Cargo.lock ($LOCK_VERSION)" + echo "Run: cargo update --package wfl" + exit 1 +fi +``` + +### 3. CI/CD Validation +The CI pipeline should validate version synchronization: + +```yaml +- name: Validate version synchronization + run: | + CARGO_VERSION=$(grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/') + LOCK_VERSION=$(grep -A1 'name = "wfl"' Cargo.lock | grep version | sed 's/version = "\(.*\)"/\1/') + if [ "$CARGO_VERSION" != "$LOCK_VERSION" ]; then + echo "Version mismatch detected!" + exit 1 + fi +``` + +## Troubleshooting + +### Common Issues + +1. **Cargo.lock shows old version after Cargo.toml update** + - Solution: Run `cargo update --package wfl` + +2. **Version bump script fails** + - Check that all required files exist + - Ensure cargo is in PATH + - Verify git configuration + +3. **CI/CD creates version drift** + - Ensure the version bump script includes Cargo.lock updates + - Check that all modified files are committed together + +### Verification Commands + +```bash +# Check current versions across files +echo "Cargo.toml: $(grep '^version = ' Cargo.toml | head -1)" +echo "Cargo.lock: $(grep -A1 'name = "wfl"' Cargo.lock | grep version)" +echo "Runtime: $(cargo run -- --version 2>/dev/null | grep version)" + +# Test version bump script +python scripts/bump_version.py --skip-bump --update-all --skip-git --verbose +``` + +## Best Practices + +1. **Never edit versions manually** - Always use the automated script +2. **Test locally first** - Run the script with `--skip-git` to test changes +3. **Commit atomically** - All version-related files should be committed together +4. **Validate after changes** - Always run `cargo build` after version updates +5. **Monitor CI/CD** - Watch for version-related failures in automated workflows + +## Related Files + +- `scripts/bump_version.py` - Main version management script +- `.github/workflows/versioning.yml` - Automated version bump workflow +- `Cargo.toml` - Package configuration +- `Cargo.lock` - Dependency lock file +- `src/version.rs` - Runtime version constant From 6d7bf44195966a8080878a3821594c059b94ebe6 Mon Sep 17 00:00:00 2001 From: Bradley Byrd Date: Mon, 29 Sep 2025 03:57:35 -0500 Subject: [PATCH 4/9] fix: Synchronize package.metadata.bundle version and fix regex pattern - Updated package.metadata.bundle version from 25.8.15 to 25.9.3 to match main package version - Fixed regex pattern in bump_version.py that was failing to match bundle version field - Changed from [^\[]* to .*? with DOTALL flag for proper multiline matching - This resolves the remaining version synchronization discrepancy in Cargo.toml - All version fields in Cargo.toml now consistently show 25.9.3 --- Cargo.toml | 2 +- scripts/bump_version.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e4c5c1be..12078eac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ authors = ["Logbie LLC "] name = "WFL" identifier = "com.logbie.wfl" icon = ["icons/wfl.png"] -version = "25.8.15" +version = "25.9.3" copyright = "© 2025 Logbie LLC" category = "Developer Tool" short_description = "WebFirst Language Compiler and Runtime" diff --git a/scripts/bump_version.py b/scripts/bump_version.py index 61f46313..56c7ead9 100755 --- a/scripts/bump_version.py +++ b/scripts/bump_version.py @@ -103,8 +103,8 @@ def update_cargo_toml(version): new_content = re.sub(r'(version = )"(\d+\.\d+\.\d+)"', f'\\1"{semver_version}"', content, count=1) # Update package.metadata.bundle version - new_content = re.sub(r'(\[package\.metadata\.bundle\][^\[]*version = )"([^"]*)"', - f'\\1"{semver_version}"', new_content) + new_content = re.sub(r'(\[package\.metadata\.bundle\].*?version = )"([^"]*)"', + f'\\1"{semver_version}"', new_content, flags=re.DOTALL) # Write updated content with open(CARGO_TOML, "w") as f: From 77a00a71317bf0bab9ed428d48a2cf9c92ecb51b Mon Sep 17 00:00:00 2001 From: Bradley Byrd Date: Mon, 29 Sep 2025 03:58:49 -0500 Subject: [PATCH 5/9] docs: Update version synchronization guide with bundle metadata info - Document the dual version fields in Cargo.toml (package + bundle metadata) - Add verification commands for checking both version fields - Include troubleshooting for bundle version synchronization issues - Update common issues section with regex pattern problems --- Docs/development/version-synchronization.md | 29 ++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/Docs/development/version-synchronization.md b/Docs/development/version-synchronization.md index 3dade611..d38276ce 100644 --- a/Docs/development/version-synchronization.md +++ b/Docs/development/version-synchronization.md @@ -5,13 +5,17 @@ This document explains how version synchronization works in the WFL project and ## Overview The WFL project uses multiple files to track version information: -- `Cargo.toml` - Main Rust package version +- `Cargo.toml` - Main Rust package version AND `package.metadata.bundle` version - `Cargo.lock` - Lock file with exact dependency versions (including WFL itself) - `src/version.rs` - Runtime version constant - `.build_meta.json` - Build metadata with version tracking - Various package.json files for VS Code extensions - `wix.toml` - Windows installer version +**Important**: The `Cargo.toml` file contains TWO version fields that must be synchronized: +1. `[package] version = "X.Y.Z"` - Main package version +2. `[package.metadata.bundle] version = "X.Y.Z"` - Bundle metadata version + ## The Problem When versions are updated manually or through automated processes, it's possible for these files to become out of sync. The most common issue is when `Cargo.toml` is updated but `Cargo.lock` is not regenerated, leading to: @@ -61,8 +65,14 @@ cargo update ### Step 2: Verify Synchronization ```bash -# Check that versions match -grep 'version = ' Cargo.toml +# Check that all versions match +echo "Main package version:" +grep '^version = ' Cargo.toml | head -1 + +echo "Bundle metadata version:" +grep -A10 '\[package\.metadata\.bundle\]' Cargo.toml | grep 'version = ' + +echo "Cargo.lock version:" grep 'name = "wfl"' -A1 Cargo.lock # Build to ensure everything works @@ -120,20 +130,27 @@ The CI pipeline should validate version synchronization: 1. **Cargo.lock shows old version after Cargo.toml update** - Solution: Run `cargo update --package wfl` -2. **Version bump script fails** +2. **package.metadata.bundle version doesn't match main package version** + - This indicates a regex pattern issue in the version bump script + - Solution: Run the version bump script to synchronize both fields + +3. **Version bump script fails** - Check that all required files exist - Ensure cargo is in PATH - Verify git configuration + - Check regex patterns for multiline matching issues -3. **CI/CD creates version drift** +4. **CI/CD creates version drift** - Ensure the version bump script includes Cargo.lock updates - Check that all modified files are committed together + - Verify regex patterns handle all version fields correctly ### Verification Commands ```bash # Check current versions across files -echo "Cargo.toml: $(grep '^version = ' Cargo.toml | head -1)" +echo "Main package: $(grep '^version = ' Cargo.toml | head -1)" +echo "Bundle metadata: $(grep -A10 '\[package\.metadata\.bundle\]' Cargo.toml | grep 'version = ')" echo "Cargo.lock: $(grep -A1 'name = "wfl"' Cargo.lock | grep version)" echo "Runtime: $(cargo run -- --version 2>/dev/null | grep version)" From 175abe7f232e34dd72ac44a1d225114f8591f4c2 Mon Sep 17 00:00:00 2001 From: Bradley Byrd Date: Mon, 29 Sep 2025 04:18:17 -0500 Subject: [PATCH 6/9] fix: Make update_cargo_lock() fail CI on cargo errors and add robust version validation - Replace silent failures with sys.exit(1) to ensure CI failure on cargo errors - Add comprehensive version extraction and validation from both Cargo.toml and Cargo.lock - Use cross-platform Python regex instead of grep/sed for Windows compatibility - Extract WFL-specific version from Cargo.lock (not first dependency version) - Verify exact version match between Cargo.toml and Cargo.lock after cargo update - Add detailed error messages for debugging version synchronization issues - Ensures CI will fail if cargo update doesn't properly synchronize versions --- scripts/bump_version.py | 77 +++++++++++++++++++++++++++++++++-------- 1 file changed, 63 insertions(+), 14 deletions(-) diff --git a/scripts/bump_version.py b/scripts/bump_version.py index 56c7ead9..45a16609 100755 --- a/scripts/bump_version.py +++ b/scripts/bump_version.py @@ -114,42 +114,91 @@ def update_cargo_toml(version): return True def update_cargo_lock(): - """Update Cargo.lock to match Cargo.toml version by running cargo update.""" + """Update Cargo.lock to match Cargo.toml version by running cargo update. + + Raises SystemExit on any error to ensure CI failure. + """ import subprocess CARGO_LOCK = "Cargo.lock" if not os.path.exists(CARGO_TOML): - print(f"Warning: {CARGO_TOML} not found, skipping Cargo.lock update") - return False + print(f"Error: {CARGO_TOML} not found, cannot update Cargo.lock") + sys.exit(1) print("Updating Cargo.lock to match Cargo.toml version...") + # Extract expected version from Cargo.toml + try: + with open(CARGO_TOML, "r") as f: + cargo_toml_content = f.read() + + # Extract main package version + import re + version_match = re.search(r'^version = "([^"]+)"', cargo_toml_content, re.MULTILINE) + if not version_match: + print("Error: Could not extract version from Cargo.toml") + sys.exit(1) + + expected_version = version_match.group(1) + print(f"Expected version: {expected_version}") + + except Exception as e: + print(f"Error reading Cargo.toml: {e}") + sys.exit(1) + + # Run cargo update try: - # Run cargo update to regenerate Cargo.lock with new version result = subprocess.run( ["cargo", "update", "--package", "wfl"], capture_output=True, text=True, check=True ) - - if os.path.exists(CARGO_LOCK): - MODIFIED_FILES.append(CARGO_LOCK) - print("Successfully updated Cargo.lock") - return True - else: - print(f"Warning: {CARGO_LOCK} not found after cargo update") - return False + print("Cargo update completed successfully") except subprocess.CalledProcessError as e: print(f"Error running cargo update: {e}") print(f"stdout: {e.stdout}") print(f"stderr: {e.stderr}") - return False + sys.exit(1) except FileNotFoundError: print("Error: cargo command not found. Make sure Rust/Cargo is installed.") - return False + sys.exit(1) + + # Verify Cargo.lock exists and extract version + if not os.path.exists(CARGO_LOCK): + print(f"Error: {CARGO_LOCK} not found after cargo update") + sys.exit(1) + + try: + # Extract version from Cargo.lock using cross-platform Python approach + with open(CARGO_LOCK, "r") as f: + cargo_lock_content = f.read() + + # Find WFL package version specifically (equivalent to grep -A1 'name = "wfl"') + wfl_package_match = re.search(r'\[\[package\]\]\s*name = "wfl"\s*version = "([^"]+)"', cargo_lock_content, re.DOTALL) + if not wfl_package_match: + print("Error: Could not find WFL package version in Cargo.lock") + sys.exit(1) + + actual_version = wfl_package_match.group(1) + print(f"Cargo.lock version: {actual_version}") + + # Verify versions match + if expected_version != actual_version: + print(f"Error: Version mismatch!") + print(f" Cargo.toml version: {expected_version}") + print(f" Cargo.lock version: {actual_version}") + print("Cargo.lock was not properly synchronized") + sys.exit(1) + + print(f"✓ Version synchronization verified: {expected_version}") + MODIFIED_FILES.append(CARGO_LOCK) + + except Exception as e: + print(f"Error validating Cargo.lock: {e}") + sys.exit(1) def update_wix_toml(version): """Update version in wix.toml.""" From f8a1c6be1e5bb136be343debe3e7ad8e9f909014 Mon Sep 17 00:00:00 2001 From: Bradley Byrd Date: Mon, 29 Sep 2025 04:19:07 -0500 Subject: [PATCH 7/9] docs: Update version sync guide with CI failure behavior - Document that version bump script now fails CI on cargo errors - Add troubleshooting for script exit code 1 scenarios - Update best practices to expect CI failures on synchronization issues - Clarify that sys.exit(1) is intended behavior for error conditions --- Docs/development/version-synchronization.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Docs/development/version-synchronization.md b/Docs/development/version-synchronization.md index d38276ce..7be2a68e 100644 --- a/Docs/development/version-synchronization.md +++ b/Docs/development/version-synchronization.md @@ -46,9 +46,12 @@ python scripts/bump_version.py --update-wix-only The `.github/workflows/versioning.yml` workflow automatically: 1. Runs the version bump script with `--update-all` -2. Commits changes with `[skip ci]` to prevent infinite loops -3. Tags the new version -4. Pushes changes to the repository +2. **Fails the build if cargo errors occur or versions don't synchronize** +3. Commits changes with `[skip ci]` to prevent infinite loops +4. Tags the new version +5. Pushes changes to the repository + +**Critical**: The version bump script now uses `sys.exit(1)` on any cargo errors or version mismatches, ensuring CI failure rather than silent continuation. ## Manual Version Synchronization @@ -145,6 +148,11 @@ The CI pipeline should validate version synchronization: - Check that all modified files are committed together - Verify regex patterns handle all version fields correctly +5. **Script exits with code 1 in CI** + - This is the intended behavior for cargo errors or version mismatches + - Check CI logs for specific error messages + - Common causes: cargo not found, network issues, or corrupted Cargo.lock + ### Verification Commands ```bash @@ -165,6 +173,7 @@ python scripts/bump_version.py --skip-bump --update-all --skip-git --verbose 3. **Commit atomically** - All version-related files should be committed together 4. **Validate after changes** - Always run `cargo build` after version updates 5. **Monitor CI/CD** - Watch for version-related failures in automated workflows +6. **Expect CI failures on errors** - The script is designed to fail fast on any synchronization issues ## Related Files From 4068e508c973886da2c4a8a1a9428c8bc5c6842d Mon Sep 17 00:00:00 2001 From: Bradley Byrd Date: Mon, 29 Sep 2025 04:57:47 -0500 Subject: [PATCH 8/9] Refines Cargo.toml version extraction Ensures the package version is extracted specifically from the `[package]` section of `Cargo.toml`. This prevents potential misidentification if a `version` field exists elsewhere in the file, making the version bumping process more robust. Removes an unused variable assignment in the `cargo update` subprocess call for cleaner code. --- scripts/bump_version.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/scripts/bump_version.py b/scripts/bump_version.py index 45a16609..2f958cbc 100755 --- a/scripts/bump_version.py +++ b/scripts/bump_version.py @@ -133,9 +133,19 @@ def update_cargo_lock(): with open(CARGO_TOML, "r") as f: cargo_toml_content = f.read() - # Extract main package version + # Extract main package version from [package] section only import re - version_match = re.search(r'^version = "([^"]+)"', cargo_toml_content, re.MULTILINE) + + # Find the [package] section + package_match = re.search(r'\[package\](.*?)(?:\n\[|$)', cargo_toml_content, re.DOTALL) + if not package_match: + print("Error: Could not find [package] section in Cargo.toml") + sys.exit(1) + + package_section = package_match.group(1) + + # Extract version from within the package section + version_match = re.search(r'^version = "([^"]+)"', package_section, re.MULTILINE) if not version_match: print("Error: Could not extract version from Cargo.toml") sys.exit(1) @@ -149,7 +159,7 @@ def update_cargo_lock(): # Run cargo update try: - result = subprocess.run( + subprocess.run( ["cargo", "update", "--package", "wfl"], capture_output=True, text=True, From af4dc3a76dc7fac08c3a0253079b9ad950ef7a20 Mon Sep 17 00:00:00 2001 From: Bradley Byrd Date: Mon, 29 Sep 2025 05:39:33 -0500 Subject: [PATCH 9/9] Ensures file data is flushed to disk for durability Addresses potential data loss and race conditions in file I/O operations. Explicitly flushes file buffers to the operating system after write and append operations, making data immediately available for subsequent reads. Attempts to sync file data to disk before closing to enhance data durability, gracefully handling platforms where this is not supported. Adds dedicated WFL and Rust integration tests to validate correct flushing behavior across various scenarios, including rapid write-close cycles and append operations. --- TestPrograms/file_flush_test.wfl | 101 +++++++++++++++++++++++ src/interpreter/mod.rs | 40 +++++++++- tests/file_io_concurrent_test.rs | 132 ++++++++++++++++++++++++++++++- 3 files changed, 265 insertions(+), 8 deletions(-) create mode 100644 TestPrograms/file_flush_test.wfl diff --git a/TestPrograms/file_flush_test.wfl b/TestPrograms/file_flush_test.wfl new file mode 100644 index 00000000..f4c9ceb0 --- /dev/null +++ b/TestPrograms/file_flush_test.wfl @@ -0,0 +1,101 @@ +// Test program to verify file flushing fix +// This program tests the race condition fix for concurrent file I/O + +display "=== File Flush Race Condition Test ===" +display "" + +// Test 1: Basic write-close-read cycle +display "Test 1: Basic write-close-read cycle" +open file at "flush_test_1.txt" for writing as test_file1 +wait for write content "Test content that must be flushed!" into test_file1 +close file test_file1 + +// Immediately read the file - this should work if flushing is proper +open file at "flush_test_1.txt" for reading as read_file1 +wait for store content1 as read content from read_file1 +close file read_file1 + +display "Content read: " with content1 +check if content1 is "Test content that must be flushed!": + display "✓ Test 1 PASSED - Content was properly flushed" +otherwise: + display "✗ Test 1 FAILED - Content was not flushed properly" +end check +display "" + +// Test 2: Multiple rapid write-close cycles +display "Test 2: Multiple rapid write-close cycles" +store success_count as 0 + +// Rapid cycle 1 +open file at "flush_test_2a.txt" for writing as file2a +wait for write content "Rapid content A" into file2a +close file file2a + +open file at "flush_test_2a.txt" for reading as read2a +wait for store content2a as read content from read2a +close file read2a + +check if content2a is "Rapid content A": + change success_count to success_count + 1 +end check + +// Rapid cycle 2 +open file at "flush_test_2b.txt" for writing as file2b +wait for write content "Rapid content B" into file2b +close file file2b + +open file at "flush_test_2b.txt" for reading as read2b +wait for store content2b as read content from read2b +close file read2b + +check if content2b is "Rapid content B": + change success_count to success_count + 1 +end check + +// Rapid cycle 3 +open file at "flush_test_2c.txt" for writing as file2c +wait for write content "Rapid content C" into file2c +close file file2c + +open file at "flush_test_2c.txt" for reading as read2c +wait for store content2c as read content from read2c +close file read2c + +check if content2c is "Rapid content C": + change success_count to success_count + 1 +end check + +display "Successful rapid cycles: " with success_count with "/3" +check if success_count is 3: + display "✓ Test 2 PASSED - All rapid cycles worked correctly" +otherwise: + display "✗ Test 2 FAILED - Some rapid cycles failed" +end check +display "" + +// Test 3: Append operations with flushing +display "Test 3: Append operations with flushing" +open file at "flush_test_3.txt" for writing as file3 +wait for write content "Line 1" into file3 +close file file3 + +open file at "flush_test_3.txt" for append as append_file3 +wait for append content "\nLine 2" into append_file3 +close file append_file3 + +open file at "flush_test_3.txt" for reading as read_file3 +wait for store content3 as read content from read_file3 +close file read_file3 + +display "Appended content: " with content3 +check if content3 contains "Line 1" and content3 contains "Line 2": + display "✓ Test 3 PASSED - Append operations were properly flushed" +otherwise: + display "✗ Test 3 FAILED - Append operations were not flushed properly" +end check +display "" + +display "=== File Flush Test Complete ===" +display "All tests verify that file operations are properly flushed to disk" +display "before files are closed, preventing race conditions." diff --git a/src/interpreter/mod.rs b/src/interpreter/mod.rs index 6535ce11..c4c67639 100644 --- a/src/interpreter/mod.rs +++ b/src/interpreter/mod.rs @@ -383,7 +383,17 @@ impl IoClient { Ok(_) => match file_clone.set_len(0).await { Ok(_) => { match AsyncWriteExt::write_all(&mut file_clone, content.as_bytes()).await { - Ok(_) => Ok(()), + Ok(_) => { + // Flush the data to ensure it's written to disk + match file_clone.flush().await { + Ok(_) => { + // Try to sync to disk for durability, but don't fail if it's not supported + let _ = file_clone.sync_all().await; + Ok(()) + } + Err(e) => Err(format!("Failed to flush file: {e}")), + } + } Err(e) => Err(format!("Failed to write to file: {e}")), } } @@ -403,8 +413,20 @@ impl IoClient { return Ok(()); } - file_handles.remove(handle_id); - Ok(()) + // Get the file handle before removing it + if let Some((_, mut file)) = file_handles.remove(handle_id) { + // Flush the file before closing to ensure all data is written to disk + match file.flush().await { + Ok(_) => { + // Try to sync to disk for durability, but don't fail if it's not supported + let _ = file.sync_all().await; + Ok(()) + } + Err(e) => Err(format!("Failed to flush file during close: {e}")), + } + } else { + Ok(()) + } } #[allow(dead_code)] @@ -418,7 +440,17 @@ impl IoClient { match AsyncSeekExt::seek(file, std::io::SeekFrom::End(0)).await { Ok(_) => match AsyncWriteExt::write_all(file, content.as_bytes()).await { - Ok(_) => Ok(()), + Ok(_) => { + // Flush the data to ensure it's written to disk + match file.flush().await { + Ok(_) => { + // Try to sync to disk for durability, but don't fail if it's not supported + let _ = file.sync_all().await; + Ok(()) + } + Err(e) => Err(format!("Failed to flush appended data: {e}")), + } + } Err(e) => Err(format!("Failed to append to file: {e}")), }, Err(e) => Err(format!("Failed to seek to end of file: {e}")), diff --git a/tests/file_io_concurrent_test.rs b/tests/file_io_concurrent_test.rs index 3d543027..83054f6b 100644 --- a/tests/file_io_concurrent_test.rs +++ b/tests/file_io_concurrent_test.rs @@ -255,19 +255,19 @@ mod file_io_concurrent_tests { open file at "large_concurrent_2.txt" for writing as file2 open file at "large_concurrent_3.txt" for writing as file3 open file at "large_concurrent_4.txt" for writing as file4 - + wait for write content "Content for file 0" into file0 wait for write content "Content for file 1" into file1 wait for write content "Content for file 2" into file2 wait for write content "Content for file 3" into file3 wait for write content "Content for file 4" into file4 - + close file file0 close file file1 close file file2 close file file3 close file file4 - + // Verify files were created store total_files as 0 check if file exists at "large_concurrent_0.txt": @@ -285,7 +285,7 @@ mod file_io_concurrent_tests { check if file exists at "large_concurrent_4.txt": change total_files to total_files + 1 end check - + display "Created " with total_files with " files concurrently" "#; @@ -316,4 +316,128 @@ mod file_io_concurrent_tests { cleanup_test_files(&test_file_refs); } + + #[tokio::test] + async fn test_file_flush_race_condition() { + let test_files = ["flush_race_test.txt"]; + cleanup_test_files(&test_files); + + // This test specifically targets the race condition where file content + // might not be flushed to disk before the file is closed + let code = r#" + // Write content and immediately close - this should trigger the race condition + open file at "flush_race_test.txt" for writing as test_file + wait for write content "This content must be flushed to disk before close!" into test_file + close file test_file + + // Immediately try to read the file - this should work if flushing is proper + open file at "flush_race_test.txt" for reading as read_file + wait for store file_content as read content from read_file + close file read_file + + display "Read content: " with file_content + "#; + + let result = execute_wfl_code(code).await; + assert!( + result.is_ok(), + "File flush race condition test failed: {:?}", + result.err() + ); + + // Verify the file content was properly written and flushed + let content = + fs::read_to_string("flush_race_test.txt").expect("Could not read flush test file"); + assert_eq!( + content.trim(), + "This content must be flushed to disk before close!", + "File content was not properly flushed to disk - race condition detected!" + ); + + cleanup_test_files(&test_files); + } + + #[tokio::test] + async fn test_multiple_rapid_write_close_cycles() { + let test_files = [ + "rapid_cycle_1.txt", + "rapid_cycle_2.txt", + "rapid_cycle_3.txt", + ]; + cleanup_test_files(&test_files); + + // This test performs multiple rapid write-close cycles to stress test flushing + let code = r#" + // Rapid write-close cycles that should all succeed + open file at "rapid_cycle_1.txt" for writing as file1 + wait for write content "Rapid content 1" into file1 + close file file1 + + open file at "rapid_cycle_2.txt" for writing as file2 + wait for write content "Rapid content 2" into file2 + close file file2 + + open file at "rapid_cycle_3.txt" for writing as file3 + wait for write content "Rapid content 3" into file3 + close file file3 + + // Verify all files exist and have correct content + store success_count as 0 + + open file at "rapid_cycle_1.txt" for reading as read1 + wait for store content1 as read content from read1 + close file read1 + check if content1 is "Rapid content 1": + change success_count to success_count + 1 + end check + + open file at "rapid_cycle_2.txt" for reading as read2 + wait for store content2 as read content from read2 + close file read2 + check if content2 is "Rapid content 2": + change success_count to success_count + 1 + end check + + open file at "rapid_cycle_3.txt" for reading as read3 + wait for store content3 as read content from read3 + close file read3 + check if content3 is "Rapid content 3": + change success_count to success_count + 1 + end check + + display "Successful rapid cycles: " with success_count + "#; + + let result = execute_wfl_code(code).await; + assert!( + result.is_ok(), + "Multiple rapid write-close cycles failed: {:?}", + result.err() + ); + + // Verify all files have correct content + for (file, expected) in [ + ("rapid_cycle_1.txt", "Rapid content 1"), + ("rapid_cycle_2.txt", "Rapid content 2"), + ("rapid_cycle_3.txt", "Rapid content 3"), + ] + .iter() + { + assert!( + Path::new(file).exists(), + "Rapid cycle file {} was not created", + file + ); + let content = fs::read_to_string(file) + .unwrap_or_else(|_| panic!("Could not read rapid cycle file {}", file)); + assert_eq!( + content.trim(), + *expected, + "Rapid cycle file {} content mismatch - possible flush race condition", + file + ); + } + + cleanup_test_files(&test_files); + } }