News
****

Release 1.29.0
==============

   * Fix possible error when two always-ed targets are run
     simultaneously.
   * Updated dependant libraries.

Release 1.28.0
==============

   * Do not remove '.lock' files, that leads to possible races between
     running targets.  Although 'nncp-cleanup lock' can be used to
     cleanup.
   * Updated dependant libraries.

Release 1.27.1
==============

   * Fixed lack of '.redo.'-prefix in temporary file names.

Release 1.27.0
==============

   * Improved out-of-date check and '.do' files search performance,
     because of caching their results.

Release 1.26.0
==============

   * Debug output contained colour-related attribute even if
     '$NO_COLOR=1' was set.
   * Updated dependant libraries.

Release 1.25.0
==============

   * Target's lock file requires a token from the jobserver now.  So
     amount of simultaneously opened lock files depends on job slots
     available.

Release 1.24.0
==============

   * 'redo-cleanup tmp' also removes temporarily ('$3') created
     directories.

Release 1.23.0
==============

   * 'redo-ifchange''s '-f' option forces each target rebuilding.
     Comparing to 'redo', it will parallelize the process.
   * Inode's number is also stored as dependency information, just to
     prevent possible 'ctime' collision of two files.
   * Performance optimization: do not use target's temporary output file
     at all, if its hash equals to already existing target's one.  Just
     touch existing target file instead.

Release 1.22.0
==============

   * 'flock' locks replaced with POSIX 'fcntl' ones.  They could be more
     portable.
   * 'redo-depfix' command appeared, that traverses through all '.redo'
     directories and their dependency files, checks if corresponding
     targets has the same content but different 'ctime'/'mtime' values
     and rewrites dependencies with that updated inode information.
   * With '$REDO_STOP_IF_MODIFIED=1' environment variable redo will stop
     and fail if it meet externally modified file.  By default user is
     only warned about it, but building continues for convenience.

Release 1.21.0
==============

   * '$REDO_INODE_NO_TRUST' is replaced with '$REDO_INODE_TRUST'
     environment variable, that takes either 'none', or 'ctime' (the
     default one), or 'mtime' (new one).  Check documentation's separate
     page about that option.

Release 1.20.0
==============

   * Print warning message if both ifcreate and ifchange records were
     discovered after the target is done.

Release 1.19.0
==============

   * Skip target itself, when searching for corresponding '.do' file.
     For example 'default.do' must use '../default.do' instead of the
     self.

Release 1.18.0
==============

   * Fix regression of known OODs passing since 1.3.0, that leads to
     rebuilding of already built targets.

Release 1.17.0
==============

   * If 'redo*' process is killed, then it sends 'SIGTERM' to all his
     children too, properly terminating the whole job queue.

Release 1.16.0
==============

   * Unexistent targets are considered always out-of-date, as it should
     be.
   * Do not panic if '$REDO_LOGS=1' and we were unable to start the
     command.

Release 1.15.0
==============

   * Explicitly check if '$1' target is touched and then fail.
     Previously we check if '$1' was only altered.

Release 1.14.0
==============

   * Fixed 'redo-ifcreate''s targets proper relative paths to the
     target.

Release 1.13.0
==============

   * Use '.log-rec' extension, instead of '.log.rec', that won't collide
     with already existing '.log' and '.rec' in '.redo' directory.

Release 1.12.0
==============

   * Fix possible lack of success finish message printing if any of
     targets fail.

Release 1.11.0
==============

   * Fix nasty bug with incorrect '.redo/tgt.rec' files renaming.

Release 1.10.0
==============

   * 'redo-cleanup' now also cleans '.redo/tgt.log.rec' files.
   * Recursive logs do not require '.redo/tgt.rec' existence anymore.

Release 1.9.0
=============

   * Do not enable command line options not applicable to the command.
     For example '-j' option is only applicable to 'redo' and
     'redo-ifchange' commands.
   *    * '-dry-run' option is renamed to '-n'
        * '-logs' option is renamed to '-k'
        * '-silent' option is renamed to '-s'
   * When 'stderr' logs are kept, all environment variables, working
     directory, command line arguments, start/finish times, duration,
     participated PIDs, return codes are saved in corresponding
     '.redo/tgt.log.rec' file.  Some of them can be viewed with '-c'
     option to 'redo-log'.
   * 'redo-log''s '-r' option allows recursive, indented viewing of the
     whole redo commands invocations for the given target in serialized
     way.

Release 1.8.0
=============

   * Fixed possibly wrong relative path record of the dependency, when
     redo commands are run in different directory from the '.do'.
   * Fixed possible failing in 'redo-sources' if no '.dep' is found.

Release 1.7.0
=============

   * Optional compatibility (through '$REDO_MAKE={bmake|gmake}') with
     either NetBSD's bmake or GNU Make jobserver protocols, being able
     to tightly integrate 'goredo' with the 'make'.

Release 1.6.0
=============

   * 'redo-affects' command appeared, that shows all targets that will
     be affected by changing the specified ones.

Release 1.5.0
=============

   * 'redo-ood', 'redo-sources' and 'redo-targets' can optionally take
     list of targets to apply the command on, to narrow the result.
   * 'redo-sources' mistakenly missed '.do' files in the output.
   * 'redo-sources' now recursively searches for all source files, not
     the "first" depth level ones.

Release 1.4.1
=============

   * Even more simpler statusline cleaning function.

Release 1.4.0
=============

   * Fixed proper '-xx' and '$REDO_TRACE' workability, that previously
     was not applied to all targets.
   * Simpler statusline cleaning function, does not leading to
     whitespace junk after long lines.
   * Updated dependant libraries.

Release 1.3.0
=============

   * Experimental 'redo-sources', 'redo-targets' and 'redo-ood'
     commands.
   * Repetitive OOD determination optimization: pass all already known
     to be OOD targets to redoing targets.

Release 1.2.0
=============

   * Dependency files '.dep' extension changed to '.rec', to reflect its
     recfile format nature and editors file type better determination.
   * Reduce number of file descriptors kept open (1 instead of 4) while
     waiting for job slot token.

Release 1.1.0
=============

   * 'redo-cleanup' has '-dry-run' option.

Release 1.0.0
=============

   * 'Size' is stored in the state, for faster OOD detection.  Previous
     'goredo' state files won't work.
   * Setting of '$REDO_INODE_NO_TRUST' environment variable brings no
     trust to file inode's information (except for its size), forcing
     its checksum checking.
   * 'redo-whichdo' resembles 'apenwarr/redo''s one behaviour more.

Release 0.12.3
==============

   * Use an updated 'lukechampine.com/blake3' with possibly working
     arm64 macOS fix.

Release 0.12.2
==============

   * Try to fix failing 'lukechampine.com/blake3' on arm64 macOS.
   * Fixed tests permissions in the tarball.

Release 0.12.1
==============

   * Tarball uses 'vendor' directory without '$GOPATH' overriding.
     'goredo' and its dependencies anyway uses Go 1.12+ versions, that
     have 'vendor'-ing support.

Release 0.12.0
==============

   * Do not forget to save even output-less target as a dependency.
   * '-debug' option renamed to shorter '-d'.

Release 0.11.0
==============

   * Previously '$REDO_JOBS' overrided even explicitly specified '-j'
     option.  Fix that behaviour - command line options must precede
     environment variables.
   * BLAKE3 (https://github.com/BLAKE3-team/BLAKE3) replaces BLAKE2b
     hashing algorithm for even better performance.

Release 0.10.0
==============

   * Initial tarballed release.
