มีภาษา Dart 2.14 และเฟรมเวิร์ก Flutter 2.5

Google ได้เผยแพร่การเปิดตัวภาษาการเขียนโปรแกรม Dart 2.14 ซึ่งยังคงพัฒนาสาขาที่ออกแบบใหม่อย่างรุนแรงของ Dart 2 ซึ่งแตกต่างจากภาษา Dart เวอร์ชันดั้งเดิมโดยใช้การพิมพ์แบบคงที่ที่แข็งแกร่ง (ประเภทสามารถอนุมานได้โดยอัตโนมัติดังนั้น ไม่จำเป็นต้องระบุประเภท แต่การพิมพ์แบบไดนามิกจะไม่ถูกใช้อีกต่อไป และในขั้นต้นจะคำนวณประเภทที่กำหนดให้กับตัวแปร และใช้การตรวจสอบประเภทที่เข้มงวดในภายหลัง)

คุณสมบัติของภาษา Dart:

  • ไวยากรณ์ที่คุ้นเคยและเรียนรู้ได้ง่าย เป็นธรรมชาติสำหรับโปรแกรมเมอร์ JavaScript, C และ Java
  • รับประกันการเปิดใช้งานที่รวดเร็วและประสิทธิภาพสูงสำหรับเว็บเบราว์เซอร์สมัยใหม่และสภาพแวดล้อมประเภทต่างๆ ตั้งแต่อุปกรณ์พกพาไปจนถึงเซิร์ฟเวอร์ที่ทรงพลัง
  • ความสามารถในการกำหนดคลาสและอินเทอร์เฟซที่อนุญาตให้มีการห่อหุ้มและนำวิธีการและข้อมูลที่มีอยู่กลับมาใช้ใหม่
  • การระบุประเภทช่วยให้แก้ไขจุดบกพร่องและระบุข้อผิดพลาดได้ง่ายขึ้น ทำให้โค้ดชัดเจนขึ้นและอ่านง่ายขึ้น และทำให้การแก้ไขและการวิเคราะห์ง่ายขึ้นโดยนักพัฒนาบุคคลที่สาม
  • ประเภทที่รองรับ ได้แก่ แฮชประเภทต่างๆ อาร์เรย์และรายการ คิว ประเภทตัวเลขและสตริง ประเภทสำหรับกำหนดวันที่และเวลา นิพจน์ทั่วไป (RegExp) สามารถสร้างประเภทของคุณเองได้
  • ในการจัดระเบียบการดำเนินการแบบขนาน ขอเสนอให้ใช้คลาสที่มีแอตทริบิวต์ isolate ซึ่งโค้ดจะถูกดำเนินการทั้งหมดในพื้นที่แยกในพื้นที่หน่วยความจำแยกต่างหาก โดยโต้ตอบกับกระบวนการหลักโดยการส่งข้อความ
  • รองรับการใช้ไลบรารีที่ทำให้การสนับสนุนและการดีบักโครงการเว็บขนาดใหญ่ง่ายขึ้น การใช้งานฟังก์ชันของบุคคลที่สามสามารถรวมไว้ในรูปแบบของไลบรารีที่ใช้ร่วมกันได้ แอปพลิเคชันสามารถแบ่งออกเป็นส่วนๆ และมอบหมายให้ทีมโปรแกรมเมอร์แยกกันในการพัฒนาแต่ละส่วน
  • ชุดเครื่องมือสำเร็จรูปเพื่อรองรับการพัฒนาในภาษา Dart รวมถึงการใช้งานการพัฒนาแบบไดนามิกและเครื่องมือแก้ไขจุดบกพร่องพร้อมการแก้ไขโค้ดได้ทันที (“แก้ไขและดำเนินการต่อ”)
  • เพื่อให้การพัฒนาในภาษา Dart ง่ายขึ้น มันมาพร้อมกับ SDK, Pub Manager แพ็คเกจ, ตัววิเคราะห์โค้ดคงที่ dart_analyzer, ชุดไลบรารี, สภาพแวดล้อมการพัฒนาแบบรวม DartPad และปลั๊กอินที่เปิดใช้งาน Dart สำหรับ IntelliJ IDEA, WebStorm, Emacs, Sublime Text 2 และเป็นกลุ่ม
  • แพ็คเกจเพิ่มเติมพร้อมไลบรารีและยูทิลิตี้มีการแจกจ่ายผ่านพื้นที่เก็บข้อมูลผับซึ่งมีแพ็คเกจมากกว่า 20 แพ็คเกจ

