Problem
Pluto currently requires lowercase module paths because module paths are also used directly in filesystem cache paths. The mangled ABI can distinguish case, and common repository/module names may contain uppercase characters, but simply relaxing validation would make cache entries collide on case-insensitive filesystems such as the default macOS and Windows filesystems.
This is separate from PR #78 script-root mangling fix: filesystem-derived script and relative-path names can preserve their existing case, while changing the module-path policy requires a deliberate cache-key design.
Desired properties
- Preserve the module path exact spelling in language identity, diagnostics, and mangled symbols.
- Give differently cased paths distinct, deterministic cache keys on case-insensitive filesystems.
- Keep lowercase cache paths stable where practical.
- Use a reversible escape, for example Go uppercase
X to !x, or an equivalently collision-resistant encoding.
- Define how literal escape characters, Unicode, and Unicode normalization are handled.
- Version or migrate existing cache entries if the on-disk scheme changes.
Regression coverage
- Differently cased module paths produce distinct cache directories and ABI symbols.
- Cache encoding round-trips exactly.
- Lowercase paths remain unchanged where intended.
- Invalid or ambiguous escape spellings are rejected.
- Behavior is consistent on case-sensitive and case-insensitive filesystems.
Problem
Pluto currently requires lowercase module paths because module paths are also used directly in filesystem cache paths. The mangled ABI can distinguish case, and common repository/module names may contain uppercase characters, but simply relaxing validation would make cache entries collide on case-insensitive filesystems such as the default macOS and Windows filesystems.
This is separate from PR #78 script-root mangling fix: filesystem-derived script and relative-path names can preserve their existing case, while changing the module-path policy requires a deliberate cache-key design.
Desired properties
Xto!x, or an equivalently collision-resistant encoding.Regression coverage