Repository navigation
emulation: support initial Darwin directory removal and exclusive rename - #581
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Darwin workloads could not remove declared initial directories or request an exclusive regular-file rename. Add explicit initial-directory removal while preserving held objects, and support
renameatx_np(RENAME_EXCL)without guessing filesystem behavior.removable: true/DarwinFileOptions::RemovableDirectoriesrequires an explicit non-root directory and a mutable immediate parent. The caller declares an ordinary non-mount object with one namespace identity; known flags, aliases and contradictory devices reject admission. Removed names cannot resurrect from immutable inputs. FD/dup/CWD references retain the original object and parent chain; replacement objects cannot inherit old observations. Implicit child directories survive file unlink, and fixed initial storage/entry costs remain reserved.RENAME_EXCL=0x4, optionally combined withRENAME_NOFOLLOW_ANY, rejects a distinct existing file/directory with EEXIST before mutation/mount checks. Earlier path errors retain priority. An absent target reuses the existing bounded rename transaction. Same-object exclusive rename remains explicitly unsupported because its native result depends on unconfigured filesystem case sensitivity. SECLUDE, SWAP and directory-source rename remain unsupported.C++/C/CLI/Python share the contracts and original native comparison programs. All 11 language guides document the boundaries and current required test inventory.
Validation on Apple Silicon Release at the final source:
Preserved limitations and failures:
Evidence is retained under
build-hvf-arm64/initial-directory-validation-summary.jsonandexclusive-rename-validation-summary.json, including failed runs and diagnostic artifacts. Full GitHub CI and physical iOS remain separate; Intel HVF Actions remain suspended. Cross-parent/directory rename, links, general permissions/mount topology, Mach/dyld/framework support and the broader macOS/iOS environment remain unfinished.