Releases: forgezero-cli/ForgeZero
fz 2.1.0 – improved catalog reliability, fallback URLs, env override
🔧 Fixes & improvements:
- Add multi‑URL catalog fetching with fallback (official GitHub → custom mirror)
- Add FZ_CATALOG_URL environment variable to override catalog location
- Fix TLS/unexpected EOF errors when accessing raw.githubusercontent.com
- Add timeout (10s) and proper error handling for catalog requests
- Show warnings on failed attempts but continue to next URL
📦 Install: go install github.com/forgezero-cli/ForgeZero/cmd/fz@latest
fz 2.0.0 NEXUS – Performance, Package Management, and Cross‑Compilation
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✨ Major New Features
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• BLAKE3 file hashing – 7x faster cache (10 MB: 58ms → 8.7ms)
• Package manager (fz pm) – add, remove, list, update, catalog, search, install
• Central package catalog – community-driven JSON registry
• Shared library support – -shared, -cc-flag, -ld-flag
• Cross‑compilation – -target for ARM, RISC‑V, x86_64, i386
• Static libraries – -type static / -lib (build .a archives)
• LSP support – -compile-commands generates compile_commands.json
• Interactive shell – fz -shell with full build commands
• Linker scripts and text address – -T, -Ttext
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔧 Improvements & Fixes
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• Parallel builds (-j N) for multi‑core acceleration
• Unique object file names (no more collisions)
• All golangci-lint warnings fixed (errcheck, govet, ineffassign)
• High test coverage: utils 84%, linker 60%, assembler 60%, builder 56%
• Context and timeouts for all network/git operations
• Improved pm remove – cleans empty parent directories and .fz.yaml
• Hash verification for catalog packages (BLAKE3)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📦 Install
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
go install github.com/forgezero-cli/ForgeZero/cmd/fz@latest
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🌐 Resources
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Repository: https://github.com/forgezero-cli/ForgeZero
Package catalog: https://github.com/forgezero-cli/catalog
Documentation: https://github.com/forgezero-cli/ForgeZero#readme
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Thank you for using fz! 🚀
fz v1.9.2 – version bump and final lint fixes
🔧 Changes since v1.9.0:
- Fixed all errcheck, govet, ineffassign warnings
- Added error handling for storeCache, json.Encode, w.Add, os.Rename, os.Chmod
- Fixed test errors (os.Chdir, os.MkdirAll, os.Create, buf.ReadFrom)
- Updated dependencies
- Bumped version to 1.9.2 (v1.9.1 was missing version update)
🧪 All tests pass, golangci-lint clean.
📦 Install: go install github.com/forgezero-cli/ForgeZero/cmd/fz@latest
fz v1.9.1 – code quality, lint fixes, improved error handling
- Fixed all errcheck warnings (json.Encode, w.Add, os.Rename, etc.)
- Fixed ineffectual assignment and printf format issues in tests
- Improved test coverage (linker 60%, builder 58%, etc.)
- All tests pass, go vet, staticcheck, golangci-lint clean
- Shell now supports single-file builds
- Cross-compilation, static libraries, LSP support stable
Install: go install github.com/forgezero-cli/ForgeZero/cmd/fz@latest
fz v1.9.0 – cross‑compilation, static libraries, LSP, full test coverage
✨ Features:
• Cross‑compilation (-target ): ARM, RISC‑V, x86_64, i386
• Static libraries (-type static / -lib): build .a archives
• LSP support (-compile-commands): generate compile_commands.json for clangd
• Shell improvements: single‑file builds, all commands work
🔧 Improvements:
• linker test coverage: 60.2% (up from 17%)
• replaceable utils.CheckToolFunc for test mocks
• unique object file names, better error messages
📊 Test coverage:
- assembler 60%,
- builder 58%,
- compilecommands 76%,
- config 68%,
- ignore 91%,
- init 67%,
- linker 60%,
- man 100%,
- shell 45%,
- updater 43%,
- utils 93%,
- watcher 78%
📦 Install: go install github.com/forgezero-cli/ForgeZero/cmd/fz@latest
🎉 fz v1.8.0 – Static libraries & rock‑solid builds
✨ Major new feature
• Static library support – -type static (or -lib)
Build project as an archive (.a) instead of an executable.
Perfect for reusable components and large codebases.
🔧 Improvements & fixes
• Object file naming – no more '..' prefixes (hello_asm.o, sub_hello_asm.o)
• Builder tests – fully fixed, no skipped tests, 100% pass in CI
• Parallel builds – stable with jobs=N (0 = auto)
• Static archive creation – uses ar rcs under the hood
📊 Test coverage (go test -cover)
assembler 61.2%
builder 66.8%
config 67.9%
ignore 91.3%
init 66.7%
linker 43.3%
man 100.0%
shell 40.6%
updater 38.6%
utils 92.6%
watcher 77.8%
📦 Install
go install github.com/forgezero-cli/ForgeZero/cmd/fz@latest
📖 Documentation
https://github.com/forgezero-cli/ForgeZero
Thank you for using fz!
fz v1.7.2 – stable release with improved test coverage
- linker coverage: 43.3%
- updater coverage: 38.6%
- shell coverage: 40.6% (unit tests)
- All tests passing (no hangs)
- Fixed fallback test expectations
- Removed unstable shell integration test
Install: go install github.com/forgezero-cli/ForgeZero/cmd/fz@latest
Docs: https://github.com/forgezero-cli/ForgeZero
fz v1.7.1 – stability and test improvements
Features:
- Parallel builds (-j N)
- Linker script support (-T, -Ttext)
- Interactive shell (-shell)
- C++ compilation (.cpp, .cc, .cxx)
- Flat binary output (-format bin)
- Project init (-init)
- Self-update (-update)
Improvements:
- Test coverage increased for assembler, builder, shell, man, updater
- Fixed updater testability
- Removed flaky tests for stable release
- Added GitHub Actions CI workflow
Install: go install github.com/forgezero-cli/ForgeZero/cmd/fz@latest
Docs: https://github.com/forgezero-cli/ForgeZero
fz v1.7.0 – Parallel builds, linker scripts, interactive shell, and cross-platform native linking
✨ What's new
- Parallel builds (
-j N) – compile multiple files concurrently. Use-j 0to auto‑detect CPU cores. - Linker script support (
-T <file>and-Ttext <addr>) – full control over memory layout, ideal for OS kernels and embedded systems. - Interactive shell (
fz -shell) – REPL withbuild,set,show,clean,watchcommands. Prototype – stable UI coming in 1.9/2.0. - Native Windows linking – uses
clang+lld(no MinGW required). Works out of the box with LLVM. - C++ support –
.cpp,.cc,.cxxfiles compiled withg++and strict warnings (-Wall -Wextra -Werror -Wpedantic -Wshadow -Wconversion). - Project initialisation (
fz -init) – creates.fz.yaml,.fzignore, andREADME.mdwith templates. - Flat binary output (
-format bin) – build bootloaders and raw firmware images. - Self-update (
fz -update) – automatically upgrades to the latest version viago install(fallback to download when binary assets are attached).
🔧 Improvements
- Incremental cache (SHA256) – rebuild only changed files.
- Duplicate symbol pre‑check – saves time before linking.
- Unique object names – no conflicts between
hello.asmandhello.s. - Empty object file protection.
- Configurable output formats:
elf32,elf64,bin. - Custom flags for assembler, C compiler, and linker (in
.fz.yaml). - Libraries support (
libsin config). - Ignore patterns (
.fzignore).
📦 Installation
Pre‑built binaries (attached)
Download the binary for your platform, make it executable, and run.
Using go install
go install github.com/alexvoste/ForgeZero/cmd/fz@latestFrom source
git clone https://github.com/alexvoste/ForgeZero
cd ForgeZero
go build -o fz ./cmd/fz
sudo mv fz /usr/local/bin/📖 Documentation
Full documentation: github.com/alexvoste/ForgeZero
🙏 Thank you
Special thanks to everyone who tried, tested, and contributed. Your feedback drives fz forward.
Note: The interactive shell is a prototype. A polished version will arrive in 1.9/2.0.