การจัดการหน่วยความจำอัตโนมัติของ Rust ช่วยนักพัฒนาจากข้อผิดพลาดเมื่อจัดการพอยน์เตอร์ และป้องกันปัญหาที่เกิดขึ้นเนื่องจากการจัดการหน่วยความจำระดับต่ำ เช่น การเข้าถึงพื้นที่หน่วยความจำหลังจากที่ถูกปล่อยให้ว่าง การตัดการอ้างอิงพอยน์เตอร์ null บัฟเฟอร์โอเวอร์รัน ฯลฯ เพื่อกระจายไลบรารี ตรวจสอบการประกอบและจัดการการพึ่งพา โปรเจ็กต์จะพัฒนาตัวจัดการแพ็คเกจ
ในข้อความของการประกาศเปิดตัวใหม่ นักพัฒนา 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