มีอะไรใหม่ในภาษา Swift 4.2 ของ Apple

ก่อนการเปิดตัว Swift 5 2019 ที่วางแผนไว้ Apple ได้เปิดตัว Swift 4.2 เวอร์ชันกลาง

เวอร์ชันปัจจุบัน: มีอะไรใหม่ใน Swift 4.2 ของ Apple

เวอร์ชัน 4.2 ของภาษาโปรแกรม Swift ของ Apple ทำให้ภาษาใกล้เคียงกับแอปพลิเคชั่นไบนารีอินเทอร์เฟซ (ABI) ที่เสถียรมากขึ้นและเปิดใช้งานความเข้ากันได้แบบไบนารีสำหรับรุ่นต่อ ๆ ไป ความเสถียรของ ABI ช่วยให้สามารถใช้งานร่วมกันได้แบบไบนารีระหว่างไลบรารีและแอปพลิเคชันที่คอมไพล์ด้วยภาษาเวอร์ชันต่างๆ

แม้ว่าเป้าหมายของ Apple คือความเสถียร แต่ Swift 4.2 ไม่รองรับไบนารีกับรุ่นก่อนหน้า ความเข้ากันได้ของแหล่งที่มาอย่างไรก็ตามมีให้ ซอร์สโค้ดส่วนใหญ่ที่สร้างด้วยคอมไพเลอร์ Swift 4.0 ควรคอมไพล์กับทั้งคอมไพเลอร์ Swift 4.2 และ Swift 4.1

คุณสมบัติใหม่อื่น ๆ ใน Swift 4.2 ได้แก่ :

  • การปรับปรุง Generics ยึดโดยการสนับสนุนการปฏิบัติตามเงื่อนไขที่สมบูรณ์ลดจำนวนรหัสสำเร็จรูปและทำให้โค้ดใช้ซ้ำได้มากขึ้น
  • คุณลักษณะของไลบรารีมาตรฐานประกอบด้วยการปรับปรุงโปรโตคอล Hashable และชุดฟังก์ชันและโปรโตคอลการสุ่มแบบรวม
  • รองรับการคอมไพล์โหมดแบทช์ซึ่งช่วยเพิ่มเวลาในการสร้าง
  • การเปลี่ยนแปลงรูปแบบการโทรสำหรับรอบการเก็บรักษา / รีลีสเพื่อลดขนาดโค้ดและปรับปรุงประสิทธิภาพ
  • การสนับสนุนข้อมูลเมตาแบบเรียกซ้ำ
  • ข้อมูลเมตาการสะท้อนที่กะทัดรัดยิ่งขึ้น
  • อาร์กิวเมนต์การเบี่ยงเบนที่แทรกอยู่ในไซต์การโทร
  • การแก้ไขข้อบกพร่องต่างๆเช่นการสืบทอดค่าเริ่มต้นทั่วไป
  • compilerสั่งที่เป็น syntactically เทียบเท่ากับ#if swiftการตรวจสอบรุ่น แต่การตรวจสอบกับรุ่นของคอมไพเลอร์โดยไม่คำนึงถึงโหมดที่เข้ากันกำลังทำงาน
  • ความสามารถใหม่ของตัวจัดการแพ็คเกจ Swift รวมถึงการรองรับโหมดแบทช์โดยตอนนี้เป้าหมายที่รวบรวมโดยใช้โหมดนี้ ปรับปรุงตรรกะการสร้างโครงร่าง และการสร้างโครงการ Xcode อัตโนมัติ

จะดาวน์โหลด Swift 4.2 ได้ที่ไหน

คุณสามารถดาวน์โหลด Swift 4.2 ได้โดยดาวน์โหลด Xcode 10.0 IDE จาก Apple

แผนอื่น ๆ สำหรับ Swift 4.2 ได้แก่ :

  • การปรับปรุงประสิทธิภาพเวลาคอมไพล์
  • ตอนนี้สตริงเป็น 16 ไบต์แทนที่จะเป็น 24 ไบต์ Apple มองว่านี่เป็นการแลกเปลี่ยนที่ดีระหว่างการใช้หน่วยความจำและประสิทธิภาพในขณะที่มีขนาดใหญ่พอที่จะทำการปรับแต่งสตริงขนาดเล็กได้
  • API มีไว้เพื่อการสร้างตัวเลขสุ่มที่ง่ายขึ้น
  • has importสั่งสร้างการกำหนดค่าที่ดีกว่าเป็นการแสดงออกถึงความตั้งใจที่จะร่วมรหัสระหว่าง iOS และ MacOS

เวอร์ชันก่อนหน้า: มีอะไรใหม่ใน Swift 4.1

เปิดตัวในปลายเดือนมีนาคม 2018 Swift 4.1 เพิ่มภาษาทั่วไปให้มากขึ้นรวมถึงการปรับปรุงการสร้าง เวอร์ชัน 4.1 รองรับซอร์สได้กับ Swift 4.0

