ข้ามไปยังเนื้อหา
ภาพถ่ายโค้ดภาษา Rust บนหน้าจอแล็ปท็อป
Software

Rust 1.100 ออกแล้ว 12 พ.ย. 2026 never type เสถียรหลัง 10 ปี พร้อม Allocator API

ภาพถ่ายโค้ด Rust บนหน้าจอแล็ปท็อป ใช้เป็นภาพประกอบเท่านั้น ไม่ได้มาจากประกาศของทีม Rust ภาพ: Slashme / Wikimedia Commons (CC0)

Rust 1.100 ออก 12 พ.ย. 2026 ทำ never type เสถียรหลังพยายาม 5 ครั้งใน 10 ปี เปิด Allocator API ส่วนแกนกลาง เพิ่ม DropGuard และให้ Cargo เตือน dependency

โดย กองบรรณาธิการ THAI DATA อ่าน 4 นาที

แชร์FacebookXLINELinkedIn

สรุปประเด็นสำคัญ

  • ทีม Rust ประกาศ Rust 1.100.0 เมื่อ 12 พฤศจิกายน 2026 อัปเดตได้ด้วยคำสั่ง rustup update stable
  • never type (เขียนเป็น !) เสถียรแล้ว หลัง 10 ปี และการพยายามทำให้เสถียรที่ล้มเหลว 5 ครั้ง ทีม Rust ต้องเปลี่ยน never type fallback จาก () เป็น ! ในเอดิชัน 2015, 2018 และ 2021 ซึ่งเป็นการเปลี่ยนที่อาจกระทบโค้ดบางกรณี
  • ส่วนแกนกลางของ Allocator API เสถียรแล้ว ผู้เขียนไลบรารีกำหนดตัวจัดสรรหน่วยความจำเองได้ ใช้ร่วมกับ Vec และ Box ในตอนนี้
  • มี DropGuard ให้รันโค้ดเมื่อออกจากฟังก์ชันทุกทาง และ conjure_zst เป็นวิธีมาตรฐานสร้างค่าชนิดขนาดศูนย์แบบ unsafe
  • Cargo เตือน dependency ที่ไม่ได้ใช้ (cargo::unused_dependencies) จัดโครงสร้าง build-dir ใหม่เพื่อลดการชนกันของแคช และรองรับ min-publish-age ขั้นต่ำ 3 วัน ตามตัวอย่างของทีม Rust

Rust 1.100 ออกเมื่อ 12 พฤศจิกายน 2026 ตามประกาศของทีม Rust จุดเด่นคือ never type (เขียนเป็น !) ซึ่งเสถียรแล้วหลังผ่านมา 10 ปีและความพยายามที่ล้มเหลว 5 ครั้ง นอกจากนี้ Rust 1.100 ยังทำส่วนแกนกลางของ Allocator API ให้เสถียร เพิ่ม DropGuard และ conjure_zst และให้ Cargo เตือน dependency ที่ไม่ได้ใช้ ผู้ที่ใช้ rustup อัปเดตด้วย rustup update stable

Rust 1.100 ทำให้ never type เสถียรหลัง 10 ปี

ภาพหน้าจอประกาศ Announcing Rust 1.100.0 บน Rust Blog
ประกาศ Announcing Rust 1.100.0 บน Rust Blog ภาพ: Rust Blog (ภาพหน้าจอ)

never type เขียนเป็น ! เป็นชนิดของการคำนวณที่ไม่มีวันจบด้วยค่า เช่น return, break และ std::process::exit ที่ตัดการไหลของโปรแกรม ก่อนหน้านี้ผู้เขียนโค้ดใช้พฤติกรรมนี้ได้แต่เรียกชื่อชนิดในบางตำแหน่งไม่ได้ Rust 1.100 อนุญาตให้ระบุ ! ได้ทุกที่ เช่น Result<T, !> ซึ่งทีม Rust ระบุว่าทำให้งานตามโครงการเป้าหมายนี้เสร็จสมบูรณ์

อีกผลหนึ่งคือ Infallible ถูกเปลี่ยนให้เป็นชื่อแทนของ never type ทำให้ API เก่าที่ใช้ Infallible ใช้ร่วมกับ ! ได้ ทีม Rust ยอมรับว่าการทำเช่นนี้ต้องมี breaking change หนึ่งเรื่อง คือเปลี่ยน never type fallback จาก () เป็น ! ในเอดิชันก่อน 2024 (2015, 2018 และ 2021) เหมือนที่เอดิชัน 2024 ทำไปแล้ว ทีมเตือนล่วงหน้าผ่าน future-compatibility warning และออกแพตช์ให้ crate สาธารณะที่ได้รับผลกระทบ ผู้ที่เจอ dependency ล้มเหลวจากเรื่องนี้ควรอัปเดต dependency นั้นก่อน เพราะอาจมีรุ่นที่แก้แล้ว

