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

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

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

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

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

  • ตัวจัดการแพ็คเกจ “cargo” เสนอคำสั่ง “เพิ่ม” ซึ่งช่วยให้คุณสามารถเพิ่มการขึ้นต่อกันใหม่ให้กับรายการ Cargo.toml หรือเปลี่ยนการขึ้นต่อกันที่มีอยู่จากบรรทัดคำสั่ง คำสั่งยังช่วยให้คุณระบุคุณสมบัติและเวอร์ชันแต่ละรายการได้ เช่น: cargo add serde —features derive cargo add nom@5
  • เพิ่มความสามารถในการใช้ “#[derive(Default)]” ด้วย enums ซึ่งตัวเลือกเริ่มต้นถูกกำหนดโดยใช้แอตทริบิวต์ “#[default]” #[derive(Default)] enum อาจจะ { #[ค่าเริ่มต้น] ไม่มีอะไร บางสิ่งบางอย่าง(T) }
  • บนแพลตฟอร์ม Linux มีการใช้กลไกการซิงโครไนซ์ Mutex ที่กะทัดรัดและรวดเร็วยิ่งขึ้น โดยอิงตามการใช้ futexes ที่เคอร์เนล Linux จัดเตรียมไว้ให้ ต่างจากการใช้งานที่ใช้ก่อนหน้านี้โดยอิงตามไลบรารี pthreads เวอร์ชันใหม่ใช้เพียง 5 ไบต์แทนที่จะเป็น 40 ในการจัดเก็บสถานะ Mutex ในทำนองเดียวกัน กลไกการล็อค Condvar และ RwLock ได้ถูกถ่ายโอนไปยัง futex
  • มีการรองรับระดับที่สองสำหรับแพลตฟอร์มเป้าหมาย x86_64-unknown-none ซึ่งได้รับการออกแบบมาเพื่อสร้างไฟล์ปฏิบัติการที่สามารถทำงานได้โดยไม่ต้องใช้ระบบปฏิบัติการ ตัวอย่างเช่น สามารถใช้แพลตฟอร์มเป้าหมายที่ระบุเมื่อเขียนส่วนประกอบเคอร์เนล การสนับสนุนระดับที่สองเกี่ยวข้องกับการรับประกันการประกอบ
  • การสนับสนุนระดับที่สามได้ถูกนำมาใช้สำหรับแพลตฟอร์ม aarch64-pc-windows-gnullvm และ x86_64-pc-windows-gnullvm ระดับที่สามเกี่ยวข้องกับการสนับสนุนขั้นพื้นฐาน แต่ไม่มีการทดสอบอัตโนมัติ การเผยแพร่บิลด์อย่างเป็นทางการ หรือการตรวจสอบว่าสามารถสร้างโค้ดได้หรือไม่
  • ส่วนใหม่ของ API ถูกย้ายไปยังหมวดหมู่ของความเสถียร ซึ่งรวมถึงวิธีการและการใช้งานลักษณะต่างๆ ที่ได้รับการทำให้เสถียร:
    • บูล::แล้ว_บ้าง
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::เส้น
    • windows::CommandExt::raw_arg
    • นัย ค่าเริ่มต้นสำหรับ AssertUnwindSafe
    • จาก > สำหรับ RC
    • จาก > สำหรับอาร์ค<[u8]>
    • FusedIterator สำหรับ EncodeWide

    ที่มา: opennet.ru

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