Was ist neu in Apples Swift 4.2-Sprache?

Vor der geplanten Veröffentlichung von Swift 5 im Jahr 2019 hat Apple die Zwischenversion Swift 4.2 veröffentlicht.

Aktuelle Version: Was ist neu in Apples Swift 4.2?

Version 4.2 der Programmiersprache Swift von Apple bringt die Sprache einer stabilisierten Anwendungs-Binärschnittstelle (ABI) näher und ermöglicht die Binärkompatibilität für zukünftige Versionen. Die ABI-Stabilität ermöglicht die Binärkompatibilität zwischen Bibliotheken und Anwendungen, die mit verschiedenen Versionen der Sprache kompiliert wurden.

Obwohl Apples Ziel die Stabilität ist, ist Swift 4.2 nicht binärkompatibel mit früheren Versionen. Quellkompatibilität wird jedoch bereitgestellt. Der meiste mit dem Swift 4.0-Compiler erstellte Quellcode sollte sowohl mit dem Swift 4.2- als auch mit dem Swift 4.1-Compiler kompiliert werden.

Weitere neue Funktionen in Swift 4.2 sind:

  • Generische Verbesserungen, die durch den Abschluss der Unterstützung für bedingte Konformität verankert sind, die Menge des Boilerplate-Codes reduzieren und mehr Code wiederverwendbar machen.
  • Zu den Standardfunktionen der Bibliothek gehören Verbesserungen des Hashable-Protokolls und eine einheitliche Reihe von Randomisierungsfunktionen und -protokollen.
  • Kompilierungsunterstützung im Batch-Modus, wodurch die Erstellungszeiten verbessert werden.
  • Eine Änderung der Aufrufkonvention für den Aufbewahrungs- / Freigabezyklus, um die Codegröße zu reduzieren und die Leistung zu verbessern.
  • Unterstützung für rekursive Metadaten.
  • Kompaktere Reflexionsmetadaten.
  • Ablenkungsargumente an Anrufstandorten.
  • Verschiedene Fehlerkorrekturen, z. B. für die Vererbung generischer Initialisierer.
  • Die compilerDirektive, die syntaktisch der #if swiftVersionsprüfung entspricht, jedoch mit der Version des Compilers verglichen wird, unabhängig davon, welcher Kompatibilitätsmodus ausgeführt wird.
  • Neue Swift-Paketmanagerfunktionen, einschließlich Unterstützung für den Stapelmodus, mit Zielen, die jetzt in diesem Modus kompiliert werden. verbesserte Schemaerzeugungslogik; und automatische Xcode-Projektgenerierung.

Wo kann ich Swift 4.2 herunterladen?

Sie können Swift 4.2 herunterladen, indem Sie die Xcode 10.0-IDE von Apple herunterladen.

Weitere Pläne für Swift 4.2 sind:

  • Verbesserungen der Leistung zur Kompilierungszeit.
  • Zeichenfolgen sind jetzt 16 Bytes anstelle von 24 Bytes. Apple sieht darin einen guten Kompromiss zwischen Speichernutzung und Leistung, während es groß genug ist, um kleine Zeichenfolgen zu optimieren.
  • APIs werden zur einfacheren Generierung von Zufallszahlen angeboten.
  • Die has importBuild-Konfigurationsanweisung drückt die Absicht beim Teilen von Code zwischen iOS und MacOS besser aus.

Vorherige Version: Was ist neu in Swift 4.1

Swift 4.1 wurde Ende März 2018 veröffentlicht und erweitert die Sprache um weitere Generika sowie um Verbesserungen. Version 4.1 ist quellkompatibel mit Swift 4.0.

In der Version 4.1 implementierte generikbezogene Vorschläge enthalten bedingte Konformitäten, die den Gedanken zum Ausdruck bringen, dass ein generischer Typ nur dann einem bestimmten Protokoll entspricht, wenn Typargumente bestimmte Anforderungen erfüllen. Diese Funktion wird voraussichtlich große Auswirkungen auf die Swift-Standardbibliothek haben. Weitere generische Verbesserungen sind:

  • Den Compiler synthetisieren Equatableund Hashableanpassen lassen, um Boilerplate und Komplexität zu reduzieren.
  • Erstellen von Standardbibliotheksindextypen Hashable.
  • Die Beseitigung der damit verbundenen Art, IndexDistance, aus Collection und ändern Anwendungen auf die konkrete Art, Intstatt.

In Swift 4.1 finden Sie auch weitere Möglichkeiten zum Konfigurieren von Builds, z. B. eine Optimierung der Codegröße und einfachere Mechanismen für die Unterstützung von Plattformen und Umgebungen.

Änderungen unter der Haube in Version 4.1 wurden im Rahmen eines Plans zur Stabilisierung des ABI (Application Binary Interace) in Swift 5 vorgenommen, der Ende dieses Jahres geplant ist. Diese Änderungen unter der Haube umfassen die Verwendung eines Felds mit Wortgröße im nativen Objektheader für die Referenzzählung und die Prüfung von Laufzeitfunktionen. Außerdem werden verschiedene Sammlungsverpackungen durch die Verwendung von bedingter Konformität reduziert.

Swift 4.1 erweitert den Swift Package Manager. Es löst jetzt Abhängigkeiten in Paketdiagrammen auf, die URL-Schemata wie sshund verwenden http. Außerdem wurde die Leistung für Paketdiagramme mit gemeinsam genutzten Abhängigkeiten gesteigert.

