โครงการ Chromium จะสนับสนุนการใช้ไลบรารี C++ Rust ของบุคคลที่สามใน Chromium
เมื่อเร็วๆ นี้ Google ได้ประกาศว่าทีมงานเบื้องหลังโครงการ Chromium กำลังดำเนินการเพิ่ม ชุดเครื่องมือ Rust สำหรับใช้งานจริง ลงในระบบสร้างซอฟต์แวร์ของตน
สำหรับใครที่ยังไม่รู้จัก Rust คงจะจำกันได้ดีเพราะภาษาโปรแกรมนี้ที่พัฒนาโดย Mozilla เพื่อใช้ในการเขียนบราวเซอร์โดยเฉพาะนั้นเริ่มแพร่หลายและเป็นที่ยอมรับในโครงการสำคัญๆ มากมาย หนึ่งในนั้นก็คือ เคอร์เนลสนิม ลินุกซ์
ซึ่งจะช่วยให้เราสามารถรวมรหัสสนิมในไบนารีของ Chrome ในปีหน้า เป้าหมายคือการเริ่มต้นเล็ก ๆ และตั้งความคาดหวังให้ชัดเจนว่าห้องสมุดใดจะได้รับการพิจารณาเมื่อพร้อม
ดังนั้น จึงเป็นเรื่องสมเหตุสมผลที่ Chromium จะเริ่มพัฒนาเทคโนโลยีนี้เช่นกันสำหรับ Google การนำ Rust มาใช้ใน Chromium จะช่วยให้บรรลุเป้าหมายในการบรรลุ "กฎสองข้อ" ได้ง่ายขึ้นและปลอดภัยยิ่งขึ้น ซึ่งประกอบด้วยการเร่งการพัฒนาและการปรับปรุงความปลอดภัยของ Chrome นอกจากนี้ยังช่วยเพิ่มความปลอดภัยโดยการกำจัดข้อผิดพลาดเกี่ยวกับหน่วยความจำและลดความหนาแน่นของข้อบกพร่องในโค้ด
เราทราบดีว่า C++ และ Rust สามารถทำงานร่วมกันได้เป็นอย่างดี ต้องขอบคุณเครื่องมือต่างๆ เช่น cxx, autocxx bindgen, cbindgen,Diplomat และ crubit (เชิงทดลอง) อย่างไรก็ตาม ยังมีข้อจำกัด เราสามารถคาดหวังได้ว่ารูปแบบของข้อจำกัดเหล่านี้จะเปลี่ยนแปลงไปตามกาลเวลาด้วยเครื่องมือใหม่หรือที่ได้รับการปรับปรุง แต่การตัดสินใจและคำอธิบายในที่นี้จะขึ้นอยู่กับสถานะปัจจุบันของเทคโนโลยี
การตัดสินใจครั้งนี้เป็นส่วนหนึ่งของโครงการริเริ่มเพื่อป้องกันข้อผิดพลาดเกี่ยวกับหน่วยความจำที่อาจเกิดขึ้นในโค้ดของ Chrome จากสถิติที่ให้ไว้เมื่อสองปีก่อน พบว่า 70% ของปัญหาด้านความปลอดภัยที่ร้ายแรงและเป็นอันตรายใน Chromium เกิดจากข้อผิดพลาดเกี่ยวกับหน่วยความจำ
การใช้ภาษา Rust ซึ่งเน้นการจัดการหน่วยความจำอย่างปลอดภัยและมีการจัดการหน่วยความจำอัตโนมัติ จะช่วยลดความเสี่ยงจากช่องโหว่ที่เกิดจากปัญหาต่างๆ เช่น การเข้าถึงพื้นที่หน่วยความจำหลังจากที่ได้ถูกปล่อยไปแล้ว และบัฟเฟอร์โอเวอร์โฟลว์
เป้าหมายของการนำ Rust มาสู่ Chromium คือการจัดเตรียมวิธีที่ง่ายกว่า (ไม่มี IPC) และปลอดภัยกว่า (โดยทั่วไปแล้วจะใช้ C++ ที่ซับซ้อนน้อยกว่า ไม่มีข้อบกพร่องด้านความปลอดภัยของหน่วยความจำแบบแซนด์บ็อกซ์) เพื่อให้เป็นไปตามกฎสองข้อ เพื่อเร่งการพัฒนา (เขียนโค้ดน้อยลง , เอกสารการออกแบบน้อยลง, แพตช์ความปลอดภัยน้อยลง) และเพื่อปรับปรุงความปลอดภัย (บรรทัดของโค้ดที่มากขึ้นโดยไม่มีบั๊กด้านความปลอดภัยในหน่วยความจำ, ความหนาแน่นของโค้ดบั๊กที่น้อยลง) ของ Chrome นอกจากนี้ บริษัทยังมั่นใจว่าเราสามารถใช้ไลบรารี Rust ของบุคคลที่สามเพื่อบรรลุเป้าหมายนี้ได้
ในช่วงต้นปี 2022 ทีม Chromium ได้ทดลองใช้ Rust แล้วและหลังจากนั้นไม่กี่เดือนก็สรุปได้ว่าในเบื้องต้นภาษา Rust ยังไม่เหมาะสมที่จะใช้แทน C++ สำหรับงานที่ซับซ้อนซึ่งมีโค้ดแบบอะซิงโครนัสที่ต้องทำงานควบคู่ไปกับโค้ดที่มีอยู่เดิม
ดังนั้นการใช้งาน Rust ใน Chromium ที่วางแผนไว้จึงถูกจำกัดอย่างชัดเจนในตอนแรกในด้านหนึ่ง การทำงานร่วมกันจะเกิดขึ้นได้เพียงทิศทางเดียว คือจาก C++ ไปยัง Rust ในอีกด้านหนึ่ง ในช่วงเริ่มต้นจะอนุญาตให้ใช้เฉพาะไลบรารีของบุคคลที่สามเท่านั้น ไลบรารีเหล่านี้ทำงานเป็นส่วนประกอบแบบสแตนด์อโลนและเป็นอิสระจากส่วนประกอบภายในของ Chromium ไลบรารีเหล่านั้นต้องมี API ที่เรียบง่ายสำหรับงานเฉพาะของตน จากนั้นทีม Chromium จะทำการตรวจสอบไลบรารีเหล่านั้น
สุดท้ายนี้ ควรกล่าวถึงว่าการเพิ่มการสนับสนุนใน Chromium จะทำให้สามารถพอร์ตโค้ด Rust ไปยังไบนารีของ Chrome ได้ตั้งแต่ปีหน้าเป็นต้นไป การตัดสินใจนี้มีแรงผลักดันหลักมาจากข้อกังวลด้านความปลอดภัย: Rust มีความปลอดภัยมากกว่า C++ เมื่อเขียนลงหน่วยความจำ และห้ามพฤติกรรมที่อาจเป็นอันตราย เช่น การอ่านตัวแปรที่ยังไม่ได้เขียน การเข้าถึงค่าเกินขอบเขตที่กำหนดโดยอาร์เรย์ การเข้าถึงพอยเตอร์ที่เป็นค่าว่างหรือไม่ถูกต้อง และการใช้อิเทอเรเตอร์ที่ไม่ถูกต้อง
หากคุณสนใจเรียนรู้เพิ่มเติม สามารถดูรายละเอียดได้ที่ลิงก์ต่อไปนี้