rojo/crates/memofs
John 66930ed7a7 Fix Windows symlink watching (AI-assisted)
On Windows, StdBackend only watched the logical paths Rojo read, so edits made
through the physical target of a file symlink, directory symlink, or junction
outside the watched tree never reached `rojo serve` until it was restarted.

The Windows backend now tracks each watched logical path's resolved target,
registers native watches for targets outside existing watches, and maps target
lifecycle events back to their logical aliases through a new
VfsEvent::Rescan. Watches are refreshed when a link is removed, recreated, or
repointed, and shared targets stay watched until their last alias goes away.
The change processor handles Rescan and logs, rather than panics on, events
for paths that no longer exist. Non-Windows behavior is unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 09:47:09 -04:00
..
src Fix Windows symlink watching (AI-assisted) 2026-10-05 09:47:09 -04:00
Cargo.toml Fix windows verbatim paths (#1295) 2026-07-05 11:26:35 -07:00
CHANGELOG.md Fix Windows symlink watching (AI-assisted) 2026-10-05 09:47:09 -04: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.