C, C++ және ассемблер тілдерінде (NASM, GAS, FASM) жазылған жобаларға арналған командалық жол құрастыру құралы ForgeZero 1.9.0 (fz) шығарылды. Құрал негізгі пайдалану үшін Makefile немесе басқа конфигурация файлдарын қажет етпейді. Жоба коды Go тілінде жазылған және MIT лицензиясы бойынша лицензияланған.
ForgeZero файл түрін анықтап, тиісті серверді автоматты түрде таңдайды. Әрбір код файлы нысан файлына компиляцияланады, содан кейін барлық нысандардағы қайталанатын жаһандық белгілердің бар-жоғы тексеріліп, бір орындалатын файлға байланыстырылады. Компиляцияланған файлдар кэштеледі және тек байланысты код файлдарына өзгерістер енгізілгеннен кейін ғана қайта компиляцияланады. Қосымша ретінде, код файлы жаңартылғаннан кейін файлдық жүйенің өзгеруін бақылау және қайта компиляциялау мүмкін болады.
Қолдау көрсетілетін компиляторлар: 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 файлдарын жасайды), жүктеушілер мен микробағдарлама үшін bin форматын қолдауды (-format bin) және libs, flags.cc, flags.asm, flags.ld конфигурация өрістерін қосады.
- 1.5.0 нұсқасы бірнеше бастапқы каталогтарды (source_dirs), нақты файл тізімдерін (source_files), қосу/шығару үлгілерін, сілтеме кітапханаларына арналған libs өрісін, .fzignore файлын және конфигурация файлдарын көп деңгейлі біріктіруді ұсынады.
Ақпарат көзі: opennet.ru