ข้อเสนอที่เกี่ยวข้องกับ Generics ที่นำมาใช้ในรุ่น 4.1 รวมถึงการปฏิบัติตามเงื่อนไขซึ่งแสดงความคิดว่าประเภททั่วไปจะเป็นไปตามโปรโตคอลเฉพาะก็ต่อเมื่ออาร์กิวเมนต์ประเภทตรงตามข้อกำหนดเฉพาะ คุณลักษณะนี้คาดว่าจะมีผลกระทบอย่างมากต่อไลบรารีมาตรฐาน Swift การปรับปรุงข้อมูลทั่วไปอื่น ๆ ได้แก่ :

  • ให้คอมไพเลอร์สังเคราะห์EquatableและHashableสอดคล้องเพื่อลดขั้นตอนสำเร็จรูปและความซับซ้อน
  • Hashableทำดัชนีประเภทห้องสมุดมาตรฐาน
  • ขจัดประเภทที่เกี่ยวข้องIndexDistance,จากCollection และปรับเปลี่ยนการใช้งานประเภทคอนกรีตIntแทน

นอกจากนี้ใน Swift 4.1 ยังมีวิธีอื่น ๆ ในการกำหนดค่างานสร้างเช่นการเพิ่มประสิทธิภาพขนาดโค้ดและกลไกที่ง่ายกว่าในการกำหนดเป้าหมายการสนับสนุนแพลตฟอร์มและสภาพแวดล้อม

การเปลี่ยนแปลงภายใต้ฝากระโปรงในเวอร์ชัน 4.1 เป็นส่วนหนึ่งของแผนการที่จะทำให้ ABI (แอปพลิเคชันไบนารีจำนวนเต็ม) ใน Swift 5 มีความเสถียรซึ่งจะครบกำหนดในปลายปีนี้ การเปลี่ยนแปลงภายใต้ฝากระโปรงเหล่านี้รวมถึงการใช้ฟิลด์ขนาดคำในส่วนหัวของออบเจ็กต์ดั้งเดิมสำหรับการนับอ้างอิงและการตรวจสอบฟังก์ชันรันไทม์ นอกจากนี้การห่อหุ้มคอลเลกชันต่างๆยังถูกยุบผ่านการใช้การปฏิบัติตามเงื่อนไข

Swift 4.1 ปรับปรุง Swift Package Manager ตอนนี้ก็จะช่วยแก้ปัญหาการอ้างอิงในกราฟแพคเกจที่ใช้ชุดรูปแบบ URL เช่นและssh httpนอกจากนี้ยังได้เพิ่มประสิทธิภาพสำหรับกราฟแพ็คเกจที่มีการอ้างอิงร่วมกัน

การอัปเกรด 4.1 ยังมีข้อเสนอวิวัฒนาการของ Swift รวมถึงการลบคีย์เวิร์ดความเป็นเจ้าของweakและunownedสำหรับการประกาศคุณสมบัติในโปรโตคอล อยู่ระหว่างดำเนินการเพื่อความชัดเจน นอกจากนี้ตัวเริ่มต้นโครงสร้างข้ามโมดูลยังถูก จำกัด สิ่งนี้ตรงกับข้อ จำกัด ที่มีอยู่สำหรับชั้นเรียน

จะดาวน์โหลด Swift 4.1 ได้ที่ไหน

คุณสามารถดาวน์โหลดการอัปเกรด Swift 4.1 ได้จากหน้าเว็บดาวน์โหลด Swift นอกจากนี้ Swift 4.1 ยังสามารถใช้ได้กับ Xcode 9.3 IDE ซึ่งมีตัวย้ายรหัสเพื่อจัดการกับการเปลี่ยนแปลงที่มามากมาย

เวอร์ชันก่อนหน้า: มีอะไรใหม่ใน Swift 4.0

Swift 4.0 เป็นการอัปเกรดครั้งใหญ่สำหรับ Swift ของ Apple ซึ่งเป็นผู้สืบทอดภาษา Objective-C อายุ 3 ปีที่ใช้สำหรับการพัฒนาแอปพลิเคชัน MacOS และ iOS

การอัปเกรด Swift 4 ช่วยปรับปรุง Swift Package Manager และมีโหมดความเข้ากันได้ใหม่สำหรับนักพัฒนา Apple กล่าวว่า Swift 4 ทำให้ Swift มีเสถียรภาพมากขึ้นและปรับปรุงไลบรารีมาตรฐาน Swift 4 ส่วนใหญ่เข้ากันได้กับแหล่งที่มากับ Swift 3 และจัดส่งเป็นส่วนหนึ่งของ Xcode 9 IDE ของ Apple

มีอะไรใหม่ในตัวจัดการแพ็คเกจของ Swift 4