การเปลี่ยนแปลงที่สำคัญใน Dart 2.14:

  • มีการเพิ่มตัวดำเนินการกะสามตัวใหม่ (>>>) ซึ่งแตกต่างจากตัวดำเนินการ ">>" ที่ไม่ได้ดำเนินการทางคณิตศาสตร์ แต่เป็นการเปลี่ยนแปลงเชิงตรรกะที่ทำงานโดยไม่คำนึงถึงบิตเครื่องหมาย (การเปลี่ยนแปลงจะดำเนินการโดยไม่แบ่งออกเป็น จำนวนบวกและลบ)
  • ลบข้อจำกัดเกี่ยวกับอาร์กิวเมนต์ประเภทที่ป้องกันไม่ให้ใช้ประเภทฟังก์ชันทั่วไปเป็นอาร์กิวเมนต์ประเภท ตัวอย่างเช่น ตอนนี้คุณสามารถระบุ: รายการล่าช้า (T)>รหัสฟังก์ชัน; var โทรกลับ = [ (ค่า T) => ค่า]; ฟังก์ชั่น S ปลาย (T)>(S) f;
  • อนุญาตให้ระบุอาร์กิวเมนต์ด้วยประเภทในคำอธิบายประกอบ เช่น @Deprecated ตัวอย่างเช่น ตอนนี้คุณสามารถระบุ: @TypeHelper (42, “ความหมาย”)
  • วิธีการคงที่ hash, hashAll และ hashAllUnordered ได้รับการเพิ่มลงในไลบรารีมาตรฐาน (หลัก) ในคลาส Object คลาส DateTime ได้ปรับปรุงการจัดการเวลาท้องถิ่นเมื่อแปลงนาฬิการะหว่างเวลาฤดูร้อนและเวลาฤดูหนาวที่ไม่สามารถหารด้วยหนึ่งชั่วโมง (เช่น ในออสเตรเลีย จะใช้ออฟเซ็ต 30 นาที) แพ็คเกจ ffi ได้เพิ่มการรองรับกลไกการจัดสรรหน่วยความจำอารีน่า ซึ่งจะเผยแพร่ทรัพยากรโดยอัตโนมัติ แพ็คเกจ ffigen ได้เพิ่มความสามารถในการสร้างคำจำกัดความ typedef ของประเภท Dart จากภาษา C
  • แพ็คเกจยอดนิยม 250 รายการจากพื้นที่เก็บข้อมูล pub.dev และ 94% ของแพ็คเกจ 1000 อันดับแรกได้ถูกเปลี่ยนไปใช้โหมด "ความปลอดภัยแบบ null" ซึ่งจะหลีกเลี่ยงข้อขัดข้องที่เกิดจากความพยายามใช้ตัวแปรที่ไม่มีการกำหนดค่าและตั้งค่าเป็น "Null" ” " โหมดนี้บอกเป็นนัยว่าตัวแปรไม่สามารถมีค่าว่างได้เว้นแต่จะได้รับการกำหนดค่าเป็นโมฆะอย่างชัดเจน โหมดนี้เคารพประเภทตัวแปรอย่างเคร่งครัด ซึ่งช่วยให้คอมไพลเลอร์ใช้การปรับให้เหมาะสมเพิ่มเติมได้ การปฏิบัติตามประเภทจะถูกตรวจสอบในเวลาคอมไพล์ ตัวอย่างเช่น หากคุณพยายามกำหนดค่า "Null" ให้กับตัวแปรด้วยประเภทที่ไม่ได้หมายความถึงสถานะที่ไม่ได้กำหนด เช่น "int" ข้อผิดพลาดจะปรากฏขึ้น
  • มีการเสนอชุดกฎแบบรวมสำหรับตัววิเคราะห์โค้ด (linter) ซึ่งให้การสนับสนุนพร้อมกันสำหรับการตรวจสอบการปฏิบัติตามหลักเกณฑ์สไตล์โค้ดสำหรับ Dart และเฟรมเวิร์ก Flutter ด้วยเหตุผลทางประวัติศาสตร์ กฎการเขียนโค้ดสำหรับ Flutter และ Dart จึงแตกต่างกัน นอกจากนี้สำหรับ Dart ยังมีกฎสองชุดที่ใช้งานอยู่ - ชุดที่อวดรู้จาก Google และกฎจากชุมชนนักพัฒนา Dart Dart 2.14 แนะนำชุดกฎทั่วไปใหม่สำหรับ linter ซึ่งตัดสินใจว่าจะใช้เป็นค่าเริ่มต้นในโปรเจ็กต์ Dart ใหม่และใน Flutter SDK ชุดประกอบด้วยกฎหลัก (แพ็คเกจ lints/core.yaml) กฎเพิ่มเติมที่แนะนำ (lints/recommended.yaml) และคำแนะนำเฉพาะของ Flutter (flutter_lints/flutter.yaml) ผู้ใช้กฎที่อวดรู้ควรเปลี่ยนไปใช้รูปแบบการเขียนโค้ดใหม่ตามคำแนะนำจากเอกสาร Dart
  • ในฟอร์แมตเตอร์ มีการเพิ่มประสิทธิภาพให้กับการจัดรูปแบบของบล็อคโค้ดแบบเรียงซ้อน ซึ่งสามารถปรับปรุงประสิทธิภาพการจัดรูปแบบได้อย่างมาก และหลีกเลี่ยงการตีความความเป็นเจ้าขององค์ประกอบนิพจน์ที่ไม่ชัดเจน ตัวอย่างเช่น การเรียก "..doIt" ในนิพจน์ "var result = errorState ? foo : bad..doIt()” ไม่เกี่ยวข้องกับส่วนที่มีเงื่อนไขของบล็อก "bad" แต่เกี่ยวข้องกับนิพจน์ทั้งหมด ดังนั้นเมื่อจัดรูปแบบจะถูกแยกออกจากกัน: var result = errorState ? foo : แย่ ..doIt();
  • เพิ่มการรองรับโปรเซสเซอร์ Apple M1 (Silicon) ลงใน SDK แล้ว ซึ่งหมายถึงทั้งความสามารถในการรัน Dart VM, ยูทิลิตี้และส่วนประกอบ SDK บนระบบที่มีโปรเซสเซอร์ Apple Silicon และรองรับการคอมไพล์ไฟล์ปฏิบัติการสำหรับชิปเหล่านี้
  • คำสั่ง "dart pub" ได้เพิ่มการรองรับไฟล์บริการใหม่ ".pubignore" ซึ่งช่วยให้คุณกำหนดรายการไฟล์ที่จะถูกข้ามเมื่อเผยแพร่แพ็คเกจไปยังที่เก็บ pub.dev การตั้งค่าเหล่านี้ไม่รบกวนรายการละเว้น “.gitignore” (ในบางสถานการณ์ pub.dev อาจต้องการหลีกเลี่ยงการถ่ายโอนไฟล์ที่จำเป็นใน Git เช่น สคริปต์ภายในที่ใช้ระหว่างการพัฒนา)
  • มีการทำงานเพื่อปรับปรุงประสิทธิภาพของคำสั่ง “dart test” ซึ่งขณะนี้ไม่จำเป็นต้องมีการทดสอบการคอมไพล์ใหม่หลังจากเปลี่ยน pubspec หากหมายเลขเวอร์ชันไม่เปลี่ยนแปลง
  • การสนับสนุนการคอมไพล์ในโหมดความเข้ากันได้ของ ECMAScript 5 ถูกยกเลิกแล้ว (การเปลี่ยนแปลงจะส่งผลให้สูญเสียความเข้ากันได้กับเบราว์เซอร์ IE11)
  • ยูทิลิตี้แต่ละตัว stagehand, dartfmt และ dart2native ได้รับการประกาศว่าล้าสมัย โดยแทนที่ด้วยคำสั่งในตัวที่เรียกผ่านยูทิลิตี้ dart
  • กลไก VM Native Extensions เลิกใช้แล้ว หากต้องการเรียกโค้ดเนทีฟจากโค้ด Dart ขอแนะนำให้ใช้ Dart FFI (Foreign Function Interface) ใหม่

