<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div style="font-family:Arial;">This new proposal is great, I'm all in.</div>
<div><br></div>
<div><br></div>
<div>On Wed, Apr 26, 2017, at 17:25, Rick Ballard via swift-evolution wrote:<br></div>
<blockquote type="cite"><div>Hi all,<br></div>
<div><br></div>
<div style="font-family:Arial;">We have a proposal we'd like feedback on to revise how Swift Package Manager dependency resolution, updating, and pinning works. These changes weren't planned in the roadmap we published a few months ago, but it's become clear since then that we have some holes in our dependency resolution behavior that need fixing. We've also come to the conclusion that our original design for pinning was overcomplicated and should be revised.<br></div>
<div><br></div>
<div>Please give us your feedback; we're hoping to submit this proposal for official review next week.<br></div>
<div><br></div>
<div>The current draft of the proposal can be found at&nbsp;<a href="https://github.com/rballard/swift-evolution/commit/e5e7ce76f29c855aa7162ed3733b09e701d662d6">https://github.com/rballard/swift-evolution/commit/e5e7ce76f29c855aa7162ed3733b09e701d662d6</a>. I'm also including it below.<br></div>
<div><br></div>
<div>Thanks,<br></div>
<div><br></div>
<div><span style="white-space:pre;"></span>- Rick<br></div>
<div><br></div>
<div><h1 style="margin-right:0px;margin-bottom:16px;margin-left:0px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234, 236, 239);color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';background-color:rgb(255, 255, 255);margin-top:0px !important;">Package Manager Revised Dependency Resolution<br></h1><ul style="padding-left:2em;margin-top:0px;margin-bottom:16px;color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';font-size:16px;background-color:rgb(255, 255, 255);"><li style="">Proposal:&nbsp;<a href="https://github.com/rballard/swift-evolution/blob/e5e7ce76f29c855aa7162ed3733b09e701d662d6/proposals/NNNN-package-manager-revised-dependency-resolution.md" style="background-color:transparent;-webkit-text-decoration-skip:objects;color:rgb(3, 102, 214);text-decoration:none;">SE-NNNN</a><br></li><li style="margin-top:0.25em;">Author:&nbsp;<a href="https://github.com/rballard" style="background-color:transparent;-webkit-text-decoration-skip:objects;color:rgb(3, 102, 214);text-decoration:none;">Rick Ballard</a><br></li><li style="margin-top:0.25em;">Review Manager: TBD<br></li><li style="margin-top:0.25em;">Status:&nbsp;<span style="font-weight:600;">Draft in progress</span><br></li><li style="margin-top:0.25em;">Bug: TBD<br></li></ul><h2 style="margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234, 236, 239);color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';background-color:rgb(255, 255, 255);"><a href="https://github.com/rballard/swift-evolution/blob/e5e7ce76f29c855aa7162ed3733b09e701d662d6/proposals/NNNN-package-manager-revised-dependency-resolution.md#introduction" style="background-color:transparent;-webkit-text-decoration-skip:objects;color:rgb(3, 102, 214);text-decoration:none;float:left;padding-right:4px;line-height:1;"></a>Introduction<br></h2><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">This proposal makes the package manager's dependency resolution behavior clearer and more intuitive. It removes the pinning commands (<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package pin</code>&nbsp;&amp;&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package unpin</code>), replaces the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package fetch</code>&nbsp;command with a new&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package resolve</code>&nbsp;command with improved behavior, and replaces the optional&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.pins</code>&nbsp;file with a&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.resolved</code>&nbsp;file which is always created during dependency resolution.</span></span></span></span><br></p><h2 style="margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234, 236, 239);color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';background-color:rgb(255, 255, 255);"><a href="https://github.com/rballard/swift-evolution/blob/e5e7ce76f29c855aa7162ed3733b09e701d662d6/proposals/NNNN-package-manager-revised-dependency-resolution.md#motivation" style="background-color:transparent;-webkit-text-decoration-skip:objects;color:rgb(3, 102, 214);text-decoration:none;float:left;padding-right:4px;line-height:1;"></a>Motivation<br></h2><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">When&nbsp;<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0145-package-manager-version-pinning.md" style="background-color:transparent;-webkit-text-decoration-skip:objects;color:rgb(3, 102, 214);text-decoration:none;">SE-0145 Package Manager Version Pinning</a>&nbsp;was proposed, it was observed that the proposal was overly complex. In particular, it introduced a configuration option allowing some packages to have autopinning on (the default), while others turned it off; this option affected the behavior of other commands (like&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package update</code>, which has a&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">--repin</code>flag that does nothing for packages that use autopinning). This configuration option has proved to be unnecessarily confusing.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">In the existing design, when autopinning is on (which is true by default) the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package pin</code>&nbsp;command can't be used to pin packages at specific revisions while allowing other packages to be updated. In particular, if you edit your package's version requirements in the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.swift</code>&nbsp;manifest, there is no way to resolve your package graph to conform to those new requirements without automatically repinning all packages to the latest allowable versions. Thus, specific, intentional pins can not be preserved without turning off autopinning.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">The problems here stem from trying to use one mechanism (pinning) to solve two different use cases: wanting to record and share resolved dependency versions, vs wanting to keep a badly-behaved package at a specific version. We think the package manager could be simplified by splitting these two use cases out into different mechanisms ("resolved versions" vs "pinning"), instead of using an "autopinning" option which makes these two features mutually-exclusive and confusing.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">Additionally, some dependency resolution behaviors were not well-specified and do not behave well. The package manager is lax about detecting changes to the versions specified in the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.swift</code>&nbsp;manifest or&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.pins</code>pinfile, and fails to automatically update packages when needed, or to issue errors if the version requirements are unsatisfiable, until the user explicitly runs&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package update</code>, or until a new user without an existing checkout attempts to build. We'd like to clarify and revise the rules around when and how the package manager performs dependency resolution.</span></span></span></span><br></p><h2 style="margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234, 236, 239);color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';background-color:rgb(255, 255, 255);"><a href="https://github.com/rballard/swift-evolution/blob/e5e7ce76f29c855aa7162ed3733b09e701d662d6/proposals/NNNN-package-manager-revised-dependency-resolution.md#proposed-solution" style="background-color:transparent;-webkit-text-decoration-skip:objects;color:rgb(3, 102, 214);text-decoration:none;float:left;padding-right:4px;line-height:1;"></a>Proposed solution<br></h2><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">The pinning feature will be removed. This removes the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package pin</code>&nbsp;and&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package unpin</code>&nbsp;commands, the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">--repin</code>&nbsp;flag to&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package update</code>, and use of the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.pins</code>&nbsp;file.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">In a future version of the package manager we may re-introduce pinning. If we do, pins will only be recorded in the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.pins</code>&nbsp;file when explicitly set with&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package pin</code>, and any pinned dependencies will&nbsp;<i>not</i>&nbsp;be updated by the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package update</code>&nbsp;command; instead, they would need to be unpinned to be updated. This would be a purely additive feature which packages could use in addition to the resolved versions feature when desired.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">A new "resolved versions" feature will be added, which behaves very similarly to how pinning previously behaved when autopinning was on. The version of every resolved dependency will be recorded in a&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.resolved</code>&nbsp;file in the top-level package, and when this file is present in the top-level package it will be used when performing dependency resolution, rather than the package manager finding the latest eligible version of each package.&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package update</code>will update all dependencies to the latest eligible versions and update the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.resolved</code>&nbsp;file accordingly.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">Resolved versions will always be recorded by the package manager. Some users may chose to add the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.resolved</code>&nbsp;file to their package's&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">.gitignore</code>&nbsp;file. When this file is checked in, it allows a team to coordinate on what versions of the dependencies they should use. If this file is gitignored, each user will seperately choose when to get new versions based on when they run the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package update</code>&nbsp;command, and new users will start with the latest eligible version of each dependency. Either way, for a package which is a dependency of other packages (e.g. a library package), that package's&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.resolved</code>&nbsp;file will not have any effect on its client packages.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">The existing&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package fetch</code>&nbsp;command will be deprecated, removed from the help message, and removed completely in a future release of the Package Manager. In its place, a new&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package resolve</code>&nbsp;command will be added. The behavior of&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">resolve</code>&nbsp;will be to resolve dependencies, taking into account the current version restrictions in the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.swift</code>&nbsp;manifest and&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.resolved</code>&nbsp;resolved versions file, and issuing an error if the graph cannot be resolved. For packages which have previously resolved versions recorded in the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.resolved</code>&nbsp;file, the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">resolve</code>command will resolve to those versions as long as they are still eligible. If the resolved versions file changes (e.g. because a teammate pushed a new version of the file) the next&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">resolve</code>&nbsp;command will update packages to match that file. After a successful&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">resolve</code>&nbsp;command, the checked out versions of all dependencies and the versions recorded in the resolved versions file will match. In most cases the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">resolve</code>&nbsp;command will perform no changes unless the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.swift</code>manifest or&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.resolved</code>&nbsp;file have changed.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">The following commands will implicitly invoke the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package resolve</code>&nbsp;functionality before running, and will cancel with an error if dependencies cannot be resolved:</span></span></span></span><br></p><ul style="padding-left:2em;margin-top:0px;margin-bottom:16px;color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';font-size:16px;background-color:rgb(255, 255, 255);"><li style=""><code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift build</code><br></li><li style="margin-top:0.25em;"><code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift test</code><br></li><li style="margin-top:0.25em;"><code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package generate-xcodeproj</code><br></li></ul><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">The&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package show-dependencies</code>&nbsp;command will also implicitly invoke&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package resolve</code>, but it will show whatever information about the dependency graph is available even if the resolve fails.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">The&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package edit</code>&nbsp;command will implicitly invoke&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package resolve</code>, but if the resolve fails yet did identify and fetch a package with the package name the command supplied, the command will allow that package to be edited anyway. This is useful if you wish to use the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">edit</code>&nbsp;command to edit version requirements and fix an unresolvable dependency graph.&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package unedit</code>&nbsp;will unedit the package and&nbsp;<i>then</i>&nbsp;perform a&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">resolve</code>.</span></span></span></span><br></p><h2 style="margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234, 236, 239);color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';background-color:rgb(255, 255, 255);"><a href="https://github.com/rballard/swift-evolution/blob/e5e7ce76f29c855aa7162ed3733b09e701d662d6/proposals/NNNN-package-manager-revised-dependency-resolution.md#detailed-design" style="background-color:transparent;-webkit-text-decoration-skip:objects;color:rgb(3, 102, 214);text-decoration:none;float:left;padding-right:4px;line-height:1;"></a>Detailed design<br></h2><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">The&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">resolve</code>&nbsp;command is allowed to automatically add new dependencies to the resolved versions file, and to remove dependencies which are no longer in the dependency graph. It can also automatically update the recorded versions of any package whose previously-resolved version is no longer allowed by the version requirements from the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.swift</code>manifests. When changed version requirements force a dependency to be automatically re-resolved, the latest eligible version will be chosen; any other dependencies affected by that change will prefer to remain at their previously-resolved versions as long as those versions are eligible, and will otherwise update likewise.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">The&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.resolved</code>&nbsp;resolved versions file will record the git revision used for each resolved dependency in addition to its version. In future versions of the package manager we may use this information to detect when a previously-resolved version of a package resolves to a new revision, and warn the user if this happens.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">The&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package resolve</code>&nbsp;command will not actually perform a&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">git fetch</code>&nbsp;on any dependencies unless it needs to in order to correctly resolve dependencies. As such, if all dependencies are already resolved correctly and allowed by the version constraints in the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.swift</code>&nbsp;manifest and&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.resolved</code>&nbsp;resolved versions file, the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">resolve</code>command will not need to do anything (e.g. a normal&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift build</code>&nbsp;won't hit the network or make unnecessary changes during its implicit&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">resolve</code>).</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">If a dependency is in edit mode, it is allowed to have a different version checked out than that recorded in the resolved versions file. The version recorded for an edited package will not change automatically. If a&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package update</code>operation is performed while any packages are in edit mode, the versions of those edited packages will be removed from the resolved versions file, so that when those packages leave edit mode the next resolution will record a new version for them. Any packages in the dependency tree underneath an edited package will also have their resolved version removed by&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">swift package update</code>, as otherwise the resolved versions file might record versions that wouldn't have been chosen without whatever edited package modifications have been made.</span></span></span></span><br></p><h2 style="margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234, 236, 239);color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';background-color:rgb(255, 255, 255);"><a href="https://github.com/rballard/swift-evolution/blob/e5e7ce76f29c855aa7162ed3733b09e701d662d6/proposals/NNNN-package-manager-revised-dependency-resolution.md#alternatives-considered" style="background-color:transparent;-webkit-text-decoration-skip:objects;color:rgb(3, 102, 214);text-decoration:none;float:left;padding-right:4px;line-height:1;"></a>Alternatives considered<br></h2><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">We considered repurposing the existing&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">fetch</code>&nbsp;command for this new behavior, instead of renaming the command to&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">resolve</code>. However, the name&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">fetch</code>&nbsp;is defined by&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">git</code>&nbsp;to mean getting the latest content for a repository over the network. Since this package manager command does not always actually fetch new content from the network, it is confusing to use the name&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">fetch</code>. In the future, we may offer additional control over when dependency resolution is allowed to perform network access, and we will likely use the word&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">fetch</code>&nbsp;in flag names that control that behavior.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">We considered continuing to write out the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.pins</code>&nbsp;file for packages whose&nbsp;<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0152-package-manager-tools-version.md" style="background-color:transparent;-webkit-text-decoration-skip:objects;color:rgb(3, 102, 214);text-decoration:none;">Swift tools version</a>&nbsp;was less than 4.0, for maximal compatibility with the Swift 3.1 tools. However, as the old pinning behavior was a workflow feature and not a fundamental piece of package compatibility, we do not consider it necessary to support in the 4.0 tools.</span></span></span></span><br></p><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">We considered keeping the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">pin</code>&nbsp;and&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">unpin</code>&nbsp;commands, with the new behavior as discussed briefly in this proposal. While we think we may wish to bring this feature back in the future, we do not consider it critical for this release; the workflow it supports (updating all packages except a handful which have been pinned) is not something most users will need, and there are workarounds (e.g. specify an explicit dependency in the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.swift</code>&nbsp;manifest).</span></span></span></span><br></p><h3 style="margin-top:24px;margin-bottom:16px;font-size:1.25em;line-height:1.25;color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';background-color:rgb(255, 255, 255);"><a href="https://github.com/rballard/swift-evolution/blob/e5e7ce76f29c855aa7162ed3733b09e701d662d6/proposals/NNNN-package-manager-revised-dependency-resolution.md#why-we-didnt-use-packagelock" style="background-color:transparent;-webkit-text-decoration-skip:objects;color:rgb(3, 102, 214);text-decoration:none;float:left;padding-right:4px;line-height:1;"></a>Why we didn't use "Package.lock"<br></h3><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">We considered using the&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">.lock</code>&nbsp;file extension for the new resolved versions file, to be consistent with many other package managers. We expect that the decision not to use this extension will be controversial, as following established precedent is valuable. However, we think that a "lockfile" is a very poor name for this concept, and that using that name would cause confusion when we re-introduce pins. Specifically:</span></span></span></span><br></p><ul style="padding-left:2em;margin-top:0px;margin-bottom:16px;color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';font-size:16px;background-color:rgb(255, 255, 255);"><li style="">Calling this a "lock" implies a stronger lockdown of dependencies than is supported by the actual behavior. As a simple&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">update</code>&nbsp;command will reset the locks, and a change to the specified versions in&nbsp;<code style="font-family:SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace;font-size:13.600000381469727px;padding-top:0.2em;padding-right:0px;padding-bottom:0.2em;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;background-color:rgba(27, 31, 35, 0.0470588);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;">Package.swift</code>&nbsp;will override them, they're not really "locked" at all. This is misleading.<br></li><li style="margin-top:0.25em;">When we re-introduce pinning, it would be very confusing to have both "locks" and "pins". Having "resolved versions" and "pins" is not so confusing.<br></li><li style="margin-top:0.25em;">The term "lock" is already overloaded between POSIX file locks and locks in concurrent programming.<br></li></ul><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">For comparison, here is a list of other package managers which implement similar behavior and their name for this file:</span></span></span></span><br></p><table style="-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;border-collapse:collapse;margin-top:0px;margin-bottom:16px;display:block;width:888px;overflow-x:auto;overflow-y:auto;color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';font-size:16px;background-color:rgb(255, 255, 255);"><thead style=""><tr style="border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><th style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Package Manager<br></th><th style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Language<br></th><th style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Resolved versions file name<br></th></tr></thead><tbody style=""><tr style="border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Yarn<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">JS<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">yarn.lock<br></td></tr><tr style="background-color:rgb(246, 248, 250);border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Composer<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">PHP<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">composer.lock<br></td></tr><tr style="border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Cargo<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Rust<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Cargo.lock<br></td></tr><tr style="background-color:rgb(246, 248, 250);border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Bundler<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Ruby<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Gemfile.lock<br></td></tr><tr style="border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">CocoaPods<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">ObjC/Swift<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Podfile.lock<br></td></tr><tr style="background-color:rgb(246, 248, 250);border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Glide<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Go<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">glide.lock<br></td></tr><tr style="border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Pub<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Dart<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">pubspec.lock<br></td></tr><tr style="background-color:rgb(246, 248, 250);border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Mix<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Elixir<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">mix.lock<br></td></tr><tr style="border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">rebar3<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Erlang<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">rebar.lock<br></td></tr><tr style="background-color:rgb(246, 248, 250);border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Carton<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Perl<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">carton.lock<br></td></tr><tr style="border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Carthage<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">ObjC/Swift<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Cartfile.resolved<br></td></tr><tr style="background-color:rgb(246, 248, 250);border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Pip<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Python<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">requirements.txt<br></td></tr><tr style="border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">NPM<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">JS<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">npm-shrinkwrap.json<br></td></tr><tr style="background-color:rgb(246, 248, 250);border-top-width:1px;border-top-style:solid;border-top-color:rgb(198, 203, 209);"><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">Meteor<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">JS<br></td><td style="padding-top:6px;padding-right:13px;padding-bottom:6px;padding-left:13px;border-top-width:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(223, 226, 229);border-right-color:rgb(223, 226, 229);border-bottom-color:rgb(223, 226, 229);border-left-color:rgb(223, 226, 229);border-image-source:initial;border-image-slice:initial;border-image-width:initial;border-image-outset:initial;border-image-repeat:initial;">versions<br></td></tr></tbody></table><p style="margin-top: 0px; margin-bottom: 16px;"><span class="highlight" style="background-color:rgb(255, 255, 255)"><span class="colour" style="color:rgb(36, 41, 46)"><span class="font" style="font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'"><span class="size" style="font-size:16px">Some arguments for using ".lock" instead of ".resolved" are:</span></span></span></span><br></p><ul style="padding-left:2em;margin-top:0px;margin-bottom:16px;color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';font-size:16px;background-color:rgb(255, 255, 255);"><li style="">Users of other package managers will already be familiar with the terminology and behavior.<br></li><li style="margin-top:0.25em;">For packages which support multiple package managers, it will be possible to put "*.lock" into the gitignore file instead of needing a seperate entry for "*.resolved".<br></li></ul><div style="margin-top:0px;color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';font-size:16px;background-color:rgb(255, 255, 255);margin-bottom:0px !important;">However, we do not feel that these arguments outweigh the problems with the term "lock". If providing feedback asking that we reconsider this decision, please be clear about why the above decision is incorrect, with new information not already considered.<br></div>
</div>
<div style="margin-top:0px;color:rgb(36, 41, 46);font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';font-size:16px;background-color:rgb(255, 255, 255);margin-bottom:0px !important;"><br></div>
<div><u>_______________________________________________</u><br></div>
<div>swift-evolution mailing list<br></div>
<div><a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br></div>
<div><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></div>
</blockquote><div style="font-family:Arial;"><br></div>
</body>
</html>