میسن بلڈ سسٹم ریلیز 1.3

میسن 1.3.0 بلڈ سسٹم کی ریلیز شائع ہو چکی ہے، جو کہ X.Org Server، Mesa، Lighttpd، systemd، GStreamer، Wayland، GNOME اور GTK جیسے پروجیکٹس بنانے کے لیے استعمال ہوتی ہے۔ میسن کوڈ Python میں لکھا گیا ہے اور Apache 2.0 لائسنس کے تحت لائسنس یافتہ ہے۔

میسن کا کلیدی ترقیاتی ہدف سہولت اور استعمال میں آسانی کے ساتھ مل کر تیز رفتار اسمبلی کا عمل فراہم کرنا ہے۔ میک کے بجائے، بلڈ ڈیفالٹ کے طور پر ننجا ٹول کٹ کا استعمال کرتا ہے، لیکن دوسرے بیک اینڈ جیسے ایکس کوڈ اور ویژول اسٹوڈیو بھی استعمال کیے جاسکتے ہیں۔ سسٹم میں ایک بلٹ ان ملٹی پلیٹ فارم انحصار ہینڈلر ہے جو آپ کو تقسیم کے لیے پیکجز بنانے کے لیے میسن کو استعمال کرنے کی اجازت دیتا ہے۔ اسمبلی کے قواعد ایک آسان ڈومین کے لیے مخصوص زبان میں مرتب کیے گئے ہیں، وہ صارف کے لیے اچھی طرح سے پڑھنے اور قابل فہم ہیں (مصنفین کے خیال کے مطابق، ڈویلپر کو قواعد لکھنے میں کم از کم وقت گزارنا چاہیے)۔

لینکس، Illumos/Solaris، FreeBSD، NetBSD، DragonFly BSD، Haiku، macOS اور Windows پر GCC، Clang، Visual Studio اور دیگر کمپائلرز کا استعمال کرتے ہوئے کراس کمپائلنگ اور بلڈنگ سپورٹ کی جاتی ہے۔ مختلف پروگرامنگ زبانوں میں پروجیکٹ بنانا ممکن ہے، بشمول C، C++، Fortran، Java اور Rust۔ ایک انکریمنٹل بلڈ موڈ سپورٹ کیا جاتا ہے، جس میں صرف ان اجزاء کو دوبارہ بنایا جاتا ہے جو آخری تعمیر کے بعد کی گئی تبدیلیوں سے براہ راست تعلق رکھتے ہیں۔ میسن کو دوبارہ قابل تعمیر بنانے کے لیے استعمال کیا جا سکتا ہے، جہاں مختلف ماحول میں تعمیر کو چلانے کے نتیجے میں مکمل طور پر ایک جیسے ایگزیکیوٹیبل ہوتے ہیں۔

