{"version":"2.1.277","anchor":"new-atomic-plugin-version-directory-swap-with-byteentry-bud","canonical_anchor":"new-atomic-plugin-version-directory-swap-with-byteentry-bud","heading":"New atomic plugin-version directory swap with byte\/entry-budgeted tree comparison","tier":"internal","area":"Plugin Install","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.277\/e\/new-atomic-plugin-version-directory-swap-with-byteentry-bud","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.277","markdown":"### New atomic plugin-version directory swap with byte\/entry-budgeted tree comparison\n\nPlugin version installs now swap in atomically after comparing the new and old file trees under a size budget\n\n**What**\n\nInstalling a new version of a plugin now goes through a new subsystem that first compares the newly staged version's files against the currently installed copy, checking permissions, ownership, hardlinks, binary hook files, and `node_modules`, within a limited comparison budget. If the two are identical, the existing install is kept as-is. Otherwise, the old copy is atomically moved aside, the new version is published in its place, and the old copy is restored automatically if the swap fails partway through. On Windows, where directories can be temporarily locked, the swap retries with backoff, and it also guards against races when two installs happen at once.\n\n**Why**\n\nThis makes plugin version upgrades safer: an interrupted or failed update no longer risks leaving a plugin half-installed, and identical reinstalls are skipped rather than redone unnecessarily.\n\n- Area: Plugin Install\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 2\/5"}