กูเกิลประกาศความร่วมมือกับ ISRG องค์กรแม่ของ Let's Encrypt เตรียมช่วยเหลือโครงการโอเพนซอร์สสำคัญให้อิมพลีเมนต์ใหม่ด้วยภาษา Rust เพื่อแก้ปัญหาช่องโหว่หน่วยความจำ
เมื่อต้นเดือนที่ผ่านมากูเกิลประกาศความร่วมมือรูปแบบนี้โดยเข้าไปสนับสนุนโครงการ mod_tls ของ Apache การประกาศขยายความร่วมมือครั้งนี้ทาง ISRG จะเข้าไปสนับสนุนให้โครงการต่างๆ ให้ค่อยๆ อิมพลีเมนต์เครื่องมือและไลบรารีส่วนต่างๆ เสียใหม่
กูเกิลมีประวัติช่วยเหลือโครงการโอเพนซอร์สแก้ปัญหาช่องโหว่จากบั๊กหน่วยความจำมานาน เช่น โครงการ OSS-Fuzz ชุดทดสอบหน่วยความจำอัตโนมัติ ที่เปิดตัวตั้งแต่ปี 2016 และจนตอนนี้พบช่องโหว่ไปแล้ว 5,500 รายการจาก 375 โครงการ หากดูเฉพาะช่องโหว่ความปลอดภัยของโครงการ curl จำนวน 95 รายการ จะพบว่าช่องโหว่กว่าครึ่งจะหายไปหากอิมพลีเมนต์ด้วยภาษาที่ปลอดภัยจากช่องโหว่หน่วยความจำ
ที่มา - Google Security Blog
Comments
แล้วภาษาโกของท่านหละ
เข้าใจว่า go มันเป็นระดับสูงกว่า Rust นะครับ
โกเคยมีบัค memory ที่ตัวภาษา
bug นี้หมายถึงว่า ไม่ใช้ user error ใช่ป่าวครับ เช่นเปิดแล้วลืมปิด เป็นที่ตัวภษาจริงๆ เลย
ภาษา Go เป็นภาษาที่มี garbage collector ทำให้ไม่เหมาะกับบางงาน โดยเฉพาะกลุ่มที่ต้องติดต่อกับฮาร์ดแวร์โดยตรง
เอาจริงๆ แม้แต่เว็บเองภาษา Go ก็เคยต้องปรับปรุงการทำงาน garbage collector ไปแล้วหลายรอบเพื่อให้แอปไม่กระตุกในจังหวะที่มันกำลังทำงาน
แต่โดยทั่วไปเราไม่ต้องเลือกภาษาเดียวทุกงานครับ ภาษาหนึ่งก็มีที่มีทาง มีความนิยมในการใช้งานของมัน
lewcpe.com, @wasonliw
เคยไป skim doc ของ GO มาเหมือนจะสร้างมาเพื่องาน concurrent/parallel ระดับ CPU ครับ
ส่วน Rust ก็ใช้แทน C ที่เกิดช่องโหว่เรื่องหน่วยความจำได้ง่าย
คนละจุดประสงค์กัน
ถ้าเป็นวิธีคิดของกูเกิลจริงๆ คือไม่แคร์ครับ มีหลายทีมอยากทำอะไรก็ทำไป ลองๆ ดู ซ้อนกันก็ไม่เป็นไร เราถึงมี Angular, Flutter มาชนกัน หรือมีแอพแชท 5 ตัวพร้อมกันอะไรแบบนี้ครับ (ซึ่งก็ไม่ใช้เรื่องดีเสมอไป)
ที่พูดกันว่า C เป็นภาษาที่ดีที่สุดนี่ยังเป็นจริงมั้ยครับ
ผมเขียน C ไม่เคยได้ยินนะครับ
lewcpe.com, @wasonliw
น่าจะเป็นความเห็นมากกว่า fact ครับ
คิดว่าไม่น่าใช่ครับ เพราะเหมือนเคยได้ยินว่า C++ หรือ C# นี่แหละ ทำมาแก้ pain point บางอย่างของ C เช่น เรื่องการเขียนเป็น OOP
C ที่ผมพูดถึงคงรวม C++ ด้วยครับ แต่ไม่ใช่ Visual
ถ้าหมายถึง Linus ล่ะก็ไม่ใช่ครับ หมอนี่ด่า C++ อยู่เนือง ๆ
ทุกภาษา มันมีดี มีแย่ในข้อต่างๆ ที่ต่างกันไป
ถ้าจะบอกว่า C ดีกว่า ก็ต้องมาดู ว่าดีกว่าข้อไหน
บางที C อาจจะมีพลังที่สูงมาก
แต่ด้วยการที่เขียนยากกว่า หรือเปิดโอกาสให้เกิดบั๊กมากกว่า
นั่นก็เป็นข้อเสีย เพราะเราไม่สามารถไปบังคับให้คนทั้งโลกจะต้องเก่งเท่ากันทุกคน
ผมชอบแนวคิดเรื่องที่ไม่มี GC แล้วก็พวก owenership กับ borrowing นะ กำลังศึกษาอยู้เหมือนกัน
ผมเห็นคนที่ใช้ Go บอก rust ช้ามากกกก compile นาน ผมก็สงสัยนะว่ามันเร็วช้า ต่างกันขนาดจะทนไม่ได้เลยรึ
ปล...ผมเคยใช้ EJB กับ GWT ของ google อยู่ อันนั้นก็นานจิงๆ
ถ้าคอมไพล์ช้านี่คือจริงนะครับ แนวคิดเขาต่างออกไป
lewcpe.com, @wasonliw
Rust ทำ static linking หรือเปล่าครับ (ผมยังไม่เคยเขียน Rust เลยไม่ทราบครับ)
ขึ้นอยู่กับ compilation target ครับ เลือกได้แต่ default เป็น dynamic linking
Go lang compile เร็วอยู่แล้วครับจุดขายเค้าเลย ภาษามันไม่ได้ซับซ้อนมาก compiler เลยไม่ต้องทำงานหนัก
Rust ถ้าเคย compile ไปแล้วรอบนึง มันก็จะมี cache เป็น incremental build เหมือน C/C++ แหละครับ ไม่ได้ช้าขนาดนั้น
เป็น Rust ก็ดีนะ
บางท่ีก็ปวดหัวกะ C++ มาก จะโหลดมา Build เองก็เจอคอนฟิกยากๆ