7 คะแนน โดย leegeunhyeok 2025-11-05 | 5 ความคิดเห็น | แชร์ทาง WhatsApp

ขอแนะนำ Craby เครื่องมือที่ช่วยผสานรวมโมดูลที่พัฒนาด้วย Rust เข้ากับ TurboModule แบบ C++ ล้วนใน React Native ได้

ดูเอกสารได้ที่: https://craby.rs
GitHub: https://github.com/leegeunhyeok/craby

Craby คืออะไร?

Craby เป็นเครื่องมือพัฒนาที่ช่วยให้คุณเขียนเนทีฟโมดูลประสิทธิภาพสูงด้วย Rust พร้อมคงความปลอดภัยของชนิดข้อมูลตลอดทั้งสแตก TypeScript - Rust - C++ ได้ โดยไม่ต้องมีเลเยอร์เฉพาะแพลตฟอร์มของ React Native TurboModule (ObjCTurboModule/JavaTurboModule) แต่เชื่อมต่อโดยตรงกับ TurboModule แบบ C++ ล้วน เพื่อดึงประสิทธิภาพสูงสุดออกมา

ประสิทธิภาพ

การเปรียบเทียบเบนช์มาร์กกับโซลูชันอื่น (ดูเบนช์มาร์ก):

  • เร็วกว่า ExpoModules 20-80 เท่า
  • เร็วกว่า TurboModules มาตรฐาน 15-20 เท่า
  • เร็วกว่า NitroModules (พัฒนาด้วย Swift/Kotlin ไม่ใช่ C++) 25~30%

นี่เป็นการทดสอบ throughput แบบสุดขั้ว (เรียกใช้งาน 100,000 ครั้ง) ผลลัพธ์ในสภาพแวดล้อมการใช้งานจริงอาจแตกต่างกัน โปรดใช้เป็นข้อมูลอ้างอิงเท่านั้น

ฟีเจอร์หลัก

  • สร้างโค้ดอัตโนมัติ: เมื่อกำหนด API ด้วย TypeScript จะสร้าง Rust/C++ bindings ให้อัตโนมัติ
  • ความปลอดภัยของชนิดข้อมูล: ตรวจสอบชนิดข้อมูลระหว่าง TypeScript, Rust และ C++ ตั้งแต่คอมไพล์ไทม์
  • Zero-Cost FFI: ลดโอเวอร์เฮดของการทำงานร่วมกันระหว่าง Rust-C++ ให้เหลือน้อยที่สุดผ่าน cxx
  • API ที่เรียบง่าย: โฟกัสแค่การพัฒนา implementation ฝั่ง Rust ที่เหลือ Craby จัดการให้

ตัวอย่างการใช้งาน

// โมดูล schema definition (TypeScript)  
interface Spec extends NativeModule {  
  add(a: number, b: number): number;  
}  
// actual module implementation (Rust)  
#[craby_module]  
impl CalculatorSpec for Calculator {  
    fn add(&mut self, a: Number, b: Number) -> Number {  
        a + b  
    }  
}  

Craby จะสร้างโค้ด bridging ทั้งหมดให้อัตโนมัติ และผู้ใช้เพียงแค่พัฒนาโมดูลจริง (Rust) เท่านั้น

รายละเอียดเพิ่มเติมดูได้จากเอกสาร/รีโพซิทอรี GitHub และยินดีรับฟีดแบ็กหลากหลายรูปแบบเสมอ!

5 ความคิดเห็น

 
bangdy 2025-11-07

เป็นโปรเจกต์ที่ดีมากเลยครับ กดดาวเพิ่มให้แล้ว!!

 
gargoyle92 2025-11-05

คุณคึนฮยอกเป็นสัตว์ประหลาดจริง ๆ…

 
mindok 2025-11-05

มีคนที่เก่งมาก ๆ เยอะจริง ๆ เลย..

 
skageektp 2025-11-05

ว้าว... ไม่ทราบว่ามีแรงบันดาลใจอะไรเป็นพิเศษที่ทำให้คุณสร้างเครื่องมือนี้ขึ้นมาหรือเปล่าครับ? ผมเองก็อยากลองทำอะไรแบบนี้ดูเหมือนกัน เลยสงสัยว่าปกติแล้วแต่ละคนมีจุดเริ่มต้นหรือแรงผลักดันอะไรถึงได้สร้างมันขึ้นมาครับ

 
leegeunhyeok 2025-11-06

เมื่อไม่นานมานี้มีสถานการณ์ที่ต้องย้ายไปใช้ New Architecture และระหว่างที่กำลังดูการทำงานภายในของ TurboModule ก็เริ่มจากไอเดียที่ว่า “ถ้าเข้าถึงแบบนี้ก็น่าจะมีความเป็นไปได้มากพอเลยนะ”!