Skip to content

[Feature Idea] Clang virtual filesystem support for case-sensitive, symlink-free operation #164

@humbletim

Description

@humbletim

Hi! I've been using xwin as part of edge-compiling a legacy C++ project and ran into challenges with symlinks on a case-sensitive filesystem.

I explored an alternative approach that avoids symlinks entirely -- having xwin generate a vfsoverlay.json file for use with Clang's -ivfsoverlay option.

The Feature (from my prototype):

This change adds a new command-line flag, --vfsoverlay, to the xwin splat command. When this flag is used, xwin will not create any filesystem symlinks. Instead, it will generate a vfsoverlay.json file in the root of the splat output directory. This file contains all the file path mappings that would have been created as symlinks.

This feature is critical for using xwin in non-linux environments where creating symlinks is not possible or desired, such as on standard Windows installations on a case-sensitive filesystem (without administrator rights or Developer Mode enabled).

Proof-of-Concept:

I have a working prototype of this feature in my dev-fork:

I've verified that it solves my immediate need. The patch history includes the initial implementation (largely AI-assisted by google-labs-jules[bot], as seen in the commits) as well as several manual fix-ups and refinements from my own testing.

Next Steps (No Obligation):

I'm opening this as an issue for discussion rather than a direct PR. I'm not yet an avid Rust developer or in a position to champion this through to a production-ready feature.

However, I wanted to share this R&D in case the idea is useful to you or others. If it aligns with the project's goals, feel free to use any part of the proof-of-concept as a starting point.

Thanks for maintaining xwin!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions