LoginSignup
7
2
iOS強化月間 - iOSアプリ開発の知見を共有しよう -

Upcoming Feature Flagsの一覧を確認する方法(Swift)

Last updated at Posted at 2023-09-15

はじめに

Swift 5.8から「Upcoming Feature Flags」というフラグが追加されました。

Swiftの言語仕様において、まれにソースの互換性を壊す変更が採用されることがあります。
そのような破壊的変更はメジャーバージョンアップまで導入されませんが、Upcoming Feature FlagsをONにすることで早めに有効にできます。

今後の機能を予め有効にすることで、メジャーバージョンアップ時の移行が容易になるなどのメリットがあります。

詳細は以下の記事をご参照ください。

ただどのようなUpcoming Feature Flagがあるかがわかりづらいので、一覧で確認する方法を紹介します。

環境

  • OS: macOS Ventura 13.5.2
  • Swift: 5.9
  • Xcode: 15.0 (15A240d)
  • swift-tools-version: 5.9

Upcoming Feature Flagsの一覧

Upcoming Feature Flagsの一覧を確認する方法を紹介します。

Swift Evolution

わかりづらいのですが、実はSwift Evolutionのページから確認できます。

画面右にある旗のアイコンをクリックすることで、Upcoming Feature Flagがあるプロポーザルを絞り込むことができます。

貼り付けた画像_15_9_2023_22_26.png

2023/09/15現在は、6つのUpcoming Feature Flagがあることがわかります。

  • DisableOutwardActorInference
  • ImportObjcForwardDeclarations
  • BareSlashRegexLiterals
  • ExistentialAny
  • ForwardTrailingClosures
  • ConciseMagicFile

ソース

Swift Evolutionのページは、Swiftのどのバージョンと紐付いているかわかりづらいなどの問題があります。

そこでSwiftのソースを直接読みます。

しっかりとは追えていませんが、 swift/include/swift/Basic/Features.defUPCOMING_FEATURE で定義されている値がUpcoming Feature Flagsだとわかります。

Features.def
UPCOMING_FEATURE(ConciseMagicFile, 274, 6)
UPCOMING_FEATURE(ForwardTrailingClosures, 286, 6)
UPCOMING_FEATURE(BareSlashRegexLiterals, 354, 6)
UPCOMING_FEATURE(ExistentialAny, 335, 6)
UPCOMING_FEATURE(ImportObjcForwardDeclarations, 384, 6)
UPCOMING_FEATURE(DisableOutwardActorInference, 401, 6)

引数は3つあり、前から順に機能名( FeatureName )、プロポーザル番号( SENumber )、バージョン( Version )です。

Features.def
#  define UPCOMING_FEATURE(FeatureName, SENumber, Version)   \

バージョンは固定で 6 が入っており、おそらくSwift 6で完全に有効になることを意味しています。

おわりに

Upcoming Feature Flagsの一覧を確認することができました。
これで早めに今後の機能を有効にし、Swiftの最新仕様を使って実装できます :relaxed:

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2