Allocator API และ DropGuard ใน Rust 1.100

Rust 1.100 ทำให้ส่วนแกนกลางของ allocator_api เสถียร ผ่าน trait Allocator ที่เพิ่งเสถียร ผู้เขียนไลบรารีกำหนดตัวจัดสรรหน่วยความจำของตนเองได้และใช้กับ Vec และ Box ในตอนนี้ ทีม Rust ระบุว่านี่เป็นรากฐานของโครงการเป้าหมาย Allocators 1.0 และยังต้องขยายการใช้งานกับคอลเล็กชันและตัวชี้ชนิดอื่นอีกมาก

core::mem::DropGuard เป็นชนิดช่วยที่รันโค้ดเมื่อออกจากขอบเขต ไม่ว่าจะ return ใช้ ? หรือ panic ผู้ใช้เรียก DropGuard::dismiss เพื่อยกเลิกการรันได้ เหมาะกับงานแบบ all-or-nothing ที่ต้องย้อนค่า ตัวอย่างของทีม Rust คือตัวแยกวิเคราะห์ที่ย้อน Vec กลับถ้าตัวเลขตัวใดแปลงไม่ได้

ส่วน std::mem::conjure_zst เป็นฟังก์ชัน unsafe ที่เป็นวิธีมาตรฐานในการสร้างค่าชนิดขนาดศูนย์ แทนการ transmute () หรือใช้ MaybeUninit::uninit().assume_init() ทีม Rust ยกตัวอย่าง Python<'py> ของ PyO3 ที่เป็นโทเค็นขนาดศูนย์แทนการถือ GIL ของ Python ซึ่งเป็นสาเหตุที่ฟังก์ชันนี้ต้องเป็น unsafe

Cargo ใน Rust 1.100 เตือน dependency ที่ไม่ได้ใช้

ภาพหน้าจอหน้า release notes ของ Rust 1.100 Version 1.100.0 (2026-11-12)
หน้า release notes ของ Rust Version 1.100.0 บนเอกสารของโครงการ Rust ภาพ: The Rust Project (ภาพหน้าจอ)

Cargo ใน Rust 1.100 มีการเปลี่ยน 3 เรื่อง

  • รายงาน dependency ที่ไม่ได้ใช้ Cargo ขึ้นคำเตือน cargo::unused_dependencies เช่นเมื่อ tracing-subscriber อยู่ใน Cargo.toml แต่ไม่มีโค้ดใช้ คำเตือนจะปรากฏเมื่อบิลด์ครบทุกเป้าหมายที่อาจใช้ dependency นั้น เช่น cargo check --bin foo จะไม่แสดงเพราะอาจมี bin อื่นใช้ และไม่แสดงสำหรับ dev-dependencies
  • ลดการชนกันของแคชใน build-dir โครงสร้างใหม่จัดตามขั้นตอนบิลด์แทนชนิดไฟล์ และย้ายแฮชของการตั้งค่าไปอยู่ที่โฟลเดอร์แม่ ช่วยเมื่อแชร์ build-dir ข้าม git worktree ทีม Rust เตือนว่ากระบวนการบิลด์หรือเทสต์ที่มีวิธีเลี่ยงปัญหาเดิมอาจต้องปรับตาม
  • min-publish-age ตั้งใน .cargo/config.toml ให้ Cargo ข้ามรุ่นที่เพิ่งเผยแพร่ไม่ถึงเวลาที่กำหนด ตัวอย่างของทีม Rust คือ global-min-publish-age = "3 days" เรื่องนี้มีบทความของเราอธิบายแยกต่างหากที่ Cargo cooldown คืออะไร

การรองรับแพลตฟอร์มและสิ่งอื่นที่เปลี่ยนใน Rust 1.100

หน้า release notes ระบุว่า wasm32-wasip3 ได้เลื่อนเป็น Tier 2 ส่วน i686-pc-windows-gnu เป็น Tier 2 แบบไม่มีเครื่องมือโฮสต์ และมีเป้าหมาย Tier 3 ใหม่คือ powerpc64-sony-ps3 ฝั่งภาษา มีการเสถียร extern "custom" และเสถียร -Cprofile-sample-use ที่คอมไพเลอร์ รายชื่อ API ที่เสถียรยาวหลายสิบรายการรวมถึง Box::take, Box::map, Rc::map, Arc::map, bool::toggle และ UnsafeCell::replace

ทีมพัฒนาควรทำอะไรกับ Rust 1.100

