Rilis ForgeZero 1.9.0, sebuah alat pengembangan untuk C dan assembler.

ForgeZero 1.9.0 (fz), sebuah alat build berbasis baris perintah untuk proyek yang ditulis dalam bahasa C, C++, dan bahasa assembly (NASM, GAS, FASM), telah dirilis. Alat ini tidak memerlukan Makefile atau file konfigurasi lainnya untuk penggunaan dasar. Kode proyek ditulis dalam bahasa Go dan dilisensikan di bawah lisensi MIT.

ForgeZero mendeteksi tipe file dan secara otomatis memilih backend yang sesuai. Setiap file kode dikompilasi menjadi file objek, kemudian diperiksa untuk simbol global duplikat di semua objek dan dihubungkan ke dalam satu file yang dapat dieksekusi. File yang telah dikompilasi disimpan dalam cache dan dikompilasi ulang hanya setelah perubahan dilakukan pada file kode terkait. Secara opsional, pelacakan perubahan sistem file dan kompilasi ulang dimungkinkan setelah pembaruan file kode.

Compiler yang didukung adalah GCC, Clang, G++, dan Clang++; assembler adalah NASM, GAS, dan FASM; linker adalah LD, GCC, dan Clang; dan pengarsip AR didukung. Peringatan wajib untuk C dan C++ adalah: "-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion". Sanitizer AddressSanitizer dan UndefinedBehaviorSanitizer diaktifkan secara default (dapat dinonaktifkan dengan flag -sanitize=false). Platform yang didukung adalah: Linux, macOS, Windows (WSL2 dan secara eksperimental asli).

овные енения ерсии 1.9.0:

  • Menambahkan flag "-target" , yang memungkinkan kompilasi silang untuk arsitektur apa pun dengan alat awalan yang sesuai. fz secara otomatis menentukan nama kompiler, linker, dan pengarsip berdasarkan pengidentifikasi yang ditentukan (misalnya, "arm-linux-gnueabihf-gcc"). Semua platform target GNU standar didukung, termasuk arm-linux-gnueabihf, aarch64-linux-gnu, dan riscv64-linux-gnu.
  • Dukungan untuk Language Server Protocol (LSP) telah diimplementasikan. Flag "-compile-commands" menghasilkan file compile_commands.json (Basis Data Kompilasi) di root proyek. File tersebut dibaca oleh bahasa pemrograman. server clangd dan ccls, menyediakan fitur pelengkapan otomatis, navigasi kode, dan diagnostik di editor yang mendukung LSP (Neovim, VSCode, CLion, Emacs, dll.).
  • Perintah fz "-update" sekarang menyimpan biner saat ini ke /usr/local/bin/fz.old sebelum menginstal versi baru, memungkinkan Anda untuk kembali ke versi sebelumnya tanpa menginstal ulang.
  • Memperbaiki bug pada proyek multi-direktori di mana file dengan nama dasar identik dari subdirektori berbeda akan menimpa file objek satu sama lain. Nama file objek sekarang dihasilkan berdasarkan jalur relatif lengkap ke file sumber.
  • Menerapkan mode interaktif "fz -shell" untuk membangun file tunggal.
  • Cakupan pengujian telah ditambahkan untuk perintah SplitCommand, CmdSet, dan CmdBuild. Cakupan pengujian untuk paket linker telah meningkat dari 17% menjadi 60%, dan cakupan untuk semua paket telah melampaui 40%.
  • Menambahkan mekanisme pengganti CheckTool untuk skenario pengujian dengan komponen toolchain yang hilang.

Perubahan dari rilis sebelumnya:

  • Versi 1.8.0 mengimplementasikan perakitan pustaka statis (-type static / -lib), memastikan keunikan nama file objek dalam proyek multi-direktori, dan memperbaiki kesalahan dalam subsistem perakitan yang terkait dengan penelusuran jalur "..".
  • Versi 1.7.0 menambahkan kompilasi paralel (-j N, 0 — deteksi otomatis jumlah inti prosesor), dukungan untuk skrip linker (-T) dan alamat titik masuk (-Ttext), mode interaktif (fz -shell), pemilihan format output secara eksplisit (elf32, elf64, bin), kompilasi file C++ (.cpp, .cc, .cxx) dengan flag peringatan ketat yang sama seperti untuk C.
  • Versi 1.6.0 menambahkan inisialisasi proyek (fz -init, membuat .fz.yaml, .fzignore, README.md), dukungan format bin (-format bin) untuk bootloader dan firmware, serta bidang konfigurasi libs, flags.cc, flags.asm, flags.ld.
  • Versi 1.5.0 memperkenalkan beberapa direktori sumber (source_dirs), daftar file eksplisit (source_files), pola penyertaan/pengecualian, bidang libs untuk pustaka linker, file .fzignore, dan penggabungan file konfigurasi multi-level.

Sumber: opennet.ru

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster