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

ที่ตีพิมพ์ การเปิดตัวภาษาโปรแกรมระบบ สนิม 1.43ก่อตั้งโดยโครงการ Mozilla ภาษามุ่งเน้นไปที่การจัดการหน่วยความจำที่ปลอดภัย ให้การจัดการหน่วยความจำอัตโนมัติ และจัดเตรียมวิธีการเพื่อให้บรรลุการทำงานแบบขนานในระดับสูง ในขณะที่หลีกเลี่ยงการใช้ตัวรวบรวมขยะและ รันไทม์.

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

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

  • มาโครให้ความสามารถในการใช้แฟรกเมนต์ขององค์ประกอบเพื่อแปลงให้เป็นโค้ดสำหรับลักษณะ (ลักษณะ) การใช้งาน (impl) หรือบล็อกภายนอก ตัวอย่างเช่น:

    มาโคร_กฎ! mac_trait {
    ($i:รายการ) => {
    ลักษณะ T { $i }
    }
    }
    mac_trait! {
    fn ฟู() {}
    }

    จะนำไปสู่การสร้าง:

    ลักษณะ T {
    fn ฟู() {}
    }

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

    ให้ n: f32 = 0.0 + &0.0;

  • มีการเพิ่มตัวแปรสภาพแวดล้อมใหม่ CARGO_BIN_EXE_{name} ให้กับ Cargo ซึ่งได้รับการตั้งค่าเมื่อสร้างการทดสอบการรวมระบบ และช่วยให้คุณสามารถกำหนดเส้นทางแบบเต็มไปยังไฟล์ปฏิบัติการที่กำหนดไว้ในส่วน "[[bin]]" ของแพ็คเกจได้
  • หากคำสั่งได้รับอนุญาตให้ใช้แอตทริบิวต์เช่น "#[cfg()]"
  • ไลบรารีให้ความสามารถในการใช้ค่าคงที่ที่เกี่ยวข้องโดยตรงสำหรับประเภทจำนวนเต็มและเศษส่วน โดยไม่ต้องนำเข้าโมดูล ตัวอย่างเช่น คุณสามารถเขียน u32::MAX หรือ f32::NAN ได้ทันทีโดยไม่ต้องระบุ “use std::u32” และ “use std::f32” ก่อน
  • เพิ่มโมดูลใหม่แล้ว ดั้งเดิมซึ่งจะส่งออกประเภทดั้งเดิมของ Rust อีกครั้ง เช่น เมื่อคุณต้องการเขียนมาโครและตรวจให้แน่ใจว่าไม่ได้ซ่อนประเภทไว้
  • ส่วนใหม่ของ API ได้ถูกโอนไปยังหมวดหมู่เสถียร รวมถึงเสถียรด้วย

    เมื่อ::is_เสร็จสมบูรณ์
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 และ
    มัน::once_with.

ที่มา: opennet.ru

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