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

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

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

ในข้อความของการประกาศเปิดตัวใหม่ นักพัฒนา Rust มีส่วนร่วมในการเมืองและปฏิเสธที่จะเผยแพร่บทวิจารณ์ฉบับเต็มเกี่ยวกับการเปลี่ยนแปลงใน Rust 1.44 ด้วยความสมัครสมานสามัคคีกับผู้ประท้วงต่อต้านความรุนแรงของตำรวจ ซึ่งบ่งชี้ว่าปัญหานี้มีความสำคัญมากกว่า การแลกเปลี่ยนความรู้ทางเทคนิค หลัก นวัตกรรม:

  • คำสั่ง "cargo tree" ถูกรวมเข้ากับตัวจัดการแพ็คเกจ Cargo ซึ่งจะแสดงกราฟการพึ่งพาแบบต้นไม้ เพิ่มตัวเลือก "--duplicates" ("cargo tree -d") ซึ่งช่วยให้คุณสามารถประเมินการพึ่งพาในเวอร์ชันต่างๆ ของแพ็คเกจเดียวกันได้

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── แอมโมเนีย v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── บันทึก v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── มาร์กอัป5ทุกเวอร์ชัน v0.9.0
    │ │ ├── บันทึก v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── ซิฟาเชอร์ v0.2.3
    │ │ │ └── กรณีเดียว v1.4.2
    │ │ │ [การพึ่งพาการสร้าง] │ │ │ └── version_check v0.1.5
    ...

  • สำหรับแอปพลิเคชันที่ไม่ผูกกับ std ("#![no_std]") จะรองรับวิธีการเขียนโปรแกรมแบบอะซิงโครนัสโดยใช้ฟังก์ชัน "async" บล็อก async move { ... } และตัวดำเนินการ ".await" ถูกนำมาใช้ ซึ่ง ทำให้ง่ายต่อการเขียนสตรีมคำสั่งหลักของตัวจัดการที่ไม่ปิดกั้น
  • มีการเพิ่มการสนับสนุนสำหรับโครงร่างการกำหนดลำดับชั้นโมดูลที่ขยายได้ให้กับ parser ตัวอย่างเช่น โครงสร้างต่อไปนี้จะไม่สร้างข้อผิดพลาด แม้ว่าจะไม่มีโมดูล "foo/bar/baz.rs" ก็ตาม (ในทางความหมาย โครงสร้างยังคงไม่ถูกต้องและอาจทำให้เกิดข้อผิดพลาด แต่สามารถดูและแยกวิเคราะห์การเปลี่ยนแปลงได้ ในระดับมาโครและการคอมไพล์แบบมีเงื่อนไข):

    #[cfg(FALSE)] mod foo {
    แถบดัดแปลง {
    มอดบาซ;
    }
    }

  • คอมไพเลอร์rustc เพิ่มความสามารถในการใช้แฟล็ก "-C codegen-units" ในโหมดส่วนเพิ่ม การใช้งาน catch_unwind ได้รับการออกแบบใหม่ ซึ่งขณะนี้จะไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน หากกระบวนการคลี่คลายถูกปิดใช้งานและไม่มีข้อยกเว้นใด ๆ เกิดขึ้น
  • ให้การสนับสนุนระดับที่สามสำหรับแพลตฟอร์ม aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos และ x86_64-apple-tvos ระดับที่สามหมายถึงการสนับสนุนขั้นพื้นฐาน แต่ไม่มีการทดสอบอัตโนมัติและการเผยแพร่งานสร้างอย่างเป็นทางการ
  • ส่วนใหม่ของ API ได้ถูกโอนไปยังหมวดหมู่เสถียร รวมถึงเสถียรด้วย
    PathBuf::with_capacity,
    PathBuf::ความจุ
    PathBuf::ชัดเจน
    PathBuf::สำรอง,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    เค้าโครง::align_to
    เค้าโครง::pad_to_align,
    เค้าโครง::array และ
    เค้าโครง::ขยาย

  • ฟังก์ชั่นเพิ่มเติมของไลบรารีมาตรฐาน:
    • เพิ่มรูปแบบพิเศษของ "vec![]" ซึ่งสะท้อนให้เห็นโดยตรงใน Vec::new() ทำให้สามารถใช้ "vec![]" ในบริบทแทนค่าคงที่ได้
    • เพิ่มการใช้งานลักษณะ (impl) เพื่อแปลง :: Infallible กัญชา.
    • OsString ใช้ตัวชี้อัจฉริยะ DerefMut и IndexMutส่งคืน "&mut OsStr"
    • เพิ่มการรองรับ Unicode 13
    • ดำเนินการในสตริง จาก<&mutstr>.
    • ลักษณะการใช้งานใน IoSlice คัดลอก.
    • เวค นำมาใช้จาก<[T; เอ็น]>.
    • proc_macro::LexError ใช้ fmt::Display และ Error
  • คุณลักษณะ "const" ซึ่งกำหนดความเป็นไปได้ของการใช้ในบริบทใดๆ แทนที่จะเป็นค่าคงที่ จะถูกใช้ในเมธอด from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes และ to_ne_bytes สำหรับประเภทจำนวนเต็มทั้งหมด
  • เพิ่มการสนับสนุนสำหรับการสร้างไลบรารีแบบคงที่ในรูปแบบ ".a" แทน ".lib" สำหรับแพลตฟอร์ม GNU สำหรับ Windows
  • ข้อกำหนดขั้นต่ำสำหรับ LLVM ได้รับการยกระดับเป็น LLVM 8

ที่มา: opennet.ru

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