อ่านประมาณ 7 นาที
ระดับกลาง
หมวด: เว็บ
อ้างอิง: The Cloudflare Blog
ทีมที่เขียนเว็บด้วย TypeScript เสียเวลาไม่น้อยกับการรอให้คอมไพเลอร์ตรวจชนิดข้อมูลของโค้ดทั้งโปรเจกต์ ทั้งตอนเขียนและตอนรันระบบ CI Cloudflare ร่วมกับทีม VoidZero และทีม TypeScript เปิดตัว tsrs ซึ่งเป็นการพอร์ตคอมไพเลอร์ TypeScript ไปเป็นภาษา Rust ผลวัดของผู้พัฒนาระบุว่าเร็วกว่า TypeScript 7.0 สูงสุด 8 เท่า และใช้หน่วยความจำน้อยลงราว 70% แม้ตอนนี้ยังเป็นรุ่นทดลอง
tsrs คืออะไร และต่างจาก TypeScript 7 อย่างไร
TypeScript รุ่นดั้งเดิมเขียนด้วย JavaScript ต่อมาทีม TypeScript ของ Microsoft พอร์ตไปเป็นภาษา Go จนกลายเป็น TypeScript 7 ซึ่งเร็วขึ้นมาก tsrs เป็นอีกเส้นทางหนึ่งที่พอร์ตไปเป็นภาษา Rust โดยพัฒนาภายใต้ชุดเครื่องมือ Oxc และทำงานใกล้ชิดกับทีม TypeScript ผู้พัฒนาย้ำว่าไม่ใช่การแยกภาษาออกไปเอง การออกแบบภาษายังเป็นอำนาจของทีม TypeScript และ tsrs ต้องตามการตัดสินใจนั้นทุกครั้ง
เร็วขึ้นแค่ไหน
ผลวัดที่ Cloudflare เผยแพร่ (เทียบด้วยการตั้งค่าเดียวกัน) ตัวเทียบ ผล tsrs เทียบ TypeScript 7.0 เร็วกว่าสูงสุด 8 เท่า · หน่วยความจำน้อยกว่าราว 70% TypeScript 7.1 beta เทียบ 7.0 เร็วกว่าสูงสุด 2.5 เท่า (ส่วนหนึ่งมาจากการปรับที่ค้นพบระหว่างทำ tsrs) tsrs โหมดปรับตามเครื่อง (ค่าเริ่มต้น) เร็วขึ้นอีกแต่ใช้หน่วยความจำมากขึ้น (ไม่ได้ระบุตัวเลข)
จุดที่น่าสนใจคือ Cloudflare บอกว่าทำงานร่วมกับทีม TypeScript ให้การเทียบใช้การตั้งค่าเดียวกันจริง ต่างจากผลวัดของโปรเจกต์พอร์ตอื่นที่มักเทียบคนละเงื่อนไข และการปรับประสิทธิภาพบางส่วนถูกส่งกลับเข้า TypeScript รุ่น Go ด้วย ผู้ใช้ TypeScript ทั่วไปจึงได้ประโยชน์แม้ไม่ได้เปลี่ยนมาใช้ tsrs
ทำไมเลือก Rust แทน Go
เหตุผลหลักคือ WebAssembly (รูปแบบโปรแกรมที่รันได้ในเบราว์เซอร์และแพลตฟอร์มอย่าง Cloudflare Workers) โปรแกรมภาษา Go ที่คอมไพล์เป็น WebAssembly ต้องพกตัวเก็บกวาดหน่วยความจำของ Go ไปด้วย ส่วน Rust จัดการหน่วยความจำเองโดยตรง จึงประหยัดกว่ามากเมื่อรันในสภาพแวดล้อมแบบนั้น เป้าหมายที่ Cloudflare บอกคือทำให้เครื่องมือพัฒนาเต็มรูปแบบรันได้ในเบราว์เซอร์หรือในกล่องจำลองที่ให้เอเจนต์ AI ใช้งาน โดยไม่ต้องมีเครื่องเซิร์ฟเวอร์แยก
สถานะตอนนี้และข้อควรรู้ก่อนลอง
เป็นรุ่นทดลอง ติดตั้งด้วย npm install tsrs แล้วเรียก npx tsrs และมีแพ็กเกจ @tsrs/wasm สำหรับ WebAssemblyผลลัพธ์ยังต่างจาก TypeScript ต้นฉบับบางจุด เช่น ลำดับการแสดงข้อผิดพลาด ผู้พัฒนาตั้งใจลดความต่างก่อนออกรุ่นเสถียรแผนต่อไป รวมกับโปรเจกต์ tsc-rs ให้เป็นแพ็กเกจเดียวที่รองรับทุกความสามารถ รวมถึงการทำงานกับตัวแก้ไขโค้ดผ่าน LSPวิธีดูแล ใช้เอเจนต์ตรวจการเปลี่ยนแปลงของ TypeScript ต้นทางทุกเช้าและทดสอบความเข้ากันได้ทุกคืน แบบเดียวกับโปรเจกต์ Vinext
คำแนะนำสำหรับทีมส่วนใหญ่คือยังไม่ต้องย้ายระบบหลักมาใช้ tsrs แต่ลองรันเทียบในเครื่องหรือใน CI แยกได้ ว่าโปรเจกต์ของเราตรวจได้ผลตรงกันและเร็วขึ้นแค่ไหน ส่วนการอัปเกรดไป TypeScript 7.x ซึ่งเป็นรุ่นทางการ เป็นทางที่ได้ความเร็วเพิ่มทันทีโดยมีความเสี่ยงน้อยกว่า
สำหรับทีมพัฒนาไทย เวลาที่รอคอมไพเลอร์และ CI สะสมเป็นต้นทุนจริงของทุกโปรเจกต์ การติดตามเครื่องมือแบบนี้ช่วยให้รู้ว่าเมื่อไรควรอัปเกรด อ่านแนวคิดคล้ายกันได้ที่Vinext ใช้ Next.js บน Vite ทีมงาน Smart Cyber Tech พัฒนาเว็บแอปด้วย TypeScript ทั้งฝั่งหน้าเว็บและระบบหลังบ้าน พร้อมวางระบบ build ที่เร็ว ปรึกษาได้ที่ แบบฟอร์มติดต่อ
สรุปสาระสำคัญ tsrs คืออะไร และต่างจาก TypeScript 7 อย่างไร เร็วขึ้นแค่ไหน ทำไมเลือก Rust แทน Go
แหล่งอ้างอิง เรียบเรียงจาก The Cloudflare Blog —
อ่านบทความต้นฉบับ ภาพปก: The Cloudflare Blog · ลิขสิทธิ์ภาพเป็นของเจ้าของต้นฉบับ ใช้ประกอบการรายงานพร้อมอ้างอิงแหล่งที่มา
มีคำถามเพิ่มเติมเกี่ยวกับบทความนี้? เขียนหาเราได้ที่
info@smart-cyber-tech.com
บริการที่เกี่ยวข้องจากทีมงาน Smart Cyber Tech
แบ่งปันบทความนี้:
LINE
Facebook
X
คัดลอกลิงก์
ปรึกษาทีมของเรา