ทีมที่ใช้ Rust ควรอัปเดตในสภาพแวดล้อมทดสอบก่อน รัน cargo build ทั้ง workspace และดูคำเตือนใหม่ โดยเฉพาะ dependency ที่ไม่ได้ใช้ ซึ่งลบแล้วลดเวลาบิลด์ได้ ทีมที่ใช้เอดิชัน 2021 หรือเก่ากว่าควรดูว่ามี dependency ใดล้มเหลวจากการเปลี่ยน never type fallback และอัปเดตเป็นรุ่นล่าสุด ผู้ที่แชร์ build-dir ใน CI หรือหลาย worktree ควรตรวจสคริปต์ที่อ้างโครงสร้างโฟลเดอร์เดิมและดู cargo#17287 ตามที่ทีม Rust แนะนำ ส่วนทีมที่ใช้ min-publish-age ควรจำไว้ว่า cargo install ไม่ใช้ค่านี้ และรุ่นที่ไม่มีข้อมูล pubtime ในดัชนีจะไม่ถูกชะลอ

บริการของ THAI DATA CLOUD ที่เกี่ยวข้อง

ทีมที่ย้ายระบบหลังบ้านมาใช้ Rust มักต้องมีเซิร์ฟเวอร์สำหรับบิลด์ ทดสอบ และรันบริการที่ปรับสเปกได้ตามงาน Cloud VPS App Plus ของ THAI DATA CLOUD มี OS และแอปพร้อมติดตั้งกว่า 20 Images ทั้ง WordPress, Docker และ cPanel และอัปเกรดสเปกได้ตลอดเมื่องานโตขึ้น (THAI DATA CLOUD เป็นผู้ดำเนินงานเว็บไซต์นี้)

ติดตามข่าวนักพัฒนาและซอฟต์แวร์ได้ที่หมวดซอฟต์แวร์

คำถามที่พบบ่อย

Rust 1.100 ออกเมื่อไร และอัปเดตอย่างไร?

ทีม Rust ประกาศ Rust 1.100.0 เมื่อ 12 พฤศจิกายน 2026 ผู้ที่ติดตั้งผ่าน rustup อัปเดตด้วยคำสั่ง rustup update stable ส่วนผู้ที่ยังไม่มี rustup ติดตั้งได้จากหน้าเว็บของโครงการ Rust 1.100 มีรายละเอียดเต็มในหน้า release notes

never type ใน Rust 1.100 คืออะไร?

never type เขียนเป็น ! คือชนิดของการคำนวณที่ไม่มีวันได้ค่า เช่น return, break หรือ std::process::exit Rust 1.100 อนุญาตให้ระบุชนิดนี้ได้ทุกที่ เช่น Result<T, !> หลังใช้เวลาราว 10 ปีและพยายามทำให้เสถียรมา 5 ครั้งที่ไม่สำเร็จ

Rust 1.100 มีการเปลี่ยนที่ทำให้โค้ดเดิมพังไหม?

มีหนึ่งกรณีที่ทีม Rust ระบุว่าเป็น breaking change คือ never type fallback เปลี่ยนจาก () เป็น ! ในเอดิชัน 2015, 2018 และ 2021 ทีม Rust ว่าควร unnoticeable เป็นส่วนใหญ่ แต่กระทบโค้ดบางกรณี เช่น ตอนละเลยผลของฟังก์ชันที่คืนพารามิเตอร์ generic ถ้า dependency ใดมีปัญหาให้อัปเดตก่อน

Allocator API ใน Rust 1.100 ใช้ทำอะไร?

Rust 1.100 ทำให้ trait Allocator และส่วนแกนกลางของ Allocator API เสถียร ผู้เขียนไลบรารีกำหนดตัวจัดสรรหน่วยความจำของตัวเองแล้วใช้กับ Vec และ Box ได้ ทีม Rust ระบุว่าการขยายไปยังคอลเล็กชันและตัวชี้ชนิดอื่นจะตามมา

Cargo ใน Rust 1.100 เปลี่ยนอะไรบ้าง?

Cargo เตือน dependency ที่ไม่ได้ใช้ด้วย cargo::unused_dependencies จัดโครงสร้าง build-dir ใหม่โดยใช้แฮชของการตั้งค่าบิลด์ทุกโฟลเดอร์ และเสถียร min-publish-age ที่ให้ข้ามรุ่นแพ็กเกจที่เพิ่งออกไม่ถึงเวลาที่กำหนด

แหล่งอ้างอิง

  1. Announcing Rust 1.100.0 — Rust Blog
  2. Rust release notes: Version 1.100.0 (2026-11-12) — The Rust Project

บุคคล องค์กร และสถานที่ในข่าวนี้

เลือกชื่อเพื่ออ่านข่าวทั้งหมดที่กล่าวถึง ตัวเลขคือจำนวนข่าว

ผลิตภัณฑ์และเทคโนโลยี
Rust25Python56WordPress28Docker63cPanel19
แชร์FacebookXLINELinkedIn

พบข้อมูลคลาดเคลื่อน? แจ้งกองบรรณาธิการ