7 điểm bởi GN⁺ 2024-09-18 | 2 bình luận | Chia sẻ qua WhatsApp
  • Bản phát hành này mở rộng Swift sang nhiều nền tảng và lĩnh vực hơn
  • Swift nổi tiếng là ngôn ngữ phát triển ứng dụng, nhưng cũng rất phù hợp cho nhiều mục đích khác như thư viện, dịch vụ quy mô Internet và mã nguồn đòi hỏi hiệu năng cao
  • Swift 6 tiếp tục được mở rộng thông qua các tính năng lập trình mức thấp mới, tập con ngôn ngữ Embedded Swift, hỗ trợ Linux và Windows được mở rộng, các API đa nền tảng mới, v.v.

Ngôn ngữ và thư viện chuẩn

Đồng thời

  • Swift 6 cung cấp tính an toàn giúp ngăn chặn data race trong mã đồng thời thông qua chế độ ngôn ngữ mới.
  • Cung cấp cảnh báo an toàn data race thông qua cờ trình biên dịch -strict-concurrency=complete.
  • Bao gồm thư viện đồng bộ hóa mới với các API đồng thời mức thấp.

Typed throws

  • Giờ đây có thể chỉ rõ kiểu lỗi mà hàm ném ra trong chữ ký hàm.
  • Hữu ích khi truyền kiểu lỗi trong mã generic hoặc trong môi trường bị giới hạn cấp phát bộ nhớ.

Quyền sở hữu

  • Tích hợp các kiểu không sao chép được được giới thiệu trong Swift 5.9 vào hệ thống generic để cải thiện hiệu năng.
  • Sử dụng cú pháp ~Copyable để mô hình hóa tài nguyên và tối ưu hiệu năng.

Khả năng tương tác với C++

  • Swift 6 hỗ trợ move-only type, virtual method, default argument của C++.
  • Thông qua chú thích SWIFT_NONCOPYABLE, có thể phơi bày các kiểu C++ dưới dạng kiểu không sao chép được.

Embedded Swift

  • Bao gồm tập con ngôn ngữ và chế độ biên dịch dành cho phát triển phần mềm nhúng.
  • Hỗ trợ các target bare-metal ARM và RISC-V.

Số nguyên 128 bit

  • Bổ sung các kiểu số nguyên 128 bit có dấu và không dấu.

Cải thiện năng suất

  • Giới thiệu nhiều tính năng giúp tăng năng suất như count(where:).

Gỡ lỗi

Tóm tắt LLDB tùy chỉnh thông qua @DebugDescription

  • Có thể tùy chỉnh cách hiển thị đối tượng trong LLDB bằng macro @DebugDescription.

Cải thiện hiệu năng khởi động thông qua explicit modules

  • Cải thiện đáng kể hiệu năng khởi động của debugger bằng cách sử dụng explicit module build.

Thư viện

Foundation

  • Hợp nhất implementation của Foundation trên mọi nền tảng.
  • Mở rộng implementation Swift được dùng trên macOS và iOS sang Linux và Windows.

Swift Testing

  • Giới thiệu thư viện kiểm thử mới mang tên Swift Testing.
  • Giúp viết và tổ chức test bằng cách sử dụng macro.

Hỗ trợ nền tảng

SDK hoàn toàn tĩnh cho Linux

  • Có thể build file thực thi liên kết tĩnh hoàn toàn cho Linux.

Bản phân phối Linux mới

  • Bổ sung hỗ trợ chính thức cho Debian, Fedora và Ubuntu 24.04.

Hiệu năng build trên Windows

  • Cung cấp toolchain dựng sẵn cho kiến trúc arm64.
  • Trình quản lý gói Swift mặc định song song hóa quá trình build trên Windows.

Bước tiếp theo

Tải Swift 6

  • Có thể cài đặt toolchain Swift 6 chính thức tại Swift.org/install.

Bắt đầu với Swift

  • Sách về ngôn ngữ lập trình Swift đã được cập nhật để phản ánh cú pháp và tính năng Swift 6 mới nhất.

Khám phá hệ sinh thái package

  • Có thể khám phá nhiều package khác nhau tại Swift.org/packages.

Tham gia

  • Có thể chia sẻ phản hồi và trải nghiệm về Swift 6 để đóng góp cho sự phát triển tương lai của ngôn ngữ, công cụ, hệ sinh thái package và cộng đồng.

Tóm tắt của GN⁺

  • Swift 6 là một bản phát hành lớn mở rộng sang nhiều nền tảng và lĩnh vực khác nhau.
  • Bao gồm nhiều tính năng mới như đồng thời, khả năng tương tác với C++, Embedded Swift, v.v.
  • Giới thiệu các thư viện mới như Swift Testing cùng nhiều cải tiến về năng suất.
  • Mở rộng hỗ trợ cho Linux và Windows đồng thời cải thiện hiệu năng.
  • Swift 6 mang lại cho nhà phát triển nhiều khả năng và hiệu quả hơn.