میسن 1.3 کی اہم اختراعات:

  • کمپائلر چیک کے طریقوں compiler.compiles()، compiler.links() اور compiler.run() میں آپشن "error: true" شامل کیا گیا، جو کمپائلر وارننگ کو غلطیوں کے طور پر مانتا ہے (یہ چیک کرنے کے لیے استعمال کیا جا سکتا ہے کہ کوڈ بغیر وارننگ کے بنایا گیا ہے۔ )۔
  • پری پروسیسر کے ذریعہ علامت کی تعریف کو چیک کرنے کے لئے has_define طریقہ شامل کیا گیا۔
  • میکرو_نام پیرامیٹر کو configure_file() فنکشن میں شامل کیا گیا ہے، جس میں "#include" ("Include guards") کے ذریعے دوہرے کنکشنز کے لیے میکرو تحفظ شامل کیا گیا ہے، جسے C زبان میں میکرو کے انداز میں ڈیزائن کیا گیا ہے (متحرک فائلوں کی تشکیل کو آسان بنانا) میکرو نام)۔
  • configure_file() - JSON ("output_format: json") میں ایک نیا آؤٹ پٹ فارمیٹ شامل کیا گیا ہے۔
  • c_std اور cpp_std پیرامیٹرز میں اقدار کی فہرستوں کو استعمال کرنے کی صلاحیت شامل کی گئی (مثال کے طور پر، "default_options: 'c_std=gnu11,c11′')۔
  • ان ماڈیولز میں جو CustomTarget فائلوں کو پروسیس کرنے کے لیے استعمال کرتے ہیں، ننجا یوٹیلیٹی کے ذریعے پیغامات کے آؤٹ پٹ کو حسب ضرورت بنانے کی صلاحیت شامل کی گئی ہے۔
  • build_target "jar" کو فرسودہ کر دیا گیا ہے اور اس کی بجائے "jar()" کال کی سفارش کی گئی ہے۔
  • 'env' پیرامیٹر کو generator.process() طریقہ کار میں شامل کیا گیا ہے تاکہ ماحولیاتی متغیر کو سیٹ کیا جا سکے جس کے ذریعے جنریٹر ان پٹ پر کارروائی کرے گا۔
  • ایگزیکیوٹیبلز کے ساتھ منسلک بلڈ ٹارگٹ کے ناموں کی وضاحت کرتے وقت، لاحقے جیسے "executable('foo', 'main.c', name_suffix: 'bar')" کو اسی ڈائرکٹری میں اضافی ایگزیکیوٹیبل بنانے کی اجازت ہے۔
  • "vs_module_defs" پیرامیٹر کو exectuable() فنکشن میں ایک def فائل استعمال کرنے کے لیے شامل کیا گیا جو shared_module() کو بھیجے گئے فنکشنز کی فہرست کی وضاحت کرتی ہے۔
  • فال بیک سب پروجیکٹ کے لیے ڈیفالٹ اختیارات سیٹ کرنے کے لیے find_program() فنکشن میں 'default_options' پیرامیٹر شامل کیا گیا۔
  • fs.relative_to() طریقہ شامل کیا گیا، جو پہلی دلیل کے لیے رشتہ دار راستہ واپس کرتا ہے، دوسری کے نسبت، اگر پہلا راستہ موجود ہے۔ مثال کے طور پر، "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')"۔
  • مندرجہ ذیل_symlinks پیرامیٹر کو install_data(), install_headers() اور install_subdir() فنکشنز میں شامل کر دیا گیا ہے؛ سیٹ ہونے پر، علامتی لنکس کی پیروی کی جاتی ہے۔
  • ایک "فل" پیرامیٹر کو int.to_string() طریقہ میں شامل کر دیا گیا ہے تاکہ سٹرنگ کو آگے والے زیرو سے بھرا جا سکے۔ مثال کے طور پر، n=3 کے لیے میسج(n.to_string(fill: 4)) کو کال کرنے سے سٹرنگ "004" پیدا ہوگی۔
  • ایک نیا ہدف شامل کیا گیا، clang-tidy-fix، جو کہ "-fix" پرچم کے ساتھ clang-tidy یوٹیلیٹی کو چلانے کی وضاحت کرتا ہے۔
  • اسمبلی ٹارگٹ ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) کا لاحقہ (TARGET_SUFFIX) بتانے کی صلاحیت کو کمپائل کمانڈ میں شامل کر دیا گیا ہے۔
  • پیکیج کیشے (سب پروجیکٹس/پیکیج کیشے) کے راستے کو اوور رائڈ کرنے کے لیے ماحولیاتی متغیر MESON_PACKAGE_CACHE_DIR شامل کیا گیا، مثال کے طور پر، آپ کو کئی پروجیکٹس میں مشترکہ کیش استعمال کرنے کی اجازت دیتا ہے۔
  • مستقل کیشے کو صاف کرنے کے لیے "meson setup --clearcache" کمانڈ شامل کی گئی۔
  • "ضروری" کلیدی لفظ کے لیے سپورٹ کو تمام "has_*" کمپائلر چیک طریقوں میں شامل کر دیا گیا ہے، مثال کے طور پر، "assert(cc.has_function('some_function'))" کے بجائے اب آپ "cc.has_function('some_function') کی وضاحت کر سکتے ہیں۔ مطلوبہ: سچ)"۔
  • ایک نیا کلیدی لفظ، rust_abi، shared_library(), static_library(), library()، اور shared_module() فنکشنز میں شامل کیا گیا ہے، جسے فرسودہ rust_crate_type کے بجائے استعمال کیا جانا چاہیے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں