Darling supports use of multiple prefixes (virtual root directories), very much like Wine. Unlike Wine, Darling makes use of Linux's support for various user-controlled namespaces. This makes Darling's prefixes behave a lot more like Docker/LXC containers.
The implementation fully resides in the
darling binary, which performs several tasks:
/usr/local/libexec/darling) with the prefix's path. This means the prefix gets updated prefix contents for free (unlike in Wine), but the user can still manipulate prefix contents.
pivot_root()to change the root directory. The original root is accessible via
/Volumes/SystemRoot(from inside the container).
More namespaces (e.g. UID or network) will be considered in future.
/usr/local/libexec/darling), you must stop running containers (via
darling shutdown) so that the changes take effect.