9 คะแนน โดย xguru 2022-05-26 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Uber ใช้ "zig cc" (bazel-zig-cc) เพื่อคอมไพล์โค้ด C/C++
    → ตอนนี้ใช้อยู่เฉพาะใน Go Monorepo เท่านั้น และมีแผนจะขยายไปยังภาษาอื่นที่ใช้ C/C++ toolchain อยู่
    → เพราะสามารถเลือกเวอร์ชันของ glibc ได้ และทำ cross-compile สำหรับ macOS ได้
  • อย่างไรก็ตาม ไม่มีแผนจะใช้ภาษา Zig เอง กล่าวคือใช้เพียง C toolchain ของ Zig เท่านั้น
  • Uber ได้บริจาคให้กับมูลนิธิ Zig (ZSF) และทำสัญญาให้จัดลำดับความสำคัญในการแก้บั๊ก ($52800)
  • จุดเด่นของ zig cc
    • คอมไพเลอร์ C/C++ แบบปิดครบถ้วนในตัว ขนาดเพียง 40MB ซึ่งมีขนาดแค่ 1/10 ของมาตรฐาน CLang
    • สามารถลิงก์ด้วยเวอร์ชันของ glibc ที่ระบุผ่านอาร์กิวเมนต์บรรทัดคำสั่งได้
    • Host และ Target ถูกแยกออกจากกัน ไม่ว่าโฮสต์จะเป็นอะไร การตั้งค่าของ linux-aarch64 และ darwin-x86_64 ก็เหมือนกัน
    • การลิงก์กับ musl ก็เหมือนกับการเลือก libc อีกเวอร์ชันหนึ่ง -target x86_64-linux-musl