[Returned for revision] SE-0376 (second review): Function back deployment

I'd like to explore the alternative of using until: as the argument label a bit more (thanks @benrimmington for the suggestion). I think that @backDeployed(until: iOS 13) reads well at a glance and it works reasonably well when expanding the attribute into a sentence:

The function is back deployed until (the minimum deployment target is at least) iOS 13

IMO the range exclusivity of until: is clear and I also think it actually reads a bit more naturally than before: as an argument label. Consider this expansion into a sentence with before: as the label:

The function is back deployed (for all minimum deployment targets) before iOS 13

The sentence is understandable and I think grammatically correct, but to me it's a bit more awkward than the previous sentence using until:. There's something more concise about the way that "until" represents that all earlier deployment targets that have the behavior.

Precedent-wise, I could not find examples of until: used as an argument label in the standard library. It feels somewhat similar to while:, though, which is common as an argument label for methods that take predicate closures and return sequences or accumulations. The only precedent for before: as a label is index(before:) which returns the specific index that comes before another index in a BidirectionalCollection, which doesn't feel structurally analogous to what we're representing with the @backDeployed attribute.

5 Likes