2 คะแนน โดย GN⁺ 2026-03-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ขยายความสามารถครอบคลุมทั้ง ภาษา, standard library, ระบบบิลด์ และการรองรับแพลตฟอร์ม พร้อมปรับปรุงประสบการณ์นักพัฒนา
  • การเปลี่ยนแปลงสำคัญคือ การทำงานร่วมกับ C ที่ดีขึ้น, เพิ่ม Android SDK อย่างเป็นทางการ, ปรับปรุงสภาพแวดล้อมแบบ embedded, และ ขยายเครื่องมือเอกสาร DocC
  • Swift Package Manager เพิ่มความสม่ำเสมอของการบิลด์ข้ามแพลตฟอร์มผ่าน integrated build engine และ การรองรับ Swift Syntax แบบ prebuilt
  • Swift Testing เพิ่มความสามารถใหม่ เช่น การบันทึก issue ระดับคำเตือน, การยกเลิกการทดสอบ, และการแนบรูปภาพ เพื่อเพิ่มความยืดหยุ่นในการทดสอบ
  • การเปิดตัว Android SDK อย่างเป็นทางการ ช่วยขยายขอบเขตการพัฒนาข้ามแพลตฟอร์มของ Swift และทำให้สามารถผสานกับแอป Kotlin/Java ได้

อัปเดตสำคัญของ Swift 6.3

  • Swift 6.3 มอบความสามารถที่ขยายขึ้นครอบคลุมทั้ง ภาษา, standard library, ระบบบิลด์ และการรองรับแพลตฟอร์ม
  • การเปลี่ยนแปลงหลักคือ การทำงานร่วมกับ C ที่ดีขึ้น, เพิ่ม Android SDK อย่างเป็นทางการ, ปรับปรุง embedded environment, และ ขยายเครื่องมือเอกสาร DocC
  • มีเป้าหมายเพื่อยกระดับประสบการณ์นักพัฒนาและ รวมการพัฒนาข้ามแพลตฟอร์ม ให้ดียิ่งขึ้น

ภาษาและ standard library

  • การทำงานร่วมกับ C

    • แอททริบิวต์ใหม่ @c ช่วยให้สามารถเปิดเผยฟังก์ชันหรือ enum ของ Swift ให้กับโค้ด C ได้
    • สามารถกำหนด ชื่อประกาศ C แบบกำหนดเอง ได้ในรูปแบบ @c(MyLibrary_callFromC)
    • เมื่อใช้ @c ร่วมกับ @implementation จะสามารถ implement ฟังก์ชันที่ประกาศไว้ใน C header จากฝั่ง Swift ได้
    • เมื่อใช้ร่วมกันในลักษณะนี้ Swift จะตรวจสอบว่าตรงกับประกาศ C เดิมหรือไม่
  • Module Name Selectors

    • เมื่อนำเข้า API ชื่อเดียวกันจากหลายโมดูล สามารถ เรียกโดยระบุโมดูล ได้ในรูปแบบ ModuleA::getValue()
    • สามารถเข้าถึง concurrency และ API สำหรับจัดการสตริง ได้ผ่านไวยากรณ์ Swift::Task
  • การควบคุมประสิทธิภาพของ library API

    • @specialize: จัดเตรียม implementation ที่ specialize ล่วงหน้าสำหรับชนิดเฉพาะของ generic API
    • @inline(always): บังคับ inlining เพื่อขยายเนื้อหาของฟังก์ชัน ณ จุดที่เรียกใช้
    • @export(implementation): เปิดเผย implementation ของฟังก์ชันในไลบรารีที่มี ABI เสถียร เพื่อให้ทำ optimization เพิ่มเติมได้
    • ดูข้อเสนอที่เกี่ยวข้องได้จาก Swift Evolution dashboard

การปรับปรุงแพ็กเกจและระบบบิลด์

  • Swift Package Manager มี ตัวอย่างการรวม Swift Build แบบ preview เพื่อมอบประสบการณ์การบิลด์ที่สม่ำเสมอในทุกแพลตฟอร์ม
    • เสริม ความสม่ำเสมอของการพัฒนาข้ามแพลตฟอร์ม ผ่าน integrated build engine
    • ผู้ใช้สามารถทดสอบกับแพ็กเกจของตนโดยตรงและรายงานปัญหาได้
  • การปรับปรุงหลักของ SwiftPM 6.3
    • รองรับ Prebuilt Swift Syntax: ไลบรารีสำหรับแมโครโดยเฉพาะสามารถใช้ไบนารี swift-syntax แบบ prebuilt ได้
    • ควบคุมการสืบทอดเอกสารได้ยืดหยุ่นขึ้น: ปลั๊กอินแบบ imperative ที่สร้าง symbol graph สามารถควบคุมว่าจะรวมเอกสารที่สืบทอดมาหรือไม่
    • ฟีเจอร์สำรวจ traits ของแพ็กเกจ: ใช้คำสั่ง swift package show-traits เพื่อตรวจสอบ traits ที่แพ็กเกจรองรับ
    • รายละเอียดเพิ่มเติมรวมอยู่ใน release notes ของ SwiftPM 6.3

อัปเดต core library

  • Swift Testing

    • บันทึก issue ระดับคำเตือน: ใช้ Issue.record(..., severity: .warning) เพื่อแสดงเฉพาะคำเตือนโดยไม่ทำให้การทดสอบล้มเหลว
    • ฟีเจอร์ยกเลิกการทดสอบ: ใช้ try Test.cancel() เพื่อหยุดการทดสอบที่กำลังรันและ subtasks ของมัน
    • รองรับการแนบรูปภาพ: สามารถแนบรูปภาพระหว่างการทดสอบได้บนแพลตฟอร์ม Apple และ Windows
    • ข้อเสนอที่เกี่ยวข้อง: ST-0012, ST-0013, ST-0014, ST-0015, ST-0016, ST-0017, ST-0020
  • DocC

    • รองรับการส่งออก Markdown: สร้างเอกสาร Markdown ได้ด้วยออปชัน --enable-experimental-markdown-output
    • เนื้อหา static HTML รายหน้า: แทรก summary HTML ภายใน `` เพื่อปรับปรุง search engine และ accessibility
    • ขยายคำอธิบายประกอบใน code block: เพิ่มออปชันฟอร์แมตใหม่ เช่น nocopy, highlight, showLineNumbers, wrap
    • เปิดใช้งานได้ด้วยออปชัน --enable-experimental-code-block-annotations

แพลตฟอร์มและสภาพแวดล้อม

  • Embedded Swift

    • มีการปรับปรุงหลายด้าน เช่น การทำงานร่วมกับ C ที่ดีขึ้น, การดีบักที่ดีขึ้น, และ ความคืบหน้าในขั้นตอนการทำโมเดล linkage ให้สมบูรณ์
    • ดูรายละเอียดได้จากบล็อก “Embedded Swift Improvements coming in Swift 6.3”
  • Android

    • เปิดตัว Swift SDK for Android อย่างเป็นทางการ เป็นครั้งแรก
    • รองรับการพัฒนา แอป Android แบบ native ด้วย Swift และรองรับการบิลด์แพ็กเกจ Swift บน Android
    • สามารถผสานกับแอป Kotlin/Java ได้ผ่าน Swift Java และ Swift Java JNI Core
    • ถือเป็นหมุดหมายสำคัญในการขยาย การพัฒนาข้ามแพลตฟอร์ม ของ Swift
    • เอกสารเริ่มต้นใช้งานมีใน “Getting Started with the Swift SDK for Android”

ขั้นตอนถัดไป

  • สามารถติดตั้ง toolchain ของ Swift 6.3 ได้จากหน้า Install Swift
  • นักพัฒนาสามารถทดลองใช้ความสามารถใหม่ได้ทันทีและส่งฟีดแบ็กกลับไป

