- ใช้ประโยชน์จากประสิทธิภาพการคอมไพล์ของ Rustเพื่อเร่งความเร็วในการบิลด์และการทำงานของแอปพลิเคชัน React ให้สูงสุดด้วยโครงสร้างพื้นฐานการเรนเดอร์แบบเร่งรันไทม์
- รองรับ React Server Components ในตัว เพื่อลดปริมาณ JavaScript ที่ส่งไปยังไคลเอนต์
- ใช้บันเดลเลอร์ Rust ยุคใหม่บนพื้นฐาน Rolldown-Vite เพื่อทำให้บิลด์ได้รวดเร็วโดยไม่ต้องตั้งค่า
- รองรับ TypeScript อย่างสมบูรณ์ด้วย tsgo พร้อมมอบการตรวจสอบชนิดข้อมูลที่เร็วขึ้น 10 เท่า
- มี HMR บนพื้นฐาน Vite, ข้อความแสดงข้อผิดพลาดแบบละเอียด และเครื่องมือพัฒนาที่เร็วระดับเนทีฟ เพื่อรับประกันประสบการณ์การพัฒนาที่ลื่นไหล
การเพิ่มประสิทธิภาพด้วย Rust
- คอมไพล์ด้วย Rust เพื่อมอบความเร็วระดับเนทีฟ
- รองรับการประมวลผลความเร็วสูงทั้งในขั้นตอนบิลด์และรันไทม์
- ออกแบบมาเพื่อลดคอขวดด้านประสิทธิภาพของแอปพลิเคชัน React ให้เหลือน้อยที่สุด
รองรับ React Server Components
- มี React Server Components ติดตั้งมาในตัว
- ลดปริมาณ JavaScript ที่ส่งไปยังไคลเอนต์เพื่อเพิ่มประสิทธิภาพการโหลด
- ทำให้เกิดการเพิ่มประสิทธิภาพการส่งข้อมูลผ่านการเรนเดอร์ที่ยึดเซิร์ฟเวอร์เป็นศูนย์กลาง
สภาพแวดล้อมการบิลด์แบบไม่ต้องตั้งค่า
- โครงสร้างแบบ Zero Configuration ที่ใช้ Rolldown-Vite เป็นพื้นฐาน
- บิลด์ได้ทันทีโดยไม่ต้องมีการตั้งค่าเพิ่มเติม
- บันเดลเลอร์ที่เขียนด้วย Rust มอบความเร็วในการบิลด์ระดับสายฟ้าแลบ
การบันเดิลและความปลอดภัยของชนิดข้อมูล
- ใช้ Rolldown เพื่อการบันเดิลที่เร็วระดับเนทีฟและดึงประสิทธิภาพสูงสุดออกมา
- รองรับ TypeScript อย่างสมบูรณ์ผ่าน tsgo
- มอบการตรวจสอบชนิดข้อมูลที่เร็วขึ้น 10 เท่าและคำจำกัดความชนิดข้อมูลที่แม่นยำ
ประสบการณ์นักพัฒนา
- ใช้ HMR (Hot Module Replacement) บนพื้นฐาน Vite เพื่อสะท้อนการเปลี่ยนแปลงของโค้ดได้ทันที
- รองรับเวิร์กโฟลว์ที่ราบรื่นด้วยข้อความแสดงข้อผิดพลาดแบบละเอียดและเครื่องมือพัฒนาที่เร็วระดับเนทีฟ
- มอบสภาพแวดล้อมการผสาน Rust-Reactที่ช่วยเพิ่มประสิทธิภาพและผลิตภาพในการพัฒนา
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
จริง ๆ แล้วฉันชอบโปรเจ็กต์นี้นะ แต่คำอธิบายและคุณภาพเอกสารยังไม่ดีพอมาก ๆ
ถ้าคำว่า “rust-powered” หมายถึงแค่ใช้ rolldown bundle JS ก็โอเค แต่ก็ทำให้เข้าใจผิดได้ง่ายว่าเป็น Rust framework
อีกอย่าง วลีอย่าง “seamless NPM package integration” ฟังเหมือน LLM เขียน เพราะไลบรารี JS ส่วนใหญ่ก็ทำงานแบบนั้นอยู่แล้ว เลยไม่ค่อยมีความหมาย
ถึงอย่างนั้น พอคิดว่าแทบไม่มีเฟรมเวิร์กเรียบง่ายสำหรับ React เลย ความเรียบง่ายที่ทำให้เริ่มจากโปรเจ็กต์ว่าง ๆ แล้วไปถึง RSC ได้ทันทีนี่ถือว่ายอดเยี่ยมมาก นี่แหละควรเป็นสโลแกน
ตัวโค้ดเบสดูสุกงอมกว่าเอกสารมาก ปลั๊กอิน Vite ก็รองรับ options ดีอยู่แล้ว แค่ยังไม่ได้เขียนเอกสารเท่านั้น
มารู้ทีหลังว่า Rust runtime รัน JS จริง ๆ ด้วย แต่ก็ยังสงสัยว่าส่วนนี้แยกจากเฟรมเวิร์กหรือเปล่า หรือว่ามันทำงานได้เฉพาะบน Rust runtime เท่านั้น อยากรู้ว่ารันบน Node ได้ไหม
“Rust-powered” ไม่ได้หมายถึง bundler แต่หมายถึงserver runtime เซิร์ฟเวอร์ HTTP, ตัวเรนเดอร์ RSC และ routing เขียนด้วย Rust ทั้งหมด ส่วน React component จะรันบน V8 engine ที่ฝังมาในตัว
ส่วนเรื่อง npm integration หมายถึง Rust runtime จัดการการ resolve
node_modulesโดยตรง ไม่ได้ใช้ npm specifier แบบ Denoสโลแกนอย่าง “Zero to RSC in minutes” ชัดเจนกว่ามาก ช่วงก่อนผมโฟกัสกับการทำให้ runtime เสถียรจนเอกสารตามไม่ทัน แต่ตอนนี้ถึงเวลาต้องตามเก็บแล้ว
ผมว่า React ตอนนี้คือเฟรมเวิร์ก JS สมัยใหม่ที่แย่ที่สุดแล้ว Vue ไปไกลกว่ามาก และ Svelte หรือ Solid หรือแม้แต่ Marko ก็ยังดีกว่า
แต่ก็ยังไม่ถึงขั้นแย่ที่สุดอยู่ดี มันเคยประสบความสำเร็จอย่างมากเพราะ JSX, functional component และ state management ที่เรียบง่าย
ตอนนี้ชุมชนมันใหญ่เกินกว่าจะถูกแทนที่ได้ง่าย ๆ เฟรมเวิร์กอื่น ๆ ก็พัฒนาขึ้นทีละนิด แต่ระดับของนวัตกรรมก็ไม่ได้ต่างกันมาก
ผมใช้โครงสร้าง MVC/MVVM ในโปรเจ็กต์ส่วนตัวแล้วจัดการง่ายขึ้นมาก พึ่ง IDE plugin น้อยลง และเลือกเวอร์ชัน TypeScript ได้อิสระกว่า
กำลังทดลองใช้ชุด Rust + React อยู่ react-vello ที่ผมทำ เปิดให้ใช้ Vello ซึ่งเป็น Rust GPU renderer เป็น React renderer
ผ่าน WASM + WebGPU ทำให้ Rust เป็นคนเรนเดอร์ในเบราว์เซอร์ และใช้ React วาดรูปทรงกับข้อความแบบประกาศได้
การเชื่อมสองฝั่งด้วย wasm-bindgen และ tsify มันง่ายมากจนเหมือนเป็นภาษาเดียวกัน ผมว่ามันคือแก่นแท้ของวิศวกรรมเลย
React Vello ก็ดูน่าสนใจมาก ขอบคุณที่เอามาแชร์
คำอธิบายว่า “React Server Components framework powered by a Rust runtime” นี่แหละคือแก่น
ถ้ากำลังหา Rust-based web framework ผมแนะนำ Leptos
ลิงก์ที่เกี่ยวข้อง: HN discussion, YouTube demo
แต่ rari ใช้แนวทางคนละแบบ มันไม่ใช่ Rust framework แต่เป็นเฟรมเวิร์ก React Server Components ที่ทำงานบน Rust runtime
เป้าหมายคือซ่อนความซับซ้อนของ Rust เอาไว้ เพื่อให้นักพัฒนา JS/TS สร้าง React app ประสิทธิภาพสูงได้โดยไม่ต้องรู้ Rust
วลี “Rust-Powered Performance — Native speed with Rust compilation for blazing-fast builds and runtime” ฟังดูตลกดี
ทั้งที่ตัว Rust เองก็คอมไพล์ช้า แต่กลับช่วยให้อีกภาษาหนึ่งเอาเรื่องความเร็วมาอวดได้
สงสัยว่ามันทำงานคล้าย ReasonML กับ React-Reason ไหม ผมไม่เข้าใจว่า Rust ไป reimplement JS engine หรือเปล่า
Rust ทำหน้าที่เป็น server runtime แทนที่จะใช้ Node.js ก็ใช้ Rust server ที่รัน React Server Components ผ่าน V8 engine ที่ฝังมาในตัว
พูดอีกแบบคือโค้ด React ยังเหมือนเดิม แต่ตัวเซิร์ฟเวอร์เป็น Rust เลยให้ประสิทธิภาพดีกว่า Node
ผมเป็นผู้เขียน ตอนนี้แก้ปัญหาได้แล้ว สาเหตุมาจากrate limiterที่ตั้งไว้รุนแรงเกินไป
ผมกำลังทำอะไรคล้าย ๆ กันสำหรับ JVM backend — double-view
มันใช้ GraalVM รัน JS แต่เพราะปัญหาเรื่อง integration เลยต้องคอมไพล์ JS ไปเป็น WebAssembly อยากรู้ว่า rari ใช้แนวทางเดียวกันไหม
ชื่อมันฟังดูเหมือนเอา “Ferrari” ที่เร็ว ๆ มาผสมกับ React เลยเท่มาก อยากรู้ว่ามีuse case หรือแรงบันดาลใจเฉพาะอะไรไหม
ผมเองก็เพิ่งปล่อยโปรเจ็กต์โอเพนซอร์สเหมือนกัน เห็นโปรเจ็กต์ของคุณได้รับความสนใจก็รู้สึกยินดีด้วย
แต่ผมก็ชอบที่มันชวนให้นึกถึง Ferrari เหมือนกัน เข้ากับธีมเรื่องประสิทธิภาพดี
เพราะผมใช้ Rust เยอะ ก็เลยอยากเอาข้อได้เปรียบด้านประสิทธิภาพนั้นไปให้นักพัฒนา JSในงาน React ด้วย
เป้าหมายคือซ่อนความซับซ้อนของ Rust เอาไว้ แต่ยังได้ความเร็วเหมือนเดิม
ยินดีกับการเปิดตัวโปรเจ็กต์ของคุณด้วยนะ อยากรู้ว่าคุณทำอะไรไว้
เอกสารเริ่มต้นด้วยServer Components เลย เลยสงสัยว่าหลังเหตุการณ์ด้านความปลอดภัยล่าสุด มันยังได้รับความนิยมอยู่ไหม
อ้างอิง: รายงานช่องโหว่ RCE ของ React Server Components