7 คะแนน โดย GN⁺ 2024-09-18 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • รีลีสนี้ขยาย 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 ความคิดเห็น

 
GN⁺ 2024-09-18
ความคิดเห็นจาก Hacker News
  • Swift กำลังค่อย ๆ ตายลงเพราะความขัดแย้งที่ฝังอยู่ในธรรมาภิบาล

    • มีความขัดแย้งระหว่างชุมชนโอเพนซอร์ส Swift Working Group™ กับบริษัท Apple
    • เนื่องจาก Apple เป็นผู้จ่ายเงินเดือนส่วนใหญ่ Apple จึงมีอิทธิพลมากกว่า
    • หนี้ทางเทคนิค เช่น ข้อยกเว้นของคอมไพเลอร์ที่ฮาร์ดโค้ดไว้ ยังคงอยู่ถาวรในโค้ดเบสของคอมไพเลอร์
    • Apple ผลักดันแนวคิดที่ยังทำไม่เสร็จครึ่ง ๆ กลาง ๆ โดยไม่มีการถกเถียง เพื่อทำให้ไวยากรณ์ของ SwiftUI ดูสวยงาม
    • มันยังคงเป็นภาษาที่ยอดเยี่ยมมาก แต่ถ้า Apple ไม่ยอมปล่อยมือ ก็ดูยากที่จะอยู่รอดได้ดีในอีก 10 ปีข้างหน้า
  • กำลังเรียน Swift ใหม่ และจนถึงตอนนี้คิดว่าก็โอเค

    • เวลาใช้ SwiftUI มักเจอข้อผิดพลาด "คอมไพล์ล้มเหลว: คอมไพเลอร์ไม่สามารถตรวจสอบชนิดของนิพจน์นี้ได้ภายในเวลาที่เหมาะสม; โปรดลองแยกนิพจน์ออกเป็นนิพจน์ย่อย ๆ"
    • น่าตกใจที่คอมไพเลอร์เหมือนกำลังขอความช่วยเหลือ
  • ด้วย safe concurrency และ typed throws ทำให้ Swift เริ่มดูเหมือน Rust ที่เป็นมิตรมากขึ้น

    • คงไม่ได้ใช้เป็นประจำในชีวิตประจำวัน เพราะ ecosystem ของแพ็กเกจยังเล็ก
    • หวังว่า Foundation แบบข้ามแพลตฟอร์มจะช่วยให้เรื่องนี้ดีขึ้น
  • Swift 6 คือก้าวกระโดดครั้งใหญ่สำหรับการพัฒนาแบบข้ามแพลตฟอร์มที่มีแบตเตอรี่มาครบในตัว

    • Foundation เป็นข้อได้เปรียบใหญ่ เพราะมีหลายอย่างให้มาเป็นค่าเริ่มต้น
    • Swift 6 ดูเหมือนเป็นความพยายามที่จะมาแทน C, C++, Rust, Zig ฯลฯ ในระยะยาว เพราะมีทั้งการปรับปรุงระดับล่างและความสามารถข้ามแพลตฟอร์มเพียงพอ
  • เพิ่งเริ่มเรียน Swift และ SwiftUI ไม่นาน และประหลาดใจกับความซับซ้อนของภาษา

    • ซับซ้อนโดยเฉพาะเรื่องตัวแปรอินสแตนซ์แบบ reactive
    • ไม่เข้าใจแนวคิดอย่าง @observableObject
    • มีหลายวิธีมากจนสุดท้ายก็ลองไปเรื่อย ๆ จนกว่าจะทำงานได้
  • เคยคิดว่า Swift จะอยู่แค่บน macOS แต่จริง ๆ แล้วน่าสนใจมาก

    • เคยมีปัญหาเวลาแปลง Swift compiler จากแพ็กเกจ Ubuntu ไปเป็น Debian
    • ฟีเจอร์ส่วนใหญ่ใช้งานได้ แต่เรื่องง่าย ๆ อย่างสัญญาณ sigterm กลับใช้ไม่ได้
    • คิดว่า Swift เป็นภาษาที่ยอดเยี่ยมและเป็นภาษาที่ก้าวหน้ากับฉลาดที่สุดในปัจจุบัน
    • พอดูวิธีที่ SwiftUI ถูกนำไปใช้แล้วน่าทึ่งมาก
    • ภาษานี้ใช้งานง่าย และเต็มไปด้วยฟีเจอร์ขั้นสูงกับแนวคิดที่คำนึงถึงการใช้งานจริงของนักพัฒนา
    • แต่ข้อความข้อผิดพลาดของคอมไพเลอร์และเอกสารนั้นไม่เป็นมิตรอย่างมาก
    • ไลบรารีส่วนใหญ่ยังทำงานบน Linux ได้ไม่ดีนัก แต่ถ้าสมดุลระหว่างความปลอดภัย ความเร็ว และความสนุกในการพัฒนาได้ อนาคตก็สดใส
  • Swift ควรตัดสินใจให้ชัดว่าต้องการทำอะไร แล้วก็ยึดตามนั้น

    • มี syntactic sugar มากเกินไปและมีแนวคิดที่ยังทำไม่เสร็จครึ่ง ๆ กลาง ๆ มากเกินไป
  • เคยลอง SwiftGodot และรู้สึกว่าการใช้ Swift ทำเกมน่าสนใจกว่าความหน่วงจาก GC ของ C#

    • ยังไม่รองรับการแชร์ไลบรารีสำหรับการพัฒนาบน Windows
    • ใช้เวลาคอมไพล์นาน
    • ใน changelog มีการพูดถึงการปรับปรุง Swift package manager แบบมัลติเธรดบน Windows
  • ความสามารถในการค่อย ๆ ย้ายไปทีละขั้นนั้นดีมาก

    • การย้ายไปโหมด Swift-6 อาจเป็นภาระ โดยรวมถึงการตรวจสอบความปลอดภัยจาก data race
    • สามารถใช้เครื่องมือใหม่ได้ แต่ยังคงใช้ภาษารุ่น 5.10 ต่อไปได้
    • แพ็กเกจเดียวกันสามารถบิลด์ได้ในสองโหมดภาษา ทำให้ไลบรารีอัปเวอร์ชันได้พร้อมกับยังรองรับไคลเอนต์ที่ยังไม่พร้อม
  • ภาษา Swift กลายเป็นสัตว์ประหลาดไปแล้ว

 
bus710 2024-09-19

ดูเหมือนว่าสำหรับนักพัฒนาแล้ว การจะเริ่มต้นกับภาษาเจ๋ง ๆ อย่าง Swift จำเป็นต้องเข้าสู่ระบบนิเวศของ Apple ที่ค่อนข้างแพงอย่างหลีกเลี่ยงไม่ได้ ซึ่งน่าจะเป็นกำแพงที่ไม่เล็กเลย