mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-10-23 05:51:39 +00:00
Root cause: notify-debouncer-full with macos_kqueue caused 25K+ directory watch registrations to take >170s on large projects. Changes: - Replace notify-debouncer-full with notify-debouncer-mini to avoid FSEvents Create+Remove event cancellation and heavy per-watch overhead - Remove macos_kqueue feature; use FSEvents (matches upstream Rojo) - Fix VFS read guard: watch_enabled && watch_recursive -> watch_enabled so recording mechanism works when watch_recursive is false - Build RefPathIndex from patch_apply data instead of redundant 4.8s WalkDir + 5,854 file re-reads (populate_from_dir) - Use ServeSession::new_oneshot() for sourcemap without --watch - Restore simple synchronous watch setup (implicit during reads) Serve: >180s (never completed) -> ~8s to Listening Sourcemap: 14.3s -> ~9s All 489 tests passing. |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| LICENSE.txt | ||
| README.md | ||
| README.tpl | ||
memofs
Implementation of a virtual filesystem with a configurable backend and file watching.
memofs is currently an unstable minimum viable library. Its primary consumer is Rojo, a build system for Roblox.
Current Features
- API similar to
std::fs - Configurable backends
StdBackend, which usesstd::fsand thenotifycrateNoopBackend, which always throws errorsInMemoryFs, a simple in-memory filesystem useful for testing
Future Features
- Hash-based hierarchical memoization keys (hence the name)
- Configurable caching (write-through, write-around, write-back)
License
memofs is available under the terms of the MIT license. See LICENSE.txt or https://opensource.org/licenses/MIT for more details.