- รีลีสนี้ขยาย Swift ไปยังแพลตฟอร์มและโดเมนที่หลากหลายมากขึ้น
- แม้ Swift จะเป็นที่รู้จักดีในฐานะภาษา дляพัฒนาแอป แต่ก็ยอดเยี่ยมสำหรับงานที่หลากหลาย เช่น ไลบรารี บริการระดับอินเทอร์เน็ตสเกล และโค้ดที่เน้นประสิทธิภาพ
- Swift 6 ขยายขอบเขตเพิ่มเติมผ่านความสามารถใหม่ด้านการเขียนโปรแกรมระดับล่าง ชุดย่อยภาษาสำหรับ Embedded Swift การรองรับ Linux และ Windows ที่ขยายขึ้น และ API แบบข้ามแพลตฟอร์มใหม่ เป็นต้น
ภาษาและไลบรารีมาตรฐาน
Concurrency
- Swift 6 มอบความปลอดภัยที่ช่วยป้องกัน data race ในโค้ด concurrency ผ่านโหมดภาษาใหม่
- มีคำเตือนด้านความปลอดภัยจาก data race ผ่านคอมไพเลอร์แฟล็ก
-strict-concurrency=complete
- รวมไลบรารี synchronization ใหม่ที่มี API concurrency ระดับล่าง
Typed throws
- สามารถระบุชนิดข้อผิดพลาดที่ฟังก์ชันจะ throw ไว้ใน signature ได้
- มีประโยชน์ในการส่งต่อชนิดข้อผิดพลาดใน generic code หรือในสภาพแวดล้อมที่การจัดสรรหน่วยความจำมีข้อจำกัด
Ownership
- ปรับปรุงประสิทธิภาพโดยผสาน noncopyable types ที่เปิดตัวใน Swift 5.9 เข้ากับระบบ generic
- ใช้ไวยากรณ์
~Copyable เพื่อจำลองทรัพยากรและเพิ่มประสิทธิภาพ
การทำงานร่วมกับ C++
- Swift 6 รองรับ move-only types, virtual methods และ default arguments ของ C++
- สามารถเปิดเผยชนิดของ C++ เป็น noncopyable types ได้ผ่าน annotation
SWIFT_NONCOPYABLE
Embedded Swift
- รวมชุดย่อยภาษาและโหมดคอมไพล์สำหรับการพัฒนาซอฟต์แวร์แบบ embedded
- รองรับเป้าหมาย bare metal บน ARM และ RISC-V
จำนวนเต็ม 128 บิต
- เพิ่มชนิดจำนวนเต็ม 128 บิตทั้งแบบ signed และ unsigned
เพิ่มประสิทธิภาพการทำงาน
- เพิ่มความสามารถหลายอย่างเพื่อช่วยให้ทำงานได้มีประสิทธิผลขึ้น เช่น
count(where:)
การดีบัก
สรุป LLDB แบบกำหนดเองผ่าน @DebugDescription
- สามารถกำหนดวิธีแสดงอ็อบเจ็กต์ใน LLDB เองได้ด้วยแมโคร
@DebugDescription
ปรับปรุงประสิทธิภาพการเริ่มต้นผ่าน explicit modules
- ปรับปรุงประสิทธิภาพการเริ่มต้นของดีบักเกอร์อย่างมากด้วยการใช้ explicit module builds
ไลบรารี
Foundation
- รวมการติดตั้งใช้งานของ Foundation ให้เป็นหนึ่งเดียวในทุกแพลตฟอร์ม
- ขยาย implementation ของ Swift ที่ใช้บน macOS และ iOS ไปยัง Linux และ Windows
Swift Testing
- เปิดตัวไลบรารีทดสอบใหม่ชื่อ Swift Testing
- ช่วยในการเขียนและจัดระเบียบการทดสอบด้วยการใช้แมโคร
การรองรับแพลตฟอร์ม
SDK แบบสแตติกเต็มรูปแบบสำหรับ Linux
- สามารถ build ไฟล์ปฏิบัติการสำหรับ Linux ที่ลิงก์แบบสแตติกทั้งหมดได้
Linux distributions ใหม่
- เพิ่มการรองรับอย่างเป็นทางการสำหรับ Debian, Fedora และ Ubuntu 24.04
ประสิทธิภาพการ build บน Windows
- มี toolchain ที่ build ไว้ล่วงหน้าสำหรับสถาปัตยกรรม arm64
- Swift Package Manager ทำการ build แบบขนานบน Windows โดยปริยาย
ขั้นตอนถัดไป
ดาวน์โหลด Swift 6
- สามารถติดตั้ง toolchain อย่างเป็นทางการของ Swift 6 ได้ที่ Swift.org/install
เริ่มต้นกับ Swift
- หนังสือ The Swift Programming Language ได้รับการอัปเดตให้สะท้อนไวยากรณ์และความสามารถล่าสุดของ Swift 6
สำรวจระบบนิเวศของแพ็กเกจ
- สามารถสำรวจแพ็กเกจหลากหลายได้ที่ Swift.org/packages
เข้าร่วม
- สามารถแบ่งปันข้อเสนอแนะและประสบการณ์เกี่ยวกับ Swift 6 เพื่อมีส่วนร่วมต่อการพัฒนาในอนาคตของภาษา เครื่องมือ ระบบนิเวศของแพ็กเกจ และชุมชน
สรุปโดย GN⁺
- Swift 6 เป็นรีลีสสำคัญที่ขยายไปยังแพลตฟอร์มและโดเมนที่หลากหลาย
- มีความสามารถใหม่หลายอย่าง เช่น concurrency, การทำงานร่วมกับ C++ และ Embedded Swift
- เปิดตัวไลบรารีใหม่อย่าง Swift Testing และความสามารถที่ช่วยเพิ่มประสิทธิภาพการทำงาน
- ขยายการรองรับ Linux และ Windows พร้อมทั้งปรับปรุงประสิทธิภาพ
- Swift 6 มอบความเป็นไปได้และประสิทธิภาพที่มากขึ้นให้แก่นักพัฒนา
2 ความคิดเห็น
ความคิดเห็นจาก Hacker News
Swift กำลังค่อย ๆ ตายลงเพราะความขัดแย้งที่ฝังอยู่ในธรรมาภิบาล
กำลังเรียน Swift ใหม่ และจนถึงตอนนี้คิดว่าก็โอเค
ด้วย safe concurrency และ typed throws ทำให้ Swift เริ่มดูเหมือน Rust ที่เป็นมิตรมากขึ้น
Swift 6 คือก้าวกระโดดครั้งใหญ่สำหรับการพัฒนาแบบข้ามแพลตฟอร์มที่มีแบตเตอรี่มาครบในตัว
เพิ่งเริ่มเรียน Swift และ SwiftUI ไม่นาน และประหลาดใจกับความซับซ้อนของภาษา
เคยคิดว่า Swift จะอยู่แค่บน macOS แต่จริง ๆ แล้วน่าสนใจมาก
Swift ควรตัดสินใจให้ชัดว่าต้องการทำอะไร แล้วก็ยึดตามนั้น
เคยลอง SwiftGodot และรู้สึกว่าการใช้ Swift ทำเกมน่าสนใจกว่าความหน่วงจาก GC ของ C#
ความสามารถในการค่อย ๆ ย้ายไปทีละขั้นนั้นดีมาก
ภาษา Swift กลายเป็นสัตว์ประหลาดไปแล้ว
ดูเหมือนว่าสำหรับนักพัฒนาแล้ว การจะเริ่มต้นกับภาษาเจ๋ง ๆ อย่าง Swift จำเป็นต้องเข้าสู่ระบบนิเวศของ Apple ที่ค่อนข้างแพงอย่างหลีกเลี่ยงไม่ได้ ซึ่งน่าจะเป็นกำแพงที่ไม่เล็กเลย