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

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

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

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

  • ในคอมไพเลอร์rustc ที่ให้ไว้ รองรับการปรับให้เหมาะสมตามผลลัพธ์การทำโปรไฟล์โค้ด (PGO, Profile-Guided Optimization)
    ช่วยให้คุณสร้างโค้ดที่เหมาะสมที่สุดมากขึ้นโดยอาศัยการวิเคราะห์สถิติที่สะสมระหว่างการทำงานของโปรแกรม ในการสร้างโปรไฟล์จะมีการจัดเตรียมแฟล็ก "-C profile-generate" และเพื่อใช้โปรไฟล์ระหว่างการประกอบ - "-Cprofile-use" (เริ่มแรกโปรแกรมจะประกอบเข้ากับแฟล็กแรกรันไปรอบ ๆ และหลังจากสร้าง โปรไฟล์ประกอบใหม่ด้วยแฟล็กที่สอง)

  • เมื่อดำเนินการคำสั่ง “cargo run” ซึ่งสะดวกต่อการใช้งานสำหรับการทดสอบแอปพลิเคชันคอนโซลอย่างรวดเร็ว ความสามารถในการเลือกไฟล์ปฏิบัติการเพื่อรันจะถูกเพิ่มโดยอัตโนมัติหากมีไฟล์ปฏิบัติการหลายไฟล์ในแพ็คเกจ ไฟล์เริ่มต้นที่จะดำเนินการถูกกำหนดผ่านคำสั่งการทำงานเริ่มต้นในส่วน [แพ็คเกจ] พร้อมด้วยพารามิเตอร์แพ็คเกจ ซึ่งช่วยให้คุณหลีกเลี่ยงการระบุชื่อไฟล์อย่างชัดเจนผ่านแฟล็ก "-bin" ทุกครั้งที่คุณเรียกใช้ "cargo run";
  • คำสั่ง “ผู้ขายสินค้า” ที่ให้มาก่อนหน้านี้เป็น แพคเกจแยกต่างหาก. คำสั่งช่วยให้คุณสามารถจัดระเบียบงานด้วยสำเนาการพึ่งพาในเครื่อง - หลังจากดำเนินการ "ผู้จำหน่ายสินค้า" ซอร์สโค้ดทั้งหมดของการอ้างอิงของโครงการจะถูกดาวน์โหลดจาก crates.io ไปยังไดเร็กทอรีในเครื่องซึ่งสามารถใช้เพื่อทำงานโดยไม่ต้องเข้าถึงลัง io (หลังจากดำเนินการคำสั่งแล้ว คำแนะนำในการเปลี่ยนการกำหนดค่าจะแสดงขึ้นเพื่อใช้ไดเร็กทอรีสำหรับบิลด์) คุณลักษณะนี้ใช้เพื่อจัดระเบียบการจัดส่งคอมไพเลอร์rustcพร้อมแพ็กเกจการขึ้นต่อกันทั้งหมดในไฟล์เก็บถาวรเดียวพร้อมกับรีลีส
  • ขณะนี้ คุณสามารถสร้างลิงก์ไปยังตัวเลือกแจงนับโดยใช้นามแฝงประเภทได้ (ตัวอย่างเช่น ในเนื้อความของฟังก์ชัน “fn increament_or_zero(x: ByteOption) คุณสามารถระบุ “ByteOption::None => 0”) พิมพ์โครงสร้างการคำนวณ (‹ MyType‹.. ››::option => N) หรือการเข้าถึงด้วยตนเอง (ในบล็อก c &self คุณสามารถระบุ “Self::Quarter => 25”);
  • เพิ่มความสามารถในการสร้างค่าคงที่ที่ไม่มีชื่อในมาโคร แทนที่จะกำหนดชื่อองค์ประกอบใน "const" ตอนนี้คุณสามารถใช้อักขระ "_" เพื่อเลือกตัวระบุที่ไม่ซ้ำแบบไดนามิก หลีกเลี่ยงความขัดแย้งของชื่อเมื่อเรียกมาโครอีกครั้ง
  • เพิ่มความสามารถในการใช้แอตทริบิวต์ "#[repr(align(N))" พร้อมด้วย enums โดยใช้ไวยากรณ์ที่คล้ายกับการกำหนดโครงสร้าง AlignN‹T› ด้วยการจัดตำแหน่ง จากนั้นใช้ AlignN‹MyEnum›;
  • ส่วนใหม่ของ API ถูกย้ายไปยังหมวดหมู่ที่เสถียร รวมถึง BufReader::buffer, BufWriter::buffer และ
    เซลล์::from_mut,
    เซลล์::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    ตัวเลือก::xor
    {i,u}{8,16,64,128,ขนาด}::reverse_bits, การตัด::reverse_bits และ
    ชิ้น::copy_within

นอกจากนี้ยังสามารถสังเกตได้ เริ่มการทดสอบ โครงการ Async-stdซึ่งเสนอตัวแปรอะซิงโครนัสของไลบรารีมาตรฐาน Rust (พอร์ตของไลบรารี std ซึ่งอินเทอร์เฟซทั้งหมดนำเสนอในเวอร์ชันอะซิงก์และพร้อมใช้งานกับไวยากรณ์ async/await)

ที่มา: opennet.ru

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