ForgeZero 1.9.0-ի թողարկում, որը C և ասեմբլերի համար կառուցման գործիք է։

Թողարկվել է ForgeZero 1.9.0 (fz)-ը, որը հրամանային տողով կառուցման գործիք է C, C++ և ասեմբլեր լեզուներով (NASM, GAS, FASM) գրված նախագծերի համար: Գործիքը հիմնական օգտագործման համար 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»): Աջակցվում են GNU-ի բոլոր ստանդարտ թիրախային հարթակները, ներառյալ arm-linux-gnueabihf-ը, aarch64-linux-gnu-ն և riscv64-linux-gnu-ն:
  • Աջակցություն է ներդրվել Լեզվի սերվերի արձանագրությանը (LSP): «-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 փոխարինման մեխանիզմ՝ բացակայող toolchain բաղադրիչներով սցենարները փորձարկելու համար։

Նախորդ թողարկումներից փոփոխություններ.

  • 1.8.0 տարբերակը իրականացնում է ստատիկ գրադարանների հավաքագրում (-տիպ 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), bin ձևաչափի աջակցություն (-format bin) բեռնիչների և firmware-ի համար, ինչպես նաև libs, flags.cc, flags.asm, flags.ld կարգավորման դաշտեր։
  • 1.5.0 տարբերակը ներկայացնում է բազմաթիվ սկզբնաղբյուրի գրացուցակներ (source_dirs), ֆայլերի հստակ ցանկեր (source_files), ներառման/բացառման ձևանմուշներ, հղումային գրադարանների համար libs դաշտ, .fzignore ֆայլը և կոնֆիգուրացիայի ֆայլերի բազմամակարդակ միավորում:

Source: opennet.ru

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster