C, C++ ಮತ್ತು ಅಸೆಂಬ್ಲಿ ಭಾಷೆಗಳಲ್ಲಿ (NASM, GAS, FASM) ಬರೆಯಲಾದ ಯೋಜನೆಗಳಿಗಾಗಿ ಕಮಾಂಡ್-ಲೈನ್ ಬಿಲ್ಡ್ ಟೂಲ್ ಆಗಿರುವ ForgeZero 1.9.0 (fz) ಅನ್ನು ಬಿಡುಗಡೆ ಮಾಡಲಾಗಿದೆ. ಮೂಲಭೂತ ಬಳಕೆಗಾಗಿ ಈ ಉಪಕರಣಕ್ಕೆ Makefile ಅಥವಾ ಇತರ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ಗಳು ಅಗತ್ಯವಿಲ್ಲ. ಪ್ರಾಜೆಕ್ಟ್ ಕೋಡ್ ಅನ್ನು Go ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ ಮತ್ತು MIT ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ಪರವಾನಗಿ ನೀಡಲಾಗಿದೆ.
ಫೋರ್ಜ್ಜೀರೋ ಫೈಲ್ ಪ್ರಕಾರವನ್ನು ಪತ್ತೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಸೂಕ್ತವಾದ ಬ್ಯಾಕೆಂಡ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ಕೋಡ್ ಫೈಲ್ ಅನ್ನು ಆಬ್ಜೆಕ್ಟ್ ಫೈಲ್ಗೆ ಸಂಕಲಿಸಲಾಗುತ್ತದೆ, ನಂತರ ಎಲ್ಲಾ ಆಬ್ಜೆಕ್ಟ್ಗಳಲ್ಲಿ ನಕಲಿ ಜಾಗತಿಕ ಚಿಹ್ನೆಗಳಿಗಾಗಿ ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಒಂದೇ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್ಗೆ ಲಿಂಕ್ ಮಾಡಲಾಗುತ್ತದೆ. ಸಂಯೋಜಿತ ಕೋಡ್ ಫೈಲ್ಗಳಿಗೆ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಿದ ನಂತರವೇ ಸಂಕಲಿಸಿದ ಫೈಲ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಮರುಸಂಕಲಿಸಲಾಗುತ್ತದೆ. ಐಚ್ಛಿಕವಾಗಿ, ಕೋಡ್ ಫೈಲ್ ನವೀಕರಣಗಳ ನಂತರ ಫೈಲ್ ಸಿಸ್ಟಮ್ ಬದಲಾವಣೆ ಟ್ರ್ಯಾಕಿಂಗ್ ಮತ್ತು ಮರುಸಂಕಲನ ಸಾಧ್ಯ.
ಬೆಂಬಲಿತ ಕಂಪೈಲರ್ಗಳು 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% ಮೀರಿದೆ.
- ಕಾಣೆಯಾದ ಟೂಲ್ಚೈನ್ ಘಟಕಗಳೊಂದಿಗೆ ಸನ್ನಿವೇಶಗಳನ್ನು ಪರೀಕ್ಷಿಸಲು ಚೆಕ್ಟೂಲ್ ಬದಲಿ ಕಾರ್ಯವಿಧಾನವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
ಹಿಂದಿನ ಬಿಡುಗಡೆಗಳಿಂದ ಬದಲಾವಣೆಗಳು:
- ಆವೃತ್ತಿ 1.8.0 ಸ್ಟ್ಯಾಟಿಕ್ ಲೈಬ್ರರಿಗಳ ಜೋಡಣೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ (-ಟೈಪ್ ಸ್ಟ್ಯಾಟಿಕ್ / -ಲಿಬ್), ಬಹು-ನಿರ್ದೇಶಕ ಯೋಜನೆಗಳಲ್ಲಿ ಆಬ್ಜೆಕ್ಟ್ ಫೈಲ್ ಹೆಸರುಗಳ ಅನನ್ಯತೆಯನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ ಮತ್ತು ".." ಮಾರ್ಗದ ಅಡ್ಡಹಾಯುವಿಕೆಗೆ ಸಂಬಂಧಿಸಿದ ಅಸೆಂಬ್ಲಿ ಉಪವ್ಯವಸ್ಥೆಯಲ್ಲಿನ ದೋಷಗಳನ್ನು ಸರಿಪಡಿಸುತ್ತದೆ.
- ಆವೃತ್ತಿ 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 ಅನ್ನು ರಚಿಸುತ್ತದೆ), ಬೂಟ್ಲೋಡರ್ಗಳು ಮತ್ತು ಫರ್ಮ್ವೇರ್ಗಾಗಿ ಬಿನ್ ಫಾರ್ಮ್ಯಾಟ್ ಬೆಂಬಲ (-ಫಾರ್ಮ್ಯಾಟ್ ಬಿನ್), ಮತ್ತು libs, flags.cc, flags.asm, flags.ld ಎಂಬ ಕಾನ್ಫಿಗರೇಶನ್ ಕ್ಷೇತ್ರಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ.
- ಆವೃತ್ತಿ 1.5.0 ಬಹು ಮೂಲ ಡೈರೆಕ್ಟರಿಗಳು (source_dirs), ಸ್ಪಷ್ಟ ಫೈಲ್ ಪಟ್ಟಿಗಳು (source_files), ಮಾದರಿಗಳನ್ನು ಒಳಗೊಂಡಿವೆ/ಹೊರಗಿಡುತ್ತವೆ, ಲಿಂಕರ್ ಲೈಬ್ರರಿಗಳಿಗಾಗಿ ಲಿಬ್ಸ್ ಕ್ಷೇತ್ರ, .fzignore ಫೈಲ್ ಮತ್ತು ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ಗಳ ಬಹು-ಹಂತದ ವಿಲೀನವನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ.
ಮೂಲ: opennet.ru
