Skip to content

Increase mas's minimum supported macOS version from 10.11 to 10.13 or newer? #578

@rgoldberg

Description

@rgoldberg

Should mas's minimum supported macOS version be increased from 10.11 to 10.13 or newer?

The user base on macOS 10.11 & 10.12 is probably vanishingly small.

.swift-version has specified since 2022 that mas uses Swift 5.7, but that isn't in any released mas version. The code already uses the if let shorthand from 5.7, and possibly other 5.7 features.

Moreover, main has been switched from Commandant to Swift Argument Parser 1.5.0, which requires Swift 5.7+.

Swift 5.7 can only be compiled by Xcode 14+. Xcode 14+ only supports macOS deployment targets on 10.13+

Thus, I think that all references to Swift versions in main should be set to the newest Swift 5.7.x, and mas should be configured to explicitly only support macOS 10.13+.

We might want to increase the minimum macOS version to 10.15 when we release 2.0.0, which will allow the use of Swift Concurrency & swift-testing or newer versions of Nimble & Quick. Other newer macOS versions wouldn't unlock as many new useful APIs, and might orphan too many users.

The benefits of which I'm aware of increasing the minimum macOS version for running mas are (by minimum version):

  • 10.12
    • ISO8601DateFormatter
  • 10.13
    • Swift 5.7+
    • PromiseKit 8+ (currently 8.1.2)
    • JSONSerialization.WritingOptions.sortedKeys
  • 10.15
    • Concurrency
    • swift-testing
    • Nimble 11+ (currently 13.x)
    • Quick 6+ (currently 7.x)
    • JSONSerialization.WritingOptions.withoutEscapingSlashes
  • 11
    • Logger
  • 12
    • Date.ISO8601Format
    • Date.ISO8601FormatStyle
  • 13
    • Regex & related
    • Locale.Currency
  • 15
    • RangeSet

I know that there are other benefits, I just haven't yet identified them.

Metadata

Metadata

Assignees

Labels

🧽 choreAdministrative task: documentation, build, test, release, git, etc.

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions