- มีการตั้งข้อร้องเรียนในฟอรัม 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 ได้ ซึ่งช่วยรักษาความสม่ำเสมอและความปลอดภัยของทั้งระบบ
ยังไม่มีความคิดเห็น