Update dependencies and enhance path ignore functionality

- Updated various dependencies in Cargo.lock and Cargo.toml, including aws-lc-rs, aws-lc-sys, tokio, and uuid to their latest versions.
- Refactored the memofs crate to simplify the notify dependency configuration.
- Introduced path ignore rules in ChangeProcessor and ServeSession to filter VFS events based on glob patterns, improving event handling efficiency.
This commit is contained in:
Joe 2026-03-06 23:01:20 -06:00
parent 093e62af8e
commit 6fcb1b9cf2
5 changed files with 122 additions and 74 deletions

130
Cargo.lock generated
View file

@ -273,9 +273,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]] [[package]]
name = "aws-lc-rs" name = "aws-lc-rs"
version = "1.16.0" version = "1.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9a7b350e3bb1767102698302bc37256cbd48422809984b98d292c40e2579aa9" checksum = "94bffc006df10ac2a68c83692d734a465f8ee6c5b384d8545a636f81d858f4bf"
dependencies = [ dependencies = [
"aws-lc-sys", "aws-lc-sys",
"zeroize", "zeroize",
@ -283,9 +283,9 @@ dependencies = [
[[package]] [[package]]
name = "aws-lc-sys" name = "aws-lc-sys"
version = "0.37.1" version = "0.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b092fe214090261288111db7a2b2c2118e5a7f30dc2569f1732c4069a6840549" checksum = "4321e568ed89bb5a7d291a7f37997c2c0df89809d7b6d12062c81ddb54aa782e"
dependencies = [ dependencies = [
"cc", "cc",
"cmake", "cmake",
@ -582,7 +582,7 @@ checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5"
dependencies = [ dependencies = [
"heck", "heck",
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -649,9 +649,9 @@ dependencies = [
[[package]] [[package]]
name = "const_fn" name = "const_fn"
version = "0.4.11" version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f8a2ca5ac02d09563609681103aada9e1777d54fc57a5acd7a41404f9c93b6e" checksum = "413d67b29ef1021b4d60f4aa1e925ca031751e213832b4b1d588fae623c05c60"
[[package]] [[package]]
name = "constant_time_eq" name = "constant_time_eq"
@ -921,7 +921,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -1166,7 +1166,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -1257,20 +1257,20 @@ dependencies = [
"cfg-if 1.0.4", "cfg-if 1.0.4",
"js-sys", "js-sys",
"libc", "libc",
"r-efi", "r-efi 5.3.0",
"wasip2", "wasip2",
"wasm-bindgen", "wasm-bindgen",
] ]
[[package]] [[package]]
name = "getrandom" name = "getrandom"
version = "0.4.1" version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
dependencies = [ dependencies = [
"cfg-if 1.0.4", "cfg-if 1.0.4",
"libc", "libc",
"r-efi", "r-efi 6.0.0",
"rand_core 0.10.0", "rand_core 0.10.0",
"wasip2", "wasip2",
"wasip3", "wasip3",
@ -1609,9 +1609,9 @@ dependencies = [
[[package]] [[package]]
name = "inotify" name = "inotify"
version = "0.11.0" version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199"
dependencies = [ dependencies = [
"bitflags 2.11.0", "bitflags 2.11.0",
"inotify-sys", "inotify-sys",
@ -1644,9 +1644,9 @@ dependencies = [
[[package]] [[package]]
name = "ipnet" name = "ipnet"
version = "2.11.0" version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
[[package]] [[package]]
name = "iri-string" name = "iri-string"
@ -1681,9 +1681,9 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
[[package]] [[package]]
name = "jiff" name = "jiff"
version = "0.2.22" version = "0.2.23"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "819b44bc7c87d9117eb522f14d46e918add69ff12713c475946b0a29363ed1c2" checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359"
dependencies = [ dependencies = [
"jiff-static", "jiff-static",
"log", "log",
@ -1694,12 +1694,12 @@ dependencies = [
[[package]] [[package]]
name = "jiff-static" name = "jiff-static"
version = "0.2.22" version = "0.2.23"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "470252db18ecc35fd766c0891b1e3ec6cbbcd62507e85276c01bf75d8e94d4a1" checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -2176,7 +2176,7 @@ dependencies = [
"pest", "pest",
"pest_meta", "pest_meta",
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -2360,7 +2360,7 @@ version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b"
dependencies = [ dependencies = [
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -2440,9 +2440,9 @@ dependencies = [
[[package]] [[package]]
name = "quote" name = "quote"
version = "1.0.44" version = "1.0.45"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
] ]
@ -2453,6 +2453,12 @@ version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
name = "r-efi"
version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
[[package]] [[package]]
name = "rand" name = "rand"
version = "0.9.2" version = "0.9.2"
@ -2470,7 +2476,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8" checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8"
dependencies = [ dependencies = [
"chacha20", "chacha20",
"getrandom 0.4.1", "getrandom 0.4.2",
"rand_core 0.10.0", "rand_core 0.10.0",
] ]
@ -2692,7 +2698,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -3021,7 +3027,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f" checksum = "7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"serde_derive_internals", "serde_derive_internals",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -3118,7 +3124,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -3129,7 +3135,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -3255,12 +3261,12 @@ dependencies = [
[[package]] [[package]]
name = "socket2" name = "socket2"
version = "0.6.2" version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
dependencies = [ dependencies = [
"libc", "libc",
"windows-sys 0.60.2", "windows-sys 0.61.2",
] ]
[[package]] [[package]]
@ -3299,7 +3305,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"serde", "serde",
"serde_derive", "serde_derive",
"syn 1.0.109", "syn 1.0.109",
@ -3313,7 +3319,7 @@ checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11"
dependencies = [ dependencies = [
"base-x", "base-x",
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"serde", "serde",
"serde_derive", "serde_derive",
"serde_json", "serde_json",
@ -3356,7 +3362,7 @@ checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7"
dependencies = [ dependencies = [
"heck", "heck",
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -3373,7 +3379,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"unicode-ident", "unicode-ident",
] ]
@ -3384,7 +3390,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"unicode-ident", "unicode-ident",
] ]
@ -3404,7 +3410,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -3415,7 +3421,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0"
dependencies = [ dependencies = [
"fastrand", "fastrand",
"getrandom 0.4.1", "getrandom 0.4.2",
"once_cell", "once_cell",
"rustix", "rustix",
"windows-sys 0.61.2", "windows-sys 0.61.2",
@ -3464,7 +3470,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -3475,7 +3481,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -3552,7 +3558,7 @@ checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f"
dependencies = [ dependencies = [
"proc-macro-hack", "proc-macro-hack",
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"standback", "standback",
"syn 1.0.109", "syn 1.0.109",
] ]
@ -3594,9 +3600,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.49.0" version = "1.50.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d"
dependencies = [ dependencies = [
"bytes", "bytes",
"libc", "libc",
@ -3609,12 +3615,12 @@ dependencies = [
[[package]] [[package]]
name = "tokio-macros" name = "tokio-macros"
version = "2.6.0" version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -3772,7 +3778,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -3971,11 +3977,11 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]] [[package]]
name = "uuid" name = "uuid"
version = "1.21.0" version = "1.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37"
dependencies = [ dependencies = [
"getrandom 0.4.1", "getrandom 0.4.2",
"js-sys", "js-sys",
"serde_core", "serde_core",
"wasm-bindgen", "wasm-bindgen",
@ -4107,7 +4113,7 @@ version = "0.2.114"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6"
dependencies = [ dependencies = [
"quote 1.0.44", "quote 1.0.45",
"wasm-bindgen-macro-support", "wasm-bindgen-macro-support",
] ]
@ -4119,7 +4125,7 @@ checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3"
dependencies = [ dependencies = [
"bumpalo", "bumpalo",
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@ -4475,9 +4481,9 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
[[package]] [[package]]
name = "winnow" name = "winnow"
version = "0.7.14" version = "0.7.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
[[package]] [[package]]
name = "winreg" name = "winreg"
@ -4552,7 +4558,7 @@ dependencies = [
"anyhow", "anyhow",
"prettyplease", "prettyplease",
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
"wit-bindgen-core", "wit-bindgen-core",
"wit-bindgen-rust", "wit-bindgen-rust",
@ -4651,7 +4657,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
"synstructure", "synstructure",
] ]
@ -4672,7 +4678,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953" checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]
@ -4692,7 +4698,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
"synstructure", "synstructure",
] ]
@ -4732,7 +4738,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
dependencies = [ dependencies = [
"proc-macro2 1.0.106", "proc-macro2 1.0.106",
"quote 1.0.44", "quote 1.0.45",
"syn 2.0.117", "syn 2.0.117",
] ]

View file

@ -99,11 +99,11 @@ toml = "0.9"
termcolor = "1.4.1" termcolor = "1.4.1"
time = "0.3" time = "0.3"
thiserror = "2" thiserror = "2"
tokio = { version = "1.49.0", features = ["rt", "rt-multi-thread", "macros", "sync"] } tokio = { version = "1.50.0", features = ["rt", "rt-multi-thread", "macros", "sync"] }
tracing = "0.1" tracing = "0.1"
tracing-appender = "0.2" tracing-appender = "0.2"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt", "time"] } tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt", "time"] }
uuid = { version = "1.21.0", features = ["v4", "serde"] } uuid = { version = "1.22.0", features = ["v4", "serde"] }
clap = { version = "4", features = ["derive", "env"] } clap = { version = "4", features = ["derive", "env"] }
clap_complete = "4" clap_complete = "4"
profiling = "1.0.17" profiling = "1.0.17"

View file

@ -21,11 +21,8 @@ log = "0.4"
notify-debouncer-full = "0.7" notify-debouncer-full = "0.7"
serde = { version = "1.0.228", features = ["derive"] } serde = { version = "1.0.228", features = ["derive"] }
[target.'cfg(target_os = "macos")'.dependencies] [dependencies.notify]
notify = { version = "8.2", features = ["macos_kqueue"] } version = "8.2"
[target.'cfg(not(target_os = "macos"))'.dependencies]
notify = "8.2"
[dev-dependencies] [dev-dependencies]
tempfile = "3.26.0" tempfile = "3.26.0"

View file

@ -14,7 +14,8 @@ use std::{
use crate::{ use crate::{
message_queue::MessageQueue, message_queue::MessageQueue,
snapshot::{ snapshot::{
apply_patch_set, compute_patch_set, AppliedPatchSet, InstigatingSource, PatchSet, RojoTree, apply_patch_set, compute_patch_set, AppliedPatchSet, InstigatingSource, PatchSet,
PathIgnoreRule, RojoTree,
}, },
snapshot_middleware::{is_script_relevant_path, snapshot_from_vfs, snapshot_project_node}, snapshot_middleware::{is_script_relevant_path, snapshot_from_vfs, snapshot_project_node},
syncback::{ syncback::{
@ -93,6 +94,7 @@ impl ChangeProcessor {
critical_error_receiver: Option<Receiver<memofs::WatcherCriticalError>>, critical_error_receiver: Option<Receiver<memofs::WatcherCriticalError>>,
git_repo_root: Option<PathBuf>, git_repo_root: Option<PathBuf>,
sync_scripts_only: bool, sync_scripts_only: bool,
path_ignore_rules: Vec<PathIgnoreRule>,
) -> Self { ) -> Self {
let (shutdown_sender, shutdown_receiver) = crossbeam_channel::bounded(1); let (shutdown_sender, shutdown_receiver) = crossbeam_channel::bounded(1);
let vfs_receiver = vfs.event_receiver(); let vfs_receiver = vfs.event_receiver();
@ -111,6 +113,7 @@ impl ChangeProcessor {
ref_path_index, ref_path_index,
git_repo_root, git_repo_root,
sync_scripts_only, sync_scripts_only,
path_ignore_rules,
}; };
let job_thread = jod_thread::Builder::new() let job_thread = jod_thread::Builder::new()
@ -273,6 +276,9 @@ struct JobThreadContext {
/// When true, only script-related VFS events are processed. /// When true, only script-related VFS events are processed.
sync_scripts_only: bool, sync_scripts_only: bool,
/// Rules from `globIgnorePaths` -- VFS events matching these are discarded.
path_ignore_rules: Vec<PathIgnoreRule>,
} }
impl JobThreadContext { impl JobThreadContext {
@ -728,6 +734,16 @@ impl JobThreadContext {
} }
} }
if let Some(ref path) = event_path {
if !self.path_ignore_rules.iter().all(|rule| rule.passes(path)) {
log::trace!(
"VFS event SKIPPED (globIgnorePaths): {}",
self.display_path(path)
);
return Vec::new();
}
}
if self.sync_scripts_only { if self.sync_scripts_only {
if let Some(ref path) = event_path { if let Some(ref path) = event_path {
if path.is_file() { if path.is_file() {

View file

@ -17,7 +17,7 @@ use crate::{
session_id::SessionId, session_id::SessionId,
snapshot::{ snapshot::{
apply_patch_set, compute_patch_set, AppliedPatchSet, InstanceContext, InstanceSnapshot, apply_patch_set, compute_patch_set, AppliedPatchSet, InstanceContext, InstanceSnapshot,
PatchSet, RojoTree, PatchSet, PathIgnoreRule, RojoTree,
}, },
snapshot_middleware::{is_script_relevant_path, snapshot_from_vfs, INIT_FILE_PRIORITY}, snapshot_middleware::{is_script_relevant_path, snapshot_from_vfs, INIT_FILE_PRIORITY},
}; };
@ -138,6 +138,15 @@ fn prefetch_project_files(project: &Project, sync_scripts_only: bool) -> io::Res
let folder = project.folder_location(); let folder = project.folder_location();
let ignore_rules: Vec<PathIgnoreRule> = project
.glob_ignore_paths
.iter()
.map(|glob| PathIgnoreRule {
glob: glob.clone(),
base_path: folder.to_path_buf(),
})
.collect();
let mut roots: Vec<std::path::PathBuf> = Vec::new(); let mut roots: Vec<std::path::PathBuf> = Vec::new();
collect_path_roots(&project.tree, folder, &mut roots); collect_path_roots(&project.tree, folder, &mut roots);
@ -160,6 +169,10 @@ fn prefetch_project_files(project: &Project, sync_scripts_only: bool) -> io::Res
}); });
} }
let passes_ignore = |entry: &walkdir::DirEntry| -> bool {
ignore_rules.iter().all(|rule| rule.passes(entry.path()))
};
let walk_start = Instant::now(); let walk_start = Instant::now();
let mut entries: Vec<walkdir::DirEntry> = Vec::new(); let mut entries: Vec<walkdir::DirEntry> = Vec::new();
@ -181,6 +194,8 @@ fn prefetch_project_files(project: &Project, sync_scripts_only: bool) -> io::Res
// Recursive walk of each $path root. Canonicalize to resolve ".." // Recursive walk of each $path root. Canonicalize to resolve ".."
// before the equality/starts_with checks. // before the equality/starts_with checks.
// filter_entry skips entire subtrees when a directory matches
// globIgnorePaths, preventing descent into ignored directories.
let canonical_folder = std::fs::canonicalize(folder).unwrap_or_else(|_| folder.to_path_buf()); let canonical_folder = std::fs::canonicalize(folder).unwrap_or_else(|_| folder.to_path_buf());
let mut walked_roots: Vec<PathBuf> = Vec::new(); let mut walked_roots: Vec<PathBuf> = Vec::new();
for root in &roots { for root in &roots {
@ -192,18 +207,22 @@ fn prefetch_project_files(project: &Project, sync_scripts_only: bool) -> io::Res
walked_roots.push(root.clone()); walked_roots.push(root.clone());
} }
if canonical_root == canonical_folder { if canonical_root == canonical_folder {
// $path points to the project folder itself -- shallow walk
// already covers depth 0-1, fill in the subtree.
for e in WalkDir::new(root) for e in WalkDir::new(root)
.follow_links(true) .follow_links(true)
.min_depth(2) .min_depth(2)
.into_iter() .into_iter()
.filter_entry(&passes_ignore)
.flatten() .flatten()
{ {
entries.push(e); entries.push(e);
} }
} else { } else {
for e in WalkDir::new(root).follow_links(true).into_iter().flatten() { for e in WalkDir::new(root)
.follow_links(true)
.into_iter()
.filter_entry(&passes_ignore)
.flatten()
{
entries.push(e); entries.push(e);
} }
} }
@ -435,6 +454,15 @@ impl ServeSession {
.as_deref() .as_deref()
.and_then(crate::git::git_head_commit); .and_then(crate::git::git_head_commit);
let path_ignore_rules: Vec<PathIgnoreRule> = root_project
.glob_ignore_paths
.iter()
.map(|glob| PathIgnoreRule {
glob: glob.clone(),
base_path: root_project.folder_location().to_path_buf(),
})
.collect();
log::trace!("Starting ChangeProcessor"); log::trace!("Starting ChangeProcessor");
let change_processor = ChangeProcessor::start( let change_processor = ChangeProcessor::start(
Arc::clone(&tree), Arc::clone(&tree),
@ -448,6 +476,7 @@ impl ServeSession {
critical_error_receiver, critical_error_receiver,
git_repo_root.clone(), git_repo_root.clone(),
root_project.sync_scripts_only.unwrap_or(false), root_project.sync_scripts_only.unwrap_or(false),
path_ignore_rules,
); );
Ok(Self { Ok(Self {