ในเวลาเดียวกัน มีการนำเสนอเฟรมเวิร์กอินเทอร์เฟซผู้ใช้ Flutter 2.5 รุ่นสำคัญ ซึ่งถือเป็นทางเลือกแทน React Native และอนุญาตให้เผยแพร่แอปพลิเคชันสำหรับ iOS, Android, Windows, macOS และ Linux โดยใช้ฐานโค้ดเดียว แพลตฟอร์มตลอดจนสร้างแอปพลิเคชันให้ทำงานในเบราว์เซอร์ เชลล์แบบกำหนดเองสำหรับระบบปฏิบัติการไมโครเคอร์เนล Fuchsia ที่พัฒนาโดย Google นั้นสร้างขึ้นบนพื้นฐานของ Flutter

ส่วนหลักของโค้ด Flutter ถูกนำไปใช้ในภาษา Dart และเอ็นจิ้นรันไทม์สำหรับการเรียกใช้งานแอปพลิเคชันเขียนด้วยภาษา C ++ เมื่อพัฒนาแอปพลิเคชัน นอกเหนือจากภาษา Dart ดั้งเดิมของ Flutter แล้ว คุณสามารถใช้อินเทอร์เฟซ Dart Foreign Function เพื่อเรียกโค้ด C/C++ ได้ ประสิทธิภาพการดำเนินการระดับสูงทำได้โดยการรวบรวมแอปพลิเคชันเป็นโค้ดเนทีฟสำหรับแพลตฟอร์มเป้าหมาย ในกรณีนี้ ไม่จำเป็นต้องคอมไพล์โปรแกรมใหม่หลังการเปลี่ยนแปลงแต่ละครั้ง - Dart มีโหมด hot reload ที่ให้คุณทำการเปลี่ยนแปลงกับแอปพลิเคชันที่รันอยู่และประเมินผลลัพธ์ได้ทันที

