การเปิดตัวภาษาการเขียนโปรแกรม Rust 1.76

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

วิธีการจัดการหน่วยความจำของ Rust ช่วยนักพัฒนาจากข้อผิดพลาดเมื่อจัดการพอยน์เตอร์และป้องกันปัญหาที่เกิดขึ้นเนื่องจากการจัดการหน่วยความจำระดับต่ำ เช่น การเข้าถึงพื้นที่หน่วยความจำหลังจากปล่อยให้ว่าง การยกเลิกการอ้างอิงพอยน์เตอร์ null บัฟเฟอร์เกิน เป็นต้น เพื่อแจกจ่ายไลบรารี่ จัดเตรียมการสร้างและจัดการการอ้างอิง โครงการพัฒนาตัวจัดการแพ็คเกจสินค้า ที่เก็บ crates.io รองรับการโฮสต์ไลบรารี

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

นวัตกรรมหลัก:

  • มีการเพิ่มส่วนแยกต่างหากในเอกสารประกอบที่อธิบายความเข้ากันได้ของประเภทอาร์กิวเมนต์และประเภทการส่งคืนฟังก์ชันต่างๆ ในระดับ ABI เมื่อเทียบกับเวอร์ชันก่อนหน้า ปัจจุบัน ABI รับประกันความเข้ากันได้สำหรับประเภท "char" และ "u32" ซึ่งมีขนาดและการจัดเรียงเหมือนกัน
  • นอกเหนือจากการเรียกใช้งาน "any::type_name:: ()" ซึ่งส่งคืนคำอธิบายสตริงสำหรับประเภทที่ระบุในพารามิเตอร์ "T" ได้รับการเสริมด้วยฟังก์ชัน "type_name_of_val(&T)" ซึ่งช่วยให้คุณรับข้อมูลประเภทตามการอ้างอิงที่ไม่มีชื่อได้ fn get_iter() -> impl Iterator { [1, 2, 3].into_iter() } fn main() { let iter = get_iter(); let iter_name = std::any::type_name_of_val(&iter); let sum: i32 = iter.sum(); println!("ผลรวมของ `{iter_name}` คือ {sum}."); } ผลลัพธ์คือ: ผลรวมของ `core::array::iter::IntoIter ` คือ 6.
  • ส่วนใหม่ของ API ถูกย้ายไปยังหมวดหมู่ของความเสถียร ซึ่งรวมถึงวิธีการและการใช้งานลักษณะต่างๆ ที่ได้รับการทำให้เสถียร:
    • อาร์ค::unwrap_หรือ_โคลน
    • Rc::unwrap_or_clone
    • ผลลัพธ์::ตรวจสอบ
    • ผลลัพธ์::ตรวจสอบข้อผิดพลาด
    • ตัวเลือก::ตรวจสอบ
    • พิมพ์ชื่อของค่า
    • std::hash::{DefaultHasher, RandomState}
    • ptr::{จาก_ref, จาก_mut}
    • ptr::addr_eq
  • มีการนำการรองรับระดับ 3 มาใช้กับแพลตฟอร์ม {x86_64,i686}-win7-windows-msvc, aarch64-apple-watchos, arm64e-apple-ios และ arm64e-apple-darwin แล้ว ระดับ 3 ให้การสนับสนุนขั้นพื้นฐาน แต่ไม่มีการทดสอบอัตโนมัติ การเผยแพร่เวอร์ชันอย่างเป็นทางการ หรือการตรวจสอบเวอร์ชัน

นอกจากนี้ ยังมีการสาธิตตัวจัดกำหนดการงาน scx_rustland เวอร์ชันทดลอง ซึ่งเขียนด้วยภาษา Rust และดำเนินการในพื้นที่ผู้ใช้ ตรรกะการจัดกำหนดการงานถูกย้ายจากเคอร์เนลไปยังพื้นที่ผู้ใช้โดยใช้ชุดเครื่องมือ sched-ext ซึ่งใช้ BPF ตัวจัดกำหนดการนี้ได้รับการปรับแต่งเพื่อจัดลำดับความสำคัญของงานแบบอินเทอร์แอคทีฟมากกว่างานที่ต้องใช้ CPU มาก ตัวอย่างเช่น ในการทดสอบการรันแอปพลิเคชันเกมขณะสร้างเคอร์เนล ตัวจัดกำหนดการ scx_rustland สามารถทำ FPS ในเกมได้สูงกว่าตัวจัดกำหนดการ EEVDF มาตรฐาน

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster