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

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

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

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

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

  • ผู้จัดการแพ็คเกจสินค้าใช้การตรวจจับคำเตือนที่สามารถแก้ไขได้โดยอัตโนมัติ และส่งออกคำแนะนำที่เหมาะสมสำหรับการดำเนินการ "แก้ไขสินค้า" หรือ "แก้ไขสินค้า" คำเตือน: การนำเข้าที่ไม่ได้ใช้: 'std::hash::Hash' —> src/main.rs:1:5 | 1 | ใช้มาตรฐาน::แฮช::แฮช; | ^^^^^^^^^^^^^^^ | = หมายเหตุ: '#[warn(unused_imports)]' เปิดโดยค่าเริ่มต้น คำเตือน: 'foo' (bin "foo") สร้างคำเตือน 1 รายการ (เรียกใช้ 'cargo fix —bin "foo"' เพื่อใช้ 1 คำแนะนำ)
  • Cargo ได้เพิ่มเอาต์พุตคำแนะนำสำหรับการใช้คำสั่ง "cargo add" เมื่อพยายามติดตั้งไลบรารีด้วยคำสั่ง "cargo install"
  • เพื่อลดเวลาในการคอมไพล์ การรวมข้อมูลการดีบักในสคริปต์บิลด์จึงถูกหยุดไว้ตามค่าเริ่มต้น หากสคริปต์การสร้างทำงานได้สำเร็จ การเปลี่ยนแปลงจะไม่ส่งผลให้เกิดความแตกต่างที่มองเห็นได้ แต่หากเกิดความล้มเหลว การถ่ายโอนข้อมูลแบบย้อนกลับจะมีข้อมูลน้อยลง หากต้องการคืนพฤติกรรมเก่าให้กับ Cargo.toml คุณควรเพิ่ม: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
  • ส่วนใหม่ของ API ถูกย้ายไปยังหมวดหมู่ของความเสถียร ซึ่งรวมถึงวิธีการและการใช้งานลักษณะต่างๆ ที่ได้รับการทำให้เสถียร:
    • CStr::from_bytes_until_nul
    • หลัก::ffi::FromBytesUntilNulError
  • คุณลักษณะ “const” ซึ่งกำหนดความเป็นไปได้ในการใช้งานในบริบทใดๆ แทนที่จะเป็นค่าคงที่ ถูกใช้ในฟังก์ชัน:
    • SocketAddr::ใหม่
    • SocketAddr::ip
    • SocketAddr::พอร์ต
    • SocketAddr::is_ipv4
    • SocketAddr::is_ipv6
    • SocketAddrV4::ใหม่
    • SocketAddrV4::ip
    • SocketAddrV4::พอร์ต
    • SocketAddrV6::ใหม่
    • SocketAddrV6::ip
    • SocketAddrV6::พอร์ต
    • SocketAddrV6::flowinfo
    • SocketAddrV6::scope_id
  • เพิ่มความสามารถในการใช้แฟล็กจริงและเท็จในอาร์กิวเมนต์ของคอมไพเลอร์

ที่มา: opennet.ru

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