กรุณาปิด โปรแกรมบล๊อกโฆษณา เพราะเราอยู่ได้ด้วยโฆษณาที่ท่านเห็น
Please close the adblock program. Because we can live with the ads you see


ข่าว Mozilla เปิดบทเรียนเขียน Firefox Crash Reporter ใหม่ด้วยภาษา Rust

News

Staff Member
VIP Member
Registered
ผู้ใช้ Firefox อาจเคยเจอปัญหาแอพแครช และเจอหน้าจอส่งรายงานการแครช Firefox Crash Reporter กลับไปยัง Mozilla เพื่อใช้วิเคราะห์

Firefox Crash Reporter มีสถานะเป็นแอพแยกขาดจาก Firefox แต่บันเดิลมาในชุดติดตั้งเดียวกัน เหตุผลที่ต้องแยกขาดจากกันเป็นเพราะเมื่อ Firefox แครช ตัว Crash Reporter จะยังทำงานได้ต่อไป ไม่ใช่โดนลากให้แครชตามไปด้วยกัน

อย่างไรก็ตาม Crash Reporter ถูกเขียนขึ้นมานานมากแล้ว (เบื้องหลังเป็น C++ และบางส่วนเป็น Objective-C สำหรับเวอร์ชันแมค) หลายส่วนเริ่มล้าสมัย เช่น เวอร์ชันแมคจะสร้างไฟล์ไบนารีด้วยเครื่องมือตัวเก่าที่แอปเปิลเองยังเลิกใช้ไปแล้ว โค้ดตัวเดิมจึงกลายเป็นภาระในการดูแลมากขึ้นเรื่อยๆ

ล่าสุด Mozilla ประกาศว่าเพิ่งเขียน Firefox Crash Reporter ขึ้นมาใหม่ด้วยภาษา Rust ด้วยเหตุผลหลายอย่าง เช่น ความปลอดภัยของหน่วยความจำ (memory safety) ที่ระดับของภาษา, ระบบตัวแปร type system และไลบรารีมาตรฐานทำให้ดูแลโค้ดได้ง่าย

No Description


หน้าตา Firefox Crash Reporter ตัวใหม่ ที่หน้าตาเหมือนเดิม

การเขียน Crash Reporter ใหม่ดูเหมือนไม่มีอะไรยาก เพราะทั้งแอพมีหน้าจอเดียว แต่เงื่อนไขของ Mozilla ก็มีข้อจำกัดมากมาย เช่น ต้องเรียกใช้โค้ดหรือไลบรารีภายนอกให้น้อยที่สุด เพื่อให้แอพเล็ก ไม่ซับซ้อน ตรวจสอบย้อนกลับง่าย เงื่อนไขนี้ทำให้การเรียกใช้ไลบรารีสร้าง GUI แบบข้ามแพลตฟอร์มเป็นไปไม่ได้เลย ทางออกจึงต้องพึ่งพาตัวเอง

แนวทางของ Mozilla ยังไปสุดคือ จะพยายามมีโค้ดเฉพาะแพลตฟอร์มให้น้อยที่สุด ดังนั้นโค้ดสร้าง GUI จึงต้องสร้าง GUI abstraction ตรงกลางขึ้นมาก่อน ใช้โครงสร้างแบบ declarative แล้วค่อยแปลงมันไปเป็น GUI แบบเนทีฟบนแต่ละแพลตฟอร์ม ผ่านชุดสร้าง GUI ของแพลตฟอร์มอีกที

  • Linux ใช้ GTK+ 3 ซึ่งถือว่ามีปัญหาน้อยที่สุด เพราะ GTK ค่อนข้างสมัยใหม่ ใช้แนวทาง declarative เหมือนกัน
  • macOS ใช้ Cocoa (AppKit และ Foundation frameworks) เจอปัญหาว่า GUI ของแมคมีโค้ดส่วนที่ถูก generated ด้วย Xcode เยอะมาก การเขียน GUI ขึ้นมาเองโดยไม่มี Xcode ต้องเขียนบางอย่างเองทั้งหมด เช่น ช็อตคัตคีย์บอร์ด
  • Windows ใช้ Win32 API ซึ่งเป็นแพลตฟอร์มที่เขียนยากที่สุด เพราะ Win32 API เก่ามากๆ แล้ว ไม่รองรับการทำ abstraction มากนัก ต้องคัสตอมโค้ดเยอะมาก

ในบทความยังมีรายละเอียดส่วนอื่นๆ อีกมาก ใครที่สนใจสร้างแอพด้วย Rust ก็ตามไปอ่านกันได้

ที่มา - Mozilla

Topics:
Rust
Mozilla
Firefox
Development

อ่านต่อ...
 



กรุณาปิด โปรแกรมบล๊อกโฆษณา เพราะเราอยู่ได้ด้วยโฆษณาที่ท่านเห็น
Please close the adblock program. Because we can live with the ads you see
ด้านบน ด้านล่าง