การเปลี่ยนแปลงที่สำคัญใน Flutter 2.5:

  • ทำการเพิ่มประสิทธิภาพการทำงานที่สำคัญ บนแพลตฟอร์ม iOS และ macOS ได้มีการนำการคอมไพล์เชเดอร์ล่วงหน้าสำหรับ Metal Graphics API มาใช้ ปรับปรุงประสิทธิภาพของการประมวลผลเหตุการณ์แบบอะซิงโครนัส แก้ไขปัญหาความล่าช้าเมื่อตัวรวบรวมขยะเรียกคืนหน่วยความจำจากภาพที่ไม่ได้ใช้ (เช่น ในระหว่างการเล่น GIF แบบเคลื่อนไหว 20 วินาที จำนวนการดำเนินการรวบรวมขยะลดลงจาก 400 เป็น 4 ความล่าช้าในการส่งข้อความระหว่าง Dart และ Objective- C/Swift ลดลงเหลือ 50% (iOS) หรือ Java/Kotlin (Android) เพิ่มการรองรับเนทีฟบิลด์สำหรับระบบที่ใช้ชิป Apple Silicon
    มีภาษา Dart 2.14 และเฟรมเวิร์ก Flutter 2.5
  • สำหรับแพลตฟอร์ม Android ได้มีการสร้างการรองรับการรันแอปพลิเคชันในโหมดเต็มหน้าจอแล้ว การดำเนินการตามแนวคิดการออกแบบ "Material You" ซึ่งนำเสนอเป็นตัวเลือกการออกแบบ Material ยุคถัดไปยังคงดำเนินต่อไป เพิ่มสถานะใหม่ MaterialState.scrolledUnder ใช้การแสดงผลแบบไดนามิกของแถบเลื่อนเมื่อปรับขนาด และเสนออินเทอร์เฟซใหม่สำหรับการแสดงแบนเนอร์การแจ้งเตือน
  • ความสามารถของปลั๊กอินกล้องได้รับการขยายอย่างมาก โดยเพิ่มเครื่องมือสำหรับควบคุมโฟกัสอัตโนมัติ การเปิดรับแสง แฟลช ซูม การลดจุดรบกวน และความละเอียด
  • เครื่องมือสำหรับนักพัฒนา (DevTools) ได้รับการปรับปรุงให้มีโหมดการตรวจสอบวิดเจ็ตที่ได้รับการอัปเดต รวมถึงเครื่องมือสำหรับระบุความล่าช้าในการเรนเดอร์และการติดตามการคอมไพล์เชเดอร์
    มีภาษา Dart 2.14 และเฟรมเวิร์ก Flutter 2.5
  • ปลั๊กอินที่ได้รับการปรับปรุงสำหรับ Visual Studio Code และ IntelliJ/Android Studio

ที่มา: opennet.ru

เพิ่มความคิดเห็น