ทีมหลักของ pnpm กำลังเปิดตัวการเขียนโค้ดใหม่ด้วยภาษา Rust สำหรับเวอร์ชัน v12 ซึ่งช่วยลดเวลาการติดตั้งแบบ warm install จาก 381 ms เหลือเพียง 12 ms และลดเวลา clean install จาก 6.5 s เหลือ 2.2 s การเพิ่มความเร็วนี้มีความสำคัญอย่างยิ่งต่อเหล่านักพัฒนาที่รันแพ็กเกจใน CI (continuous-integration) pipelines ซึ่งทุกวินาทีที่ประหยัดได้นั้นมีความหมาย

ทำไมการเขียนโค้ดใหม่ถึงสำคัญในตอนนี้

pnpm มีความเร็วเหนือกว่าคู่แข่งหลายรายอยู่แล้ว แต่เนื่องจากทำงานบน Node.js จึงทำให้มีต้นทุนในการเริ่มต้นระบบ (startup cost) ทุกครั้งที่เรียกใช้คำสั่ง ซึ่งต้นทุนนี้จะปรากฏให้เห็นเป็นช่วงเวลาที่หยุดชะงักอย่างชัดเจนในงาน CI ที่ต้องดึงข้อมูลและเชื่อมโยง (link) dependencies ซ้ำๆ การย้ายงานหนักๆ ไปไว้ใน binary ของ Rust โดยตรง ซึ่งใช้รหัสลับว่า pacquet จะช่วยให้ทีมงานสามารถตัดขั้นตอนการ bootstrap ของ Node.js ออกไป และให้ Rust จัดการกับการเปลี่ยนแปลงมหาศาลในระบบไฟล์ (file-system churn) ได้ด้วย single thread

การเขียนโค้ดใหม่นี้เป็นการพอร์ต (port) ไม่ใช่การออกแบบใหม่ ทั้ง flags, รูปแบบ lockfile และโครงสร้าง node_modules ที่คุ้นเคยจะยังคงเหมือนเดิมทุกประการ ดังนั้นสคริปต์และเวิร์กโฟลว์ที่มีอยู่จึงไม่จำเป็นต้องเปลี่ยนแปลงใดๆ ใน v11 คุณสามารถเลือกใช้งาน pacquet backend ได้แล้ว แต่ใน v12 จะกำหนดให้เป็นค่าเริ่มต้นสำหรับการ fetch และ link

ประสิทธิภาพที่เพิ่มขึ้นอย่างเห็นได้ชัด

ผลการทดสอบประสิทธิภาพ (Benchmarks) จากผู้ดูแลระบบแสดงให้เห็นว่า:

  • Warm install (รันซ้ำโดยใช้ cache): 381 ms → 12 ms ซึ่งเร็วขึ้นถึง 30 เท่า
  • Clean install (ไม่มี cache): 6.5 s → 2.2 s ซึ่งลดเวลาลงได้มากกว่าครึ่ง

ความเสี่ยงและข้อแลกเปลี่ยน

เอนจิน Rust ยังอยู่ในสถานะ alpha ทีมงานจึงแนะนำว่าไม่ควรใช้ v12 ในสภาพแวดล้อมการทำงานจริง (production) จนกว่าจะพ้นจากขั้นตอน pre-release

วิธีทดลองใช้งานในวันนี้

นักพัฒนาสามารถทดสอบ backend ใหม่ได้โดยการรัน pnpm self-update next-12 ซึ่งจะดึง pre-release binary เวอร์ชันล่าสุดมา คำสั่งนี้จะเปลี่ยนจาก JavaScript engine เป็น Rust engine โดยไม่เปลี่ยนแปลง pnpm-lock.yaml หรือโครงสร้าง node_modules ของโปรเจกต์ สำหรับทีมที่ต้องการประเมินผลกระทบต่อ CI pipelines ของตน ควรลองสร้าง runner แบบชั่วคราว (disposable runner) เปิดใช้งาน pacquet backend และเปรียบเทียบเวลาในการ build กับการตั้งค่าปัจจุบัน

แนวโน้มในภาพรวม

การเคลื่อนไหวของ pnpm สะท้อนถึงกระแสการเปลี่ยนผ่านของเครื่องมือต่างๆ ไปสู่ภาษาแบบ compiled languages โปรเจกต์อย่าง Biome, Oxc และ Deno ต่างก็สร้างส่วนประกอบที่สำคัญต่อประสิทธิภาพขึ้นมาใหม่ด้วยภาษา Rust หรือ Go เพื่อลดความหน่วง (latency) ในเวิร์กโฟลว์ของนักพัฒนา

สิ่งที่ต้องจับตามองต่อไป

  • ความเสถียร (Stability milestones): การติดตามการปล่อยเวอร์ชันต่างๆ จะช่วยให้ทราบว่าเมื่อใดที่ปลอดภัยสำหรับการใช้งานใน production
  • ความครบถ้วนของฟีเจอร์ (Feature parity): ผู้ใช้ควรคอยตรวจสอบ changelog เพื่อดูว่ามีฟีเจอร์ใดที่ยังขาดหายไปหรือไม่

สรุปสั้นๆ คือ: การเขียนโค้ดใหม่ด้วย Rust ของ pnpm เปลี่ยนจาก package manager ที่เร็วอยู่แล้ว ให้กลายเป็นตัวที่ทำงานได้แทบจะทันทีสำหรับการติดตั้งซ้ำ และช่วยลดเวลาลงได้มากกว่าครึ่งสำหรับการติดตั้งใหม่ สำหรับทีมที่ต้องเสียเวลาหลายนาทีไปกับการจัดการ dependencies ในทุกๆ คืน การอัปเกรดนี้สัญญาว่าจะช่วยลดต้นทุน CI ได้อย่างเห็นได้ชัด โดยไม่จำเป็นต้องรื้อระบบเวิร์กโฟลว์ใหม่