OptMem/WINDOWS.md
CPRoptmem 3411344db6 fix: native Windows support (msvcrt lock instead of fcntl)
fcntl does not exist on Windows, so memo crashed on import. Guard the
import and use msvcrt advisory locking with spin/backoff; open the lock
file in append mode so parallel sessions don't break each other's locks.

Verified: 8 parallel processes x 200 notes = 1600/1600 records on
native Windows (no WSL).
2026-07-27 08:31:11 +01:00

22 lines
818 B
Markdown

# Windows support
OptMem now runs on native Windows (no WSL required).
## What changed
- `import fcntl` is guarded — falls back to `None` on platforms without it.
- `locked()` uses `msvcrt` advisory locking with spin/backoff when `fcntl`
is unavailable, so parallel sessions (the documented multi-process case)
queue instead of raising `Resource deadlock avoided`.
- The `.lock` file is opened in append mode (`"a"`) rather than `"w"`, which
would truncate and break locks held by other processes on Windows.
## Test (Windows native, no WSL)
```bat
python memo init
set MEMORY_DIR=C:\path\to\mem
python memo note "first memory"
python memo note "second memory"
python memo wake
```
Concurrency: 8 parallel `memo note` processes writing 1600 memories
resulted in 1600/1600 records persisted (lock verified).