rojo/crates/memofs
Joe a727881e6f fix: platform-specific watcher for macOS FSEvents + Windows RDCW
macOS: raw notify with custom 50ms debounce thread. FSEvents provides
complete event kinds (Create/Remove/Modify) without needing a file
cache, avoiding the debouncer-full's Create+Remove cancellation bug.

Windows/Linux: notify-debouncer-full with RecommendedCache. RDCW needs
the file cache to detect cross-directory moves and renames. The cache
also handles RDCW's limited event granularity.

Both platforms share the same convert_event logic for mapping notify
EventKinds to VfsEvents.

All 489 tests passing locally (macOS).
2026-03-12 18:48:43 -05:00
..
src fix: platform-specific watcher for macOS FSEvents + Windows RDCW 2026-03-12 18:48:43 -05:00
Cargo.toml fix: platform-specific watcher for macOS FSEvents + Windows RDCW 2026-03-12 18:48:43 -05:00
CHANGELOG.md Implement VFS Path normalization for improved cross-platform tree synchronization (#1201) 2026-01-19 15:04:59 -08:00
LICENSE.txt Move memofs and rojo-insta-ext into crates folder 2022-05-26 04:23:44 -04:00
README.md Move memofs and rojo-insta-ext into crates folder 2022-05-26 04:23:44 -04:00
README.tpl Move memofs and rojo-insta-ext into crates folder 2022-05-26 04:23:44 -04:00

memofs

Crates.io

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 uses std::fs and the notify crate
    • NoopBackend, which always throws errors
    • InMemoryFs, 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.