5P by neo 2일전 | favorite | 댓글 2개
  • 이 릴리스는 Swift를 더 많은 플랫폼과 도메인으로 확장함
  • Swift는 앱 개발 언어로 잘 알려져 있지만, 라이브러리, 인터넷 규모의 서비스, 성능이 중요한 코드 등 다양한 용도로도 훌륭함
  • Swift 6는 새로운 저수준 프로그래밍 기능, 임베디드 Swift 언어 서브셋, 확장된 Linux 및 Windows 지원, 새로운 크로스 플랫폼 API 등을 통해 더 확장됨

언어와 표준 라이브러리

동시성

  • Swift 6는 새로운 언어 모드를 통해 동시성 코드에서 데이터 경합을 방지하는 안전성을 제공함.
  • -strict-concurrency=complete 컴파일러 플래그를 통해 데이터 경합 안전성 경고를 제공함.
  • 새로운 동기화 라이브러리로 저수준 동시성 API를 포함함.

Typed throws

  • 함수가 던지는 오류 타입을 서명에 명시할 수 있게 됨.
  • 제네릭 코드에서 오류 타입을 전달하거나 메모리 할당이 제한된 환경에서 유용함.

소유권

  • Swift 5.9에서 도입된 비복사 타입을 제네릭 시스템과 통합하여 성능을 향상시킴.
  • ~Copyable 구문을 사용하여 리소스를 모델링하고 성능을 최적화함.

C++ 상호 운용성

  • Swift 6는 C++의 move-only 타입, 가상 메서드, 기본 인수 등을 지원함.
  • SWIFT_NONCOPYABLE 주석을 통해 C++ 타입을 비복사 타입으로 노출 가능함.

임베디드 Swift

  • 임베디드 소프트웨어 개발을 위한 언어 서브셋과 컴파일 모드를 포함함.
  • ARM 및 RISC-V 베어 메탈 타겟을 지원함.

128비트 정수

  • 서명된 및 서명되지 않은 128비트 정수 타입을 추가함.

생산성 향상

  • count(where:)와 같은 생산성 향상을 위한 여러 기능을 도입함.

디버깅

@DebugDescription을 통한 사용자 정의 LLDB 요약

  • @DebugDescription 매크로를 사용하여 LLDB에서 객체를 표시하는 방법을 사용자 정의 가능함.

명시적 모듈을 통한 시작 성능 향상

  • 명시적 모듈 빌드를 사용하여 디버거의 시작 성능을 크게 향상시킴.

라이브러리

Foundation

  • 모든 플랫폼에서 Foundation의 구현을 통합함.
  • macOS와 iOS에서 사용된 Swift 구현을 Linux와 Windows로 확장함.

Swift Testing

  • Swift Testing이라는 새로운 테스트 라이브러리를 도입함.
  • 매크로를 사용하여 테스트를 작성하고 조직하는 데 도움을 줌.

플랫폼 지원

완전 정적 SDK for Linux

  • Linux용 완전 정적 링크 실행 파일을 빌드할 수 있음.

새로운 Linux 배포판

  • Debian, Fedora, Ubuntu 24.04에 대한 공식 지원을 추가함.

Windows 빌드 성능

  • arm64 아키텍처에 대한 사전 빌드된 툴체인을 제공함.
  • Swift 패키지 관리자가 Windows에서 기본적으로 빌드를 병렬화함.

다음 단계

Swift 6 다운로드

  • Swift.org/install에서 공식 Swift 6 툴체인을 설치할 수 있음.

Swift 시작하기

  • Swift 프로그래밍 언어 책이 최신 Swift 6 구문과 기능을 반영하도록 업데이트됨.

패키지 생태계 탐색

  • Swift.org/packages에서 다양한 패키지를 탐색할 수 있음.

참여하기

  • Swift 6에 대한 피드백과 경험을 공유하여 언어, 도구, 패키지 생태계, 커뮤니티의 미래 발전에 기여할 수 있음.

GN⁺의 정리

  • Swift 6는 다양한 플랫폼과 도메인으로 확장된 주요 릴리스임.
  • 동시성, C++ 상호 운용성, 임베디드 Swift 등 여러 새로운 기능을 포함함.
  • Swift Testing과 같은 새로운 라이브러리와 생산성 향상 기능을 도입함.
  • Linux와 Windows에 대한 지원을 확장하고 성능을 향상시킴.
  • Swift 6는 개발자에게 더 많은 가능성과 효율성을 제공함.
