เปิดตัว ForgeZero เวอร์ชัน 1.9.0 เครื่องมือสร้างโปรแกรมสำหรับภาษา C และภาษาแอสเซมบลี

ForgeZero 1.9.0 (fz) เป็นเครื่องมือสร้างโปรแกรมแบบบรรทัดคำสั่งสำหรับโปรเจ็กต์ที่เขียนด้วยภาษา C, C++ และภาษาแอสเซมบลี (NASM, GAS, FASM) ได้ถูกปล่อยออกมาแล้ว เครื่องมือนี้ไม่จำเป็นต้องใช้ Makefile หรือไฟล์การกำหนดค่าอื่นๆ สำหรับการใช้งานขั้นพื้นฐาน โค้ดของโปรเจ็กต์เขียนด้วยภาษา Go และได้รับอนุญาตภายใต้ใบอนุญาต MIT

ForgeZero ตรวจจับประเภทไฟล์และเลือกแบ็กเอนด์ที่เหมาะสมโดยอัตโนมัติ ไฟล์โค้ดแต่ละไฟล์จะถูกคอมไพล์เป็นไฟล์อ็อบเจ็กต์ จากนั้นตรวจสอบสัญลักษณ์ส่วนกลางที่ซ้ำกันในอ็อบเจ็กต์ทั้งหมด และเชื่อมโยงเข้าด้วยกันเป็นไฟล์ปฏิบัติการเดียว ไฟล์ที่คอมไพล์แล้วจะถูกแคชไว้และคอมไพล์ใหม่เฉพาะเมื่อมีการเปลี่ยนแปลงในไฟล์โค้ดที่เกี่ยวข้องเท่านั้น นอกจากนี้ ยังสามารถติดตามการเปลี่ยนแปลงของระบบไฟล์และคอมไพล์ใหม่ได้หลังจากมีการอัปเดตไฟล์โค้ด

คอมไพเลอร์ที่รองรับได้แก่ GCC, Clang, G++ และ Clang++; แอสเซมเบลอร์ได้แก่ NASM, GAS และ FASM; ลิงเกอร์ได้แก่ LD, GCC และ Clang; และรองรับ AR archiver คำเตือนที่จำเป็นสำหรับ C และ C++ คือ: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion" ตัวตรวจสอบความปลอดภัย AddressSanitizer และ UndefinedBehaviorSanitizer เปิดใช้งานโดยค่าเริ่มต้น (สามารถปิดใช้งานได้ด้วยแฟล็ก -sanitize=false) แพลตฟอร์มที่รองรับได้แก่: Linux, macOS, Windows (WSL2 และแบบเนทีฟเชิงทดลอง)

คำตอบของ версии 1.9.0:

  • เพิ่มแฟล็ก "-target" ซึ่งช่วยให้สามารถคอมไพล์ข้ามสถาปัตยกรรมได้โดยใช้เครื่องมือคำนำหน้าที่เหมาะสม fz จะกำหนดชื่อของคอมไพเลอร์ ลิงเกอร์ และอาร์ไคเฟอร์โดยอัตโนมัติตามตัวระบุที่ระบุ (เช่น "arm-linux-gnueabihf-gcc") รองรับแพลตฟอร์มเป้าหมาย GNU มาตรฐานทั้งหมด รวมถึง arm-linux-gnueabihf, aarch64-linux-gnu และ riscv64-linux-gnu
  • Реализована поддержка поддержка протокола LSP (Language Server Protocol). Флаг «-compile-commands» генерирует файл compile_commands.json (Compilation Database) в корне проекта. Файл считывается языковыми เซิร์ฟเวอร์ clangd и ccls, обеспечивая работу автодополнения, навигации по коду и диагностики в редакторах с поддержкой LSP (Neovim, VSCode, CLion, Emacs и др.).
  • คำสั่ง fz "-update" ตอนนี้จะบันทึกไฟล์ไบนารีปัจจุบันลงใน /usr/local/bin/fz.old ก่อนที่จะติดตั้งเวอร์ชันใหม่ ทำให้คุณสามารถย้อนกลับไปยังเวอร์ชันก่อนหน้าได้โดยไม่ต้องติดตั้งใหม่
  • แก้ไขข้อผิดพลาดในโปรเจ็กต์ที่มีหลายไดเร็กทอรี ซึ่งไฟล์ที่มีชื่อพื้นฐานเหมือนกันจากไดเร็กทอรีย่อยที่แตกต่างกันจะเขียนทับไฟล์ออบเจ็กต์ของกันและกัน ตอนนี้ชื่อไฟล์ออบเจ็กต์จะถูกสร้างขึ้นโดยอิงจากเส้นทางสัมพัทธ์แบบเต็มไปยังไฟล์ต้นฉบับ
  • เพิ่มโหมดโต้ตอบ "fz -shell" สำหรับการสร้างไฟล์เดี่ยว
  • ได้เพิ่มการครอบคลุมการทดสอบสำหรับคำสั่ง SplitCommand, CmdSet และ CmdBuild แล้ว การครอบคลุมการทดสอบสำหรับแพ็คเกจลิงเกอร์เพิ่มขึ้นจาก 17% เป็น 60% และการครอบคลุมสำหรับทุกแพ็คเกจเกิน 40% แล้ว
  • เพิ่มกลไกการทดแทน CheckTool สำหรับสถานการณ์ทดสอบที่มีส่วนประกอบของชุดเครื่องมือขาดหายไป

การเปลี่ยนแปลงจากเวอร์ชันก่อนหน้า:

  • เวอร์ชัน 1.8.0 ได้ทำการประกอบไลบรารีแบบคงที่ (-type static / -lib) เพื่อให้มั่นใจว่าชื่อไฟล์อ็อบเจ็กต์มีความเป็นเอกลักษณ์ในโปรเจ็กต์ที่มีหลายไดเร็กทอรี และแก้ไขข้อผิดพลาดในระบบย่อยการประกอบที่เกี่ยวข้องกับการสำรวจเส้นทาง "."
  • เวอร์ชัน 1.7.0 เพิ่มการคอมไพล์แบบขนาน (-j N, 0 — ตรวจจับจำนวนคอร์โดยอัตโนมัติ), รองรับสคริปต์ลิงเกอร์ (-T) และที่อยู่จุดเริ่มต้น (-Ttext), โหมดโต้ตอบ (fz -shell), การเลือกรูปแบบเอาต์พุตอย่างชัดเจน (elf32, elf64, bin), การคอมไพล์ไฟล์ C++ (.cpp, .cc, .cxx) ด้วยแฟล็กคำเตือนที่เข้มงวดเช่นเดียวกับภาษา C
  • เวอร์ชัน 1.6.0 เพิ่มการเริ่มต้นโปรเจ็กต์ (fz -init, สร้างไฟล์ .fz.yaml, .fzignore, README.md), รองรับรูปแบบไบนารี (-format bin) สำหรับบูตโหลดเดอร์และเฟิร์มแวร์ และฟิลด์การกำหนดค่า libs, flags.cc, flags.asm, flags.ld
  • เวอร์ชัน 1.5.0 นำเสนอคุณสมบัติใหม่ๆ เช่น ไดเร็กทอรีแหล่งที่มาหลายแห่ง (source_dirs), รายการไฟล์ที่ระบุอย่างชัดเจน (source_files), รูปแบบการรวม/การยกเว้น, ฟิลด์ libs สำหรับไลบรารีของลิงเกอร์, ไฟล์ .fzignore และการรวมไฟล์การกำหนดค่าหลายระดับ

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster