การเปิดตัวภาษาการเขียนโปรแกรมระบบ Rust 1.52 ซึ่งก่อตั้งโดยโครงการ Mozilla แต่ปัจจุบันได้รับการพัฒนาภายใต้การอุปถัมภ์ของมูลนิธิ Rust Foundation องค์กรอิสระที่ไม่แสวงหาผลกำไรได้รับการเผยแพร่แล้ว ภาษามุ่งเน้นไปที่ความปลอดภัยของหน่วยความจำ ให้การจัดการหน่วยความจำอัตโนมัติ และจัดเตรียมวิธีการเพื่อให้บรรลุการทำงานแบบขนานในระดับสูงโดยไม่ต้องใช้ตัวรวบรวมขยะหรือรันไทม์ (รันไทม์ลดลงเหลือเพียงการเริ่มต้นขั้นพื้นฐานและการบำรุงรักษาไลบรารีมาตรฐาน)
การจัดการหน่วยความจำอัตโนมัติของ Rust ช่วยนักพัฒนาจากข้อผิดพลาดเมื่อจัดการพอยน์เตอร์และป้องกันปัญหาที่เกิดขึ้นเนื่องจากการจัดการหน่วยความจำระดับต่ำ เช่น การเข้าถึงพื้นที่หน่วยความจำหลังจากปล่อยให้ว่าง การอ้างอิงพอยน์เตอร์ว่าง บัฟเฟอร์เกิน ฯลฯ เพื่อแจกจ่ายไลบรารี่ จัดเตรียมการสร้างและจัดการการอ้างอิง โครงการพัฒนาตัวจัดการแพ็คเกจสินค้า ที่เก็บ crates.io รองรับการโฮสต์ไลบรารี
นวัตกรรมหลัก:
- ลำดับการดำเนินการของคำสั่ง "cargo check" และ "cargo clippy" ถูกยกเลิกแล้ว ก่อนหน้านี้ การเรียก "cargo clippy" หลังจาก "cargo check" จะไม่เปิดใช้งานยูทิลิตี้ clippy (linter) เนื่องจากไม่มีการแยกแคชระหว่างโหมดตรวจสอบทั้งสองนี้ ปัญหานี้ได้รับการแก้ไขแล้ว และลำดับการเรียก "cargo clippy" และ "cargo check" ก็ไม่มีความสำคัญอีกต่อไป
- ส่วนใหม่ของ API ได้ถูกถ่ายโอนไปยังหมวดหมู่ที่เสถียร รวมถึงวิธีการต่อไปนี้ได้รับความเสถียร:
- อาร์กิวเมนต์::as_str
- อักขระ::MAX
- อักขระ::แทนที่อักขระ
- อักขระ::เวอร์ชัน UNICODE
- อักขระ::ถอดรหัส_utf16
- char::จาก_ตัวเลข
- char::from_u32_unchecked
- อักขระ::จาก_u32
- สไลซ์::จุดแบ่งพาร์ติชัน
- str::rsplit_once
- str::split_once
- แอตทริบิวต์ "const" ซึ่งกำหนดความเป็นไปได้ในการใช้งานในบริบทใด ๆ แทนที่จะเป็นค่าคงที่จะถูกใช้ในวิธีการ:
- อักขระ::len_utf8
- อักขระ::len_utf16
- อักขระ::to_ascii_uppercase
- อักขระ::to_ascii_ตัวพิมพ์เล็ก
- char::eq_ละเว้น_ascii_case
- u8::to_ascii_uppercase
- u8::to_ascii_ตัวพิมพ์เล็ก
- u8::eq_ละเว้น_ascii_case
- เพิ่มการตรวจสอบ lint unsafe_op_in_unsafe_fn เพื่อตรวจจับโค้ดที่ไม่ปลอดภัยที่ถูกห่อหุ้มด้วยบล็อกที่ไม่ปลอดภัยเมื่อใช้ในฟังก์ชันที่ไม่ปลอดภัย
- ตัวชี้ที่เปลี่ยนแปลงได้ไปยังอาร์เรย์สามารถแปลงเป็นตัวชี้ไปยังประเภทเดียวกันกับองค์ประกอบอาร์เรย์ได้ ให้ mut x: [usize; 2] = [0, 0]; ให้ p = &mut x as *mut usize; ให้ p = &mut x as *const usize;
- มีการเพิ่มการตรวจสอบใหม่ 9 รายการให้กับ Clippy (Linter)
- ขณะนี้ตัวจัดการแพ็กเกจ cargo รองรับฟิลด์ "manifest_path" ในรูปแบบ JSON แล้ว คลัง crates.io รองรับการระบุข้อมูลใบอนุญาตในรูปแบบ SPDX 3.11 แล้ว
- ตอนนี้สามารถระบุตัวกรองหลายตัวได้เมื่อรันการทดสอบ ตัวอย่างเช่น การรัน "cargo test - foo bar" จะรันการทดสอบทั้งหมดที่ตรงกับมาสก์ "foo" และ "bar"
- ชุดเครื่องมือ LLVM เริ่มต้นได้รับการอัพเดตเป็น LLVM 12
- มีการนำการรองรับระดับ 3 มาใช้กับแพลตฟอร์ม s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl และ powerpc-unknown-openbsd ระดับ 3 ให้การสนับสนุนขั้นพื้นฐาน แต่ไม่มีการทดสอบอัตโนมัติ การเผยแพร่เวอร์ชันอย่างเป็นทางการ หรือการตรวจสอบเวอร์ชัน
ที่มา: opennet.ru
