Wydanie ForgeZero 1.9.0, narzędzia do kompilacji dla języków C i assemblera

ForgeZero 1.9.0 (fz), narzędzie do kompilacji z poziomu wiersza poleceń dla projektów napisanych w językach C, C++ i językach asemblera (NASM, GAS, FASM), zostało wydane. Narzędzie nie wymaga pliku Makefile ani innych plików konfiguracyjnych do podstawowego użytkowania. Kod projektu jest napisany w języku Go i jest objęty licencją MIT.

ForgeZero wykrywa typ pliku i automatycznie wybiera odpowiedni backend. Każdy plik kodu jest kompilowany do pliku obiektowego, a następnie sprawdzany pod kątem duplikatów symboli globalnych we wszystkich obiektach i linkowany do jednego pliku wykonywalnego. Skompilowane pliki są buforowane i rekompilowane dopiero po wprowadzeniu zmian w powiązanych plikach kodu. Opcjonalnie, śledzenie zmian w systemie plików i rekompilacja są możliwe po aktualizacji pliku kodu.

Obsługiwane kompilatory to GCC, Clang, G++ i Clang++; asemblery to NASM, GAS i FASM; linkery to LD, GCC i Clang; obsługiwany jest również archiwizator AR. Obowiązkowe ostrzeżenia dla języków C i C++ to: „-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion”. Sanitizery AddressSanitizer i UndefinedBehaviorSanitizer są domyślnie włączone (można je wyłączyć flagą -sanitize=false). Obsługiwane platformy to: Linux, macOS, Windows (WSL2 i eksperymentalnie natywny).

Główne zmiany w wersji 1.9.0:

  • Dodano flagę „-target” , który umożliwia kompilację krzyżową dla dowolnej architektury z odpowiednimi narzędziami prefiksowymi. fz automatycznie określa nazwy kompilatora, linkera i archiwizatora na podstawie podanego identyfikatora (np. „arm-linux-gnueabihf-gcc”). Obsługiwane są wszystkie standardowe platformy docelowe GNU, w tym arm-linux-gnueabihf, aarch64-linux-gnu i riscv64-linux-gnu.
  • Wprowadzono obsługę protokołu Language Server Protocol (LSP). Flaga „-compile-commands” generuje plik compile_commands.json (baza danych kompilacji) w katalogu głównym projektu. Plik jest odczytywany przez język. serwery clangd i ccls zapewniają automatyczne uzupełnianie, nawigację po kodzie i diagnostykę w edytorach obsługujących LSP (Neovim, VSCode, CLion, Emacs itp.).
  • Polecenie fz „-update” zapisuje teraz bieżący plik binarny w /usr/local/bin/fz.old przed zainstalowaniem nowej wersji, co pozwala na powrót do poprzedniej wersji bez konieczności ponownej instalacji.
  • Naprawiono błąd w projektach wielokatalogowych, w wyniku którego pliki o identycznych nazwach bazowych z różnych podkatalogów nadpisywały wzajemnie swoje pliki obiektów. Nazwy plików obiektów są teraz generowane na podstawie pełnej ścieżki względnej do pliku źródłowego.
  • Wprowadzono tryb interaktywny „fz -shell” do budowania pojedynczych plików.
  • Dodano pokrycie testowe dla poleceń SplitCommand, CmdSet i CmdBuild. Pokrycie testowe dla pakietu linkera wzrosło z 17% do 60%, a pokrycie dla wszystkich pakietów przekroczyło 40%.
  • Dodano mechanizm zastępczy CheckTool umożliwiający testowanie scenariuszy z brakującymi komponentami łańcucha narzędzi.

Zmiany w stosunku do poprzednich wersji:

  • Wersja 1.8.0 implementuje montaż bibliotek statycznych (-type static / -lib), zapewnia unikalność nazw plików obiektów w projektach wielokatalogowych i naprawia błędy w podsystemie montażu związane z przechodzeniem ścieżki ".."
  • Wersja 1.7.0 dodaje kompilację równoległą (-j N, 0 — automatyczne wykrywanie liczby rdzeni), obsługę skryptów linkera (-T) i adresów punktów wejścia (-Ttext), tryb interaktywny (fz -shell), jawny wybór formatu wyjściowego (elf32, elf64, bin), kompilację plików C++ (.cpp, .cc, .cxx) z takimi samymi ścisłymi flagami ostrzegawczymi jak w przypadku języka C.
  • Wersja 1.6.0 dodaje inicjalizację projektu (fz -init, tworzy pliki .fz.yaml, .fzignore, README.md), obsługę formatu bin (-format bin) dla bootloaderów i oprogramowania sprzętowego oraz pola konfiguracyjne libs, flags.cc, flags.asm, flags.ld.
  • Wersja 1.5.0 wprowadza wiele katalogów źródłowych (source_dirs), jawne listy plików (source_files), wzorce include/exclude, pole libs dla bibliotek łączących, plik .fzignore i wielopoziomowe scalanie plików konfiguracyjnych.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster