โครงการ Chromium จะรองรับการใช้ไลบรารี่ของ Rust

โครเมียม

โครงการ Chromium จะสนับสนุนการใช้ไลบรารี C++ Rust ของบุคคลที่สามใน Chromium

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++ และห้ามพฤติกรรมที่อาจเป็นอันตราย เช่น การอ่านตัวแปรที่ไม่ได้เขียน การเข้าถึงเกินขีดจำกัดที่กำหนดโดยอาร์เรย์ การยกเลิกการอ้างอิงพอยน์เตอร์ที่เป็นโมฆะหรือไม่ถูกต้อง การใช้ตัววนซ้ำที่ถูกแทนที่ .

หากท่านสนใจทราบข้อมูลเพิ่มเติม สามารถปรึกษารายละเอียด ในลิงค์ต่อไปนี้.


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา