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

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

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

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

  • ลบการเชื่อมโยงลำดับการดำเนินการของคำสั่ง "ตรวจสอบสินค้า" และ "ขนส่งสินค้าคลิปปี" ออก ก่อนหน้านี้ การเรียก "cargo clippy" หลังจาก "ตรวจสอบสินค้า" ไม่ได้เปิดยูทิลิตี้ clippy (linter) เนื่องจากขาดการแยกแคชสำหรับโหมดตรวจสอบเหล่านี้ ตอนนี้ปัญหานี้ได้รับการแก้ไขแล้ว และลำดับการเรียก "cargo clippy" และ "cargo check" ก็ไม่สำคัญอีกต่อไป
  • ส่วนใหม่ของ API ได้ถูกถ่ายโอนไปยังหมวดหมู่ที่เสถียร รวมถึงวิธีการต่อไปนี้ได้รับความเสถียร:
    • อาร์กิวเมนต์::as_str
    • ถ่าน::MAX
    • ถ่าน::REPLACEMENT_CHARACTER
    • ถ่าน::UNICODE_VERSION
    • ถ่าน::decode_utf16
    • ถ่าน::from_digit
    • ถ่าน::from_u32_unchecked
    • ถ่าน::from_u32
    • ชิ้น :: partition_point
    • STR::rsplit_once
    • str::split_once
  • แอตทริบิวต์ "const" ซึ่งกำหนดความเป็นไปได้ในการใช้งานในบริบทใด ๆ แทนที่จะเป็นค่าคงที่จะถูกใช้ในวิธีการ:
    • ถ่าน::len_utf8
    • ถ่าน::len_utf16
    • ถ่าน::to_ascii_ตัวพิมพ์ใหญ่
    • ถ่าน::to_ascii_ตัวพิมพ์เล็ก
    • ถ่าน::eq_ignore_ascii_case
    • u8::to_ascii_ตัวพิมพ์ใหญ่
    • u8::to_ascii_ตัวพิมพ์เล็ก
    • u8::eq_ignore_ascii_case
  • เพิ่มการตรวจสอบผ้าสำลี unsafe_op_in_unsafe_fn เพื่อตรวจสอบว่ารหัสที่ไม่ปลอดภัยที่ใช้ในฟังก์ชันที่ไม่ปลอดภัยนั้นถูกบล็อกโดยบล็อกที่ไม่ปลอดภัยหรือไม่
  • อนุญาตให้ส่งพอยน์เตอร์ที่ไม่แน่นอนไปยังอาร์เรย์ในรูปแบบของพอยน์เตอร์ตามประเภทขององค์ประกอบอาเรย์ ให้ mut x: [ใช้; 2] = [0, 0]; ให้ p = &mut x เป็น *mut ใช้; ให้ p = &mut x เป็น *const ใช้;
  • เพิ่มเช็คใหม่ 9 รายการใน clippy (linter)
  • ขณะนี้ตัวจัดการแพ็กเกจสินค้ารองรับช่อง "manifest_path" ใน JSON สำหรับแพ็กเกจแล้ว เพิ่มการรองรับสำหรับการระบุข้อมูลใบอนุญาตในรูปแบบ SPDX 3.11 ไปยังที่เก็บ crates.io
  • อนุญาตให้ระบุตัวกรองหลายตัวเมื่อรันการทดสอบ เช่น การรัน "cargo test - foo bar" จะเป็นรันการทดสอบทั้งหมดที่ตรงกับมาสก์ "foo" และ "bar"
  • ชุดเครื่องมือ LLVM เริ่มต้นได้รับการอัพเดตเป็น LLVM 12
  • การสนับสนุนระดับที่สามได้ถูกนำมาใช้สำหรับแพลตฟอร์ม s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl และ powerpc-unknown-openbsd ระดับที่สามเกี่ยวข้องกับการสนับสนุนขั้นพื้นฐาน แต่ไม่มีการทดสอบอัตโนมัติ การเผยแพร่บิลด์อย่างเป็นทางการ หรือการตรวจสอบว่าสามารถสร้างโค้ดได้หรือไม่

ที่มา: opennet.ru

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