Das 4.1-Upgrade enthält auch Swift Evolution-Vorschläge, einschließlich des Entfernens von Eigentumsschlüsselwörtern weakund unownedfür Eigenschaftsdeklarationen in einem Protokoll. Dies geschieht aus Gründen der Klarheit. Außerdem werden modulübergreifende Strukturinitialisierer eingeschränkt. Dies entspricht einer vorhandenen Einschränkung für Klassen.

Wo kann ich Swift 4.1 herunterladen?

Sie können das Swift 4.1-Upgrade von der Swift-Download-Webseite herunterladen. Swift 4.1 ist auch mit der Xcode 9.3-IDE verfügbar, die einen Code-Migrator enthält, um viele Quelländerungen zu verarbeiten.

Vorherige Version: Was ist neu in Swift 4.0

Swift 4.0 ist ein wichtiges Upgrade von Apples Swift, dem drei Jahre alten Nachfolger der Objective-C-Sprache, die für die Entwicklung von MacOS- und iOS-Anwendungen verwendet wird.

Das Swift 4-Upgrade erweitert den Swift Package Manager und bietet Entwicklern neue Kompatibilitätsmodi. Laut Apple macht Swift 4 Swift auch stabiler und verbessert seine Standardbibliothek. Swift 4 ist weitgehend quellkompatibel mit Swift 3 und wird als Teil der Apple Xcode 9 IDE ausgeliefert.

Was ist neu im Paketmanager von Swift 4?

Swift Package Manager, das in Swift 3 eingeführt wurde, ist ein Tool zum Verteilen von Code. Es ist in das Swift-Buildsystem integriert, um Prozesse wie das Herunterladen, Kompilieren und Verknüpfen von Abhängigkeiten zu automatisieren. Zu den Verbesserungen im Paketmanager von Swift 4 gehören:

  • Eine übersichtlichere Paket-API, mit der Pakete neue Einstellungen festlegen können. Diese Einstellungen geben Entwicklern mehr Kontrolle über das Erstellen von Paketen und die Organisation von Quellen auf der Festplatte.
  • Die Entwicklung mehrerer Pakete im Tandem wurde vereinfacht.
  • Formalisierung von Paketprodukten, um zu steuern, welche Bibliotheken ein Paket für Clients veröffentlicht.
  • Paketaufbauten unter MacOS werden jetzt in einer Sandbox ausgeführt, wodurch der Netzwerkzugriff und die Änderung des Dateisystems verhindert werden, um die Reichweite böswilliger Manifeste zu verringern.

Neue Kompatibilitätsmodi in Swift 4 unterstützen die Migration

Durch die neuen Kompatibilitätsmodi von Swift 4 müssen Sie möglicherweise keinen Code mehr ändern, um die neue Version des Compilers verwenden zu können. Es werden zwei Modi unterstützt, darunter der Swift 3.2-Modus, der die meisten mit Swift 3.x-Compilern erstellten Quelldateien akzeptiert, und der Swift 4.0-Modus, der Swift 4- und API-Änderungen enthält.

Apple sagte, dass für viele Projekte eine gewisse Quellmigration erforderlich sein wird, aber die Anzahl der Quelländerungen ist im Vergleich zu vielen früheren größeren Änderungen zwischen Swift-Versionen „recht bescheiden“. Durch die Einführung der Kompatibilitätsmodi in Swift 4 haben Entwickler mehr Kontrolle über das Migrationstempo.

In Swift 4 gibt es zahlreiche Sprachverbesserungen

Swift 4 führt verschiedene Sprachverbesserungen ein, darunter:

  • Eine schnellere und benutzerfreundlichere StringImplementierung, die die Unicode-Korrektheit beibehält und die Entwicklung und Verwendung von Teilzeichenfolgen unterstützt.
  • Verbesserte Verwendung und Verwaltung von Sammlungstypen.
  • Durchsetzung des exklusiven Zugriffs auf den Speicher, bei dem potenzielle Änderungen von Variablen bei jedem anderen Zugriff auf diese Variable exklusiv sein müssen.
  • Archivierungs- structund enumTypisierungsfähigkeit.
  • Typensichere Serialisierung in externe Formate wie JSON.
  • Protokollorientierte Ganzzahlen, die Integer-APIs bereinigen und für die generische Programmierung nützlicher machen.
  • Unterstützung von whereKlauseln zur Einschränkung der zugehörigen Typen. Bisher konnten zugeordnete Typen nur einfache Vererbungsbeschränkungen ausdrücken und keine komplexeren Einschränkungen, die generischen Typen mit der where Klausel zur Verfügung stehen.
  • Aufnahme des swift runBefehls zum Erstellen und Ausführen einer im aktuellen Paket definierten ausführbaren Datei.
  • Entfernen der final Schlüsselwortunterstützung beim Deklarieren von Funktionen in Protokollerweiterungen.
  • Verbesserte Interaktion zwischen privateDeklarationen und Erweiterungen, wobei die privateZugriffssteuerung erweitert wurde, sodass in einer Erweiterung eines Typs definierte Mitglieder denselben Zugriff haben wie Mitglieder, die im Typ selbst definiert sind, solange sich Typ und Erweiterung in derselben Quelldatei befinden.