2 คะแนน โดย GN⁺ 2023-07-01 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • มีข้อเสนอให้ลบไลบรารี LLVM, Clang และ LLD ออกจากโปรเจ็กต์ Zig
  • Zig วางแผนจะมี optimization pass ของตัวเอง และดึงดูดโปรเจ็กต์วิจัยรวมถึงการมีส่วนร่วมจากผู้ผลิตชิป
  • ลบความสามารถในการคอมไพล์ C++, Objective-C และ Objective-C++ ออกจาก Zig
  • machine code ที่สร้างจาก Zig อาจมีความสามารถในการแข่งขันลดลงในอนาคตอันใกล้ แต่ในระยะยาวอาจตามทันหรือแซง LLVM และ GCC ได้
  • ข้อดีของการลบ LLVM ได้แก่ ความเป็นเจ้าของบั๊กที่ชัดเจนขึ้น การ build และ bootstrapping ที่ง่ายขึ้น ความเร็วคอมไพล์ที่เร็วขึ้น และความสามารถในการทำ custom optimization pass
  • มีการแสดงความกังวลต่อผลกระทบต่อโปรเจ็กต์ที่พึ่งพาการคอมไพล์ C++ และต่อการลดลงของอัตราการยอมรับ Zig
  • การลบ dependency ต่อ DirectXShaderCompiler และคอมไพเลอร์ shader ของ Apple Metal อาจทำได้ยาก
  • ในระยะยาวมีการผลักดันให้เปลี่ยนไปสู่โซลูชันที่เป็น Zig ล้วน
  • ผู้ใช้บางส่วนกังวลเกี่ยวกับผลกระทบต่อประสบการณ์การพัฒนาเกม และการใช้ไลบรารีกับเครื่องมือ C++ ที่มีอยู่เดิม
  • ความเรียบง่ายและความสามารถข้ามแพลตฟอร์มของ Zig ได้รับคำชม
  • มีข้อเสนอให้คง backend ของ LLVM ไว้เป็นค่าเริ่มต้น หรือคงการรองรับตระกูลภาษา C เอาไว้พร้อมกับลบการลดระดับลงสู่ LLVM IR
  • ผู้ใช้เน้นย้ำความสำคัญของความสามารถของ Zig ในการคอมไพล์โค้ด C/C++ ได้อย่างราบรื่นและสร้างไบนารีที่มีประสิทธิภาพดี
  • มีการพูดคุยถึงการสูญเสียไลบรารีที่มีอยู่เดิมที่อาจเกิดขึ้น และความจำเป็นของทางเลือกสำหรับการคอมไพล์แบบ JIT
  • ข้อเสนอนี้ถูกมองว่าให้ผลลบล้วนกับผู้ใช้ และอาจเป็นเหมือนการล่อให้ใช้งาน
  • มีการเน้นย้ำความสำคัญของการคงความสามารถของ Zig สำหรับ cross-compilation และการผสานรวมกับไลบรารีเดิม
  • มีข้อเสนอให้ลบ dependency ต่อ LLVM และ LLD ขณะเดียวกันคง clang ไว้เป็น dependency แบบเลือกได้
  • มีความกังวลเกี่ยวกับผลกระทบต่อประสิทธิภาพและความเป็นไปได้จริงของการแทนที่ LLVM
  • มีการเน้นย้ำความสำคัญของการรองรับการคอมไพล์ C++ สำหรับการพัฒนาเกมและโปรเจ็กต์อื่น ๆ
  • มีการกล่าวถึงความเป็นไปได้ที่ Zig จะสามารถแทนที่ความสามารถของ LLVM ได้เมื่อเวลาผ่านไป
  • มีการพูดคุยถึงความจำเป็นของการรับประกันประสิทธิภาพในระดับที่สมเหตุสมผล และการสูญเสียโอกาสในการ optimization ที่อาจเกิดขึ้น
  • มีการกล่าวถึงผลกระทบต่อไลบรารีและเครื่องมือบางตัว เช่น ImGui และ Tracy
  • ข้อเสนอให้ลบ LLVM ออกจาก toolchain ของ Zig อาจทำให้ชุมชน Zig แตกออกเป็นฝักฝ่าย
  • ผู้ใช้บางรายอาจเลือกใช้ Zig เวอร์ชันเก่าเพื่อหลีกเลี่ยงการย้ายระบบ
  • การคง LLVM ไว้มีทั้งความท้าทายและข้อจำกัด
  • ระบบปลั๊กอินสำหรับคอมไพเลอร์ Zig อาจเป็นทางออกระยะยาว
  • การคอมไพล์โปรแกรม Zig ไปยังแพลตฟอร์มและภาษาอื่นยังอาจได้รับการรองรับต่อไป
  • zig cc ซึ่งเป็นฟีเจอร์เฉพาะของ Zig อาจยังพัฒนาต่อไปในฐานะโปรเจ็กต์แยก
  • ยังไม่มีการตัดสินใจขั้นสุดท้ายเกี่ยวกับข้อเสนอนี้
  • การถกเถียงเรื่องการลบ LLVM กำลังแพร่กระจายบนโซเชียลมีเดีย
  • zig cc ได้รับการชื่นชมอย่างมากจากชุมชน และมีข้อได้เปรียบเมื่อเทียบกับ toolchain อื่น
  • สามารถคง zig cc ไว้ได้แม้ไม่มี Clang
  • โปรเจ็กต์แยกต่างหากที่ bundle Clang อาจรองรับ use case เดิมของผู้ใช้ที่ build โค้ด C++ ด้วย Zig ได้
  • การแยกเครื่องมือออกเป็นโปรเจ็กต์ต่างหาก หรือการจ้างผู้ดูแลเพื่อคง zig cc ไว้ เป็นแนวทางแก้ปัญหาที่เป็นไปได้
  • อาจมีการพัฒนาเครื่องมือย้ายระบบสำหรับ codebase ที่พึ่งพาฟีเจอร์ที่จะถูกลบ
  • เมื่อไม่นานมานี้ วิศวกรซอฟต์แวร์รายหนึ่งได้ย้ายโปรเจ็กต์ไปยัง GHC เวอร์ชันใหม่ที่ใช้ native code generator เพื่อให้คอมไพล์ได้เร็วขึ้น
  • โปรเจ็กต์ Silk.NET ใช้ zig cc และ zig c++ เพื่อมอบสภาพแวดล้อมการ build ที่ทำซ้ำได้สำหรับไลบรารีเนทีฟ ทำให้ cross-compilation และการตั้งค่าในเครื่องทำได้ง่าย
  • วิศวกรซอฟต์แวร์ใช้ zig cc และ zig c++ ในโปรเจ็กต์ส่วนตัวเพื่อให้คอมไพล์ข้ามแพลตฟอร์มของไลบรารีได้ง่าย และใช้การตั้งค่า build.zig เพียงชุดเดียว
  • คอมไพเลอร์ Intel C/C++ ได้เสร็จสิ้นการนำ LLVM มาใช้แล้ว โดยให้เวลาในการคอมไพล์ที่เร็วขึ้น optimization ที่ดีขึ้น และการรองรับการ offload ไปยัง GPU และ FPGA
  • ข้อเสนอให้ย้ายส่วน llvm ของ Zig ไปเป็นโปรเจ็กต์ที่ชุมชนดูแลแยกต่างหากได้รับเสียงตอบรับทั้งบวกและลบ
  • ผู้ใช้บางรายแสดงความกังวลต่อการลบการรองรับ C++ ออกจาก Zig ขณะที่อีกฝ่ายมองว่าค่าใช้จ่ายในการรองรับสูงและไม่ได้อยู่ในงบประมาณ
  • ทีม Zig เสนอว่าผู้ที่เห็นว่าการรองรับ C++ สำคัญควรพิจารณาสนับสนุนฟีเจอร์นี้ด้วยเงินทุนหรือเวลาของตน
  • ผู้ใช้บางรายมองว่าการลบ LLVM อาจให้ประโยชน์ระยะยาว แต่ยังกังวลต่อการลบการรองรับ C++ และ Obj-C(++) ออกทั้งหมด
  • มีข้อเสนอให้ย่อคอมไพเลอร์ Zig ให้เป็นไบนารีที่เล็กและเบาลง และเพิ่มความสามารถของ LLVM ในรูปแบบส่วนขยาย

