OpenAI เขียน Codex CLI ใหม่จาก TypeScript เป็น Rust จุดประกายการถ่ายเถียงเรื่องเทรนด์ "เขียนใหม่ด้วย Rust"

BigGo Editorial Team
OpenAI เขียน Codex CLI ใหม่จาก TypeScript เป็น Rust จุดประกายการถ่ายเถียงเรื่องเทรนด์ "เขียนใหม่ด้วย Rust"

OpenAI ได้ประกาศการเขียนใหม่ครั้งใหญ่ของเครื่องมือ Codex CLI โดยเปลี่ยนจาก TypeScript เป็น Rust การเปลี่ยนแปลงนี้ได้จุดประกายการอภิปรายอย่างเข้มข้นในชุมชนนักพัฒนาเกี่ยวกับเทรนด์ที่กำลังเกิดขึ้นในการเขียนเครื่องมือซอฟต์แวร์ใหม่ด้วยภาษาโปรแกรมระบบ โดยเฉพาะ Rust และ Go

Codex CLI เป็นเครื่องมือ agentic harness ที่เรียกใช้โมเดล AI แบบวนซ้ำเพื่อช่วยเหลือในงานเขียนโค้ด เดิมสร้างด้วย TypeScript และ React-based ink สำหรับส่วนติดต่อผู้ใช้บนเทอร์มินัล OpenAI ตัดสินใจสร้างฟังก์ชันหลักใหม่ด้วย Rust เพื่อแก้ไขปัญหาทางเทคนิคหลายประการ

สถาปัตยกรรมทางเทคนิค:

  • เดิม: TypeScript กับ React-based ink สำหรับ terminal UI
  • ใหม่: Rust core กับ wire protocol สำหรับ multi-language extensions
  • Extensions ที่รองรับ: TypeScript, JavaScript, Python, MCPs
  • การจัดจำหน่าย: Native binary compilation

แรงผลักดันสู่ประสิทธิภาพแบบ Native

OpenAI ให้เหตุผลหลัก 4 ประการสำหรับการเขียนใหม่: การกำจัดความต้องการ dependency ของ Node.js การใช้งาน native security bindings การเพิ่มประสิทธิภาพผ่านการลดการใช้หน่วยความจำ และการสร้างโปรโตคอลที่ขยายได้สำหรับการรองรับหลายภาษา บริษัทได้ส่งมอบคอมโพเนนต์ Rust สำหรับ Linux sandboxing แล้ว ทำให้การเปลี่ยนแปลงนี้เป็นวิวัฒนาการตามธรรมชาติมากกว่าการเปลี่ยนแปลงโดยสิ้นเชิง

การเพิ่มประสิทธิภาพ แม้จะอาจมีน้อยสำหรับเครื่องมือที่ทำหน้าที่หลักในการเรียก API แต่ก็แก้ไขปัญหาที่ผู้ใช้เจอจริง ความล่าช้าในการเริ่มต้นที่เป็นปัญหาใน Node.js เวอร์ชันได้ถูกกำจัดไป และรอยเท้าหน่วยความจำได้ลดลงอย่างมีนัยสำคัญด้วยการไม่ต้องใช้ JavaScript runtime environment

ประโยชน์หลักของการเขียนใหม่ด้วย Rust:

  • การติดตั้งแบบไม่ต้องพึ่งพาอะไร (ขจัดความต้องการ Node.js v22+)
  • การเชื่อมโยงความปลอดภัยแบบเนทีฟสำหรับ Linux sandboxing
  • ประสิทธิภาพที่ปรับให้เหมาะสมโดยไม่มี garbage collection
  • โปรโตคอลแบบขยายได้ที่รองรับหลายภาษา
  • การใช้หน่วยความจำที่ต่ำกว่า
  • เวลาเริ่มต้นที่เร็วกว่า (~0ms เทียบกับ >100ms)

ปฏิกิริยาชุมชนแบ่งออกเป็นสองฝ่ายเรื่องความจำเป็น

