7 puntos por GN⁺ 2024-09-18 | 2 comentarios | Compartir por WhatsApp
  • Esta versión expande Swift a más plataformas y dominios
  • Swift es muy conocido como lenguaje para desarrollo de apps, pero también es excelente para bibliotecas, servicios a escala de internet y código donde el rendimiento es crítico
  • Swift 6 se amplía aún más con nuevas capacidades de programación de bajo nivel, un subconjunto del lenguaje para Swift embebido, soporte ampliado para Linux y Windows, y nuevas API multiplataforma

Lenguaje y biblioteca estándar

Concurrencia

  • Swift 6 ofrece seguridad para prevenir carreras de datos en código concurrente mediante un nuevo modo del lenguaje.
  • Proporciona advertencias de seguridad frente a carreras de datos mediante la bandera del compilador -strict-concurrency=complete.
  • Incluye una nueva biblioteca de sincronización con API de concurrencia de bajo nivel.

Typed throws

  • Ahora es posible especificar en la firma el tipo de error que una función puede lanzar.
  • Es útil para pasar tipos de error en código genérico o en entornos con asignación de memoria restringida.

Propiedad

  • Mejora el rendimiento al integrar los tipos no copiables, introducidos en Swift 5.9, con el sistema de genéricos.
  • Usa la sintaxis ~Copyable para modelar recursos y optimizar el rendimiento.

Interoperabilidad con C++

  • Swift 6 soporta tipos move-only de C++, métodos virtuales, argumentos predeterminados y más.
  • La anotación SWIFT_NONCOPYABLE permite exponer tipos de C++ como tipos no copiables.

Swift embebido

  • Incluye un subconjunto del lenguaje y un modo de compilación para desarrollo de software embebido.
  • Soporta objetivos bare metal ARM y RISC-V.

Enteros de 128 bits

  • Agrega tipos enteros con signo y sin signo de 128 bits.

Mejoras de productividad

  • Introduce varias funciones para mejorar la productividad, como count(where:).

Depuración

Resúmenes personalizados de LLDB con @DebugDescription

  • El macro @DebugDescription permite personalizar cómo se muestran los objetos en LLDB.

Mejoras de rendimiento al iniciar mediante módulos explícitos

  • Mejora significativamente el rendimiento de inicio del depurador usando compilaciones con módulos explícitos.

Bibliotecas

Foundation

  • Unifica la implementación de Foundation en todas las plataformas.
  • Extiende a Linux y Windows la implementación en Swift usada en macOS e iOS.

Swift Testing

  • Introduce una nueva biblioteca de pruebas llamada Swift Testing.
  • Ayuda a escribir y organizar pruebas mediante macros.

Soporte de plataformas

SDK totalmente estático para Linux

  • Permite compilar ejecutables para Linux con enlace completamente estático.

Nuevas distribuciones de Linux

  • Agrega soporte oficial para Debian, Fedora y Ubuntu 24.04.

Rendimiento de compilación en Windows

  • Ofrece toolchains precompilados para la arquitectura arm64.
  • El gestor de paquetes de Swift paraleliza las compilaciones por defecto en Windows.

Próximos pasos

Descargar Swift 6

  • Puedes instalar el toolchain oficial de Swift 6 en Swift.org/install.

Empezar con Swift

  • El libro del lenguaje de programación Swift fue actualizado para reflejar la sintaxis y las funciones más recientes de Swift 6.

Explorar el ecosistema de paquetes

  • Puedes explorar distintos paquetes en Swift.org/packages.

Participar

  • Puedes compartir comentarios y experiencias sobre Swift 6 para contribuir al futuro desarrollo del lenguaje, las herramientas, el ecosistema de paquetes y la comunidad.

Resumen de GN⁺

  • Swift 6 es una versión importante que se expande a diversas plataformas y dominios.
  • Incluye varias funciones nuevas como concurrencia, interoperabilidad con C++ y Swift embebido.
  • Introduce nuevas bibliotecas como Swift Testing y mejoras de productividad.
  • Amplía el soporte para Linux y Windows y mejora el rendimiento.
  • Swift 6 ofrece a los desarrolladores más posibilidades y eficiencia.

