ผู้ใช้ 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 และไลบรารีมาตรฐานทำให้ดูแลโค้ดได้ง่าย
หน้าตา Firefox Crash Reporter ตัวใหม่ ที่หน้าตาเหมือนเดิม
การเขียน Crash Reporter ใหม่ดูเหมือนไม่มีอะไรยาก เพราะทั้งแอพมีหน้าจอเดียว แต่เงื่อนไขของ Mozilla ก็มีข้อจำกัดมากมาย เช่น ต้องเรียกใช้โค้ดหรือไลบรารีภายนอกให้น้อยที่สุด เพื่อให้แอพเล็ก ไม่ซับซ้อน ตรวจสอบย้อนกลับง่าย เงื่อนไขนี้ทำให้การเรียกใช้ไลบรารีสร้าง GUI แบบข้ามแพลตฟอร์มเป็นไปไม่ได้เลย ทางออกจึงต้องพึ่งพาตัวเอง
แนวทางของ Mozilla ยังไปสุดคือ จะพยายามมีโค้ดเฉพาะแพลตฟอร์มให้น้อยที่สุด ดังนั้นโค้ดสร้าง GUI จึงต้องสร้าง GUI abstraction ตรงกลางขึ้นมาก่อน ใช้โครงสร้างแบบ declarative แล้วค่อยแปลงมันไปเป็น GUI แบบเนทีฟบนแต่ละแพลตฟอร์ม ผ่านชุดสร้าง GUI ของแพลตฟอร์มอีกที
ในบทความยังมีรายละเอียดส่วนอื่นๆ อีกมาก ใครที่สนใจสร้างแอพด้วย Rust ก็ตามไปอ่านกันได้
ที่มา - Mozilla
Comments
นึกว่า Mozilla จะหวนไป C++ หมดเสียแล้ว
Windows นี่ยังคลาสสิคไม่เปลี่ยนแปลง
..: เรื่อยไป
classic สิครับ มันเป็นภาษา C + Macro + UTF16 codepage หนิ
แต่ก็ใช้ดีอยู่นะเร็วดี
custom ได้ตามใจไม่ต้องกลัว overhead
UI API อื่นของ MS ก็ wrap API นี้ทั้งนั้น
*** ขอภัย โพสต์ซ้ำครับ ***
..: เรื่อยไป