เป้าหมายหลักของการพัฒนา Meson คือเพื่อให้กระบวนการประกอบมีความเร็วสูงรวมกับความสะดวกสบายและใช้งานง่าย แทนที่จะใช้ยูทิลิตี้ make บิลด์เริ่มต้นจะใช้ชุดเครื่องมือ
หลัก
- เพิ่มการสนับสนุนการทดลองสำหรับ Webassembly โดยใช้ Emscripten เป็นคอมไพเลอร์
- การรองรับแพลตฟอร์ม Illumos และ Solaris ได้รับการปรับปรุงอย่างมีนัยสำคัญและกลับสู่สภาพการทำงาน
- ตรวจสอบให้แน่ใจว่าสคริปต์การทำให้เป็นสากลตาม gettext ถูกละเว้นหากระบบไม่ได้ติดตั้งชุดเครื่องมือ gettext (ก่อนหน้านี้ ข้อผิดพลาดจะแสดงขึ้นเมื่อใช้โมดูล i18n บนระบบที่ไม่มี gettext)
- ปรับปรุงการรองรับไลบรารีแบบคงที่ ปัญหามากมายเมื่อใช้ไลบรารีแบบคงที่ที่ถอนการติดตั้งได้รับการแก้ไขแล้ว
- เพิ่มความสามารถในการใช้พจนานุกรมเพื่อกำหนดตัวแปรสภาพแวดล้อม เมื่อเรียกสภาพแวดล้อม () องค์ประกอบแรกสามารถระบุเป็นพจนานุกรมซึ่งมีการกำหนดตัวแปรสภาพแวดล้อมในรูปแบบคีย์/ค่าได้ ตัวแปรเหล่านี้จะถูกถ่ายโอนไปยัง environment_object เหมือนกับว่าถูกตั้งค่าแยกกันผ่านเมธอด set() ขณะนี้พจนานุกรมสามารถส่งผ่านไปยังฟังก์ชันต่างๆ ที่รองรับอาร์กิวเมนต์ "env" ได้แล้ว
- เพิ่มฟังก์ชัน "runtarget alias_target(target_name, dep1, ...)" ที่สร้างเป้าหมายบิลด์ระดับแรกใหม่ที่สามารถเรียกได้ด้วยแบ็กเอนด์บิลด์ที่เลือก (เช่น "ninja target_name") เป้าหมายการ build นี้ไม่ได้รันคำสั่งใดๆ แต่ทำให้แน่ใจว่าการขึ้นต่อกันทั้งหมดถูกสร้างขึ้น
- เปิดใช้งานการตั้งค่าอัตโนมัติของตัวแปรสภาพแวดล้อม PKG_CONFIG_SYSROOT_DIR ระหว่างการคอมไพล์ข้ามหากมีการตั้งค่า sys_root ในส่วน "[properties]"
- เพิ่มตัวเลือก "--gdb-path" เพื่อกำหนดเส้นทางไปยังดีบักเกอร์ GDB เมื่อระบุตัวเลือก "--gdb testname" เพื่อรัน GDB ด้วยสคริปต์ทดสอบที่ระบุ
- เพิ่มการตรวจจับอัตโนมัติของเป้าหมายการสร้าง clang-tidy เพื่อรัน linter นี้กับไฟล์ต้นฉบับทั้งหมด เป้าหมายจะถูกสร้างขึ้นหากมี clang-tidy อยู่ในระบบและไฟล์ ".clang-tidy" (หรือ "_clang-tidy") ถูกกำหนดไว้ในรูทโปรเจ็กต์
- เพิ่มการพึ่งพา ('บล็อก') สำหรับใช้ในส่วนขยายเสียงดังกราว
Blocks ; - มุมมองตัวเชื่อมโยงและคอมไพเลอร์จะถูกแยกออกจากกัน ทำให้สามารถใช้คอมไพเลอร์และตัวเชื่อมโยงที่แตกต่างกันได้
- เพิ่มเมธอด all_dependencies() ให้กับออบเจ็กต์ SourceSet นอกเหนือจากเมธอด all_sources()
- ใน run_project_tests.py ตัวเลือก “--only” ได้ถูกเพิ่มเพื่อทำการทดสอบแบบเลือก (เช่น “python run_project_tests.py —only fortran python3”);
- ขณะนี้ฟังก์ชัน find_program() มีความสามารถในการค้นหาเฉพาะเวอร์ชันที่ต้องการของโปรแกรมเท่านั้น (เวอร์ชันจะถูกกำหนดโดยการรันโปรแกรมด้วยตัวเลือก "-version")
- เพื่อควบคุมการส่งออกสัญลักษณ์ ตัวเลือก vs_module_defs ได้ถูกเพิ่มเข้าไปในฟังก์ชัน shared_module() ซึ่งคล้ายกับ shared_library();
- โมดูล kconfig ได้รับการขยายเพื่อรองรับ configuration_file() สำหรับการระบุไฟล์อินพุต
- เพิ่มความสามารถในการระบุไฟล์อินพุตหลายไฟล์สำหรับตัวจัดการ “command:” เพื่อ configuration_file();
- คำสั่ง “dist” สำหรับสร้างไฟล์เก็บถาวรถูกย้ายไปยังหมวดหมู่ของคำสั่งระดับแรก (ก่อนหน้านี้คำสั่งเชื่อมโยงกับนินจา) เพิ่มตัวเลือก "--formats" เพื่อกำหนดประเภทของไฟล์เก็บถาวรที่จะสร้าง (เช่น
"meson dist -formats=xztar,zip")
ที่มา: opennet.ru