Κυκλοφορία του ForgeZero 1.9.0, ενός εργαλείου δημιουργίας για C και assembler

Κυκλοφόρησε το ForgeZero 1.9.0 (fz), ένα εργαλείο δημιουργίας μέσω γραμμής εντολών για έργα γραμμένα σε C, C++ και γλώσσες assembly (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 (Βάση Δεδομένων Συλλογής) στη ρίζα του έργου. Το αρχείο διαβάζεται από τη γλώσσα. διακομιστές 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) για bootloaders και firmware, και πεδία διαμόρφωσης 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