
<h1>Dep Software Build Automation Tool</h1>

<h2>Release Notes</h2>

<h4 id="dep0_6">Dep 0.6</h4>

Dep 0.6 was released on 19 October 2025. Changes are:

  <gsml-nestedlist>
  * Added reparse/rescan to pattern expansion and fixed includes/pattern interation
  * Stopped running queued jobs after a failure
  * Improved -v verbosity settings and added more
  * Sped up by removing slow and unnecessary calculateIncludeModTime loop
  * Removed buggy and unnecessary FOLDERLIST_ALL logic
  * Removed unused parameters and variables
  * Changed --noskip to --link
  * Fixed --mkdir --link interaction edge case
  * File format changes:
    - Broke fileinfo cache lines over a block of several optional lines
    - Added rebuiltsametime cache lines
    - Build rules starting with %pseudo or similar no longer require braces
    - If a build rule has braces, the opening brace must be on the
      first line of the rule (this is to prevent a grammar ambiguity)
    - Changed if statement from if-{-} style to if-then-end style
  * Added rebuiltSameTime logic to track non-changing file writes over multiple invocations
  * Ignored filesize of directories
  * Changed default settings from fast+confusing to slow+reliable
  * Changed --noskip to its opposite fast
  * Ignored failing mkdir commands
  * Opened files properly before looking in them for includes
  * Removed wonky advice in diagnostics
  * added --readcache option
  * added --nomkdir option
  * added LINE special variable
  * Changed "imm echo" to "print"
  * TLDR: Fixed design flaws, fixed usability flaws, debugged, added new stuff, fixed performance flaws

<h4 id="dep0_51">Dep 0.51</h4>

Dep 0.51 was released on 20 December 2024. Changes are:

  * Fixed bugs in pattern rule construction affecting folders and precompiled headers
  * Stopped constructing so many temporary patterns
  * Updated Dep's own DepFile
  * Fixed --ruleincludes by not reading includes from cache (when not using --treeincludes)
  * Fixed --ruleincludes / pattern interaction bug by re-running the parser on expanded patterns

<h4 id="dep0_5">Dep 0.5</h4>

Dep 0.5 was released on 12 October 2024. Changes are:

  * Improvements to build ordering via whichComesFirst
  * Cached getFileState
  * Added timestampsize
  * Added implementsHeader
  * Cached getCompletionSeconds
  * Refactored shared memory
  * Runs recently-failed steps until 15% through the job, then switches to critical-path steps
  * When looking for the finished job, stopped looking through old jobs
  * Improved pattern matching of #include statements
  * Stopped looking for #include statements when the cached copy is OK
  * Debug senseModTime/senseSize/senseRule/FILEFLAG\_STAT\_CHANGED
  * Get the updated mod time before writing it back to cache
  * Fixed 'file exists' errors on mkdir commands
  * Gradually scaled up from number of processors (e.g. 8) number of register sets (e.g. 16)
  * Fixed bug that sometimes reset the number of pipelines
  * Fixed bug that sometimes let there be more pipelines than register sets
  * Fixed syntax lookup of commands starting with "-":w
  * Added new acceptance test in Gossammer Markup Language
  * Added exists\_file\_ext mechanism that marks all .so/.dll rules at %exists
  * Added mechanism that marks all mkdir rules at %exists
  * Added --noskip option that runs all %exists rules
  * Added mechanism that automatically finds all mkdir dependencies
  * Changed %exist to %exists
  * Added %alias for precompiled headers
  * Added --noreadcache, --nowritecache and --writecache
  * Debugged pipeline commands
  * Refactored verbosity options and output
  * Added --tracefile option
  * Stopped making duplicate stat() calls
  * Debugged marking of re-generated files
  * Debugged reading of #include files from .c files
  * Added % patterns
  * Shrank some struct sizes
  * Fixed memory leaks
  * Refactored parser buffer creation+deletion
  * Changed --simplesort to --fixedorder
  * Refactored nextCommand to remove startMore option
  * The set of --treeincludes include files now depends on the list of -I options

<h4 id="dep0_4">Dep 0.4</h4>

Dep 0.4 was released on 30 May 2023. Changes are:

  * Added filename and line number to duplicate rule warning messages
  * Fixed bug that caused non-duplicate rules to be listed as warnings
  * Separated environment variable spaces for parallel execution streams
  * Fixed bug that wrote duplicate rules to .DepFileCache
  * Fixed bug in determining locations of included source files
  * Fixed bug in normalizing file path names

<h4 id="dep0_3">Dep 0.3</h4>

Dep 0.3 was released on 9 March 2023. Changes are:

  * Changed findIncludes mechanism to look at filenames instead of options such as -c, to handle
    instances such as gcc a.c b.o
  * Fixed bugs in quote mark parsing
  * Combined operations on rule and tree includes

<h4 id="dep0_2">Dep 0.2</h4>

Dep 0.2 was released on 16 February 2023. Changes are:

  * Added sensing and invalidation of some misbuilt files (generally 0 byte
    files, but 8 bytes for .a files)
  * Added %outz for files that may validly be zero length
  * Fixed bugs in handling of rules with no inputs e.g. mkdir commands
  * Added existence dependencies
  * Changed -p option to -j
  * No need to put " > %out " in syntax lines any more, it is now always assumed
  * Fixed bugs in interpretation of nested for loops
  * Allowed braces on subsequent lines of for loops
  * Changed "if ... endif" to "if { }"
  * Fixed some errors in the generation of .DepFileCache and suppressed some others in readback
  * Improved line and column number reporting in DepFile syntax error messages
  * Added /etc/depsyntax file, which includes syntaxes of common commands
  * Fixed bug in export statements within rules: they are now run during execution, not during parsing

<h4 id="dep0_1">Dep 0.1</h4>

Dep 0.1 was released on 7 December 2022.

<h2>Copyright and Licence</h2>

Copyright (C) 2022 Matthew Rickard

Dep is free software licenced under the GNU General Public Licence version 3.

