Releases · mcandre/unmake

#gift-wrap

  • Optimize binaries
  • Optimize Docker images
  • Add more install methods
  • Replace tuggy with buildx bake
  • License 0BSD

#docker

  • Update Rust
  • Publish Docker images, yet another way to install unmake

#lockedin

Modernize lazy_static API members into std::sync::LazyLock

#float-up

  • Relax dependency pins to implicit caret, which allows rising semver equivalent versions
  • Update dependencies

#loud

unmake now warns on silent -include lines.

#soft

Warn on non-portable single colon equals (:=) operator, rather than treating it as a parsing concern.

#frfr

unmake now treats variable prerequisites as resolving missing .PHONY declarations.

#patch

  • Update Rust
  • Update crit
  • Update tinyrick & tinyrick_extras

#granddaddy

Enhancements:

  • Temporarily narrow the PHONY_TARGET recommendation warning to ignore more empty-command targets.

Make inferred rules rely on empty command lists, however unmake has not yet implemented inferred rules. This caused previous scanning logic to trigger false positives for some valid makefiles. Out of an abundance of caution, disabling most of these warnings except for a short list of conventional phony targets such as all, clean, test, etc.

Planning to crack that inferred rule nut in the future. For now, applying the sage advice of wiser men like Simon Peyton Jones... It is better to accept some less than perfect programs than to reject too many valid programs.

A linter acts as a teacher, helping the user to adopt good habits. makefile authors are still encouraged to (manually) deeply analyze build systems for .PHONY worthy targets.

One suggested workaround for large, overly elaborate makefile configurations is to make clean [<additional targets>], for example when building projects locally. Legacy CI/CD systems should take additional steps to wipe the environment prior to each pipeline execution. Modern, ephemeral CI/CD pipelines automatically do this.

#tarball

Replace zip archive with tarball for ease of Docker container injection.