กลับไปหน้าบทความ

อ่าน 4 นาที

บาเซล (ซอฟต์แวร์)

Bazel ( / ˈ b eɪ z əl / ) เป็น เครื่องมือ ซอฟต์แวร์โอเพนซอร์สฟรีที่ใช้สำหรับการสร้างและทดสอบซอฟต์แวร์โดยอัตโนมัติ

บาเซล (ซอฟต์แวร์)

บาเซล
นักพัฒนาGoogle
ปล่อยมีนาคม 2558 ( มีนาคม 2558 )
เวอร์ชันเสถียร
9.1.1 [ 1 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / 3 มิถุนายน 2026 ( 3 มิถุนายน 2569 )
เขียนเป็นจาวา[ 2 ]
ระบบปฏิบัติการข้ามแพลตฟอร์ม
ใบอนุญาตใบอนุญาต Apache 2.0
เว็บไซต์bazel .build แก้ไขข้อมูลนี้บนวิกิดาต้า
ที่เก็บข้อมูล
  • github .com /bazelbuild /bazel

Bazel ( / ˈ b z əl / [ 3 ] ) เป็น เครื่องมือ ซอฟต์แวร์โอเพนซอร์สฟรีที่ใช้สำหรับการสร้างและทดสอบซอฟต์แวร์โดยอัตโนมัติ[ 2 ]

เช่นเดียวกับเครื่องมือสร้างซอฟต์แวร์อย่างMake , Apache AntและApache Maven [ 2 ] [ 4 ] Bazelสร้างแอปพลิเคชันซอฟต์แวร์จากซอร์สโค้ดโดยใช้กฎ กฎและมาโครถูกสร้างขึ้นในภาษาStarlark [ 5 ]ซึ่งเป็นภาษาถิ่นของPython [ 4 ] มีกฎในตัวสำหรับการสร้างซอฟต์แวร์ที่เขียนด้วยJava , Kotlin , Scala , C , C++ , Go , Python , Rust , JavaScript , Objective-Cและสคริปต์bash [ 4 ] [ 6 ] Bazel สามารถสร้างแพ็กเกจแอปพลิเคชันซอฟต์แวร์ที่เหมาะสมสำหรับการปรับใช้สำหรับระบบปฏิบัติการAndroidและiOS [ 7 ]

ประวัติศาสตร์

ในปี พ.ศ. 2549 [ 8 ] Googleเริ่มพัฒนาเครื่องมือสร้างที่เรียกว่าBlaze [ 9 ] แรงจูงใจคือการมีระบบสร้างที่ให้ทั้งความเร็วและความถูกต้องในmonorepoขนาด ใหญ่ [ 10 ]

Bazel ถูกสร้างขึ้นเป็นพอร์ตโอเพนซอร์สของ Blaze โดยใช้ชื่อที่สลับตัวอักษร กัน [ 4 ] Bazel เปิดตัวครั้งแรกในเดือนมีนาคม 2015 และเข้าสู่เวอร์ชันเบต้าในเดือนกันยายน 2015 [ 6 ]เวอร์ชัน 1.0 เปิดตัวในเดือนตุลาคม 2019 [ 11 ]

เหตุผล

Bazel ได้รับการอธิบายว่าเป็น "หนึ่งในระบบสร้างบนคลาวด์แบบเปิดแรกๆ" มันสามารถบันทึกประวัติคำสั่งที่ดำเนินการก่อนหน้านี้และแบ่งปันผลลัพธ์ระหว่างผู้ใช้หลายคนได้[ 12 ]ในการทำเช่นนั้น Bazel ต้องการให้ระบุอินพุตและเอาต์พุตของเป้าหมายการสร้างอย่างครบถ้วน

ภาษาสตาร์ลาร์ค

Bazel สามารถขยายได้ด้วยภาษาการเขียนโปรแกรม Starlark [ 13 ] Starlark เป็นภาษาฝังตัวที่มีไวยากรณ์เป็นส่วนย่อยของ ไวยากรณ์ Pythonอย่างไรก็ตาม ไม่ได้นำคุณสมบัติทางภาษาของ Python มาใช้หลายอย่าง เช่น ความสามารถในการเข้าถึงการอ่าน/เขียนไฟล์ เพื่อหลีกเลี่ยงส่วนขยายที่อาจก่อให้เกิดผลข้างเคียงหรือสร้างเอาต์พุตการสร้างที่ไม่เป็นที่รู้จักของระบบการสร้างเอง ผลข้างเคียงดังกล่าวอาจนำไปสู่การวิเคราะห์กราฟการพึ่งพาการสร้างที่ไม่ถูกต้องได้

ภาษา

Bazel ถูกออกแบบมาให้เป็นระบบสร้างซอฟต์แวร์แบบหลายภาษา สามารถสร้างซอฟต์แวร์ที่ผสมผสานภาษาโปรแกรมหลายภาษาไว้ในที่เก็บโค้ด เดียวกัน ได้

ระบบสร้างโปรแกรมที่ใช้กันทั่วไปหลายระบบได้รับการออกแบบโดยคำนึงถึงภาษาโปรแกรมเฉพาะเป็นหลัก ตัวอย่างของระบบดังกล่าว ได้แก่ Ant และ Maven สำหรับ Java, LeiningenสำหรับClojure , sbtสำหรับScalaเป็นต้น ในคลังเก็บโค้ดที่มีหลายภาษา การรวมระบบสร้างโปรแกรมที่แยกจากกันและการบรรลุความเร็วและความถูกต้องในการสร้างโปรแกรมตามที่กล่าวมาข้างต้นอาจเป็นเรื่องยากและมีปัญหา

ความสัมพันธ์กับเครื่องมือสร้างอื่นๆ

ระบบการสร้างที่คล้ายกับ Bazel มากที่สุดคือ Pants [ 14 ] Buck [ 15 ] Please [ 16 ]และระบบการสร้าง Brazil ที่ใช้ภายในAmazon [ 17 ] ทั้ง Pants และ Buck มีเป้าหมายการออกแบบทางเทคนิค ที่คล้ายคลึงกันกับ Bazel โดย Pants ได้รับแรงบันดาลใจจากระบบการสร้าง Blaze ที่ใช้ภายใน Google

Bazel, Pants, Buck และ Please ได้นำ Starlark มาใช้เป็นตัวแยกวิเคราะห์ไฟล์ BUILD ตามไวยากรณ์ไฟล์ BUILD ของมัน ระบบสร้างที่พัฒนาขึ้นอย่างอิสระซึ่งมีประโยชน์คล้ายกันในการวิเคราะห์กราฟการพึ่งพาที่มีประสิทธิภาพและการติดตามสิ่งประดิษฐ์การสร้างอัตโนมัติได้รับการนำไปใช้ในระบบสร้างเช่น tup [ 18 ]

แซนด์บ็อกซ์

Bazel ใช้แซนด์บ็อกซ์สำหรับขั้นตอนการคอมไพล์ เมื่อ Bazel ทำการคอมไพล์แยกต่างหาก มันจะสร้างไดเร็กทอรีใหม่และเติมด้วยลิงก์สัญลักษณ์ไปยังส่วนประกอบที่จำเป็นที่ระบุไว้สำหรับกฎนั้น สำหรับภาษาเช่น C หรือ C++ วิธีนี้ต้องการให้ผู้ใช้ระบุส่วนประกอบที่จำเป็นอย่างชัดเจน และป้องกันการรวมไฟล์ส่วนหัวที่มีชื่อคล้ายกันจากไดเร็กทอรีการรวมอื่นโดยไม่คาดคิด

แนวทางแซนด์บ็อกซ์นี้ทำให้เกิดปัญหาเกี่ยวกับเครื่องมือสร้างทั่วไป ส่งผลให้ต้องใช้วิธีแก้ปัญหาหลายวิธีเพื่อคอมไพล์โค้ดอย่างถูกต้องภายใต้สถาปัตยกรรมที่แตกต่างกัน ตัวอย่างเช่น เมื่อทำการคอมไพล์แยกกันสำหรับสถาปัตยกรรม Mac/Darwin คอมไพเลอร์จะเขียนเส้นทางอินพุตลงในสัญลักษณ์ SO และ OSO ใน ไบนารี Mach-Oซึ่งสามารถดูได้ด้วยคำสั่งเช่นnm -a mybinary | grep SOเส้นทางเหล่านี้จำเป็นสำหรับการค้นหาสัญลักษณ์ระหว่างการดีบัก ส่งผลให้การสร้างใน Bazel ต้องแก้ไขออบเจ็กต์ที่คอมไพล์แล้วในภายหลัง โดยพยายามแก้ไขปัญหาที่เกี่ยวข้องกับเส้นทางที่เกิดขึ้นจากการสร้างแซนด์บ็อกซ์โดยใช้แฟล็กเช่น-fdebug-prefix-mapและ โดยแฟล็ -oso_prefixกหลังมีให้ใช้งานในXcode 11.0การจัดการที่คล้ายกันต้องเกิดขึ้นในขั้นตอนการเชื่อมโยง โดยเขียนค่า rpath ใหม่ในไลบรารีออบเจ็กต์ที่ใช้ร่วมกันด้วยคำสั่งinstall_name_toolเช่น[ 19 ]

โลโก้ Bazel เก่า

นับตั้งแต่การเปิดตัว Bazel ครั้งแรก โลโก้จะเป็นตัวอักษร "b" สีเขียวที่ออกแบบเป็นก้านของต้นโหระพาที่มีใบสองใบ เมื่อวันที่ 5 กรกฎาคม 2560 Bazel Blog ได้ประกาศโลโก้ใหม่[ 20 ]ซึ่งประกอบด้วยบล็อกสีเขียวสามบล็อกที่จัดเรียงเป็นรูปหัวใจ

การรับเลี้ยงบุตรบุญธรรม

Bazel เป็นที่นิยมใช้กัน ทั่วไปในบริษัทต่างๆ[ 21 ]ผู้ใช้งานที่โดดเด่นบางราย ได้แก่BMW [ 22 ] , Google , SpaceX , [ 23 ] Stripe , [ 24 ] Tinder , [ 25 ]และUber [ 26 ]

ดูเพิ่มเติม

  • เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Bazel_(software)&oldid=1355337427 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ บาเซล (ซอฟต์แวร์)

Bazel ( / ˈ b eɪ z əl / ) เป็น เครื่องมือ ซอฟต์แวร์โอเพนซอร์สฟรีที่ใช้สำหรับการสร้างและทดสอบซอฟต์แวร์โดยอัตโนมัติ

ประวัติศาสตร์

ในปี พ.ศ. 2549 [ 8 ] Google เริ่มพัฒนาเครื่องมือสร้างที่เรียกว่าBlaze [ 9 ] แรง จูงใจคือการมีระบบสร้างที่ให้ทั้งความเร็วและความถูกต้องใน monorepo ขนาด ใหญ่ [ 10 ]

เหตุผล

Bazel ได้รับการอธิบายว่าเป็น "หนึ่งในระบบสร้างบนคลาวด์แบบเปิดแรกๆ" มันสามารถบันทึกประวัติคำสั่งที่ดำเนินการก่อนหน้านี้และแบ่งปันผลลัพธ์ระหว่างผู้ใช้หลายคนได้ [ 12 ] ในการทำเช่นนั้น Bazel ต้องการให้ระบุอินพุตและเอาต์พุตของเป้าหมายการสร้างอย่างครบถ้วน

ภาษาสตาร์ลาร์ค

Bazel สามารถขยายได้ด้วยภาษาการเขียนโปรแกรม Starlark [ 13 ] Starlark เป็นภาษาฝังตัวที่มีไวยากรณ์เป็นส่วนย่อยของ ไวยากรณ์ Python อย่างไรก็ตาม ไม่ได้นำคุณสมบัติทางภาษาของ Python มาใช้หลายอย่าง เช่น ความสามารถในการเข้าถึงการอ่าน/เขียนไฟล์...