2 comentarios

 
GN⁺ 2024-09-18
Opiniones de Hacker News
  • Swift se está muriendo lentamente debido a los conflictos inherentes de su gobernanza

    • Existe un conflicto entre la comunidad open source del Swift Working Group™ y Apple como empresa
    • Como Apple paga la mayoría de los salarios, Apple tiene mayor influencia
    • La deuda técnica, como las excepciones del compilador codificadas a mano, permanece para siempre en la base de código del compilador
    • Apple empuja conceptos a medio terminar sin discusión para hacer que la sintaxis de SwiftUI se vea bonita
    • Sigue siendo un lenguaje increíble, pero parece difícil que sobreviva bien durante los próximos 10 años si Apple no lo suelta
  • Estoy aprendiendo Swift recién ahora y hasta el momento me parece bien

    • Al usar SwiftUI, aparece con frecuencia el error "compilation failed: the compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions"
    • Sorprende que el compilador pida ayuda
  • Gracias a la concurrencia segura y a los throws tipados, Swift empieza a parecerse a un Rust más amigable

    • No creo que lo use a diario porque su ecosistema de paquetes es pequeño
    • Espero que Foundation multiplataforma avance en una dirección que mejore esto
  • Swift 6 es un gran salto para el desarrollo multiplataforma con baterías incluidas

    • Foundation ofrece mucho por defecto, así que es una gran ventaja
    • Swift 6 parece un intento de reemplazar a largo plazo a C, C++, Rust, Zig y otros, ya que tiene suficientes mejoras de bajo nivel y capacidades multiplataforma
  • Empecé a aprender Swift y SwiftUI hace poco, y me sorprendió lo complejo que es el lenguaje

    • Es especialmente complejo en lo relacionado con variables de instancia reactivas
    • No entiendo conceptos como @observableObject
    • Hay tantas formas de hacerlo que uno termina probando hasta que funcione
  • Pensé que Swift se quedaría solo en macOS, pero me parece muy interesante

    • Hubo problemas al convertir el compilador de Swift del paquete de Ubuntu a Debian
    • La mayoría de las funciones funcionan, pero cosas simples como la señal sigterm no funcionan
    • Swift es un lenguaje fantástico y creo que hoy es uno de los más avanzados e inteligentes
    • Es asombroso ver cómo está implementado SwiftUI
    • El lenguaje es fácil de usar y está lleno de funciones avanzadas e ideas pensadas para el uso real de los desarrolladores
    • Pero los mensajes de error del compilador y la documentación son muy poco amigables
    • La mayoría de las bibliotecas todavía no funcionan bien en Linux, pero si logra equilibrar seguridad, velocidad y placer de desarrollo, tiene un futuro prometedor
  • Swift necesita decidir qué quiere ser y mantenerse en eso

    • Tiene demasiado azúcar sintáctico y conceptos a medio terminar
  • Probé SwiftGodot, y usar Swift para desarrollo de juegos me resulta más interesante que las pausas del GC de C#

    • Todavía no admite compartir bibliotecas de desarrollo para Windows
    • Los tiempos de compilación son largos
    • El changelog menciona mejoras en el Swift Package Manager multihilo en Windows
  • Poder migrar gradualmente es muy bueno

    • Pasarse al modo Swift-6 puede ser una carga, incluyendo las verificaciones de seguridad contra carreras de datos
    • Se pueden usar las herramientas nuevas y seguir usando la versión 5.10 del lenguaje
    • El mismo paquete puede compilarse en dos modos de lenguaje, así que las bibliotecas pueden actualizarse de versión y seguir dando soporte a clientes que aún no están listos
  • El lenguaje Swift se ha convertido en un monstruo

 
bus710 2024-09-19

Parece que, para empezar con el gran lenguaje que es Swift, no queda más remedio que adoptar el ecosistema de Apple, bastante costoso, y eso termina siendo una barrera nada menor para los desarrolladores.