ForgeZero 1.9.0 (fz)، C، C++، اور اسمبلی زبانوں (NASM, GAS, FASM) میں لکھے گئے پروجیکٹس کے لیے کمانڈ لائن بنانے کا ٹول جاری کیا گیا ہے۔ ٹول کو بنیادی استعمال کے لیے میک فائل یا دیگر کنفیگریشن فائلوں کی ضرورت نہیں ہے۔ پروجیکٹ کوڈ گو میں لکھا گیا ہے اور MIT لائسنس کے تحت لائسنس یافتہ ہے۔
ForgeZero فائل کی قسم کا پتہ لگاتا ہے اور خود بخود مناسب بیک اینڈ کو منتخب کرتا ہے۔ ہر کوڈ فائل کو ایک آبجیکٹ فائل میں مرتب کیا جاتا ہے، پھر تمام اشیاء میں ڈپلیکیٹ عالمی علامتوں کی جانچ پڑتال کی جاتی ہے اور اسے ایک ہی قابل عمل فائل سے منسلک کیا جاتا ہے۔ مرتب شدہ فائلیں متعلقہ کوڈ فائلوں میں تبدیلیاں کرنے کے بعد ہی کیش اور دوبارہ مرتب کی جاتی ہیں۔ اختیاری طور پر، کوڈ فائل اپ ڈیٹس کے بعد فائل سسٹم کی تبدیلی سے باخبر رہنا اور دوبارہ مرتب کرنا ممکن ہے۔
معاون مرتب کرنے والے ہیں GCC، بجنا، G++، اور کلینگ++؛ اسمبلرز NASM، GAS، اور FASM ہیں؛ لنکرز ایل ڈی، جی سی سی اور کلنگ ہیں۔ اور اے آر آرکائیور سپورٹ کیا جاتا ہے۔ C اور C++ کے لیے لازمی انتباہات ہیں: "-Wall-Wextra-Werror-Wpedantic-Wshadow-Wconversion"۔ Address Sanitizer اور UndefinedBehaviorSanitizer سینیٹائزر بطور ڈیفالٹ فعال ہوتے ہیں (انہیں -sanitize=false flag کے ساتھ غیر فعال کیا جا سکتا ہے)۔ تعاون یافتہ پلیٹ فارمز ہیں: Linux, macOS, Windows (WSL2 اور تجرباتی طور پر مقامی)۔
ورژن 1.9.0 میں اہم تبدیلیاں:
- "ٹارگٹ" جھنڈا شامل کیا گیا۔ ، جو مناسب سابقہ ٹولز کے ساتھ کسی بھی فن تعمیر کے لیے کراس تالیف کو قابل بناتا ہے۔ fz مخصوص شناخت کنندہ (مثال کے طور پر، "arm-linux-gnueabihf-gcc") کی بنیاد پر مرتب کرنے والے، لنکر، اور آرکائیور کے ناموں کا خود بخود تعین کرتا ہے۔ تمام معیاری GNU ٹارگٹ پلیٹ فارم تعاون یافتہ ہیں، بشمول arm-linux-gnueabihf، aarch64-linux-gnu، اور riscv64-linux-gnu۔
- لینگویج سرور پروٹوکول (LSP) کے لیے سپورٹ نافذ کر دی گئی ہے۔ "-compile-commands" جھنڈا پروجیکٹ روٹ میں compile_commands.json (کمپیلیشن ڈیٹا بیس) فائل تیار کرتا ہے۔ فائل کو زبان سے پڑھا جاتا ہے۔ سرورز clangd اور ccls، ایڈیٹرز میں خودکار تکمیل، کوڈ نیویگیشن، اور تشخیص فراہم کرتے ہیں جو LSP (Neovim، VSCode، CLion، Emacs، وغیرہ) کو سپورٹ کرتے ہیں۔
- fz "-update" کمانڈ اب نیا ورژن انسٹال کرنے سے پہلے موجودہ بائنری کو /usr/local/bin/fz.old میں محفوظ کرتی ہے، جس سے آپ کو دوبارہ انسٹال کیے بغیر پچھلے ورژن پر واپس جانے کی اجازت ملتی ہے۔
- ملٹی ڈائرکٹری پروجیکٹس میں ایک بگ کو ٹھیک کیا گیا جہاں مختلف ذیلی ڈائرکٹریوں سے ایک جیسے بیس ناموں والی فائلیں ایک دوسرے کی آبجیکٹ فائلوں کو اوور رائٹ کر دیں گی۔ آبجیکٹ فائل کے نام اب ماخذ فائل کے مکمل رشتہ دار راستے کی بنیاد پر بنائے گئے ہیں۔
- سنگل فائلوں کی تعمیر کے لیے انٹرایکٹو موڈ "fz -shell" کا نفاذ۔
- SplitCommand، CmdSet، اور CmdBuild کمانڈز کے لیے ٹیسٹ کوریج شامل کر دی گئی ہے۔ لنکر پیکج کے لیے ٹیسٹ کوریج 17% سے بڑھ کر 60% ہو گئی ہے، اور تمام پیکجوں کی کوریج 40% سے تجاوز کر گئی ہے۔
- لاپتہ ٹول چین اجزاء کے ساتھ منظرناموں کی جانچ کے لیے ایک چیک ٹول متبادل طریقہ کار شامل کیا گیا۔
پچھلی ریلیز سے تبدیلیاں:
- ورژن 1.8.0 جامد لائبریریوں کی اسمبلی کو لاگو کرتا ہے (-type static / -lib)، ملٹی ڈائرکٹر پروجیکٹس میں آبجیکٹ فائل کے ناموں کی انفرادیت کو یقینی بناتا ہے، اور ".." پاتھ کے ٹراورسل سے متعلق اسمبلی سب سسٹم میں خرابیوں کو ٹھیک کرتا ہے۔
- ورژن 1.7.0 میں متوازی تالیف (-j N, 0 — cores کی تعداد کا خود بخود پتہ لگانے)، لنکر اسکرپٹس (-T) اور انٹری پوائنٹ ایڈریسز (-Ttext)، انٹرایکٹو موڈ (fz -shell)، آؤٹ پٹ فارمیٹ کا واضح انتخاب (elf32, elf64, bin+)، c.ppc.c.xx کے ساتھ فائل کی تالیف (-j N, 0) شامل کرتا ہے۔ سی کے لئے وہی سخت انتباہی جھنڈے۔
- ورژن 1.6.0 بوٹ لوڈرز اور فرم ویئر کے لیے پروجیکٹ کی ابتدا (fz -init، تخلیق کرتا ہے .fz.yaml، .fzignore، README.md)، بن فارمیٹ سپورٹ (-فارمیٹ بن) اور کنفیگریشن فیلڈز libs، flags.cc، flags.asm، flags.ld شامل کرتا ہے۔
- ورژن 1.5.0 ایک سے زیادہ سورس ڈائرکٹریز (source_dirs)، واضح فائل کی فہرستیں (source_files)، شامل/خارج پیٹرن، لنکر لائبریریوں کے لیے ایک libs فیلڈ، .fzignore فائل، اور کنفیگریشن فائلوں کے ملٹی لیول انضمام کو متعارف کراتا ہے۔
ماخذ: opennet.ru
