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

การพึ่งพา OS

  • ในอดีต คอมพิวเตอร์ส่วนบุคคลอนุญาตให้โปรเซสที่กำลังทำงานควบคุมทั้งเครื่องได้ แต่ปัจจุบันเคอร์เนลของระบบปฏิบัติการจะทำงานอยู่ตลอดเวลาและให้บริการพื้นฐานของ OS
  • OS สมัยใหม่ส่วนใหญ่สามารถสร้างโปรแกรมที่ร้องขอการทำงานบางอย่างที่มีสิทธิ์พิเศษได้ผ่านอินเทอร์เฟซ system call
  • ปัจจุบัน Apple OS ใช้อินเทอร์เฟซ system call ที่ไม่เสถียรข้ามเวอร์ชันของ OS ดังนั้นจึงจำเป็นต้องใช้ไลบรารีมาตรฐาน C/POSIX และส่วนขยายของมันเพื่อทำงานพื้นฐานต่าง ๆ

โมเดลของ Apple (ก่อน Swift)

  • ก่อนมี Swift นั้น API สาธารณะส่วนใหญ่ของ Apple เขียนด้วย C หรือ Objective-C และถูกจัดส่งในรูปแบบ native code
  • OS เวอร์ชันใหม่จะรวมไลบรารีเวอร์ชันใหม่ที่เข้ากันได้ในระดับไบนารีกับของเดิม จึงเป็น superset ที่รวม API ของเวอร์ชันก่อนหน้าไว้ด้วย
  • ข้อเสียหลักของโมเดลนี้คือฟีเจอร์และ API ใหม่จะผูกติดอยู่กับ OS เวอร์ชันใหม่

Swift "เบต้า" 1 ~ 5

  • Swift ตั้งแต่เวอร์ชัน 1 ถึง 5 มีการเปลี่ยนแปลงจำนวนมาก และ ABI stability ก็เป็นเป้าหมายของ Swift มาโดยตลอด
  • เมื่อเข้าสู่ Swift 5 ปัญหาส่วนใหญ่ได้รับการแก้ไขแล้ว และจำเป็นต้องหาวิธีทำให้การรวม Swift เข้าไปใน OS ไม่ส่งผลกระทบต่อแอปและโปรเจ็กต์เดิม

การเปลี่ยนผ่าน

  • ในกระบวนการนำ Swift ไปรวมไว้ใน OS จำเป็นต้องหาวิธีไม่ให้แอปและโปรเจ็กต์ที่สร้างไว้เดิมพัง
  • มีการใช้ฟีเจอร์ที่ชื่อว่า rpath เพื่อให้ไฟล์ executable สามารถค้นหา dynamic library จากชุดของไดเรกทอรี แทนที่จะอ้างอิงจากพาธที่ฝังตายตัว

สิ่งที่เราสูญเสียไป

  • เมื่อ Swift ถูกรวมไว้ใน OS แอปก็ไม่จำเป็นต้องรวม Swift ไปด้วยอีกต่อไป และการที่มีทั้ง Swift และ Objective-C runtime มาให้พร้อมกันก็เปิดทางให้ปรับปรุงประสิทธิภาพได้
  • อย่างไรก็ตาม ผู้มีส่วนร่วมกับ Swift จากภายนอกต้องเผชิญกับปัญหาที่ว่า API ใหม่จะมีอยู่เฉพาะบน OS ใหม่เท่านั้น

ทางเลือก

  • มีแนวทางที่สมเหตุสมผลอยู่หลายวิธีที่ Apple สามารถทำเพื่อมอบสถานการณ์ที่ดีกว่าให้แก่นักพัฒนาได้ แต่ยังไม่แน่ชัดว่า Apple จะทำหรือไม่

บทสรุป

  • การที่ Swift ถูกรวมไว้ใน OS อาจเป็นข้อตกลงที่ไม่ค่อยคุ้มสำหรับนักพัฒนาแอป แต่ Apple ก็ไม่อาจละทิ้งตัวเลือกในการเขียน system library ด้วย Swift ได้

นี่ไม่ใช่เรื่องใหม่ของ Swift

  • ปัญหาหลายอย่างที่เกี่ยวข้องกับ Swift เป็นผลมาจากไลบรารีที่มาพร้อมกับ OS
  • ทั้งการเปลี่ยนแปลงทางเทคนิคและการเปลี่ยนแปลงทางสังคมของ Swift ต่างก็ส่งผลต่อปัญหาเหล่านี้

ความเห็นของ GN⁺

  • การที่ Swift กลายเป็นส่วนหนึ่งของ OS ทำให้นักพัฒนามีข้อจำกัดมากขึ้น แต่ก็เป็นผลลัพธ์ที่หลีกเลี่ยงไม่ได้จากโมเดลการแจกจ่ายไลบรารีของ Apple
  • บทความนี้สำรวจความท้าทายทางเทคนิคและการปฏิบัติงานที่เกิดขึ้นระหว่างการผสาน Swift เข้ากับ OS รวมถึงแนวทางแก้ไข เพื่อเน้นย้ำถึงความซับซ้อนของการพัฒนาซอฟต์แวร์และความสำคัญของการจัดการไลบรารี
  • การผสาน Swift เข้ากับ OS ทำให้นักพัฒนาแอปต้องเผชิญกับขนาดไฟล์ที่ใหญ่ขึ้นและปัญหาความเข้ากันได้ แต่สำหรับ Apple มันช่วยให้สามารถเขียนและอัปเดต system library ด้วย Swift ได้ ซึ่งช่วยรักษาความสม่ำเสมอและความปลอดภัยของทั้งระบบ

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น