อ่าน 4 นาที
บาเซล (ซอฟต์แวร์)
Bazel ( / ˈ b eɪ z əl / ) เป็น เครื่องมือ ซอฟต์แวร์โอเพนซอร์สฟรีที่ใช้สำหรับการสร้างและทดสอบซอฟต์แวร์โดยอัตโนมัติ
บาเซล (ซอฟต์แวร์)
| บาเซล | |
|---|---|
| นักพัฒนา | |
| ปล่อย | มีนาคม 2558 |
| เวอร์ชันเสถียร | 9.1.1 [ 1 ] |
| เขียนเป็น | จาวา[ 2 ] |
| ระบบปฏิบัติการ | ข้ามแพลตฟอร์ม |
| ใบอนุญาต | ใบอนุญาต Apache 2.0 |
| เว็บไซต์ | bazel |
| ที่เก็บข้อมูล |
|
Bazel ( / ˈ b eɪ 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 ครั้งแรก โลโก้จะเป็นตัวอักษร "b" สีเขียวที่ออกแบบเป็นก้านของต้นโหระพาที่มีใบสองใบ เมื่อวันที่ 5 กรกฎาคม 2560 Bazel Blog ได้ประกาศโลโก้ใหม่[ 20 ]ซึ่งประกอบด้วยบล็อกสีเขียวสามบล็อกที่จัดเรียงเป็นรูปหัวใจ
การรับเลี้ยงบุตรบุญธรรม
Bazel เป็นที่นิยมใช้กัน ทั่วไปในบริษัทต่างๆ[ 21 ]ผู้ใช้งานที่โดดเด่นบางราย ได้แก่BMW [ 22 ] , Google , SpaceX , [ 23 ] Stripe , [ 24 ] Tinder , [ 25 ]และUber [ 26 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ บาเซล (ซอฟต์แวร์)
Bazel ( / ˈ b eɪ z əl / ) เป็น เครื่องมือ ซอฟต์แวร์โอเพนซอร์สฟรีที่ใช้สำหรับการสร้างและทดสอบซอฟต์แวร์โดยอัตโนมัติ
ประวัติศาสตร์
ในปี พ.ศ. 2549 [ 8 ] Google เริ่มพัฒนาเครื่องมือสร้างที่เรียกว่าBlaze [ 9 ] แรง จูงใจคือการมีระบบสร้างที่ให้ทั้งความเร็วและความถูกต้องใน monorepo ขนาด ใหญ่ [ 10 ]
เหตุผล
Bazel ได้รับการอธิบายว่าเป็น "หนึ่งในระบบสร้างบนคลาวด์แบบเปิดแรกๆ" มันสามารถบันทึกประวัติคำสั่งที่ดำเนินการก่อนหน้านี้และแบ่งปันผลลัพธ์ระหว่างผู้ใช้หลายคนได้ [ 12 ] ในการทำเช่นนั้น Bazel ต้องการให้ระบุอินพุตและเอาต์พุตของเป้าหมายการสร้างอย่างครบถ้วน
ภาษาสตาร์ลาร์ค
Bazel สามารถขยายได้ด้วยภาษาการเขียนโปรแกรม Starlark [ 13 ] Starlark เป็นภาษาฝังตัวที่มีไวยากรณ์เป็นส่วนย่อยของ ไวยากรณ์ Python อย่างไรก็ตาม ไม่ได้นำคุณสมบัติทางภาษาของ Python มาใช้หลายอย่าง เช่น ความสามารถในการเข้าถึงการอ่าน/เขียนไฟล์...