ระบบสร้าง Meson รุ่น 1.0

ระบบบิลด์ Meson 1.0.0 เปิดตัวแล้ว ซึ่งใช้ในการสร้างโปรเจ็กต์ต่างๆ เช่น X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME และ GTK รหัสของ Meson เขียนด้วยภาษา Python และได้รับอนุญาตภายใต้ลิขสิทธิ์ Apache 2.0

เป้าหมายหลักของการพัฒนา Meson คือเพื่อให้กระบวนการประกอบมีความเร็วสูงรวมกับความสะดวกสบายและใช้งานง่าย แทนที่จะใช้ยูทิลิตี้ make ชุดเครื่องมือ Ninja จะถูกใช้เป็นค่าเริ่มต้นเมื่อสร้าง แต่สามารถใช้แบ็กเอนด์อื่นๆ เช่น xcode และ VisualStudio ได้เช่นกัน ระบบมีตัวจัดการการพึ่งพาหลายแพลตฟอร์มในตัวที่ช่วยให้คุณใช้ Meson เพื่อสร้างแพ็คเกจสำหรับการแจกจ่าย กฎการประกอบจะถูกระบุในภาษาเฉพาะโดเมนที่เรียบง่าย ผู้ใช้สามารถอ่านและเข้าใจได้สูง (ตามที่ผู้เขียนตั้งใจไว้ นักพัฒนาควรใช้เวลาขั้นต่ำในการเขียนกฎ)

รองรับการคอมไพล์ข้ามและสร้างบน Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS และ Windows โดยใช้ GCC, Clang, Visual Studio และคอมไพเลอร์อื่นๆ เป็นไปได้ที่จะสร้างโปรเจ็กต์ในภาษาการเขียนโปรแกรมต่างๆ รวมถึง C, C++, Fortran, Java และ Rust รองรับโหมดการสร้างส่วนเพิ่ม ซึ่งมีเพียงส่วนประกอบที่เกี่ยวข้องโดยตรงกับการเปลี่ยนแปลงที่เกิดขึ้นตั้งแต่การสร้างครั้งล่าสุดเท่านั้นที่ถูกสร้างขึ้นใหม่ Meson สามารถใช้เพื่อสร้างบิลด์ที่ทำซ้ำได้ ซึ่งการรันบิลด์ในสภาพแวดล้อมที่แตกต่างกันส่งผลให้มีการสร้างไฟล์ปฏิบัติการที่เหมือนกันโดยสิ้นเชิง

นวัตกรรมหลักของ Meson 1.0:

  • โมดูลสำหรับการสร้างโครงการในภาษา Rust ได้รับการประกาศว่ามีเสถียรภาพ โมดูลนี้ใช้ในโครงการ Mesa เพื่อสร้างส่วนประกอบที่เขียนด้วยภาษา Rust
  • ตัวเลือกคำนำหน้าซึ่งได้รับการสนับสนุนในฟังก์ชันตรวจสอบคอมไพลเลอร์ส่วนใหญ่ ให้ความสามารถในการจัดการอาร์เรย์นอกเหนือจากสตริง ตัวอย่างเช่น ตอนนี้คุณสามารถระบุ: cc.check_header('GL/wglew.h', prefix : ['#include ', '#รวม '])
  • เพิ่มอาร์กิวเมนต์ใหม่ "--workdir" เพื่ออนุญาตให้แทนที่ไดเร็กทอรีการทำงาน ตัวอย่างเช่น หากต้องการใช้ไดเร็กทอรีปัจจุบันแทนไดเร็กทอรีการทำงาน คุณสามารถรัน: meson devenv -C builddir --workdir
  • โอเปอเรเตอร์ใหม่ "in" และ "not in" ได้รับการเสนอเพื่อพิจารณาการเกิดขึ้นของสตริงย่อยในสตริง คล้ายกับการตรวจสอบที่มีอยู่ก่อนหน้านี้สำหรับการเกิดขึ้นขององค์ประกอบในอาร์เรย์หรือพจนานุกรม ตัวอย่างเช่น: fs = import('fs') if 'something' in fs.read('somefile') # True endif
  • เพิ่มตัวเลือก "warning-level=everything" ซึ่งจะเปิดเอาต์พุตของคำเตือนคอมไพเลอร์ที่มีอยู่ทั้งหมด (ใน clang และ MSVC จะใช้ -Weverything และ /Wall และในคำเตือน GCC จะรวมแยกต่างหาก ซึ่งสอดคล้องกับ -Weverything โดยประมาณ โหมดเสียงดังกราว)
  • เมธอดrust.bindgenใช้ความสามารถในการจัดการอาร์กิวเมนต์ "การพึ่งพา" เพื่อส่งผ่านพาธไปยังการขึ้นต่อกันที่คอมไพเลอร์ควรประมวลผล
  • ฟังก์ชัน java.generate_native_headers เลิกใช้แล้วและเปลี่ยนชื่อเป็น java.native_headers เพื่อให้สอดคล้องกับรูปแบบการตั้งชื่อฟังก์ชันทั่วไปของ Meson

ที่มา: opennet.ru

เพิ่มความคิดเห็น