Hacker News 의견
  • Swift는 거버넌스의 내재된 갈등으로 인해 천천히 죽어가고 있음

    • Swift Working Group™ 오픈 소스 커뮤니티와 Apple 기업 간의 갈등이 존재함
    • Apple이 대부분의 급여를 지불하기 때문에 Apple이 더 큰 영향력을 가짐
    • 하드코딩된 컴파일러 예외와 같은 기술 부채가 컴파일러 코드베이스에 영구적으로 존재함
    • Apple이 SwiftUI 문법을 예쁘게 만들기 위해 반쯤 완성된 개념을 논의 없이 밀어붙임
    • 여전히 놀라운 언어지만 Apple이 놓아주지 않으면 향후 10년 동안 잘 살아남기 어려울 것 같음
  • Swift를 새로 배우고 있으며 현재까지는 괜찮다고 생각함

    • SwiftUI를 사용할 때 "컴파일 실패: 컴파일러가 이 표현식을 합리적인 시간 내에 타입 체크할 수 없음; 표현식을 개별 서브 표현식으로 나누어 보세요"라는 오류가 자주 발생함
    • 컴파일러가 도움을 요청하는 것이 충격적임
  • 안전한 동시성과 타입이 지정된 throws 덕분에 Swift가 더 친근한 Rust처럼 보이기 시작함

    • 패키지 생태계가 작기 때문에 일상적으로 사용하지는 않을 것 같음
    • 크로스 플랫폼 Foundation이 이를 개선하는 방향으로 나아가기를 희망함
  • Swift 6는 크로스 플랫폼 배터리 포함 개발에 있어 큰 도약임

    • Foundation이 많은 것을 기본적으로 제공하기 때문에 큰 장점임
    • Swift 6는 저수준 개선과 크로스 플랫폼 기능이 충분하여 C, C++, Rust, Zig 등을 장기적으로 대체하려는 시도로 보임
  • 최근 Swift와 SwiftUI를 배우기 시작했으며 언어가 복잡하다는 것에 놀람

    • 특히 반응형 인스턴스 변수와 관련하여 복잡함
    • @observableObject와 같은 개념을 이해하지 못함
    • 여러 가지 방법이 있어 결국 작동할 때까지 시도해 봄
  • Swift가 macOS에만 머물 것이라고 생각했지만 매우 흥미로움

    • Ubuntu 패키지에서 Swift 컴파일러를 Debian으로 변환할 때 문제가 있었음
    • 대부분의 기능은 작동하지만 sigterm 신호와 같은 간단한 것들은 작동하지 않음
    • Swift는 환상적인 언어이며 오늘날 가장 발전되고 스마트한 언어라고 생각함
    • SwiftUI의 구현 방식을 보면 놀라울 정도임
    • 언어는 사용하기 쉽고 개발자의 실제 사용을 고려한 고급 기능과 아이디어로 가득 차 있음
    • 그러나 컴파일러 오류 메시지와 문서는 매우 불친절함
    • 대부분의 라이브러리는 아직 Linux에서 잘 작동하지 않지만 안전성과 속도, 개발의 즐거움 사이의 균형을 맞추면 미래가 밝음
  • Swift는 무엇을 하고 싶은지 결정하고 그것을 고수해야 함

    • 너무 많은 문법 설탕과 반쯤 완성된 개념이 있음
  • SwiftGodot을 시도했으며 게임 개발에 Swift를 사용하는 것이 C#의 GC 지연보다 흥미로움

    • 아직 Windows 개발 라이브러리를 공유하는 것을 지원하지 않음
    • 컴파일 시간이 오래 걸림
    • 변경 로그에 Windows에서 멀티 스레드 Swift 패키지 관리자 개선이 언급됨
  • 점진적으로 이동할 수 있는 것이 매우 좋음

    • Swift-6 모드로 이동하는 것은 데이터 경합 안전성 검사를 포함하여 부담스러울 수 있음
    • 새로운 도구를 사용할 수 있지만 5.10 버전의 언어를 계속 사용할 수 있음
    • 동일한 패키지를 두 가지 언어 모드에서 빌드할 수 있어 라이브러리가 버전업을 하면서도 준비되지 않은 클라이언트를 지원할 수 있음
  • Swift 언어가 괴물이 되어버렸음

스위프트라는 멋진 언어를 시작하기 위해서는 다소 비싼 애플 생태계를 도입 할 수 밖에 없는게 개발자들에게 작지 않은 벽이 되는 것 같습니다.