Swift Package Manager ซึ่งเปิดตัวใน Swift 3 เป็นเครื่องมือสำหรับแจกจ่ายโค้ด มันถูกรวมเข้ากับระบบสร้าง Swift เพื่อทำให้กระบวนการอัตโนมัติรวมถึงการดาวน์โหลดการรวบรวมและการเชื่อมโยงการอ้างอิง การปรับปรุงในตัวจัดการแพ็คเกจของ Swift 4 ได้แก่ :

  • Package API ที่สะอาดขึ้นซึ่งช่วยให้แพ็คเกจสามารถระบุการตั้งค่าใหม่ได้ การตั้งค่าเหล่านี้ทำให้นักพัฒนาสามารถควบคุมการสร้างแพ็กเกจและการจัดระเบียบแหล่งข้อมูลบนดิสก์ได้มากขึ้น
  • การพัฒนาแพ็กเกจหลาย ๆ แบบควบคู่ทำได้ง่ายขึ้น
  • การทำให้เป็นทางการของผลิตภัณฑ์แพ็กเกจทำให้สามารถควบคุมสิ่งที่ไลบรารีที่แพ็กเกจเผยแพร่ไปยังไคลเอนต์
  • ตอนนี้แพ็กเกจที่สร้างบน MacOS เกิดขึ้นในแซนด์บ็อกซ์ป้องกันการเข้าถึงเครือข่ายและการแก้ไขระบบไฟล์เพื่อลดการเข้าถึงไฟล์ Manifest ที่เป็นอันตราย

โหมดความเข้ากันได้ใหม่ในการย้ายระบบช่วยเหลือ Swift 4

โหมดความเข้ากันได้ใหม่ของ Swift 4 ช่วยให้คุณไม่ต้องแก้ไขโค้ดเพื่อให้สามารถใช้คอมไพเลอร์เวอร์ชันใหม่ได้ รองรับสองโหมด ได้แก่ โหมด Swift 3.2 ซึ่งยอมรับไฟล์ต้นฉบับส่วนใหญ่ที่สร้างด้วยคอมไพเลอร์ Swift 3.x และโหมด Swift 4.0 ซึ่งรวมถึงการเปลี่ยนแปลง Swift 4 และ API

Apple กล่าวว่าจำเป็นต้องมีการย้ายแหล่งที่มาบางอย่างสำหรับหลาย ๆ โครงการ แต่จำนวนการเปลี่ยนแปลงของแหล่งที่มานั้น“ ค่อนข้างน้อย” เมื่อเทียบกับการเปลี่ยนแปลงที่สำคัญหลายอย่างก่อนหน้านี้ระหว่าง Swift รุ่นต่างๆ การเปิดตัวโหมดความเข้ากันได้ใน Swift 4 ช่วยให้นักพัฒนาสามารถควบคุมจังหวะการย้ายข้อมูลได้มากขึ้น

การปรับปรุงภาษามีมากมายใน Swift 4

Swift 4 แนะนำการปรับปรุงภาษาต่างๆ ได้แก่ :

  • การนำไปใช้Stringงานที่เร็วขึ้นและง่ายต่อการใช้งานรักษาความถูกต้องของ Unicode และสนับสนุนการพัฒนาและการใช้สตริงย่อย
  • ปรับปรุงการใช้งานและการจัดการประเภทคอลเลคชัน
  • การบังคับใช้การเข้าถึงหน่วยความจำแบบเอกสิทธิ์เฉพาะบุคคลซึ่งการแก้ไขตัวแปรที่เป็นไปได้จะต้องเป็นเอกสิทธิ์เฉพาะกับการเข้าถึงตัวแปรอื่น ๆ
  • ความสามารถในการเก็บถาวรstructและenumประเภท
  • Type-safe serialization เป็นรูปแบบภายนอกเช่น JSON
  • จำนวนเต็มที่เน้นโปรโตคอลซึ่งจะล้าง Integer API และทำให้มีประโยชน์มากขึ้นสำหรับการเขียนโปรแกรมทั่วไป
  • การสนับสนุนwhereอนุประโยคเพื่อ จำกัด ประเภทที่เกี่ยวข้อง ก่อนหน้านี้ประเภทที่เกี่ยวข้องสามารถแสดงได้เฉพาะข้อ จำกัด ในการถ่ายทอดทางพันธุกรรมและไม่มีข้อ จำกัด ที่ซับซ้อนมากขึ้นสำหรับประเภททั่วไปที่มีwhere อนุประโยค
  • การรวมswift runคำสั่งเพื่อสร้างและรันไฟล์ปฏิบัติการที่กำหนดไว้ในแพ็คเกจปัจจุบัน
  • การลบfinal การสนับสนุนคำหลักเมื่อประกาศฟังก์ชันในส่วนขยายโปรโตคอล
  • ปรับปรุงการโต้ตอบระหว่างprivateการประกาศและส่วนขยายด้วยprivateการควบคุมการเข้าถึงที่ขยายออกไปเพื่อให้สมาชิกที่กำหนดในส่วนขยายของประเภทมีการเข้าถึงเช่นเดียวกับสมาชิกที่กำหนดไว้ในประเภทนั้นเองตราบใดที่ประเภทและส่วนขยายอยู่ในไฟล์ต้นฉบับเดียวกัน