C болон ассемблерт зориулсан бүтээх хэрэгсэл болох ForgeZero 1.9.0 хувилбарыг гаргалаа

C, C++ болон ассемблер хэл (NASM, GAS, FASM) дээр бичигдсэн төслүүдэд зориулсан команд мөрийн бүтээх хэрэгсэл болох ForgeZero 1.9.0 (fz) хувилбарыг гаргалаа. Энэхүү хэрэгсэл нь үндсэн хэрэглээнд Makefile эсвэл бусад тохиргооны файл шаарддаггүй. Төслийн код нь Go хэл дээр бичигдсэн бөгөөд MIT лицензийн дагуу лицензлэгдсэн.

ForgeZero нь файлын төрлийг илрүүлж, тохирох backend-ийг автоматаар сонгодог. Код файл бүрийг объект файл болгон хөрвүүлдэг бөгөөд дараа нь бүх объектууд дээрх давхардсан глобал тэмдэгтүүдийг шалгаж, нэг гүйцэтгэгдэх файл болгон холбодог. Хөрвүүлсэн файлуудыг кэш хийж, холбогдох код файлуудад өөрчлөлт хийсний дараа л дахин хөрвүүлдэг. Нэмэлт сонголтоор бол код файлын шинэчлэлтийн дараа файлын системийн өөрчлөлтийг хянах болон дахин хөрвүүлэх боломжтой.

Дэмжигдсэн хөрвүүлэгчид нь GCC, Clang, G++, болон Clang++; угсрагч нь NASM, GAS, болон FASM; холбогч нь LD, GCC, болон Clang; мөн AR архивлагч дэмжигдсэн. 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"). arm-linux-gnueabihf, aarch64-linux-gnu, болон riscv64-linux-gnu зэрэг бүх стандарт 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%-иас давсан байна.
  • Хэрэгслийн гинжин хэлхээний бүрэлдэхүүн хэсгүүд дутуу байгаа тохиолдолд туршилтын хувилбаруудад зориулсан 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 файлуудыг үүсгэдэг), bootloader болон firmware-д зориулсан bin форматын дэмжлэг (-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