7 Punkte von GN⁺ 2024-09-18 | 2 Kommentare | Auf WhatsApp teilen
  • Diese Veröffentlichung erweitert Swift auf mehr Plattformen und Einsatzbereiche
  • Swift ist vor allem als Sprache für die App-Entwicklung bekannt, eignet sich aber auch hervorragend für Bibliotheken, Services im Internet-Maßstab und leistungskritischen Code
  • Swift 6 erweitert dies weiter mit neuen Low-Level-Programmierfunktionen, einer Embedded-Swift-Sprachuntermenge, erweitertem Linux- und Windows-Support sowie neuen plattformübergreifenden APIs

Sprache und Standardbibliothek

Nebenläufigkeit

  • Swift 6 bietet über einen neuen Sprachmodus Sicherheit, die Datenrennen in nebenläufigem Code verhindert.
  • Über das Compiler-Flag -strict-concurrency=complete werden Warnungen zur Sicherheit vor Datenrennen bereitgestellt.
  • Mit einer neuen Synchronisierungsbibliothek sind Low-Level-APIs für Nebenläufigkeit enthalten.

Typed throws

  • Der Fehlertyp, den eine Funktion wirft, kann nun in der Signatur angegeben werden.
  • Das ist nützlich, um Fehlertypen in generischem Code weiterzureichen oder in Umgebungen mit eingeschränkter Speicherzuweisung.

Ownership

  • Nicht kopierbare Typen, die in Swift 5.9 eingeführt wurden, werden in das Generics-System integriert, um die Performance zu verbessern.
  • Mit der Syntax ~Copyable lassen sich Ressourcen modellieren und die Performance optimieren.

C++-Interoperabilität

  • Swift 6 unterstützt Move-only-Typen, virtuelle Methoden, Standardargumente und mehr aus C++.
  • Über die Annotation SWIFT_NONCOPYABLE können C++-Typen als nicht kopierbare Typen offengelegt werden.

Embedded Swift

  • Enthält eine Sprachuntermenge und einen Compiler-Modus für die Entwicklung eingebetteter Software.
  • Unterstützt Bare-Metal-Ziele für ARM und RISC-V.

128-Bit-Ganzzahlen

  • Fügt vorzeichenbehaftete und vorzeichenlose 128-Bit-Ganzzahltypen hinzu.

Verbesserte Produktivität

  • Führt mehrere Funktionen zur Produktivitätssteigerung ein, etwa count(where:).

Debugging

Benutzerdefinierte LLDB-Zusammenfassungen über @DebugDescription

  • Mit dem Makro @DebugDescription lässt sich anpassen, wie Objekte in LLDB angezeigt werden.

Bessere Start-Performance durch explizite Module

  • Die Verwendung expliziter Modul-Builds verbessert die Start-Performance des Debuggers deutlich.

Bibliotheken

Foundation

  • Vereinheitlicht die Implementierung von Foundation auf allen Plattformen.
  • Erweitert die auf macOS und iOS verwendete Swift-Implementierung auf Linux und Windows.

Swift Testing

  • Führt mit Swift Testing eine neue Testbibliothek ein.
  • Hilft mit Makros beim Schreiben und Organisieren von Tests.

Plattformunterstützung

Vollständig statisches SDK für Linux

  • Es können ausführbare Dateien mit vollständig statischem Linking für Linux gebaut werden.

Neue Linux-Distributionen

  • Fügt offiziellen Support für Debian, Fedora und Ubuntu 24.04 hinzu.

Build-Performance unter Windows

  • Stellt vorgebaute Toolchains für die arm64-Architektur bereit.
  • Der Swift Package Manager parallelisiert Builds unter Windows standardmäßig.

Nächste Schritte

Swift 6 herunterladen

  • Die offizielle Swift-6-Toolchain kann unter Swift.org/install installiert werden.

Mit Swift loslegen

  • Das Buch zur Programmiersprache Swift wurde aktualisiert, damit es die aktuelle Swift-6-Syntax und die neuen Funktionen abbildet.

Paket-Ökosystem erkunden

  • Unter Swift.org/packages lassen sich verschiedene Pakete erkunden.

Mitmachen

  • Wer Feedback und Erfahrungen zu Swift 6 teilt, kann zur weiteren Entwicklung der Sprache, der Tools, des Paket-Ökosystems und der Community beitragen.

Zusammenfassung von GN⁺

  • Swift 6 ist ein wichtiges Release, das auf verschiedene Plattformen und Einsatzbereiche ausgeweitet wurde.
  • Es enthält mehrere neue Funktionen wie Nebenläufigkeit, C++-Interoperabilität und Embedded Swift.
  • Es führt neue Bibliotheken wie Swift Testing und verschiedene Produktivitätsverbesserungen ein.
  • Der Support für Linux und Windows wird erweitert und die Performance verbessert.
  • Swift 6 bietet Entwicklerinnen und Entwicklern mehr Möglichkeiten und Effizienz.