2 bình luận

 
GN⁺ 2024-09-18
Ý kiến trên Hacker News
  • Swift đang chậm rãi chết đi vì những xung đột cố hữu trong cơ chế quản trị

    • Có xung đột giữa cộng đồng mã nguồn mở Swift Working Group™ và Apple với tư cách doanh nghiệp
    • Vì Apple trả phần lớn lương nên Apple có ảnh hưởng lớn hơn
    • Nợ kỹ thuật như các ngoại lệ trình biên dịch được hard-code tồn tại vĩnh viễn trong codebase của trình biên dịch
    • Apple thúc đẩy các khái niệm còn dang dở mà không thảo luận chỉ để làm cho cú pháp SwiftUI trông đẹp hơn
    • Đây vẫn là một ngôn ngữ đáng kinh ngạc, nhưng nếu Apple không buông tay thì có lẽ sẽ khó sống khỏe trong 10 năm tới
  • Tôi mới học Swift và đến giờ thấy khá ổn

    • Khi dùng SwiftUI, tôi thường xuyên gặp lỗi "compile failed: the compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions"
    • Việc trình biên dịch phải cầu cứu thật gây sốc
  • Nhờ concurrency an toàn và typed throws, Swift bắt đầu trông như một Rust thân thiện hơn

    • Có lẽ tôi sẽ không dùng hằng ngày vì hệ sinh thái package còn nhỏ
    • Hy vọng Foundation đa nền tảng sẽ cải thiện điều này
  • Swift 6 là một bước nhảy lớn cho việc phát triển đa nền tảng theo kiểu batteries included

    • Foundation cung cấp sẵn rất nhiều thứ nên đây là một lợi thế lớn
    • Swift 6 có đủ cải tiến ở tầng thấp và tính năng đa nền tảng để trông như một nỗ lực thay thế C, C++, Rust, Zig... về lâu dài
  • Gần đây tôi bắt đầu học Swift và SwiftUI, và ngạc nhiên vì ngôn ngữ này phức tạp

    • Đặc biệt là độ phức tạp quanh các biến thể hiện phản ứng
    • Tôi không hiểu các khái niệm như @observableObject
    • Có quá nhiều cách khác nhau nên cuối cùng chỉ thử cho đến khi chạy được
  • Tôi từng nghĩ Swift sẽ chỉ quanh quẩn trên macOS, nhưng nó rất thú vị

    • Đã có vấn đề khi chuyển trình biên dịch Swift từ gói Ubuntu sang Debian
    • Phần lớn tính năng đều hoạt động, nhưng những thứ đơn giản như tín hiệu sigterm thì lại không
    • Swift là một ngôn ngữ tuyệt vời, và tôi nghĩ nó là ngôn ngữ tiên tiến và thông minh nhất hiện nay
    • Cách SwiftUI được triển khai thật đáng kinh ngạc
    • Ngôn ngữ này dễ dùng và đầy những tính năng, ý tưởng cao cấp có tính đến nhu cầu sử dụng thực tế của lập trình viên
    • Tuy nhiên, thông báo lỗi của trình biên dịch và tài liệu lại rất thiếu thân thiện
    • Phần lớn thư viện vẫn chưa chạy tốt trên Linux, nhưng nếu cân bằng được giữa an toàn, tốc độ và niềm vui phát triển thì tương lai vẫn rất sáng
  • Swift cần quyết định mình muốn làm gì và kiên định với điều đó

    • Có quá nhiều syntax sugar và các khái niệm còn dang dở
  • Tôi đã thử SwiftGodot, và việc dùng Swift cho phát triển game thú vị hơn độ trễ GC của C#

    • Hiện vẫn chưa hỗ trợ chia sẻ thư viện phát triển Windows
    • Thời gian biên dịch lâu
    • Nhật ký thay đổi có nhắc đến việc cải thiện Swift package manager đa luồng trên Windows
  • Việc có thể chuyển đổi dần dần là rất tốt

    • Việc chuyển sang chế độ Swift-6 có thể khá nặng nề, bao gồm cả kiểm tra an toàn data race
    • Bạn có thể dùng các công cụ mới nhưng vẫn tiếp tục dùng ngôn ngữ ở phiên bản 5.10
    • Có thể build cùng một package ở hai chế độ ngôn ngữ, nên thư viện vẫn có thể hỗ trợ các client chưa sẵn sàng trong khi nâng cấp phiên bản
  • Ngôn ngữ Swift đã trở thành một con quái vật

 
bus710 2024-09-19

Có vẻ như việc buộc phải chấp nhận hệ sinh thái Apple khá đắt đỏ để bắt đầu với ngôn ngữ tuyệt vời là Swift đang trở thành một rào cản không nhỏ đối với các lập trình viên.