Apple ประกาศโอเพนซอร์ส Swift Build
(swift.org)- Swift กำลังได้รับความนิยมในฐานะภาษาที่รองรับได้หลายแพลตฟอร์ม และสามารถใช้งานได้บนอุปกรณ์ฝังตัวและระบบปฏิบัติการที่หลากหลาย
- Apple ได้เปิดซอร์ส Swift Build ซึ่งเป็นเอนจินสำหรับการบิลด์ที่ทรงพลังและขยายต่อได้
- Swift Build ถูกใช้เป็นเอนจินบิลด์ของ Xcode และยังถูกนำไปใช้กับ "แอปบน App Store และการบิลด์ระบบปฏิบัติการของ Apple เอง" ด้วย
- รองรับการบิลด์เป้าหมายสำหรับ Linux และ Windows เช่นกัน
-
ความสามารถหลักของ Swift Build
- ระบบบิลด์มีหน้าที่แปลงคำอธิบายโปรเจ็กต์และซอร์สโค้ดให้เป็นผลลัพธ์ เช่น เครื่องมือบรรทัดคำสั่ง ไลบรารี และแอปพลิเคชัน
- Swift Build เป็นองค์ประกอบโครงสร้างพื้นฐานที่วางแผนและดำเนินการบิลด์ตามที่ไคลเอนต์ระดับบนอย่าง Swift Package Manager หรือ Xcode ร้องขอ
- ผสานการทำงานกับคอมไพเลอร์ Swift อย่างแน่นแฟ้น เพื่อประสานการบิลด์โปรเจ็กต์ Swift ได้อย่างน่าเชื่อถือและมีประสิทธิภาพ
- รองรับประเภทผลิตภัณฑ์ที่หลากหลาย และมีตัวเลือกการตั้งค่าการบิลด์ขั้นสูง
- รวมการเพิ่มประสิทธิภาพกราฟการบิลด์เพื่อเพิ่มความขนานสูงสุดระหว่างการบิลด์โค้ด Swift และ C
-
โรดแมปของ Swift Build
- เมื่อเทียบกับเอนจินบิลด์ของ Xcode แล้ว เอนจินบิลด์ของ Swift Package Manager ยังถือว่าค่อนข้างเรียบง่าย
- วิธีการบิลด์แพ็กเกจที่แตกต่างกันสองแบบบนแพลตฟอร์มของ Apple ทำให้ผู้ใช้เกิดความสับสน
- Apple ต้องการแก้ปัญหานี้ด้วยการนำเอนจินบิลด์ของ Xcode มาเปิดให้โปรเจ็กต์ Swift ใช้งานและพัฒนาร่วมกันแบบโอเพนซอร์สควบคู่ไปกับคอมไพเลอร์ Swift
- SwiftPM จะมีโอกาสมอบเอนจินรันการบิลด์แบบรวมศูนย์สำหรับทุกแพลตฟอร์ม
- การเปลี่ยนแปลงนี้จะโปร่งใสต่อผู้ใช้ และยังคงความเข้ากันได้อย่างสมบูรณ์กับแพ็กเกจที่มีอยู่ทั้งหมด
- เป็นการวางรากฐานสำหรับการส่งมอบฟีเจอร์ใหม่และการปรับปรุงต่าง ๆ ครอบคลุมทุกแพลตฟอร์มและทุกเครื่องมือ
- มีการส่ง PR เพื่อผสาน Swift Build เป็นเอนจินบิลด์ทางเลือกของ SwiftPM
- ต้องการทำงานร่วมกับชุมชนเพื่อให้การรวมระบบบิลด์เสร็จสมบูรณ์ เพื่อให้ทุกแพลตฟอร์มและโมเดลโปรเจ็กต์ได้รับประโยชน์จากการปรับปรุงเครื่องมือในอนาคต
-
เชิญชวนให้เข้าร่วม
- คาดหวังที่จะได้ร่วมมือกับชุมชนเพื่อพัฒนาวิธีการบิลด์โค้ด Swift ต่อไป
- สามารถดูรีโพซิทอรี
swift-buildได้ในองค์กร Swift บน GitHub โดยมี README และเอกสารอธิบายวิธีบิลด์และการมีส่วนร่วมรวมอยู่ด้วย - ยินดีรับการมีส่วนร่วมผ่าน pull request และ issue รวมถึงต้องการรับฟีดแบ็กและไอเดียเพื่อการปรับปรุงผ่าน Swift Forums
- นี่คือบทใหม่ที่น่าตื่นเต้นของระบบบิลด์สำหรับ Swift และคาดว่าจะช่วยปลดล็อกศักยภาพทั้งหมดของ Swift ได้
4 ความคิดเห็น
หน้า 12 ของ https://llvm.org/devmtg/2016-11/… น่าจะเป็นส่วนสำคัญครับ
โมเดลคอมไพเลอร์/ระบบบิลด์แบบ UNIX ดั้งเดิม
• คอมไพเลอร์ทำงานเป็นโปรเซสแยก
• มีกลไกพื้นฐานสำหรับสื่อสาร dependency
• ไปป์ไลน์ input/output แบบตายตัวที่กำหนดโดย command line
• นี่คือ API ...
• ... และเราแทบไม่ได้เปลี่ยนมันมาหลายทศวรรษแล้ว
• เรา ❤ การทำลาย API
ฝั่ง Java ดูเหมือนจะมี API ที่บอก dependency ระหว่างโค้ดได้ เลยทำให้สามารถบอกเครื่องมือบิลด์ได้ว่าจะทำ incremental build อย่างไร
เช่น: Gradle
ดูเหมือนว่าฝั่ง Native build ก็ควรจะไปในทิศทางที่นำวิธีนี้มาปรับใช้ด้วยครับ
งั้นก็... สรุปคือ xcode ก็ยังคงเป็นขยะเหมือนเดิมสินะ?
ฮือๆๆๆๆๆๆๆ
zzz
ความเห็นจาก Hacker News
การรับรู้ที่ว่า Swift "ดีสำหรับทุกอย่าง แต่ดีกว่าเป็นพิเศษบนแพลตฟอร์มของ Apple" อาจเป็นผลเสียต่อภาษา เพราะมันไม่ช่วยดึงคนเข้ามาในระบบนิเวศของ Swift มากขึ้น
Swift เป็นภาษาที่ยอดเยี่ยม
สถานการณ์ของ Swift ทำให้นึกถึงช่วงแรก ๆ ของ C#
อยากให้ Swift ถูกสร้างบน LLVM ปกติ ไม่ใช่บน LLVM fork ของ Apple
Swift ควรตั้งเป้าแยกตัวออกจาก Xcode
SwiftPM รุ่นใหม่เปิดโอกาสให้มีเอนจินรันบิลด์แบบรวมศูนย์บนทุกแพลตฟอร์ม
สงสัยว่าจะเปิดทางให้พัฒนา Swift ได้โดยไม่ต้องใช้ Xcode หรือไม่
ยังไม่ชัดเจนว่า Swift Build ผสานรวมกับเครื่องมือและ language server ของ Swift ได้ดีแค่ไหน
ดีใจที่ Swift มีความเป็นอิสระจาก Apple มากขึ้น
URLSession.shared.dataคอมไพล์บน Linux ไม่ได้ จนต้องเปลี่ยนไปใช้ภาษาอื่นสงสัยว่า Swift เอาจริงกับระบบสมองกลฝังตัวหรือไม่