Google เพิ่งเปิดตัวการเปิดตัว เวอร์ชั่นใหม่ของภาษาโปรแกรม Dart 2.15 ซึ่งยังคงพัฒนาสาขา Dart 2 . ที่ออกแบบใหม่อย่างรุนแรง และที่แตกต่างจากภาษา Dart เวอร์ชันดั้งเดิมโดยใช้การพิมพ์แบบสแตติกอย่างแรง (ประเภทสามารถอนุมานได้โดยอัตโนมัติจึงไม่จำเป็นต้องระบุประเภท แต่การพิมพ์แบบไดนามิกจะไม่ใช้อีกต่อไปและถูกคำนวณในขั้นต้นประเภทถูกกำหนดให้กับ ตัวแปรแล้วใช้การตรวจสอบประเภทที่เข้มงวด)
ในเวอร์ชันใหม่นี้ มีการนำการปรับปรุงต่างๆ มาใช้ และเหนือสิ่งอื่นใดคือการแนะนำคุณลักษณะใหม่บางอย่าง เช่น กลุ่มที่แยกออกมา และการแก้ปัญหาช่องโหว่ที่ตรวจพบ
คุณสมบัติใหม่หลักของ Dart 2.15
ในเวอร์ชันใหม่ของ Dart 2.15 มีเครื่องมือสำหรับการทำงานแบบคู่ขนานอย่างรวดเร็วด้วยการแยกตัวควบคุม
นอกเหนือจากนั้น ในระบบมัลติคอร์ รันไทม์ โผโดยค่าเริ่มต้น รันรหัสแอปพลิเคชันบนแกน CPU และใช้แกนอื่นเพื่อทำงานของระบบ เช่น Asynchronous I/O, การเขียนลงไฟล์, หรือการโทรในเครือข่าย.
ความแปลกใหม่อีกอย่างที่ Dart 2.15 แนะนำคือแนวคิดใหม่ กลุ่มแยก (แยกกลุ่ม) ช่วยให้เข้าถึงโครงสร้างข้อมูลภายในต่างๆ ร่วมกันได้ แยกจากกลุ่มเดียวกัน ซึ่งสามารถลดค่าใช้จ่ายได้อย่างมากเมื่อสื่อสารกับตัวแทนในกลุ่ม. ตัวอย่างเช่น การเริ่มต้นการแยกเพิ่มเติมในพูลที่มีอยู่จะเร็วขึ้น 100 เท่า และต้องการหน่วยความจำน้อยกว่าการเริ่มต้นการแยกแบบแยก 10 ถึง 100 เท่า ทำให้ไม่จำเป็นต้องเริ่มต้นโครงสร้างข้อมูลโปรแกรม
แม้ว่าในบล็อกที่แยกจากกันในกลุ่ม ยังคงห้ามการเข้าถึงวัตถุที่ไม่แน่นอนร่วมกัน กลุ่มต่างๆ ใช้หน่วยความจำไดนามิกที่ใช้ร่วมกันช่วยเพิ่มความเร็วในการถ่ายโอนวัตถุจากบล็อกหนึ่งไปยังอีกบล็อกหนึ่งโดยไม่จำเป็นต้องดำเนินการคัดลอกที่ใช้ทรัพยากรมาก
ในเวอร์ชันใหม่ นอกจากนี้ยังได้รับอนุญาตให้ผ่านผลงานของตัวควบคุมเมื่อเรียก Isolate.exit () เพื่อส่งข้อมูลไปยังบล็อกการแยกหลักโดยไม่ต้องดำเนินการคัดลอก นอกจากนี้ ยังได้ดำเนินการปรับกลไกการส่งข้อความให้เหมาะสมที่สุด: ขณะนี้ข้อความขนาดเล็กและขนาดกลางได้รับการประมวลผลเร็วขึ้นประมาณ 8 เท่า ออบเจ็กต์ที่สามารถส่งระหว่างไอโซเลทได้โดยใช้การเรียก SendPort.send () ประกอบด้วยฟังก์ชัน การปิด และสแต็กเทรซประเภทต่างๆ
ในเครื่องมือสร้างพอยน์เตอร์ กับแต่ละหน้าที่ในอ็อบเจกต์อื่นๆ ข้อจำกัดในการสร้างตัวชี้ดังกล่าวถูกลบออก ในรหัสตัวสร้างซึ่ง จะมีประโยชน์เมื่อสร้างอินเทอร์เฟซตามไลบรารี กระพือปีก
ห้องสมุด dart: core ได้ปรับปรุงการรองรับ enum ตัวอย่างเช่น คุณสามารถสร้างค่าสตริงจากค่าการแจงนับแต่ละค่าโดยใช้เมธอด ".name" รับค่าตามชื่อ หรือจับคู่ค่าที่ตรงกัน
นอกจากนี้ยังมีการเน้นย้ำว่า มีการนำเทคนิคการบีบอัดตัวชี้มาใช้ที่ อนุญาตให้ใช้การแสดงพอยน์เตอร์ที่กะทัดรัดยิ่งขึ้นในสภาพแวดล้อม 64 บิต หากพื้นที่แอดเดรส 32 บิตเพียงพอสำหรับการกำหนดแอดเดรส (ใช้หน่วยความจำไม่เกิน 4 GB) การทดสอบแสดงให้เห็นว่าการเพิ่มประสิทธิภาพดังกล่าวลดขนาดฮีปลงประมาณ 10% ใน Flutter SDK โหมดใหม่เปิดใช้งานแล้วสำหรับ Android โดยค่าเริ่มต้น และมีการวางแผนที่จะเปิดใช้งานสำหรับ iOS ในรุ่นต่อๆ ไป
เพิ่มเติม เป็นที่สังเกตว่าที่เก็บ pub.dev ในขณะนี้มีความสามารถในการเพิกถอนเวอร์ชันที่เผยแพร่แล้ว ของแพ็คเกจ เช่น ในกรณีที่มีจุดบกพร่องหรือจุดอ่อนที่เป็นอันตราย
ของ การเปลี่ยนแปลงอื่น ๆ ที่โดดเด่น:
- การป้องกันเพิ่มเติมจากช่องโหว่ (CVE-2021-22567) ที่เกิดจากการใช้อักขระ Unicode ที่เปลี่ยนลำดับการแสดงผลในโค้ด
- แก้ไขช่องโหว่ (CVE-2021-22568) ที่อาจแอบอ้างเป็นผู้ใช้ pub.dev อื่นเมื่อเผยแพร่แพ็คเกจไปยังเซิร์ฟเวอร์บุคคลที่สามที่ยอมรับโทเค็นการเข้าถึง oauth2 จาก pub.dev
- Dart SDK มีเครื่องมือสำหรับการดีบักและการวิเคราะห์ประสิทธิภาพ (DevTools) ซึ่งก่อนหน้านี้มีการจัดส่งในแพ็คเกจแยกต่างหาก
- เพิ่มเครื่องมือในคำสั่ง "dart pub" และที่เก็บแพ็กเกจ pub.dev เพื่อติดตามการเปิดเผยข้อมูลที่สำคัญโดยไม่ได้ตั้งใจ เช่น การปล่อยข้อมูลประจำตัวสำหรับระบบการรวมอย่างต่อเนื่องและสภาพแวดล้อมคลาวด์ภายในแพ็กเกจ
- หากพบการรั่วไหลดังกล่าว คำสั่ง "dart pub publish" จะหยุดพร้อมข้อความแสดงข้อผิดพลาด ในกรณีที่มีสัญญาณเตือนผิดพลาด คุณสามารถข้ามการตรวจสอบผ่านรายการสีขาวได้
Fuente: https://medium.com/