{"version":"2.1.235","anchor":"symlink-resolution-rewritten-as-a-generator-with-sync-and-as","canonical_anchor":"symlink-resolution-rewritten-as-a-generator-with-sync-and-as","heading":"Symlink resolution rewritten as a generator with sync and async drivers","tier":"internal","area":"Internals","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.235\/e\/symlink-resolution-rewritten-as-a-generator-with-sync-and-as","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.235","markdown":"### Symlink resolution rewritten as a generator with sync and async drivers\n\nSymlink resolution rewritten as a generator shared by sync and async drivers, with a stricter unreadable-ancestry mode\n\nThe path-walking symlink resolver was rewritten as a generator that yields lstat\/readlink requests, driven by either a sync or an async executor. Both call styles now run the same traversal logic instead of maintaining separate implementations.\n\nError handling gains an explicit unverified-ancestry case: with `unreadableAncestry: \"unverified\"`, any error other than ENOENT or ENOTDIR is treated as unresolvable rather than being ignored.\n\n- Area: Internals\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 0\/5"}