2 ความคิดเห็น

 
alstjr7375 2023-07-02

จะสามารถทำการปรับแต่งประสิทธิภาพหรือรองรับแพลตฟอร์มต่าง ๆ ได้เท่ากับ LLVM ไหม..

 
GN⁺ 2023-07-01
ความคิดเห็นบน Hacker News
  • ทีมพัฒนา Zig กำลังพิจารณาการถอดการพึ่งพา LLVM ออก
  • บางคนกังวลว่าการเปลี่ยนผ่านจาก LLVM แบบนี้จะทำให้ทีม Zig เสียโฟกัสจากตัว Zig เอง
  • คนอื่น ๆ เชื่อว่าการเขียนบางส่วนของ LLVM ขึ้นใหม่ใน Zig อาจเป็นโปรเจกต์ที่เท่มากและทะเยอทะยาน
  • หาก Zig ไม่ต้องพึ่งพา LLVM อีกต่อไป ก็จะมีความกังวลเกี่ยวกับการสร้างโค้ดและการบูตสแตรป
  • บางคนรู้สึกว่าการถอด LLVM ออกเป็นการตัดสินใจที่รีบเกินไป และอาจจำกัดการรองรับแพลตฟอร์มของ Zig
  • ผู้แสดงความคิดเห็นรายหนึ่งวิจารณ์ว่าข้อเสนอนี้ประเมินปริมาณงานต่ำเกินไปและมองข้ามงานที่ทำบน LLVM
  • สิ่งที่ต้องแลกกับการถอด LLVM ออก ได้แก่ การสูญเสียความเข้ากันได้กับ C++ และความเป็นไปได้ที่ประสิทธิภาพจะลดลง
  • ผู้ใช้บางส่วนกังวลว่าการยกเลิกการรองรับสถาปัตยกรรมบางประเภทจะกระทบต่อความนิยมของ Zig
  • ผู้แสดงความคิดเห็นรายหนึ่งระบุว่าความนิยมของ Zig ส่วนหนึ่งมาจากความเข้ากันได้กับ C/C++ และการติดตั้งที่ง่าย
  • มีการเสนอให้ Zig ใช้ไบต์โค้ดแบบกำหนดเองสำหรับดีบักบิลด์ และยังคงพึ่งพา LLVM สำหรับรีลีสบิลด์
  • ภาษา D มีคอมไพเลอร์หลายตัวที่มีแบ็กเอนด์หลากหลาย และผู้ใช้ก็ชื่นชมตัวเลือกนี้
  • ทูลเชนของ Zig ได้รับการชื่นชมอย่างมาก และการถอด Zig cc กับ Zig c++ ออกอาจทำให้ผู้ใช้ภาษาลังเล
  • ผู้แสดงความคิดเห็นบางรายเชื่อว่าการตัดสินใจถอดฟีเจอร์ C++ ออกอาจเป็นอันตรายต่อความสำเร็จของ Zig ในอนาคต