DEV Community

Cover image for fz 2.0.0 NEXUS — package manager, BLAKE3 cache, and cross-compilation for C/ASM
Alex Voste
Alex Voste

Posted on

fz 2.0.0 NEXUS — package manager, BLAKE3 cache, and cross-compilation for C/ASM

Yesterday I shipped 1.9.0. Got a solid mix of hate and genuinely useful feedback. Didn't sleep. Took all of it personally. Built 2.0.0 instead.

No point dragging it out — here's everything I promised, shipped right now.


What's new

⚡ BLAKE3 file hashing — 7x faster cache

Dropped SHA256. Switched to BLAKE3 across the board.

File size Before After
10 MB 58 ms 8.7 ms

Package verification from the catalog uses BLAKE3 too.


📦 Package manager — fz pm

The big one. Dependency management for C/ASM projects that doesn't make you want to quit programming.

fz pm add <repository>
fz pm remove <package>
fz pm update
fz pm list
fz pm search <query>
fz pm install
fz pm catalog
Enter fullscreen mode Exit fullscreen mode

Dependencies live in .fz.yaml. Removal cleans up empty parent directories automatically. Backed by a community-driven JSON package catalog.


🔌 Shared library support

New flags: -shared, -cc-flag, -ld-flag. Build .so and .dylib targets without wiring things up by hand.


🎯 Cross-compilation

fz -target arm-linux-gnueabihf
fz -target riscv64-linux-gnu
fz -target x86_64-w64-mingw32
Enter fullscreen mode Exit fullscreen mode

ARM, RISC-V, x86_64, i386. Compiler, assembler, and linker are selected automatically for the target triple.


🗂 Static libraries

fz -type static -lib mylib
Enter fullscreen mode Exit fullscreen mode

Builds .a archives from object files via ar.


🧠 LSP support

fz -compile-commands
Enter fullscreen mode Exit fullscreen mode

Generates compile_commands.json for clangd and any compatible LSP client. Autocomplete and go-to-definition, no manual config.


Improvements & fixes

  • Parallel builds with -j N
  • Linker scripts and text section address: -T, -Ttext
  • Fixed object file name collisions (hello.asm vs hello.s)
  • All golangci-lint warnings resolved: errcheck, govet, ineffassign
  • Context and timeouts for all network and git operations
  • Test coverage: utils 84%, linker 60%, assembler 60%, builder 56%

Install

go install github.com/forgezero-cli/ForgeZero/cmd/fz@latest
Enter fullscreen mode Exit fullscreen mode

Links


Solo project. All issues and PRs read personally. If something's broken or missing — tell me, I'll probably fix it overnight.

Top comments (0)