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

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

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

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

  • ลักษณะ FnOnce, FnMut и Fn นำไปใช้สำหรับการจัดสรรฮีป ชนิดบรรจุกล่อง Box‹dyn FnOnce›, Box‹dyn FnMut› และ Box‹dyn Fn›;
  • เพิ่ม โอกาส การหล่อปิดไปยังพอยน์เตอร์ฟังก์ชันที่ไม่ปลอดภัย (fn ที่ไม่ปลอดภัย);
  • ใช้ความสามารถในการเรียกมาโคร "dbg!" ไม่มีข้อโต้แย้งในการแสดงชื่อไฟล์และหมายเลขบรรทัดใน stderr โดยไม่ต้องตรวจสอบตัวแปรซึ่งสะดวกสำหรับการดีบักการทำงานของนิพจน์ตามเงื่อนไข
  • เพิ่มวิธีการ " ให้กับประเภทจุดลอยตัว f32 และ f64คัดลอก» เพื่อคัดลอกอักขระจากหมายเลขหนึ่งไปยังอีกหมายเลขหนึ่ง
  • เพิ่มวิธีการ "มี“ ซึ่งช่วยให้คุณตรวจสอบว่าค่าที่ระบุอยู่ภายในช่วงหรือไม่
  • เพิ่มวิธีการ อ้างอิง:เซลล์:map_splitช่วยให้คุณสามารถสะท้อนและแยกค่า RefCell ที่ยืมมาสำหรับส่วนประกอบต่างๆ ของข้อมูลที่ยืมมา
  • เพิ่มวิธีการ RefCell::replace_with เพื่อแทนที่ค่า RefCell ปัจจุบันและส่งกลับค่าเก่าเป็นผลลัพธ์
  • เพิ่มวิธีการ ptr::แฮช เพื่อแฮชตัวชี้หรือการอ้างอิงตามที่อยู่มากกว่าค่าที่อยู่
  • เพิ่มวิธีการ ตัวเลือก::คัดลอกแล้ว เพื่อคัดลอกเนื้อหาของตัวเลือก Option‹&T› หรือ Option‹&mut T›
  • ส่วนใหม่ของ API ได้ถูกถ่ายโอนไปยังหมวดหมู่ที่เสถียร รวมถึงวิธีการที่ได้รับความเสถียรด้วย
    f32::copysign,
    f64::copysign,
    RefCell::replace_with,
    RefCell::map_split,
    ptr::แฮช
    ช่วง::ประกอบด้วย
    ช่วงจาก::มี
    RangeTo::มี
    RangeIncluded::มี,
    RangeToInclude::contains และ
    ตัวเลือก::คัดลอก;

  • เพิ่มการตรวจสอบ drop_bounds ไปที่ clippy (linter) ซึ่งจะถูกทริกเกอร์เมื่อเพิ่มการเชื่อมโยง "T: Drop" เข้ากับฟังก์ชัน
  • คอมไพเลอร์ได้เพิ่มการรองรับแพลตฟอร์มเป้าหมายใหม่
    wasm32-unknown-wasi (อินเทอร์เฟซ วาสิ เพื่อใช้ WebAssembly นอกเบราว์เซอร์)

  • ชุดเครื่องมือ Rust ได้รับการดัดแปลงสำหรับการแจกแจงตาม Musl ไลบรารี C มาตรฐาน

ที่มา: opennet.ru

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