Rust 1.100 ออก 12 พ.ย. 2026 ทำ never type เสถียรหลังพยายาม 5 ครั้งใน 10 ปี เปิด Allocator API ส่วนแกนกลาง เพิ่ม DropGuard และให้ Cargo เตือน dependency
โดย กองบรรณาธิการ THAI DATA อ่าน 4 นาที
สรุปประเด็นสำคัญ
- ทีม 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 ปี

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 ที่ไม่ได้ใช้

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 ที่ให้ข้ามรุ่นแพ็กเกจที่เพิ่งออกไม่ถึงเวลาที่กำหนด
แหล่งอ้างอิง
- Announcing Rust 1.100.0 — Rust Blog
- Rust release notes: Version 1.100.0 (2026-11-12) — The Rust Project
บุคคล องค์กร และสถานที่ในข่าวนี้
เลือกชื่อเพื่ออ่านข่าวทั้งหมดที่กล่าวถึง ตัวเลขคือจำนวนข่าว
- ผลิตภัณฑ์และเทคโนโลยี
- Rust25Python56WordPress28Docker63cPanel19
พบข้อมูลคลาดเคลื่อน? แจ้งกองบรรณาธิการ
