Google เปิดตัว ข่าวเมื่อเร็วๆ นี้ว่า ทีมงานเบื้องหลังโครงการ Chromium กำลังดำเนินการเพิ่ม Rust toolchain ตั้งแต่การผลิตจนถึงระบบการสร้างของคุณ
สำหรับใครที่ยังไม่รู้จัก 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 แล้ว และหลังจากนั้นไม่กี่เดือนก็ได้ข้อสรุป ภาษานั้นไม่เหมาะที่จะใช้แทนที่ C++ สำหรับงานที่ซับซ้อนด้วยโค้ดแบบอะซิงโครนัสที่ต้องทำงานควบคู่กับโค้ดที่มีอยู่
ดังนั้น การใช้ Rust ใน Chromium ที่วางแผนไว้มีข้อจำกัดอย่างชัดเจนในตอนแรก. ประการหนึ่ง การทำงานร่วมกันจะไปได้ทางเดียวเท่านั้น: จาก C++ เป็น Rust ในทางกลับกัน ในตอนแรกอนุญาตให้ใช้ไลบรารีของบุคคลที่สามเท่านั้น สิ่งเหล่านี้ทำงานเป็นส่วนประกอบแบบสแตนด์อโลนและเป็นอิสระจากส่วนประกอบภายในของ Chromium ห้องสมุดควรมี API อย่างง่ายสำหรับงานเฉพาะของคุณ จากนั้นทีม Chromium จะตรวจสอบไลบรารี
ในที่สุดมันก็คุ้มค่าที่จะกล่าวถึงเช่นนี้ การเพิ่มการรองรับใน Chromium จะทำให้โค้ด Rust สามารถพอร์ตไปยังไบนารีของ Chrome ได้ เริ่มปีหน้า การตัดสินใจส่วนใหญ่ดูที่ปัญหาด้านความปลอดภัย: Rust ให้ความปลอดภัยมากกว่าเมื่อเขียนไปยังหน่วยความจำมากกว่า C++ และห้ามพฤติกรรมที่อาจเป็นอันตราย เช่น การอ่านตัวแปรที่ไม่ได้เขียน การเข้าถึงเกินขีดจำกัดที่กำหนดโดยอาร์เรย์ การยกเลิกการอ้างอิงพอยน์เตอร์ที่เป็นโมฆะหรือไม่ถูกต้อง การใช้ตัววนซ้ำที่ถูกแทนที่ .
หากท่านสนใจทราบข้อมูลเพิ่มเติม สามารถปรึกษารายละเอียด ในลิงค์ต่อไปนี้.