1 ความคิดเห็น

 
GN⁺ 2026-03-28
ความเห็นจาก Hacker News
  • ดีใจที่ได้เห็น Swift ออกรุ่นใหม่ที่ ยอดเยี่ยม แบบนี้
    แม้จะไม่ได้ใช้มาตั้งแต่หลัง v3 แต่ราวปี 2015~17 Swift เคยมีโอกาสแทนที่ Python ได้
    เพราะมันเรียบง่าย เร็ว และเข้ากับ ecosystem ของ C/C++ ได้ดี ตอนที่ IBM กำลังผลักดันฝั่งเซิร์ฟเวอร์ มันดูมีความเป็นไปได้จริง ๆ
    แต่ Apple ดึงชุมชนเข้ามาได้ไม่มากพอ สุดท้าย Swift เลยยังคงเป็น ภาษาเฉพาะของ Apple และตอนนี้ความซับซ้อนก็เพิ่มขึ้นไปถึงระดับ C++ แล้ว

    • ตอนเป็นฟรีแลนซ์สมัยเรียนมหาวิทยาลัย ผมเคยทำเว็บแบ็กเอนด์ด้วย Swift ด้วย ใช้ Heroku buildpack ในการ deploy เป็นช่วงเวลาที่สนุกมาก
      ผมชอบ Swift นะ แต่ข้างนอก ecosystem ของ Apple มันยังให้ความรู้สึกว่ายังไม่ข้าม จุดวิกฤต ไปได้ สุดท้ายเมื่อปีก่อนก็ย้ายไปใช้ Typescript
    • ต่อให้ใช้ Swift 6.3 ล่าสุด การพัฒนานอกแพลตฟอร์ม Apple ก็ยังเจ็บปวดอยู่ดี
      ที่สำคัญ ดูแล้วคงแทบไม่มีใครอยากยอมเอา Apple ในฐานะผู้เฝ้าประตู เข้ามาอยู่ในสแตกของตัวเองโดยสมัครใจ
    • Google เองก็เคยพยายามย้าย TensorFlow จาก Python ไปเป็น Swift อยู่ช่วงหนึ่ง
      โปรเจ็กต์ TensorFlow Swift
    • แม้แต่ Python 3 เองก็ยังใช้เวลานานกว่าจะมาแทน Python ได้
    • Python แข็งแกร่งในด้าน การพัฒนาแบบวนซ้ำ และ Jupyter Notebook เพราะมี interactive interpreter
      CircuitPython ก็มีประโยชน์กับการทำ embedded prototyping ด้วย Swift จับพื้นที่เหล่านี้ได้ไม่สำเร็จนัก
      แถม Swift เพิ่งมาลง Linux ในปี 2016, Windows ในปี 2020 และ FreeBSD ก็เพิ่งทำได้ในปี 2025
      ช่วงกลางทศวรรษ 2010 ก็มีภาษาใหม่ออกมาพร้อมกันมากมาย ทั้ง Go, Julia, Rust, TypeScript, Solidity ฯลฯ จนแต่ละคนมีแรงพอจะเรียนได้แค่ทีละหนึ่งสองภาษา
  • ผมเคยหวังว่า Swift จะกลายเป็นภาษาที่ครอบคลุมทั้งสแตก แต่ความจริงไม่เป็นแบบนั้น
    ให้ความรู้สึกว่า Apple ปล่อยโอกาสหลุดมือ ไป

    • ผมใช้งาน Swift ครบทั้งสแตกอยู่จริง ๆ
      อย่างเช่น ClearSurgery ก็เขียนทุกอย่างด้วย Swift ตั้งแต่ Linux ไปจนถึงคอมโพเนนต์แบบเรียลไทม์
  • สัปดาห์ก่อนผมพอร์ตระบบปฏิบัติการ xv6-riscv ไปเป็น Zig, Nim, LISP และ Swift
    ด้วยพัฒนาการของ embedded Swift มันเลยให้ความรู้สึกว่าเป็น ภาษาที่มีประสิทธิภาพในการทำงาน และ abstraction ที่หุ้มการเข้าถึงหน่วยความจำก็ดูสะอาดดี
    แต่ความเร็วคอมไพล์ช้ามากเกินไป สุดท้ายเลยไปโฟกัสกับ Nim แทน

    • ไม่ค่อยได้ยินชื่อ Nim มานานแล้ว เลยสงสัยว่าทำไมถึงเลือกมัน
    • ขอถามหน่อยว่าคุณหมายถึง McCarthy LISP หรือเปล่า
  • เสียดายที่ไม่มีการพูดถึง การปรับปรุงความเร็วคอมไพล์ ของ Swift
    คอมไพล์ช้ากว่า Rust ทำให้ประสบการณ์พัฒนาแย่ลงมาก

    • ผมเองก็เพิ่งทำโปรเจ็กต์ Swift เมื่อไม่นานนี้ แล้วก็ตกใจว่าพอมี dependency เยอะ ๆ แล้วคอมไพล์ช้ามาก
      ถ้าคุ้นกับการ build เร็ว ๆ แบบ Go, Swift จะทำให้ การพัฒนาแบบวนซ้ำทรมานมาก ภาษาเองยอดเยี่ยม แต่ feedback loop ช้าเกินไป
  • ใน Swift 6.3 มี SDK อย่างเป็นทางการสำหรับ Android รวมมาด้วยเป็นครั้งแรก

    • มีของ Windows กับ Linux ด้วยไหม
      Windows มี โพสต์ในบล็อกเมื่อ 5 ปีก่อน,
      ส่วน Linux มี คู่มือสำหรับ GNOME
      ถ้าทำแบบ OpenSTEP สมัยก่อน คือพัฒนาครั้งเดียวแล้วปล่อยได้หลายแพลตฟอร์มก็คงดี
    • ดูแล้วน่าจะถูกใช้น้อยยิ่งกว่า Swift ฝั่งเซิร์ฟเวอร์อีก
  • การปรับปรุง noncopyable type คือส่วนที่ถูกประเมินต่ำที่สุดของรีลีสนี้
    ตอนนี้การทำโมเดล ownership แบบเฉพาะเจาะจงใน Swift เป็นเรื่องที่สมจริงขึ้นมาก

  • ใน Swift 6.3 มี @c attribute ทำให้สามารถเปิดฟังก์ชัน Swift ให้โค้ด C เรียกใช้ได้แล้ว
    แต่ก็สงสัยว่าทำไมถึงเพิ่งเพิ่มเข้ามาช้าขนาดนี้ การใส่ C++ interoperability มาก่อนดูเป็น ลำดับความสำคัญที่แปลก

    • ที่จริงเมื่อก่อนมันมีอยู่แล้วในรูปแบบ attribute ที่ขึ้นต้นด้วยขีดล่าง
    • C++ interoperability สำคัญสำหรับ Apple ในการ ดูดซับโค้ดเบสระดับล่างเดิม
      แต่การ export Swift ไป C จะทำให้เกิด FFI spaghetti และมักมี ABI bug เรื่อง enum, ownership, การจัดการ null ฯลฯ
      โดยเฉพาะถ้ามี closure ปนอยู่ด้วย calling convention อาจเพี้ยนจนเสียเวลาทั้งวันไปกับการดีบัก
    • เพราะมีฟีเจอร์ export ไป ObjC อยู่แล้ว เลยมีลำดับความสำคัญต่ำกว่า
    • ก่อนหน้านี้ก็มีคนใช้กันแบบ experimental มาตลอด ตอนนี้แค่ทำให้เป็นทางการ
  • เมื่อก่อนเวลาสร้าง dylib ด้วย Swift สำหรับโปรแกรม C ต้องใช้ @cdecl ตอนนี้มีการรองรับอย่างเป็นทางการแล้วก็น่ายินดี

  • การเปลี่ยนแปลงจริงนอกเหนือจากการตลาด ดูได้ใน CHANGELOG และ
    รายการข้อเสนอ Swift Evolution
    6.3 เป็นรีลีสที่เน้น งานรวมระบบ เป็นหลัก — ทั้ง stdlib, การทำงานร่วมกับ C/C++, swift-java, ระบบ build ฯลฯ
    SPM กำลังค่อย ๆ ดูดซับฟีเจอร์ของ Xcode และก็มีการทดลองทั้ง swift-build engine ใหม่กับ prebuilt module
    แต่ปฏิสัมพันธ์ระหว่าง SPM กับ Xcode ก็ยังไม่เสถียร และความซับซ้อนภายในก็กำลังเพิ่มขึ้น
    ความก้าวหน้าของตัวภาษาเองอาจดูเงียบ ๆ แต่มี งานโครงสร้างลึก อย่างการควบคุมอายุการใช้งานและ concurrency coloring กำลังเดินหน้าอยู่
    เมื่อมีทั้ง OS, อุปกรณ์ และสภาพแวดล้อม CI หลายแบบพันกันอยู่ นักพัฒนา Swift จึงต้องอยู่ในภาวะ หาสมดุลท่ามกลางความเปลี่ยนแปลง ตลอดเวลา

  • อยากรู้ว่าใน Swift เวอร์ชันล่าสุด toolchain เป็นอย่างไรบ้าง รองรับ Swift Lint กับ Swift Format หรือยัง
    ถ้าเป็นภาษาสมัยใหม่ก็ควรมี formatter ในตัวและกฎ lint ที่แนะนำมาให้ ไม่ใช่แค่ตัวภาษา แต่ ทั้ง ecosystem สำคัญด้วย

    • ตอนนี้มีทั้งสองตัวรวมมาให้แล้ว ใช้งานได้ตรง ๆ ผ่าน swift format และ swift format lint โดยไม่ต้องพึ่ง dependency ภายนอก