การประกาศนี้ได้แบ่งชุมชนนักพัฒนาออกเป็นสองฝ่าย ฝ่ายวิพากษ์วิจารณ์โต้แย้งว่านี่เป็นเทรนด์ Rewritten in Rust (RIIR) ที่ไม่จำเป็น โดยตั้งคำถามว่าประโยชน์ด้านประสิทธิภาพคุ้มค่ากับความพยายามในการพัฒนาหรือไม่สำหรับเครื่องมือที่ใช้เวลาส่วนใหญ่ในการรอการตอบสนองจาก API ระยะไกล พวกเขาชี้ให้เห็นว่า Node.js มี single executable application packaging อยู่แล้วที่สามารถแก้ปัญหา dependency ได้โดยไม่ต้องเขียนใหม่ทั้งหมด

อย่างไรก็ตาม ผู้สนับสนุนเน้นย้ำถึงประโยชน์เชิงปฏิบัติที่เกินกว่าประสิทธิภาพดิบ การกำจัดความล่าช้าในการเริ่มต้น การแจกจ่ายที่ง่ายขึ้นผ่าน native binaries และการลดการใช้ทรัพยากรระบบ สร้างประสบการณ์ผู้ใช้ที่ดีขึ้นอย่างเห็นได้ชัด ผู้แสดงความเห็นคนหนึ่งสังเกตว่าเครื่องมือ CLI ที่เขียนด้วยภาษา interpreted สามารถประสบปัญหาความล่าช้าในการเริ่มต้นอย่างมีนัยสำคัญที่ native compilation สามารถกำจัดได้อย่างสิ้นเชิง

รูปแบบที่กว้างขึ้นของอุตสาหกรรม

การเขียนใหม่นี้สะท้อนการเปลี่ยนแปลงที่ใหญ่กว่าของอุตสาหกรรมไปสู่ภาษาโปรแกรมระบบ การอภิปรายเผยให้เห็นรูปแบบวัฏจักรในการเลือกใช้เทคโนโลยี โดยลูกตุ้มแกว่งจากภาษา interpreted กลับไปสู่โซลูชันแบบ compiled และ native นักพัฒนาให้ความสำคัญกับความเรียบง่ายในการ deploy และประสิทธิภาพทรัพยากรมากกว่าความเร็วในการพัฒนามากขึ้น

เทรนด์นี้ขยายไปเกินกว่าเครื่องมือแต่ละตัวไปสู่ระบบนิเวศทั้งหมด บริษัทต่างๆ กำลังประเมินว่าความสะดวกของภาษา interpreted คุ้มค่ากับ overhead หรือไม่เมื่อมีทางเลือกอื่นอย่าง Rust ที่เสนอประสบการณ์การพัฒนาที่เทียบเคียงได้พร้อมคุณลักษณะ runtime ที่เหนือกว่า

มองไปข้างหน้า

OpenAI วางแผนที่จะรักษาทั้งสองเวอร์ชันในช่วงการเปลี่ยนผ่าน โดยจะยังคงแก้ไขบั๊กสำหรับ TypeScript implementation ในขณะที่นำ Rust เวอร์ชันให้มีฟีเจอร์เทียบเคียงกัน บริษัทยังขยายทีมงานเพื่อทำงานในการพัฒนา Rust และความสามารถ agentic coding ใหม่ๆ

การเขียนใหม่นี้เป็นมากกว่าการตัดสินใจทางเทคนิค แต่เป็นสัญญาณของการยอมรับในวงกว้างของอุตสาหกรรมว่าการแลกเปลี่ยนระหว่างความสะดวกในการพัฒนาและประสิทธิภาพ runtime ได้เปลี่ยนไป เมื่อต้นทุนการ deploy และการดำเนินงานมีความสำคัญมากขึ้น ความน่าสนใจของเครื่องมือแบบ native ที่มีประสิทธิภาพทรัพยากรยังคงเติบโต แม้สำหรับแอปพลิเคชันที่ไม่ได้มีความสำคัญด้านประสิทธิภาพแบบดั้งเดิม

อ้างอิง: Codex CLI is Going Native #1174