2 Kommentare

 
GN⁺ 2024-09-18
Hacker-News-Kommentare
  • Swift stirbt aufgrund inhärenter Konflikte in seiner Governance langsam

    • Es gibt einen Konflikt zwischen der Swift Working Group™ Open-Source-Community und dem Unternehmen Apple
    • Da Apple den Großteil der Gehälter bezahlt, hat Apple den größeren Einfluss
    • Technische Schulden wie hartkodierte Compiler-Ausnahmen bleiben dauerhaft in der Compiler-Codebasis bestehen
    • Apple drückt halbfertige Konzepte ohne Diskussion durch, um die SwiftUI-Syntax hübscher zu machen
    • Es ist immer noch eine erstaunliche Sprache, aber wenn Apple sie nicht loslässt, wird sie die nächsten 10 Jahre wohl kaum gut überstehen
  • Ich lerne Swift gerade erst und finde es bisher in Ordnung

    • Bei der Verwendung von SwiftUI tritt häufig der Fehler auf: "Kompilierung fehlgeschlagen: Der Compiler kann diesen Ausdruck nicht in angemessener Zeit typprüfen; versuchen Sie, den Ausdruck in einzelne Teilausdrücke aufzuteilen"
    • Es ist schockierend, dass der Compiler um Hilfe bittet
  • Dank sicherer Concurrency und typisiertem throws wirkt Swift zunehmend wie ein zugänglicheres Rust

    • Wegen des kleinen Paket-Ökosystems würde ich es wohl nicht täglich verwenden
    • Ich hoffe, dass die plattformübergreifende Foundation das verbessert
  • Swift 6 ist ein großer Sprung für plattformübergreifende Entwicklung mit Batteries Included

    • Dass Foundation standardmäßig viel mitbringt, ist ein großer Vorteil
    • Swift 6 hat genug Low-Level-Verbesserungen und plattformübergreifende Funktionen, dass es wie ein Versuch wirkt, C, C++, Rust, Zig usw. langfristig zu ersetzen
  • Ich habe vor Kurzem angefangen, Swift und SwiftUI zu lernen, und war überrascht, wie komplex die Sprache ist

    • Besonders komplex ist es bei reaktiven Instanzvariablen
    • Konzepte wie @observableObject verstehe ich nicht
    • Es gibt mehrere Wege, sodass ich am Ende einfach Dinge ausprobiere, bis es funktioniert
  • Ich dachte, Swift würde auf macOS beschränkt bleiben, aber es ist sehr interessant

    • Es gab Probleme, als ich den Swift-Compiler aus dem Ubuntu-Paket nach Debian konvertiert habe
    • Die meisten Funktionen arbeiten, aber einfache Dinge wie das sigterm-Signal funktionieren nicht
    • Swift ist eine fantastische Sprache und meiner Meinung nach heute eine der am weitesten entwickelten und klügsten Sprachen
    • Es ist erstaunlich, wenn man sieht, wie SwiftUI implementiert ist
    • Die Sprache ist leicht zu benutzen und voller fortgeschrittener Funktionen und Ideen, die die tatsächliche Nutzung durch Entwickler berücksichtigen
    • Allerdings sind Compiler-Fehlermeldungen und Dokumentation sehr unfreundlich
    • Die meisten Bibliotheken funktionieren unter Linux noch nicht gut, aber wenn man Sicherheit, Geschwindigkeit und Entwicklungsfreude ausbalanciert, ist die Zukunft vielversprechend
  • Swift muss entscheiden, was es sein will, und dann dabei bleiben

    • Es gibt zu viel syntaktischen Zucker und zu viele halbfertige Konzepte
  • Ich habe SwiftGodot ausprobiert, und Swift für Spieleentwicklung zu verwenden ist interessanter als die GC-Latenz von C#

    • Das Teilen von Bibliotheken für die Windows-Entwicklung wird noch nicht unterstützt
    • Die Kompilierzeiten sind lang
    • Im Changelog werden Verbesserungen am multithreaded Swift Package Manager unter Windows erwähnt
  • Dass man schrittweise migrieren kann, ist sehr gut

    • Der Umstieg auf den Swift-6-Modus kann belastend sein, unter anderem wegen der Sicherheitsprüfungen auf Datenrennen
    • Man kann die neuen Tools nutzen und trotzdem weiterhin die Sprache der Version 5.10 verwenden
    • Dasselbe Paket kann in zwei Sprachmodi gebaut werden, sodass Bibliotheken Versionsupdates durchführen und dennoch Clients unterstützen können, die noch nicht bereit sind
  • Die Swift-Sprache ist zu einem Monster geworden

 
bus710 2024-09-19

Es scheint, dass es für Entwickler keine kleine Hürde ist, dass man, um mit der großartigen Sprache Swift zu beginnen, praktisch gezwungen ist, das recht teure Apple-Ökosystem einzuführen.