การเขียน Rust ใหม่
- ภาษาโปรแกรม Rust ให้ความรู้สึกราวกับเป็นผลิตภัณฑ์รุ่นแรก
- เสน่ห์ช่วงแรกของ Rust: algebraic types, ความปลอดภัยของหน่วยความจำ, ไม่มีประสิทธิภาพตก, ตัวจัดการแพ็กเกจสมัยใหม่
- หลังจากใช้งานมา 4 ปี Rust ไม่ได้สมบูรณ์แบบเสมอไป
- การพัฒนาของภาษาช้าลงมาก
- ฟีเจอร์ที่ยังไม่เสถียรจำนวนมากไม่ได้ถูกรวมเข้าใน Rust รุ่นเสถียร
ภาษาที่ยอดเยี่ยม
- อยาก fork คอมไพเลอร์ของ Rust และสร้าง edition ใหม่ชื่อ "seph"
- สามารถเพิ่มฟีเจอร์ใหม่ได้พร้อมกับคงฟีเจอร์เดิมของ Rust ไว้
function traits (effects)
- Rust นิยาม traits ให้กับ struct แต่ก็จำเป็นต้องนิยาม traits ให้กับฟังก์ชันด้วย
- สามารถใช้แสดงคุณลักษณะต่างๆ ของฟังก์ชันได้
- ฟังก์ชันทำให้เกิด panic หรือไม่
- มีขนาดสแตกคงที่หรือไม่
- ฟังก์ชันทำงานจนจบหรือหยุดรอกลางทาง
- ฟังก์ชันเป็น pure หรือไม่
- ฟังก์ชันรันโค้ดที่ unsafe หรือไม่
- ฟังก์ชันรับประกันการสิ้นสุดการทำงานหรือไม่
ฟีเจอร์ระดับคอมไพล์ไทม์
- โปรเจกต์ Rust จำนวนมากใช้ third-party crates เป็นจำนวนมาก
- crates เหล่านี้เพิ่มความเสี่ยงด้าน supply chain
- มีข้อเสนอให้เพิ่มฟีเจอร์ที่ต้องอนุญาตอย่างชัดเจนก่อนเรียกใช้ฟังก์ชันที่อ่อนไหวด้านความปลอดภัย
- หากจะเรียกใช้ฟีเจอร์อย่าง
fs_write ต้องอนุญาตอย่างชัดเจนก่อน
Pin, Move และการยืมของ struct
Pin เป็นแฮ็กที่ซับซ้อนเพื่อแก้ปัญหาของ borrow checker ใน Rust
- การใช้ marker trait
Move แทน Pin ดูสมเหตุสมผลกว่า
- มีข้อเสนอให้เพิ่มไวยากรณ์ที่สามารถระบุฟิลด์ของ struct ให้อยู่ในสถานะถูกยืมได้
- มีข้อเสนอให้เพิ่ม marker trait
Move และ trait Mover
คอมไพล์ไทม์
- นำฟีเจอร์
comptime ของ Zig มาใช้เพื่อแทนภาษาแมโครของ Rust
- เพิ่มอินเทอร์พรีเตอร์ขนาดเล็กที่สามารถรันโค้ดได้ในช่วงคอมไพล์ไทม์
- ใช้ Rust เองแทนภาษาแมโครของ Rust
การแก้ไขเล็กน้อย
- แก้ไข
impl<T: Copy> for Range<T>
- แก้ไข
derive ที่มี associated types
- รองรับ logical AND ใน expression แบบ
if-let
- ปรับปรุงการใช้งาน raw pointers
- เพิ่มอาร์กิวเมนต์
Allocator ให้กับ built-in collection types ทั้งหมด
ความคิดส่งท้าย
- ฟีเจอร์ async ก็ต้องการการปรับปรุงเช่นกัน แต่ควรแยกเป็นอีกโพสต์หนึ่ง
- การเปลี่ยนแปลงส่วนใหญ่เข้ากันไม่ได้กับ Rust แบบเดิม
- อาจจำเป็นต้องมี Rust edition ใหม่
- กำลังพิจารณา fork คอมไพเลอร์ด้วยตนเองแทนที่จะหมดแรงกับกระบวนการ RFC บน GitHub
สรุปโดย GN⁺
- แม้ Rust จะมีเสน่ห์ในช่วงแรก แต่ก็ไม่ได้สมบูรณ์แบบ
- การพัฒนาของภาษาช้าลง และฟีเจอร์ที่ยังไม่เสถียรจำนวนมากไม่ได้ถูกรวมเข้าใน Rust รุ่นเสถียร
- มีข้อเสนอหลายอย่าง เช่น function traits, ฟีเจอร์ระดับคอมไพล์ไทม์, และการปรับปรุง Pin กับ Move
- ข้อเสนอเหล่านี้อาจช่วยปรับปรุงการใช้งานของ Rust ได้อย่างมาก
- ภาษาอื่นที่มีฟีเจอร์คล้ายกันคือ Zig
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ความคิดเห็นต่อกระบวนการ RFC ของ Rust
ปัญหา dependency ของ Rust
Cargo-watchซึ่งเป็นแอปเฝ้าดูไฟล์แบบง่าย ๆ แต่เมื่อรวม dependency แล้วกลับมีโค้ดมากถึง 4 ล้านบรรทัดสถานะปัจจุบันของ Rust
ความคิดเห็นต่อการเขียน Rust ใหม่ด้วย Rust
ความไม่พอใจต่อกระบวนการตัดสินใจของ Rust
ความเห็นของ Josh Triplett
ความคิดเห็นต่อความซับซ้อนของ Rust
ความคิดเห็นต่อความเร็วของ Rust
ความคิดเห็นต่อการปรับปรุง Mutex
ความคิดเห็นต่อความเร็วในการพัฒนาฟีเจอร์ของ Rust
ความคิดเห็นต่อการออกแบบฟีเจอร์ของ Rust
ปัญหา borrow checker ของ Rust
ฟีเจอร์ compile time ของ Rust
ฟีเจอร์ไม่เสถียรของ Rust
ความคิดเห็นต่อความเร็วในการพัฒนาของ Rust