Skip to content

Releases: mcandre/unmake

#recursion

29 Apr 01:42
Compare
Choose a tag to compare
  • unmake now accepts a list of multiple file and/or directory paths.
  • unmake now recurses over directories.
  • .git, node_modules, and vendor are skipped.
  • Machine-generated makefiles are skipped.
  • Symlinks are skipped.
  • Implementation-specific filenames like GNUmakefile and BSDmakefile are skipped.
  • -d / --debug shows skipped file paths
  • -i / --inspect provides high level details about potential makefile paths
  • Error messages about accessing files now name the offending file path
  • Added more unit tests
  • Minor performance enhancement when generating parse error messages

See #recursion

#messaging

27 Apr 05:37
Compare
Choose a tag to compare
  • Substantially clarify parse error messages
  • Improve documentation
  • Expand tests

#special-delivery

26 Apr 07:06
Compare
Choose a tag to compare

Apply stricter parsing for special targets.

For example, prohibit the degenerate reset form .POSIX:;.

This reduces ambiguity / portability issues.

#quintus

26 Apr 03:24
Compare
Choose a tag to compare

Major enhancements:

  • Target more modern POSIX Issue 8, Draft 3 make spec
  • Parse grammar substantially refined, for POSIX makefile syntax both new (!=) and old (.PHONY).
  • Reject more syntactical forms with undefined behavior, such as :=
  • Document illustrative examples for passing and failing makefile syntax
  • Test suite substantially improved

Notable validation behaviors:

  • Multiline instructions appearing in fringe places, may be treated as parse errors. This keeps the grammar simple, and encourages more readable makefiles. Annotating AST nodes with locations of questionable escape newline sequences, would have greatly complicated both the parser grammar and post-parsing linter logic.
  • Late .POSIX: declarations are currently not checked. In the interest of expediency, we decided it was better to fix a larger issue with past releases, which incidentally prohibited use of the .POSIX: rule anywhere in the makefile.
  • Some syntactical forms like -include are currently tolerated, though may be slated for rejection later. Either at parse or linter message level.

Each release of unmake aims to provide meaningful, iterative improvements. While also balancing strictness on the one hand, with flexibility on the other. Now that the AST is beginning to cure, we plan subsequent releases to roll out higher level warnings.

#rick-AST-ly

14 Apr 21:24
Compare
Choose a tag to compare
  • Clarify unmake's intention to target specifically the (upcoming) 2008 POSIX release, as opposed to older POSIX standards
  • Clarify more caveats in unmake capabilities and proper makefile authorship generally
  • Allow upcoming POSIX 2008 assignment operators :=, ?=, and +=. Ensure := is treated as a macro declaration, rather than a rule declaration.
  • Reject rules that have exactly zero prerequisites, zero inline commands, and zero indented commands, as make processing for such rules is undefined behavior.
  • Fix dev environment provisioning script for unmake itself, in the event that some cargo packages are already installed
  • Accelerate line counting update algorithm
  • Add unit tests for more standard POSIX make elements

#performance

10 Apr 20:24
Compare
Choose a tag to compare
  • Optimize memory usage of line counting algorithm
  • Improve CLI validation
  • CR and CRLF now treated as parse errors
  • Enrich AST with line numbers, in preparation for rendering linter warnings

#roc

09 Apr 03:49
Compare
Choose a tag to compare
  • Refined the grammar to more closely match the POSIX spec.
  • Drop explicit -n / --dry-run flags. The parsing check is now the default behavior.
  • Add more example scripts
  • Add more unit tests

#draft

08 Apr 04:22
Compare
Choose a tag to compare

Early prototype of a strict POSIX makefile AST. Results may vary.

Release archive includes ports for a wide variety of platforms.