Notes de version de macOS 27 : dépréciations, ruptures et correctifs
macOS 27 Golden Gate est sorti le lundi 14 septembre 2026 sous le build 26A428, et son SDK, build 26A425, est arrivé le même jour dans Xcode 27 (27A266a). Les notes de version d’Apple couvrent 86 sections titrées et 272 entrées : 68 nouveautés, 173 problèmes résolus, 18 problèmes connus et 13 dépréciations. Ce billet les lit du point de vue du développeur Mac : les entrées qui modifient le comportement d’une app dès qu’elle est liée au SDK 27, les changements du système qui frappent sans aucune recompilation, les 13 dépréciations confrontées aux en-têtes et aux interfaces Swift du SDK lui-même, et ce que j’ai pu ou non vérifier sur un Mac qui tourne encore sous 26.6.2. Le billet sur la sortie GA de Golden Gate traite de Rosetta et du choix arm64 par défaut de l’installeur ; celui-ci traite du reste.123
L’essentiel
- Les builds. Appareil 26A428, SDK 26A425 ; le numéro du SDK n’est pas celui de l’appareil, ce qui compte quand un rapport de bug en demande un. L’index des notes de version d’Apple et le flux des publications ne mentionnent aucun macOS 27.0.1 au 26 septembre ; les entrées les plus récentes sont 27 et la bêta 2 de 27.2 (26B5091g) du 21 septembre.137
- Le comportement lié au SDK 27. Treize changements modifient ce que fait une app dès qu’elle est liée au SDK 27 : les images de menu hors symboles masquées, et les éléments composés d’une seule image qui perdent leur exception ;
NSOpenPanelqui déduitcanChooseFilesdes types de contenu ; l’élément de menu Layout Orientation qui passe sous Font ; les accessoires de barre de titre qui dessinent hors de leurs limites ; les invites deTextFieldqui acceptent un style ;TextRenderersur unTextsélectionnable ; les modificateurs de contrôle réinitialisés dans les sheets et les popovers ; le calcul de zone sûre decontainerRelativeFrame;LabeledContentqui devient un sous-titre de menu ;TabViewdans les inspecteurs qui passe au style tabs ;Listqui accepte des dépôts qu’il refusait ;newDocumentqui prend un document en mémoire ; et, pour Mac Catalyst, l’obligation du cycle de vie par scènes et la restauration d’état étendue.2 - Sans recompilation. Les images symboles des éléments de menu disparaissent pour toute app liée à macOS 26.0 ou ultérieur, et dans les menus SwiftUI et UIKit sans aucune condition de SDK ; les gesture recognizers deviennent exclusifs à la première hiérarchie de vues touchée par le hit-test, les gestes bloqués s’annulent d’eux-mêmes, le
locationInView:de base renvoieNSZeroPoint,launchdest indiqué comme ne chargeant plus les listes de propriétés en quarantaine, l’accès direct à la base TCC prend fin, l’accès aux conteneurs d’autres équipes est refusé sans invite, XProtect peut cloisonner des données d’app, le trafic MDM et de mise à jour logicielle exige TLS 1.2 avec des suites de chiffrement conformes à ATS, et les apps qu’un utilisateur avait réglées sur « Open using Rosetta » se lancent en natif.2 - 13 dépréciations, dont quatre d’API.
PHAssetResource.originalFilenamen’avertit qu’avec une cible de déploiement 27.0 (macos(10.15, 27)dans l’en-tête) ;FileDocumentporte la version douce100000.0et n’avertit jamais ;calendar.deleteEventsa disparu de l’interface App Intents, donc l’ancien nom ne compile plus ;DVDPlaybackfigure toujours dans le SDK 27.0 sous forme de stub, avec en-têtes et module, contrairement à ce que dit la note, et avertit sous un plancher 27.0 et échoue à ce plancher. Les neuf autres relèvent du comportement du système, d’apps, de formats ou de reliquats de bêta, pas de l’API.23 - Le SDK confirme le nouvel AppKit.
NSRefreshController,NSTextSelectionManager, les propriétésroleavecNSToolbarItemGroup.RoleetNSSegmentedControlRole,preferredImageVisibility,cancellableByScrollGestureet l’optionNSApplicationPresentationDisableScreenCornerInteractionssont tous annotésmacos(27.0); les frameworksDiskImageKitetNowPlayingsont présents ;Systema son typeStat; StoreKit aassignedetBundledSubscription, et là où les notes écriventassignmentRevoked, l’interface ditassignmentRevocation.3
Quel build est lequel ?
| Où | Build | Preuve |
|---|---|---|
| Appareil, macOS 27.0 | 26A428 | Flux des publications, Mon, Sep 14, 20261 |
| SDK dans Xcode 27 (27A266a) | 26A425 | MacOSX27.0.sdk/System/Library/CoreServices/SystemVersion.plist, ProductBuildVersion3 |
| macOS 27.2 bêta 2 | 26B5091g | Flux des publications, Mon, Sep 21, 20261 |
| macOS 27.0.1 | aucun | Absent du flux des publications et de l’index des notes de version macOS au 26 septembre17 |
| App Store Connect | SDK 27.0 GA accepté | « You can now upload apps built with Xcode 27 using the SDK for iOS 27.0, iPadOS 27.0, macOS 27.0, tvOS 27.0, visionOS 27.0, and watchOS 27.0 for the App Store, and for internal and external testing through TestFlight. » (on peut désormais envoyer des apps compilées avec Xcode 27 et les SDK 27.0, pour l’App Store et pour les tests internes et externes via TestFlight) 14 septembre6 |
Les notes s’ouvrent sur deux phrases de périmètre, « The macOS 27 SDK provides support to develop apps for Mac computers running macOS 27 Golden Gate. The SDK comes bundled with Xcode 27, available from the Mac App Store, » (le SDK pour développer des apps Mac sous macOS 27 Golden Gate est fourni avec Xcode 27, disponible sur le Mac App Store) puis parcourent 86 sections titrées. En comptant les éléments de liste sous chaque titre, on obtient 68 nouveautés, 173 problèmes résolus, 18 problèmes connus et 13 dépréciations. Siri compte pour 26 résolus et six connus, SwiftUI pour 21 nouveautés et 19 résolus, AppKit pour huit nouveautés et 18 résolus, Core AI pour 11 résolus et StoreKit Testing in Xcode pour 10 résolus et deux connus.2 Le billet sur les notes d’iOS 27 couvre le côté iPhone, où les mêmes entrées SwiftUI apparaissent avec une formulation iOS ; le billet sur Xcode 27 couvre la chaîne d’outils.
Les notes de la bêta 2 de 27.2, datées du 21 septembre, sont courtes : un plantage de la complétion de code de Xcode indiqué comme corrigé, une dépréciation AppKit (« The EnablePasteboardPrivacyDeveloperPreview user default has been removed. », soit : ce réglage par défaut a été supprimé), un problème connu de Notifications sur les installations propres, un problème connu de Shortcuts, les deux problèmes connus de StoreKit Testing mentionnés plus bas qui passent en corrigés, plus un nouveau correctif StoreKit Testing sur l’éligibilité aux offres de lancement après SKTestSession.clearTransactions(). Hormis ces entrées StoreKit Testing, rien dans ces notes ne touche aux entrées 27.0 de ce billet.4
Qu’est-ce qui change dès que vous liez votre app au SDK macOS 27 ?
Apple conditionne les changements de comportement au SDK auquel une app est liée : ils ne font donc rien au build déjà publié, et tous se déclenchent dès la première archive produite par Xcode 27. La note citée pour chacun :2
- Les images de menu hors symboles, et l’exception des titres vides. Le changement sur les images symboles décrit plus bas ne demande aucune recompilation ; la recompilation apporte le reste. « For applications linked on the macOS 27 SDK, both symbol and non-symbol menu item images are now automatically hidden. For applications linked on earlier SDKs, non-symbol images remain automatically visible, preserving compatibility with existing application behavior. » (avec le SDK 27, toutes les images d’éléments de menu sont masquées ; avec les SDK antérieurs, les images hors symboles restent visibles.) Et dans l’autre sens pour les anciens builds : « For applications linked on SDKs prior to macOS 27, NSMenu now automatically shows menu item images if the menu item title and attributed title are both empty. This preserves existing application behavior when the image is the only representation of the menu item content. When linking against the macOS 27 SDK, these images will automatically be hidden. » (avec les SDK antérieurs, NSMenu affiche l’image quand le titre et le titre attribué sont vides ; avec le SDK 27, cette image est masquée aussi.) Un élément composé d’une seule image a besoin de
preferredImageVisibilityà.visibleaprès la recompilation. Mon billet sur les images de menu détaille l’audit. - Les panneaux d’ouverture déduisent leurs choix. Indiqué comme corrigé : « In apps built with the macOS 27.0 SDK, setting
allowedContentTypesandtreatsFilePackagesAsDirectoriesonNSOpenPaneupdatescanChooseFilesandcanChooseDirectoriesbased on whether the requested types are file or directory types. » (régler ces deux propriétés met à jourcanChooseFilesetcanChooseDirectoriesselon que les types demandés sont des types de fichier ou de dossier.) (La note écorche le nom de la classe.) Un panneau d’ouverture qui définissait des types de contenu puis comptait sur uncanChooseDirectories = trueexplicite est le cas à retester. - Layout Orientation déménage. « NSTextView’s
menuForEvent:now returns a context menu in which the Layout Orientation menu item, and its submenu, are located inside the Font submenu. Because this change can cause compatibility issues with some shipping applications, it applies only to applications linked on the macOS 27 SDK. » (l’élément Layout Orientation et son sous-menu passent dans le sous-menu Font ; par prudence, cela ne vaut que pour les apps liées au SDK macOS 27.) Le code qui trouve cet élément en parcourant le menu casse à la recompilation. - Les accessoires de barre de titre débordent. « When an app is linked on macOS 27.0 or later,
NSTitlebarAccessoryViewControlleris now allowed to draw outside its bounds by default, supporting effects such as shadows and interactive glass effects. During reveal animations, accessories might be clipped for the duration of the animation or when the accessory ishidden. » (le contrôleur peut désormais dessiner hors de ses limites, pour les ombres et les effets de verre ; pendant les animations d’apparition, il peut être rogné.) - Les invites de
TextFieldacceptent un style. « In apps built with the macOS 27.0 SDK,TextFieldrespects custom font and color styling applied to its prompt. Apply styling to theTextprovided toTextField’spromptparameter at initialization. » (TextFieldrespecte la police et la couleur de son invite ; le style s’applique auTextpassé enpromptà l’initialisation.) - Le
Textsélectionnable reçoitTextRenderer. « In apps built with the iOS 27.0 and macOS 27.0 SDKs, selectableTextviews now supportTextRenderer, » et l’entrée corrigée voisine précise qu’un moteur de rendu personnalisé « now takes effect on aTextview that also has.textSelection(.enabled)applied. » (s’applique désormais aussi à une vueTextdotée de.textSelection(.enabled).) - Sheets et popovers. Indiqué comme corrigé : « In apps built with the 27.0 SDKs, the
controlSize,buttonSizing,buttonRepeatBehavior,menuIndicatorVisibility, andButtonBorderShapeenvironment values are now reset to their default values in sheets and popovers. » (ces valeurs d’environnement sont réinitialisées à leurs valeurs par défaut dans les sheets et les popovers.) Une sheet qui héritait de.controlSize(.large)de son présentateur cesse de le faire. containerRelativeFrame. Indiqué comme corrigé pour les builds 27.0 : il « incorrectly accounts for safe-area insets on aScrollView’s non-scrollable axis, causing the calculated scrollable content size to be too small. » (tient compte à tort des marges de zone sûre sur l’axe non défilant, ce qui rend la taille de contenu défilable calculée trop petite.) Le sens de l’entrée est flou, puisque son exemple décrit un contenu qui s’étend dans la zone sûre au lieu de rétrécir ; retestez toutcontainerRelativeFrameplacé dans uneScrollViewaprès la recompilation.- Les menus gagnent des sous-titres. « In apps built with the 27.0 SDKs, a
LabeledContentview used inside aMenumaps its value to the platform menu item’s subtitle. » (unLabeledContentdans unMenuplace sa valeur dans le sous-titre de l’élément de menu.) - Les
TabViewdes inspecteurs. « In apps built with the latest SDKs, the appearance ofTabViewsin inspectors now matches their appearance in sidebars, and in both contexts automatically uses the new.tabspicker style. » (dans les inspecteurs, lesTabViewsprennent l’apparence qu’elles ont dans les barres latérales et utilisent automatiquement le nouveau style de sélecteur.tabs.) Listaccepte plus de dépôts. « In macOS apps built with the macOS 27 SDK,Listaccepts drops in two cases that previously didn’t work : drags with compatible transfer representations are accepted into reorderable content even when the.reorderableItemtransfer type isn’t present, and a.dropDestination(...)modifier declared on a list item now performs the drop. » (Listaccepte désormais les dépôts dans deux cas qui échouaient : des représentations de transfert compatibles dans un contenu réordonnable même sans.reorderableItem, et un.dropDestination(...)déclaré sur un élément de liste.) Un gestionnaire de dépôt qui ne se déclenchait jamais sur Mac peut se mettre à le faire.newDocumentprend une instance. « In macOS apps built with the macOS 27 SDK, the action retrieved from the\.newDocumentenvironment value accepts an in-memoryReadableDocumentproduced by an autoclosure. SwiftUI presents a new document window populated with the supplied instance, instead of invoking the document group’s default factory. » (l’action accepte unReadableDocumenten mémoire issu d’une autoclosure, et SwiftUI ouvre une nouvelle fenêtre avec cette instance au lieu d’appeler la fabrique par défaut du groupe de documents.)- Mac Catalyst. Parmi les dépréciations UIKit : « Apps built with the latest SDK must adopt the scene-based life cycle or they fail to launch, » (les apps compilées avec le dernier SDK doivent adopter le cycle de vie par scènes, sinon elles ne se lancent pas) la même obligation que le billet sur les scènes traite pour iOS, et « When linked on iOS 27, tvOS 27, macCatalyst 27, or visionOS 27 SDKs, you can use
UIScene.extendStateRestorationandUIScene.completeStateRestorationto extend state restoration » jusque dans la transition de l’arrière-plan au premier plan. Séparément, et sans condition de SDK : « Catalyst apps now behave like AppKit apps when you switch to them with no open windows » (les apps Catalyst se comportent comme des apps AppKit quand on y bascule sans fenêtre ouverte) ; elles ne créent plus de fenêtre, sauf si elles sont activées depuis le Dock ou Spotlight.
Deux entrées, l’une sous SwiftUI et l’autre sous Swift Charts, ont leur place ici même si elles dépendent du compilateur plutôt que de l’édition de liens. La réécriture de la macro @State « back-deploys to iOS 17 aligned OSes » (est rétroportée jusqu’aux systèmes alignés sur iOS 17) et change ce qui compile sous Xcode 27 : certaines déclarations qui portent une valeur initiale et affectent aussi une valeur dans init ne compilent plus, « some such cases » (certains de ces cas) selon les mots d’Apple, et l’initialiseur privé synthétisé disparaît. Le billet sur la macro @State contient l’audit. Quant à l’entrée Swift Charts, indiquée comme corrigée, elle décrit un avertissement et un plantage possible à l’exécution : « When your project has a minimum deployment target lower than 27.0, using conditionals inside a Chart closure produces the warning » sur la conformité _ConditionalContent, « and the app might crash at runtime when that content is loaded. » (avec une cible de déploiement inférieure à 27.0, des conditions dans une closure Chart produisent l’avertissement, et l’app peut planter au chargement de ce contenu.) L’avertissement cité contient un nom de plateforme vide, ce qui ressemble à un diagnostic des bêtas, et je n’ai pas pu le reproduire : un Chart dont la closure bascule avec if entre un BarMark et un LineMark a passé la vérification de types sans aucun diagnostic avec le SDK 27.0, à une cible de déploiement 26.0 comme 27.0, le 26 septembre. La moitié de l’entrée qui concerne le plantage à l’exécution est le texte d’Apple et reste non testée ici.23
Qu’est-ce qui change sans aucune recompilation ?
L’autre moitié des notes décrit le système d’exploitation, et ces points s’appliquent au binaire que vous avez publié l’an dernier.2
- Les images symboles des menus s’en vont. AppKit : « By default,
NSMenuhides all menu item symbol images » (par défaut,NSMenumasque toutes les images symboles des éléments de menu) et le changement s’applique « to applications linked on macOS 26.0 and later » (aux apps liées à macOS 26.0 ou ultérieur) ; un build issu de Xcode 26 perd donc ses images symboles sur une machine 27 sans recompilation.preferredImageVisibilitysurNSMenuItem,API_AVAILABLE(macos(27.0)), permet de passer outre, et la case « macOS 26.0 only » de l’inspecteur xib est le second interrupteur. SwiftUI : « By default, SwiftUI now hides all menu item symbol images in most contexts, while non-symbol images remain visible, » (SwiftUI masque les images symboles des menus dans la plupart des contextes, les autres images restant visibles) aveclabelStyle(_:)et.titleAndIconpour les conserver, et aucune condition de SDK dans l’entrée. UIKit : « On iPadOS 27.0 and macOS 27.0, the menu bar and context menus present a reduced set of menu item images and do not display images set on menu elements by default, » (la barre de menus et les menus contextuels affichent moins d’images et, par défaut, aucune image définie sur les éléments de menu) avecpreferredImageVisibilitysurUIMenuElement, et là encore aucune condition de SDK. L’en-tête va dans le sens d’une lecture au niveau du système : le commentaire surNSMenuItem.imageindique que « in macOS 27 and later, AppKit determines the visibility of menu item images, and will typically hide images. » (à partir de macOS 27, AppKit décide de la visibilité des images et les masque en général.)3 - Les gestes deviennent exclusifs. « Only the initial hit-tested view hierarchy will activate gesture recognizers until all gestures terminate. A new
exclusiveGestureBehaviorproperty onNSViewallows you to opt-out of this exclusive behavior on a per-view-hierarchy basis. Further, theInfo.plistkeyNSViewGestureRecognizerIsExclusiveallows you to opt-out for the entire app. » (tant que tous les gestes ne sont pas terminés, seule la première hiérarchie de vues touchée active ses gesture recognizers ;exclusiveGestureBehaviordésactive ce comportement par hiérarchie, la cléInfo.plistpour toute l’app.) Une clé associée,NSGestureRecognizerSuppressesMainMenuActions, laisse les actions du menu principal se déclencher pendant un geste actif, et « stuck gestures are automatically cancelled after user input has ended for a few seconds, » (les gestes bloqués sont annulés automatiquement quelques secondes après la fin de la saisie) avec le réglage par défautNSCrashOnStuckGestureTimeoutpour en faire un plantage pendant le débogage. Un recognizer placé sur une vue parente, qui se déclenchait auparavant en même temps que celui d’un enfant, attend désormais. - Les recognizers personnalisés doivent se situer eux-mêmes. Indiqué comme corrigé : le
locationInView:de base deNSGestureRecognizer« now returnsNSZeroPointand logs an error pointing the developer at the missing override. CustomNSGestureRecognizersubclasses must provide their ownlocationInView:implementation. » (renvoie désormaisNSZeroPointet journalise une erreur qui signale la redéfinition manquante ; les sous-classes doivent fournir leur proprelocationInView:.) Une entrée distincte présente le réglage de diagnosticNSGestureRecognizerCrashOnMissingOverridescomme fourni « to help developers findNSGestureRecognizersubclasses that are missing required overrides to ensure that they always reach a terminal state » (pour repérer les sous-classes auxquelles il manque les redéfinitions garantissant un état final) ; les notes ne disent pas s’il intercepte aussi unlocationInView:manquant. Enfin, lesNSClickGestureRecognizers« with a click count greater than 1 will send an action before their multi-click timeout has elapsed. » (à plus d’un clic envoient leur action avant l’expiration du délai de clic multiple.) launchdet la quarantaine. Indiqué comme corrigé : «launchdno longer supports loadinglaunchdproperty list files with the quarantine extended attribute. » (launchdne charge plus les fichiers de liste de propriétés portant l’attribut étendu de quarantaine.) Les entrées corrigées d’Apple décrivent tantôt l’ancien bug, tantôt la nouvelle règle ; lue comme une règle, une plist d’agent téléchargée et installée avec l’attribut cesse de se charger.- TCC. Sous Deprecations : « Apps can no longer access the local TCC database directly. » (les apps ne peuvent plus accéder directement à la base TCC locale.)
- Conteneurs et XProtect. Sous System Integrity Protection : « Accessing files in other developer teams’ app data containers and app group containers no longer prompts the user for authorization ; such accesses are denied by default and can be managed by the user in Privacy & Security settings. » (l’accès aux conteneurs d’autres équipes ne déclenche plus d’invite ; il est refusé par défaut et se gère dans Privacy & Security.) Et : « XProtect may now restrict access to app data that is commonly targeted by malicious software. » (XProtect peut restreindre l’accès aux données d’app souvent visées par les logiciels malveillants.) Le problème connu de Privacy & Security ajoute que « a process without a bundle ID cannot be granted access to specific app data containers or app group containers owned by other developer teams, » (un processus sans bundle ID ne peut pas recevoir l’accès à certains conteneurs d’autres équipes) avec Full Disk Access comme solution de repli.
- TLS pour le trafic géré. « Starting in 27.0 operating systems, select system processes now enforce stricter network security (TLS) requirements, » (à partir des systèmes 27.0, certains processus système imposent des exigences TLS plus strictes) qui citent MDM, DDM, Automated Device Enrollment, l’installation de profils, l’installation d’apps et les mises à jour logicielles ; « Servers must support TLS 1.2 at minimum, using cipher suites and certificates that meet App Transport Security (ATS) requirements. » (les serveurs doivent prendre en charge au moins TLS 1.2, avec des suites de chiffrement et des certificats conformes à ATS.) L’audit TLS donne la liste de contrôle.
- Rosetta. « On launch, Applications previously set to “Open using Rosetta” by a user will have the application launch natively, » (les apps réglées par l’utilisateur sur « Open using Rosetta » se lancent en natif) « If Rosetta was previously installed, it is not automatically restored after upgrading to macOS 27.0, » (un Rosetta installé auparavant n’est pas restauré automatiquement après la mise à niveau) et les paquets d’installation sans
hostArchitecture« will now default to arm64. » (passent par défaut en arm64.) Le billet GA reproduit ce choix par défaut de l’installeur sur 26.6.2. - Le Neural Engine en arrière-plan. L’entrée figure sur la page macOS et commence par « iOS 27 includes Neural Engine improvements for Apple Intelligence capable devices » ; lisez-la donc comme une note commune aux plateformes : « The system now restricts background access to the Neural Engine, similar to GPU usage restrictions, » (le système restreint l’accès en arrière-plan au Neural Engine, comme pour le GPU) et « Neural Engine memory usage is now attributed to your app process instead of the system, and appears in the Allocations instrument. » (la mémoire du Neural Engine est désormais imputée au processus de votre app et apparaît dans l’instrument Allocations.) Une seconde entrée Core AI indique que l’accès en arrière-plan « requires the new entitlement : “com.apple.developer.background-tasks.continued-processing.inference”. » (exige ce nouvel entitlement.)
- Archives de journaux. « Unified Logging System archives generated on 27.0 releases cannot be read on macOS 26.1 or earlier due to an updated archive format. macOS 26.2 or later is required to read these archives. » (en raison d’un nouveau format, les archives produites sous 27.0 ne se lisent qu’à partir de macOS 26.2.) Une chaîne de support qui ouvre les paquets
.logarchivedes clients sur un Mac plus ancien a besoin d’au moins 26.2. - Les promesses de fichiers passent par une assertion. Indiqué comme corrigé :
receivePromisedFilesAtDestination:« asserts that it is called during-prepareForDragOperation:,-performDragOperation:, or-concludeDragOperation:. IfreceivePromisedFilesAtDestination:...is called at other times, your application will throw an exception and terminate. » (vérifie par assertion qu’il est appelé pendant l’une de ces trois méthodes de glisser-déposer ; appelé à un autre moment, l’app lève une exception et se termine.) Un récepteur qui reportait l’appel à un tour ultérieur de la boucle d’exécution se termine désormais.
Quelles API sont obsolètes dans 27.0 ?
Les notes comptent 13 entrées sous des titres Deprecations, réparties sur 11 sections. Dans une note de version, une dépréciation est une phrase ; dans le SDK, c’est une annotation de disponibilité que lit le compilateur, et les deux ne disent pas toujours la même chose. J’ai confronté chaque entrée aux en-têtes et aux interfaces Swift du SDK macOS 27.0 de Xcode 27 :23
| Entrée des notes | Ce que dit le SDK |
|---|---|
« The originalFilename property on PHAssetResource is incorrectly marked as non-nullable, which misrepresents the property value ; a new, nullable filename property is available as a replacement. » (marquée à tort comme non nullable ; la nouvelle propriété nullable filename la remplace) |
API_DEPRECATED("Use filename instead", ios(9, 27), macos(10.15, 27), tvos(10, 27), visionos(1, 27)) dans PHAssetResource.h |
« The FileDocument protocol is deprecated. Use ReadableDocument for read-only documents or Document for documents that support reading and writing. » (obsolète ; ReadableDocument pour la lecture seule, Document pour la lecture et l’écriture) |
@available(macOS, introduced: 11.0, deprecated: 100000.0, message: "Conform your type to Document instead.") sur FileDocument : douce, aucun avertissement aujourd’hui. ReadableDocument, WritableDocument et Document figurent tous dans l’interface |
« The calendar.deleteEvents schema has been renamed to calendar.deleteEvent. » (renommé) |
deleteEvents apparaît zéro fois dans l’interface macOS de AppIntents, deleteEvent une fois. Un renommage sans alias est une erreur de compilation pour quiconque utilise l’ancien nom |
« The DVDPlayback framework has been removed from the macOS 27 Golden Gate SDK and apps cannot build against it. The framework will be removed in a future macOS release. » (retiré du SDK, les apps ne peuvent plus compiler avec ; le framework disparaîtra dans une future version) |
Pas retiré du SDK sur disque : MacOSX27.0.sdk/System/Library/Frameworks/DVDPlayback.framework contient un .tbd qui exporte 223 symboles _DVD distincts pour les cibles x86_64-macos, arm64e-macos et arm64e.x1-macos, un dossier Headers et une module map. import DVDPlayback passe la vérification de types à une cible de déploiement 26.0 avec un avertissement « deprecated in macOS 10.15 » sur DVDInitialize() ; à une cible 27.0, le même appel est une erreur, « unavailable in macOS: No longer supported ». « Cannot build against it » se vérifie donc à un plancher 27.0 par le jeu de la disponibilité, et le stub est toujours là |
| « Encrypted HFS+ (CoreStorage) is deprecated and will not be supported in a future version of macOS. » (obsolète, plus pris en charge à l’avenir) | Un format de système de fichiers, pas une API ; sauvegardez vers de l’APFS chiffré |
| « Apps can no longer access the local TCC database directly. » | Pas une annotation ; une politique que le système fait respecter |
| « Apps built with the latest SDK must adopt the scene-based life cycle or they fail to launch. » (UIKit, donc Mac Catalyst) | Un échec au lancement, pas un avertissement |
| « If Rosetta was previously installed, it is not automatically restored after upgrading to macOS 27.0. » | Comportement du système |
« Installer packages which specify no hostArchitecture will now default to arm64. » |
Comportement du système ; reproduit sur 26.6.2 dans le billet GA |
| « Intel-based plugins and loaders may not appear in Settings or trigger notifications of their incompatibility. All Intel-based software will no longer be compatible with macOS 28.0, excluding legacy games. » (les plug-ins Intel peuvent ne pas apparaître dans les réglages ; tout logiciel Intel, hors anciens jeux, sera incompatible avec macOS 28.0) | Comportement du système ; les dossiers de plug-ins cités par Apple sont ~/Library/Audio/Plug-Ins/*, ~/Library/Printers/ et ~/Library/ColorPickers/ |
| « AirPort Utility is no longer included with new clean installations of macOS. » | Une app, pas une API |
« Meshes compressed using the USDKit export API or usdcrush tool in Beta 1 cannot be decoded by Beta 2, and meshes from Beta 2 cannot be decoded by Beta 1. » (incompatibles entre la bêta 1 et la bêta 2) |
Une note de bêta à bêta qui a survécu jusqu’à la page GA |
| « Weather Highlights is currently only available in US English. » | Apple la range sous Deprecations ; elle se lit comme une note de disponibilité |
Une dépréciation douce se trouve hors des titres Deprecations, la même que dans les notes iOS : .roundedBorder est deprecated: 100000.0 sur macOS avec le message « Use textFieldStyle(.bordered) with textInputBorderShape(.roundedRectangle) », en accord avec l’entrée New Features qui introduit TextInputBorderShape.3
Les dépréciations dures sont plus discrètes qu’elles n’en ont l’air. Le compilateur compare une version de dépréciation à votre cible de déploiement, pas au SDK : macos(10.15, 27) ne produit donc un avertissement que dans une cible dont le macOS minimal est 27.0. J’ai vérifié les types d’un fichier qui lit originalFilename, rend un type conforme à FileDocument et applique .roundedBorder, avec le SDK 27.0 et deux cibles : à arm64-apple-macos26.0, il a compilé sans le moindre diagnostic, et à arm64-apple-macos27.0, il en a produit exactement un, 'originalFilename' was deprecated in macOS 27: Use filename instead. FileDocument et .roundedBorder sont restés muets aux deux cibles.3 Une app Mac au plancher réaliste n’entendra parler d’aucun de ces points par le compilateur ; le grep de la liste ci-dessous tient lieu d’avertissement.
Quelles nouveautés changent le code que vous avez déjà ?
Tirer pour actualiser sur Mac. « In macOS 27.0, AppKit adds NSRefreshController, providing pull-to-refresh functionality for NSScrollView. You can set it with NSScrollView.refreshController, configure a target or action to handle user-initiated refreshes, and call endRefreshing when the refresh completes or beginRefreshing to start one programmatically. » (AppKit ajoute le tirer-pour-actualiser à NSScrollView, réglé via refreshController, avec une cible ou une action pour les actualisations lancées par l’utilisateur, puis endRefreshing ou beginRefreshing.) La classe et la propriété refreshController de NSScrollView sont toutes deux API_AVAILABLE(macos(27.0)) dans le SDK.23
La sélection de texte par gestes. « NSTextSelectionManager provides common text selection interactions (click, drag, shift-click, double/triple-click word/line/paragraph selection) to a NSView with a set of NSGestureRecognizers rather than overriding NSEvent mouse methods. NSTextView now uses NSTextSelectionManager » (la sélection de texte courante passe par des gesture recognizers plutôt que par des méthodes souris redéfinies, et NSTextView l’utilise désormais) et « Existing NSTextView subclasses that override mouseDown: continue to work through a binary-compatible fallback path. » (les sous-classes existantes qui redéfinissent mouseDown: continuent de fonctionner grâce à un repli compatible au niveau binaire.) La classe est macos(27.0).23 Combiné à la règle d’exclusivité plus haut, cela signifie qu’une vue de texte personnalisée qui redéfinit mouseDown: continue de fonctionner, mais qu’un gesture recognizer placé à côté risque désormais de céder la place à ceux du gestionnaire.
Des rôles pour les onglets. NSToolbarItemGroup et NSSegmentedControl gagnent une propriété role, API_AVAILABLE(macos(27.0)) pour les deux, avec NSToolbarItemGroup.Role (automatic, tabs, valueSelection) et NSSegmentedControlRole ; selon les notes, un rôle tabs est « read by VoiceOver as “tabs” » (lu par VoiceOver comme « tabs ») et reçoit « a distinct visual appearance. » (une apparence visuelle propre.) Le TabsPickerStyle de SwiftUI repose sur la même idée, et les inspecteurs l’adoptent automatiquement à la recompilation.23
Les coins actifs désactivés. « NSApplication.presentationOptions now includes the .disableScreenCornerInteractions option, which you can use to disable Hot Corners. » (nouvelle option pour désactiver les Hot Corners.) Dans l’en-tête, elle s’appelle NSApplicationPresentationDisableScreenCornerInteractions, API_AVAILABLE(macos(27.0)), bit 15 du masque d’options, et le commentaire au-dessus indique que « .autoHideDock or .hideDock must also be set for this option to take effect. » (.autoHideDock ou .hideDock doit aussi être défini pour que l’option agisse.)23
Les documents, réécrits. « In apps built with the 27.0 SDKs, the new ReadableDocument and WritableDocument protocols support asynchronous reading and writing, progress reporting, and direct access to document URLs, » (les nouveaux protocoles prennent en charge la lecture et l’écriture asynchrones, le suivi de progression et l’accès direct aux URL des documents) Document réunissant les deux, tandis que FileDocument et ReferenceFileDocument sont « now deprecated » (désormais obsolètes). Trois entrées dérivées modifient les conformités existantes : la closure makeFileWrapper de FileWrapperDocumentWriter « now receives a second argument, previous: FileWrapper?, » (reçoit désormais un second argument) et « Existing call sites must update their closures to accept the new parameter » (les sites d’appel existants doivent adapter leurs closures) ; les exigences read(from:progress:) et write(content:to:previous:progress:) sont « declared with @concurrent instead of nonisolated, » donc « Conforming types that previously used nonisolated should switch to @concurrent to match » (les types conformes doivent passer de nonisolated à @concurrent) ; et URLDocumentConfiguration « no longer conforms to Sendable. » (n’est plus Sendable.) Une surcharge de fileExporter exporte une collection de valeurs WritableDocument en un seul dialogue. Le problème connu de la même section : la progression « might not be presented. » (peut ne pas s’afficher.)2
Images, bordures, curseurs, menus. « AsyncImage now automatically caches downloaded images using HTTP caching protocols, » (AsyncImage met désormais en cache les images téléchargées selon les protocoles de cache HTTP) avec des initialiseurs URLRequest et View.asyncImageURLSession(_:) pour le piloter. TextInputBorderShape et textInputBorderShape(_:) arrivent avec le style .bordered. « On macOS, the Slider implementation no longer uses NSSlider, » (sur macOS, Slider n’utilise plus NSSlider) et les boutons Menu et Picker à bordure « no longer use NSPopUpButton in their implementation, » (ne reposent plus sur NSPopUpButton) si bien que le code de dessin ou d’accessibilité qui supposait le contrôle AppKit sous-jacent ne trouve plus rien. GeometryProxy gagne concentricCornerRadii et concentricCornerRadii(in:). Les modificateurs alert et confirmationDialog à élément de données remontent désormais jusqu’à macOS 12.0.2
StoreKit. « Offer code redemption APIs now return a VerificationResult when redemption completes, » (les API d’utilisation des codes d’offre renvoient désormais un VerificationResult) Transaction.OwnershipType.assigned et Transaction.RevocationType.assignmentRevoked « support volume purchases, » (prennent en charge les achats en volume) et « Transaction query methods now additionally return transactions assigned to the Managed Apple Account. » (les requêtes renvoient aussi les transactions attribuées au compte Apple géré.) Product.ProductType gagne les Bundles et Suites d’abonnements avec Product.SubscriptionInfo.BundledSubscription, et partnerName et partnerId arrivent dans les informations Advanced Commerce. L’interface contient assigned et BundledSubscription ; le cas de révocation ne s’écrit pas comme dans la note. Aucun fichier du SDK ne contient assignmentRevoked ; l’interface StoreKit déclare public static var assignmentRevocation sur Transaction.RevocationType, avec la valeur brute ASSIGNMENT_REVOKE. Le cas est @available(macOS 26.4, *) avec @backDeployed(before: macOS 27.0) : .assignmentRevocation passe donc la vérification de types à une cible 27.0 et exige if #available(macOS 26.4, *) sous ce plancher ; le nom donné par la note ne correspond à aucun membre, quelle que soit la cible. Une app Mac qui filtre les transactions par type de propriété voit désormais une troisième valeur.23
stat en Swift. « System now provides Swift APIs for the C stat, lstat, fstat, and fstatat system calls, » (System fournit désormais des API Swift pour ces appels système C) avec un type Stat et FilePath.stat() ; les notes indiquent aussi comme corrigé un conflit où « Custom FilePath or FileDescriptor extensions that make unqualified calls to stat() or stat(_) (without the Darwin. qualification) might conflict with the new Swift stat() instance methods. » (des extensions personnalisées qui appellent stat() sans qualification peuvent entrer en conflit avec les nouvelles méthodes d’instance.) public struct Stat figure dans l’interface de System.23
Images disque, machines virtuelles, Gatekeeper. « The new DiskImageKit framework provides Swift APIs for creating and managing standalone and stacked disk images in the Apple Sparse Image Format (ASIF) and raw disk image formats, for use with the Virtualization framework via VZDiskImageStorageDeviceAttachment. » (le nouveau framework crée et gère des images disque autonomes ou empilées, en ASIF ou en format brut, pour le framework Virtualization.) Le framework est présent dans le SDK. La redirection de ports vmnet de Virtualization « now support[s] port forwarding when communicating over loopback, » (fonctionne désormais aussi en loopback) et spctl gagne une commande purge « which will clean up Gatekeeper database entries for apps and executables which are no longer mounted. » (qui nettoie les entrées de la base Gatekeeper pour les apps et exécutables qui ne sont plus montés.) Le billet sur les conteneurs est l’endroit où ces API d’images disque trouvent leur usage pour qui scripte des VM.23
Manettes, vidéo, Metal. « The PlayStation® Access™ controller is now supported on macOS, iPadOS, and iOS. » (désormais pris en charge.) VTLowLatencySuperResolutionScalerConfiguration « now supports a 1.5x scale factor, » (prend désormais en charge un facteur 1,5) et l’interpolation d’images « supports arbitrary source dimensions up to 1080p. » (accepte des dimensions source quelconques jusqu’à 1080p.) Deux correctifs Metal concernent des échantillonneurs clamp-to-edge qui renvoyaient zéro, dont un propre à « the Apple 10 GPU family. »2
Foundation. Le correctif NSURL apparaît ici dans les mêmes termes que dans les notes iOS : « +[NSURL URLWithString:] no longer double-encodes the % of valid percent-escape sequences when encoding other invalid characters. » (ne double-encode plus le % des séquences d’échappement valides.) Dans le billet iOS, j’ai montré que le correctif suit le système sur lequel le code s’exécute, et qu’un build Mac du même code produisait encore l’ancien résultat %2520 sur macOS 26.6.2 ; attendez-vous au nouveau résultat sur 27.0 et à l’ancien sur toutes les 26.x.2
Sécurité matérielle. « arm64e.x1 introduces additional hardware security and performance instructions, including CPA2 for stronger MIE protection, » (de nouvelles instructions de sécurité et de performance, dont CPA2 pour renforcer la protection MIE) sur les « Mac computers with M6 or later chips » (Mac équipés d’une puce M6 ou ultérieure) ; la liste de cibles du stub DVDPlayback plus haut montre ce nom de tranche en conditions réelles. Le billet sur arm64e.x1 couvre le réglage de build.23
Problèmes connus à anticiper
- Les entités
photos.assetne compilent plus. « Existing entities that conformed to @AppEntity(schema : .photos.asset) in prior releases might no longer compile in the 27 SDKs because new properties were added to the schema in this release. » (les entités existantes peuvent ne plus compiler avec les SDK 27, car le schéma a gagné de nouvelles propriétés.) Le contournement consiste à adopter ces propriétés derrière une vérification de disponibilité ; le billet sur les notes iOS liste les 12 propriétés qu’exige le processeur de métadonnées, et les notes macOS portent la même entrée.2 - Schéma audio et Siri. « If you adopt the Audio App Schema domain, you might have trouble playing your content using Siri. » (avec le domaine Audio App Schema, la lecture via Siri peut poser problème.) Contournement : « Adopt an IntentValueQuery that takes the AudioSearch input, or index your entities in Spotlight. » (adopter une IntentValueQuery qui prend l’entrée AudioSearch, ou indexer vos entités dans Spotlight.)2
SpotlightSearchTooldéborde du modèle local. Sans configuration, « the tool’s description and parameter schema alone exceed the on-device model’s context window before any prompt is added » (la description de l’outil et son schéma de paramètres dépassent à eux seuls la fenêtre de contexte du modèle local, avant même tout prompt) ; la solution est un guide ciblé comme.focused(.documents).2- Files & Folders pour les processus sans bundle. Un processus sans bundle ID « cannot be granted access to specific app data containers or app group containers owned by other developer teams, » et le contournement d’Apple est Full Disk Access « for the duration of the requirement. » (le temps du besoin.) Les outils en ligne de commande qui lisent le conteneur d’une autre app sont le cas typique.2
- Extensions Safari non signées. Pendant leur développement, « unsigned extensions might not appear until rebuilt when using the “Allow Unsigned Extensions” checkbox. » (les extensions non signées peuvent n’apparaître qu’après recompilation avec cette case cochée.)2
- Tests StoreKit. « Changing the storefront or locale using
SKTestSessiondoesn’t propagate throughStorefront.updates, » (un changement de vitrine ou de langue viaSKTestSessionne se propage pas dansStorefront.updates) et les achats échoués « might display error dialogs even whendialogsDisabledis set to true. » (peuvent afficher des dialogues d’erreur même avecdialogsDisabledà true.) Les deux figurent comme corrigés dans les notes de la bêta 2 de 27.2, qui en ajoutent un nouveau : un achat d’abonnement inclus dans un bundle « incorrectly allows the user to unbundle instead of throwing an error. » (permet à tort de le sortir du bundle au lieu de lever une erreur.)24 - Shortcuts. Un intent qui utilise
DurationouLPLinkMetadata« might fail » (peut échouer) sous « Describe a change », et un paramètreUnionValueà deux types numériques affiche l’option deux fois ; n’en déclarez qu’un.2 - Disque de démarrage depuis macOS 11. « When a Mac is running macOS 11.0, you might not be able to select the boot volume of macOS 27.0 or later as the startup disk in System Settings. » (sous macOS 11.0, le volume de macOS 27.0 peut être impossible à choisir comme disque de démarrage dans System Settings.) Le contournement est le sélecteur de démarrage du bouton d’alimentation.2
- Siri, six entrées. La sélection de photos après une recherche, « Ask Siri » qui apparaît alors que Siri est désactivé, l’absence de commandes vocales pour des photos précises, des extraits Plans incomplets, des décomptes d’ajout aux albums, et des images d’entités hors SF Symbols qui n’apparaissent pas dans les résultats Siri des apps tierces. La dernière est à vérifier si vos entités portent des images personnalisées.2
Ce que je n’ai pas pu exécuter
Ce Mac tourne sous macOS 26.6.2, et une machine 27 reste ce qui me manque. Tout comportement du système décrit dans ce billet est le texte d’Apple, cité et signalé comme tel ; rien ci-dessus n’affirme qu’un système macOS 27 a fait quelque chose parce que je l’ai vu faire. Ce que j’ai pu exécuter, c’est le SDK : Xcode 27 (27A266a) embarque le SDK macOS 27.0 (26A425) sur tout Mac capable de l’installer, donc les annotations des en-têtes, les interfaces Swift, les dossiers de frameworks et les trois vérifications de types sont réels, datés du 26 septembre. Les deux points où le SDK et les notes divergent, le stub DVDPlayback et l’orthographe du cas de révocation, sont rapportés comme ce que montre le SDK, pas comme des affirmations sur ce que fera une machine 27 à l’exécution.3
Ce que je ferais cette semaine
- Archiver une fois depuis Xcode 27 et passer la liste des comportements liés au SDK 27 ci-dessus sur l’app avant la notarisation : images de menu, tout panneau d’ouverture qui définit des types de contenu, tout code qui parcourt le menu contextuel de
NSTextView, les accessoires de barre de titre et toute sheet qui héritait de modificateurs de contrôle.2 - Tester les gestes sur une machine 27 avant vos utilisateurs : un recognizer sur une vue parente qui se déclenchait en même temps que celui d’un enfant est désormais exclusif, et une sous-classe
NSGestureRecognizerpersonnalisée sanslocationInView:renvoie l’origine et journalise. Surveillez dans la console cette erreur qu’AppKit produit selon Apple ; le réglageNSGestureRecognizerCrashOnMissingOverridesest décrit pour les sous-classes qui n’atteignent pas d’état final, et les notes ne disent pas qu’il couvrelocationInView:.2 - Chercher avec grep
originalFilename,FileDocument,ReferenceFileDocument,.roundedBorder,deleteEventsetimport DVDPlayback; le premier n’avertit qu’à une cible 27.0, les trois suivants sont doux et muets,deleteEventsn’existe plus, etimport DVDPlaybackdevient une erreur le jour où vous relevez le plancher à 27.0.3 - Si vous distribuez un agent ou un daemon par téléchargement, retirez l’attribut de quarantaine de la liste de propriétés à l’installation, ou installez-la par un chemin qui n’en pose jamais ; les notes d’Apple indiquent que
launchdsur 27 ne charge plus de tels fichiers.2 - Si vous lisez le conteneur d’une autre équipe, supprimez ce code ou faites-le passer par Full Disk Access ; l’invite a disparu et le refus est la règle par défaut.2
- Consigner le numéro de build dans les rapports de bug depuis les deux sources :
ProcessInfosur la machine et leSystemVersion.plistdu SDK sur le Mac de build. Ils diffèrent, 26A428 contre 26A425, et un correctif présent dans l’un peut manquer dans l’autre.3
Questions fréquentes
Quand macOS 27 est-il sorti, et quel est son build ?
Le lundi 14 septembre 2026, sous le build 26A428, dans le flux des publications d’Apple aux côtés de Xcode 27 et des autres systèmes 27.0. Le SDK inclus dans Xcode 27 s’identifie comme 26A425.13
macOS 27.0.1 est-il sorti ?
Pas au 26 septembre 2026. L’index des notes de version macOS d’Apple liste « macOS 27 Golden Gate Release Notes » et « macOS 27.2 Golden Gate Beta 2 Release Notes » et rien entre les deux, et le flux des publications ne contient aucun 27.0.1, quelle que soit la plateforme. Ce billet recevra une note datée lorsqu’il sortira.17
Où sont les notes de version de macOS 27 ?
Sur le site de documentation développeur d’Apple, sous macOS Release Notes : une page pour la version, intitulée « macOS 27 Golden Gate Release Notes », avec 86 sections, General en tête, puis d’Accessory Access jusqu’à XQuartz. Les notes de la bêta 27.2 forment une page distincte, bien plus courte.24
Qu’est-ce qui est obsolète dans macOS 27 ?
Treize entrées sous des titres Deprecations : PHAssetResource.originalFilename, FileDocument, le renommage de calendar.deleteEvents, le framework DVDPlayback, Encrypted HFS+, l’accès direct à la base TCC, l’obligation du cycle de vie par scènes pour Catalyst, trois entrées Rosetta, AirPort Utility sur les installations propres, une note de bêta USDKit et une note de langue sur Weather Highlights. Seules les quatre premières concernent l’API. originalFilename ne gagne un avertissement qu’à une cible de déploiement 27.0, FileDocument reste muet, deleteEvents ne compile plus, et DVDPlayback avertit sous un plancher 27.0 et échoue à ce plancher.23
Mon app doit-elle être recompilée pour macOS 27 ?
Non, et c’est justement la recompilation qui change une partie du comportement. Les entrées liées au SDK 27 ne se déclenchent que lorsque vous archivez avec le SDK 27 ; les changements touchant les gestes, launchd, TCC, les conteneurs, TLS et Rosetta s’appliquent à tout binaire sur une machine 27, recompilé ou non, et une app liée à macOS 26.0 ou ultérieur y perd déjà ses images symboles de menu.2
DVDPlayback a-t-il disparu du SDK ?
Pas du SDK 27.0 sur disque : le dossier du framework, son .tbd, ses en-têtes et sa module map sont tous présents dans le MacOSX27.0.sdk de Xcode 27. Ses fonctions sont marquées indisponibles à une cible de déploiement 27.0 et obsolètes depuis 10.15 en dessous : un projet au plancher 27.0 ne peut donc pas compiler avec, ce que dit bien la note ; un projet au plancher plus bas le peut encore, avec un avertissement.3
Qu’est-ce qui a changé pour Mac Catalyst sous macOS 27 ?
L’obligation du cycle de vie par scènes s’applique, UIScene.extendStateRestoration et completeStateRestoration sont disponibles avec une liaison au SDK macCatalyst 27, les apps Catalyst ne créent plus de fenêtre quand on y bascule sans fenêtre ouverte, sauf activation depuis le Dock ou Spotlight, UIStepper fonctionne dans l’idiome Mac, et les boutons de barre d’outils manquants de la barre latérale sont indiqués comme corrigés. Les notes de la bêta de Xcode 27.2 ajoutent une mise en garde : le SDK macOS y « incorrectly report[s] 27.1 as a valid deployment target » (présente à tort 27.1 comme une cible de déploiement valide), et les builds Catalyst en 27.1 ou 27.2 « may be unable to use newly introduced API. » (peuvent ne pas pouvoir utiliser les API nouvellement introduites.)25
Sources
-
Apple, Releases, flux RSS récupéré le 26 septembre 2026 : « macOS 27.0 (26A428) » daté du lundi 14 septembre 2026 avec « Xcode 27 (27A266a) » ; « macOS 27.2 beta 2 (26B5091g) » daté du lundi 21 septembre 2026 ; aucun élément pour macOS 27.0.1, sur aucune plateforme, jusqu’à l’élément le plus récent, « TestFlight 4.4.0 » du 24 septembre. ↩↩↩↩↩↩↩
-
Apple, macOS 27 Golden Gate Release Notes, récupérées le 26 septembre 2026. Entrées citées, par numéro de radar : AppKit 170477566, 177605020, 180962967, 6938919, 173975472, 176048351, 176395420, 179374305, 179936632, 160867808, 162577742, 163365571 ; App Intents 176751155, 181800016, 177198033 ; NSGestureRecognizer 173551081, 175705302, 176396492 ; NSApplication 168692527 ; SwiftUI 105893279, 158160386, 158441552, 158441261, 177458781, 167448274, 165913417, 175594929, 170678002, 174628712, 180300890, 180301399, 180302015, 180302075, 178776840, 86580365, 151015350, 173362083, 173990195, 68559433, 78212597, 177185166, 179388848, 170480710, 180301165 ; UIKit 141837548, 161843040, 170479084 ; Mac Catalyst 69906818, 57819435, 176879915 ; Launch Daemons and Agents 166415497 ; TCC 90775556 ; System Integrity Protection 161835690, 178668601 ; Privacy & Security Settings 184660124 ; Network Security 176055825 ; Rosetta 168097174, 163213094, 171187112, 176042635 ; Core AI 174796039, 179282606 ; Apple Unified Logging System 160567675 ; PhotoKit 175412725 ; CoreStorage 175892420 ; DVDPlayback 179136240 ; AirPort Utility 158248382 ; USDKit 177417812 ; Weather Highlights 164408676 ; StoreKit 141012819, 156749517, 160501742, 167808780 ; StoreKit Testing in Xcode 184155259, 184255116 ; System 160612181, 177911316 ; Disk Images 177868758 ; Virtualization 64203273 ; Gatekeeper 123097648 ; Game Controller 168071382 ; VideoToolbox 177635243, 179040806 ; Metal 172520325, 177318505 ; Foundation 161588649 ; Hardware Security 152103975 ; Swift Charts 174168981 ; Core Spotlight 183770678 ; Safari 183044008 ; Shortcuts 166068090, 168315587 ; Startup Disk 166640903 ; Siri 171728298, 176299524, 176812955, 177116121, 177376984, 177984074. Les comptes (86 sections ; 68 New Features, 173 Resolved Issues, 18 Known Issues, 13 Deprecations) sont le décompte de l’auteur des éléments de liste sous chaque titre. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Examen par l’auteur du SDK macOS 27.0 inclus dans Xcode 27 (27A266a) sur un Mac sous macOS 26.6.2, 26 septembre 2026 :
MacOSX27.0.sdk/System/Library/CoreServices/SystemVersion.plistindiqueProductBuildVersion26A425 etProductVersion27.0 ;PHAssetResource.hporteAPI_DEPRECATED("Use filename instead", ios(9, 27), macos(10.15, 27), tvos(10, 27), visionos(1, 27))suroriginalFilename; l’interface SwiftUIarm64e-apple-macosporte@available(macOS, introduced: 11.0, deprecated: 100000.0, message: "Conform your type to Document instead.")surFileDocumentetdeprecated: 100000.0avec le messagetextFieldStyle(.bordered)surroundedBorder; l’interface macOS deAppIntentscontientdeleteEventune fois etdeleteEventszéro fois ;DVDPlayback.frameworkcontientDVDPlayback.tbd(223 symboles_DVDdistincts ; ciblesx86_64-macos,arm64e-macos,arm64e.x1-macos),Headers/DVDPlayback.hetModules/module.modulemap;swiftc -typecheckd’un fichier qui importeDVDPlaybacket appelleDVDInitialize()a produit « warning : ‘DVDInitialize()’ was deprecated in macOS 10.15: No longer supported » à-target arm64-apple-macos26.0et « error : ‘DVDInitialize()’ is unavailable in macOS: No longer supported » à-target arm64-apple-macos27.0;swiftc -typecheckd’un fichier qui litoriginalFilename, se conforme àFileDocumentet applique.roundedBordern’a produit aucun diagnostic à-target arm64-apple-macos26.0et un avertissement, « ‘originalFilename’ was deprecated in macOS 27: Use filename instead », à-target arm64-apple-macos27.0;NSRefreshController.het l’interface deNSTextSelectionManagersontAPI_AVAILABLE(macos(27.0));NSToolbarItemGroup.hdéclareNSToolbarItemGroupRoleavecNS_SWIFT_NAME(NSToolbarItemGroup.Role) API_AVAILABLE(macos(27.0), ios(27.0))et la propriétéroleenAPI_AVAILABLE(macos(27.0)), de même queNSSegmentedControl.h;NSMenuItem.hdéclarepreferredImageVisibilityenAPI_AVAILABLE(macos(27.0));NSGestureRecognizer.hdéclarecancellableByScrollGestureenAPI_AVAILABLE(macos(27.0));NSApplication.hdéclareNSApplicationPresentationDisableScreenCornerInteractionsenAPI_AVAILABLE(macos(27.0))avec pour valeur le bit 15 du masque ; les dossiers de frameworksDiskImageKit,NowPlayingetAccessoryAccesssont présents ; l’interface deSystemdéclarepublic struct Stat;swiftc -typecheckd’un fichier dont la closureChartbascule avecifentre unBarMarket unLineMarkn’a produit aucun diagnostic, ni à-target arm64-apple-macos26.0ni à-target arm64-apple-macos27.0; l’interface StoreKit contientassignedetBundledSubscriptionet déclarepublic static var assignmentRevocationsurTransaction.RevocationTypeavec la valeur bruteASSIGNMENT_REVOKE, alors qu’aucun fichier du SDK ne contient leassignmentRevokedde la note ; ce cas est déclaré@available(iOS 26.4, macOS 26.4, tvOS 26.4, watchOS 26.4, visionOS 26.4, *)avec@backDeployed(before: iOS 27.0, macOS 27.0, tvOS 27.0, watchOS 27.0, visionOS 27.0);ReferenceFileDocumentporte@available(macOS, introduced: 11.0, deprecated: 100000.0, message: "Use Document protocol instead.");NSScrollView.hdéclarerefreshControllerenAPI_AVAILABLE(macos(27.0)); le commentaire deNSMenuItem.hsurimagedit « in macOS 27 and later, AppKit determines the visibility of menu item images, and will typically hide images ». ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, macOS 27.2 Golden Gate Beta 2 Release Notes, récupérées le 26 septembre 2026 : General 186939138, AppKit 186955507, Notifications 187312007, Shortcuts 187499433, StoreKit Testing in Xcode 183933307, 184155259, 184255116, 186018916, citées. ↩↩↩
-
Apple, Xcode 27.2 Beta Release Notes, récupérées le 26 septembre 2026, SDK, Known Issues (187160501), citées. ↩
-
Apple, App Store Connect release notes, récupérées le 26 septembre 2026, entrée du 14 septembre 2026, citée intégralement dans le tableau. ↩
-
Apple, macOS Release Notes, index récupéré le 26 septembre 2026 : les entrées 27 sont « macOS 27 Golden Gate Release Notes » et « macOS 27.2 Golden Gate Beta 2 Release Notes ». ↩↩↩