ทีมหลักของ pnpm ได้ปล่อย alpha build ของเวอร์ชัน 12 ที่ทำงานในรูปแบบ native Rust binary ซึ่งสัญญาว่าจะช่วยให้เวลาในการติดตั้งเร็วขึ้นกว่าเวอร์ชันที่ใช้ Node ในปัจจุบันอย่างมหาศาล (an order of magnitude) การเปลี่ยนแปลงนี้มีความสำคัญเพราะจะทำให้งานใน CI เสร็จสิ้นเร็วขึ้นมาก
ทำไมการเขียนใหม่ถึงสำคัญ
pnpm สร้างความแตกต่างจาก npm และ Yarn อยู่แล้วด้วยการใช้ content-addressable store และโครงสร้าง node_modules ที่เข้มงวด อย่างไรก็ตาม ทุกคำสั่งยังคงต้องเริ่มกระบวนการ Node.js ซึ่งทำให้เกิดต้นทุนในการเริ่มต้น (startup cost) ที่คงที่ก่อนที่จะเริ่มทำงานกับไฟล์ใดๆ การย้ายโค้ดส่วนที่ทำงานหนัก (heavy-lifting) ไปยัง Rust ช่วยให้ทีมงานสามารถตัดขั้นตอนการ bootstrap นั้นออกไป และใช้ความสามารถของ Rust ในการรันการทำงานกับไฟล์จำนวนมากแบบขนาน (parallel) ซึ่งเป็นสิ่งที่ JavaScript thread เดี่ยวไม่สามารถทำได้
ตัวเลขเบื้องหลังคำกล่าวอ้าง
ผลการทดสอบประสิทธิภาพ (Benchmarks) ที่จัดทำโดยทีม pnpm แสดงให้เห็นถึงการลดลงอย่างมหาศาลใน 3 สถานการณ์ทั่วไป:
- Warm install (การรันซ้ำ): จาก 381 ms เป็น 12 ms
- No-cache install: จาก 460 ms เป็น 40 ms
- Clean install (โครงสร้าง dependency ทั้งหมด): จาก 6.5 s เป็น 2.2 s
การปรับปรุงที่เร็วขึ้นถึง 30 เท่าในการทำ warm install ส่งผลโดยตรงต่อการทำงานของ CI ที่เร็วขึ้น และช่วยให้ลูปการตอบกลับ (feedback loops) ของนักพัฒนาทำได้กระชับยิ่งขึ้น
สิ่งที่ยังคงเหมือนเดิม
การเขียนใหม่ครั้งนี้เป็นการพอร์ต (port) ไม่ใช่การออกแบบใหม่ (redesign) ทั้ง flag ที่มีอยู่ รูปแบบ lockfile และโครงสร้าง node_modules ที่เข้มงวดยังคงไม่เปลี่ยนแปลง โปรเจกต์ต่างๆ สามารถรัน pnpm install ได้เหมือนเดิมทุกประการ ความแตกต่างเพียงอย่างเดียวที่สังเกตได้คือความเร็ว และเนื่องจาก public API ไม่มีการเปลี่ยนแปลง เส้นทางการย้ายระบบ (migration path) จึงถูกออกแบบมาให้ราบรื่นและไม่มีปัญหา
วิธีทดลองใช้งานตอนนี้
การเปลี่ยนผ่านนี้ทำเป็นลำดับขั้นตอน ในเวอร์ชัน v11 ปัจจุบัน นักพัฒนาสามารถเลือกใช้งาน Rust backend แบบทดลองได้โดยการเปิดใช้งาน flag “pacquet” backend ส่วนใน v12 นั้น Rust engine จะกลายเป็นค่าเริ่มต้นสำหรับการดึงแพ็กเกจ (fetching packages) และการเชื่อมโยง (linking) เข้ากับ workspace โดยเวอร์ชัน alpha นี้ถูกเผยแพร่ภายใต้ tag next-12 ซึ่งยังไม่แนะนำให้ใช้ในสภาพแวดล้อม production แต่ใครก็ตามที่สนใจสามารถติดตั้งได้ด้วยคำสั่งเดียวและเริ่มทดสอบได้ทันที
ความเสี่ยงและข้อโต้แย้ง
แม้จะมี API surface ที่สะอาดตา แต่ binary เวอร์ชัน alpha ก็ยังมีความเสี่ยงตามปกติ เช่น การทดสอบที่ยังจำกัด และโอกาสที่จะเกิดปัญหาถดถอย (regressions) ในกรณีที่เป็น edge-case
แนวโน้มในภาพรวม
การเคลื่อนไหวของ pnpm สะท้อนถึงรูปแบบที่กำลังเติบโตในกลุ่มเครื่องมือ front-end โดยโปรเจกต์อย่าง Biome และ Oxc ก็ได้เขียนส่วนประกอบหลักใหม่ด้วยภาษาแบบ compiled languages เพื่อลดเวลาในขั้นตอนการทำงานของนักพัฒนาลงแม้เพียงไม่กี่มิลลิวินาทีก็ตาม
