@node News @cindex news @unnumbered News @anchor{Release 2_3_0} @section Release 2.3.0 @itemize @item Fix regressions in @command{redo-whichdo} happened after huge refactoring. @end itemize @anchor{Release 2_2_0} @section Release 2.2.0 @itemize @item Prefix target's output lines with the name of the target. @end itemize @anchor{Release 2_1_0} @section Release 2.1.0 @itemize @item Mistakenly path to @file{.do} file was not absolute and OS can refuse to run it because it is not in @env{$PATH}. @end itemize @anchor{Release 2_0_0} @section Release 2.0.0 @itemize @item Huge quantity of performance optimisations. @item Fixed possible unexpected lock file closing. @item When resulting target has the same contents, it does not replace already existing one. That was done previously. But now it also copies the file's mode flags to the target (for example making it executable). @item If @command{redo-*} command runs under control of another (top-level) redo, then it does not parse the flags as options and treat each argument as a target, allowing passing the targets with dashes in the beginning. @item Prevented possible concurrent stderr writing by multiple running targets. @item @command{redo-depfix} command now always rewrites dependency files and calculates checksums of the files. @item Own binary format is used for dependency files (@file{.dep}), instead of recfile (@file{.rec}) one. It is several times smaller and much faster to parse. You must run @command{redo-depfix} to convert all existing @file{.redo/*.rec} files to that binary format. @item @command{redo-dep2rec} command appeared, that can convert @file{.dep} to recfile on stdout. @end itemize @anchor{Release 1_32_0} @section Release 1.32.0 @itemize @item Omit printing of the @code{resource deadlock avoided} warning when trying to take the lock. @end itemize @anchor{Release 1_31_0} @section Release 1.31.0 @itemize @item Fixed possible race when target can be built more than once. @item Print out finished targets much more quickly. @end itemize @anchor{Release 1_30_0} @section Release 1.30.0 @itemize @item Fixed wrong OOD-cache value of source file dependency. Targets could be rebuilt without any reason. @end itemize @anchor{Release 1_29_0} @section Release 1.29.0 @itemize @item Fix possible error when two always-ed targets are run simultaneously. @item Updated dependant libraries. @end itemize @anchor{Release 1_28_0} @section Release 1.28.0 @itemize @item Do not remove @file{.lock} files, that leads to possible races between running targets. Although @command{nncp-cleanup lock} can be used to cleanup. @item Updated dependant libraries. @end itemize @anchor{Release 1_27_1} @section Release 1.27.1 @itemize @item Fixed lack of @file{.redo.}-prefix in temporary file names. @end itemize @anchor{Release 1_27_0} @section Release 1.27.0 @itemize @item Improved out-of-date check and @file{.do} files search performance, because of caching their results. @end itemize @anchor{Release 1_26_0} @section Release 1.26.0 @itemize @item Debug output contained colour-related attribute even if @env{$NO_COLOR=1} was set. @item Updated dependant libraries. @end itemize @anchor{Release 1_25_0} @section Release 1.25.0 @itemize @item Target's lock file requires a token from the jobserver now. So amount of simultaneously opened lock files depends on job slots available. @end itemize @anchor{Release 1_24_0} @section Release 1.24.0 @itemize @item @command{redo-cleanup tmp} also removes temporarily (@code{$3}) created directories. @end itemize @anchor{Release 1_23_0} @section Release 1.23.0 @itemize @item @command{redo-ifchange}'s @option{-f} option forces each target rebuilding. Comparing to @command{redo}, it will parallelize the process. @item Inode's number is also stored as dependency information, just to prevent possible @code{ctime} collision of two files. @item 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. @end itemize @anchor{Release 1_22_0} @section Release 1.22.0 @itemize @item @code{flock} locks replaced with POSIX @code{fcntl} ones. They could be more portable. @item @command{redo-depfix} command appeared, that traverses through all @file{.redo} directories and their dependency files, checks if corresponding targets has the same content but different @code{ctime}/@code{mtime} values and rewrites dependencies with that updated inode information. @item With @env{$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. @end itemize @anchor{Release 1_21_0} @section Release 1.21.0 @itemize @item @env{$REDO_INODE_NO_TRUST} is replaced with @env{$REDO_INODE_TRUST} environment variable, that takes either @code{none}, or @code{ctime} (the default one), or @code{mtime} (new one). Check documentation's separate page about that option. @end itemize @anchor{Release 1_20_0} @section Release 1.20.0 @itemize @item Print warning message if both ifcreate and ifchange records were discovered after the target is done. @end itemize @anchor{Release 1_19_0} @section Release 1.19.0 @itemize @item Skip target itself, when searching for corresponding @file{.do} file. For example @file{default.do} must use @file{../default.do} instead of the self. @end itemize @anchor{Release 1_18_0} @section Release 1.18.0 @itemize @item Fix regression of known OODs passing since 1.3.0, that leads to rebuilding of already built targets. @end itemize @anchor{Release 1_17_0} @section Release 1.17.0 @itemize @item If @command{redo*} process is killed, then it sends @code{SIGTERM} to all his children too, properly terminating the whole job queue. @end itemize @anchor{Release 1_16_0} @section Release 1.16.0 @itemize @item Unexistent targets are considered always out-of-date, as it should be. @item Do not panic if @env{$REDO_LOGS=1} and we were unable to start the command. @end itemize @anchor{Release 1_15_0} @section Release 1.15.0 @itemize @item Explicitly check if @code{$1} target is touched and then fail. Previously we check if @code{$1} was only altered. @end itemize @anchor{Release 1_14_0} @section Release 1.14.0 @itemize @item Fixed @command{redo-ifcreate}'s targets proper relative paths to the target. @end itemize @anchor{Release 1_13_0} @section Release 1.13.0 @itemize @item Use @file{.log-rec} extension, instead of @file{.log.rec}, that won't collide with already existing @file{.log} and @file{.rec} in @file{.redo} directory. @end itemize @anchor{Release 1_12_0} @section Release 1.12.0 @itemize @item Fix possible lack of success finish message printing if any of targets fail. @end itemize @anchor{Release 1_11_0} @section Release 1.11.0 @itemize @item Fix nasty bug with incorrect @file{.redo/tgt.rec} files renaming. @end itemize @anchor{Release 1_10_0} @section Release 1.10.0 @itemize @item @command{redo-cleanup} now also cleans @file{.redo/tgt.log.rec} files. @item Recursive logs do not require @file{.redo/tgt.rec} existence anymore. @end itemize @anchor{Release 1_9_0} @section Release 1.9.0 @itemize @item Do not enable command line options not applicable to the command. For example @option{-j} option is only applicable to @command{redo} and @command{redo-ifchange} commands. @item @itemize @item @option{-dry-run} option is renamed to @option{-n} @item @option{-logs} option is renamed to @option{-k} @item @option{-silent} option is renamed to @option{-s} @end itemize @item When @code{stderr} logs are kept, all environment variables, working directory, command line arguments, start/finish times, duration, participated PIDs, return codes are saved in corresponding @file{.redo/tgt.log.rec} file. Some of them can be viewed with @option{-c} option to @command{redo-log}. @item @command{redo-log}'s @option{-r} option allows recursive, indented viewing of the whole redo commands invocations for the given target in serialized way. @end itemize @anchor{Release 1_8_0} @section Release 1.8.0 @itemize @item Fixed possibly wrong relative path record of the dependency, when redo commands are run in different directory from the @file{.do}. @item Fixed possible failing in @command{redo-sources} if no @file{.dep} is found. @end itemize @anchor{Release 1_7_0} @section Release 1.7.0 @itemize @item Optional compatibility (through @env{$REDO_MAKE=@{bmake|gmake@}}) with either NetBSD's bmake or GNU Make jobserver protocols, being able to tightly integrate @command{goredo} with the @command{make}. @end itemize @anchor{Release 1_6_0} @section Release 1.6.0 @itemize @item @command{redo-affects} command appeared, that shows all targets that will be affected by changing the specified ones. @end itemize @anchor{Release 1_5_0} @section Release 1.5.0 @itemize @item @command{redo-ood}, @command{redo-sources} and @command{redo-targets} can optionally take list of targets to apply the command on, to narrow the result. @item @command{redo-sources} mistakenly missed @file{.do} files in the output. @item @command{redo-sources} now recursively searches for all source files, not the "first" depth level ones. @end itemize @anchor{Release 1_4_1} @section Release 1.4.1 @itemize @item Even more simpler statusline cleaning function. @end itemize @anchor{Release 1_4_0} @section Release 1.4.0 @itemize @item Fixed proper @option{-xx} and @env{$REDO_TRACE} workability, that previously was not applied to all targets. @item Simpler statusline cleaning function, does not leading to whitespace junk after long lines. @item Updated dependant libraries. @end itemize @anchor{Release 1_3_0} @section Release 1.3.0 @itemize @item Experimental @command{redo-sources}, @command{redo-targets} and @command{redo-ood} commands. @item Repetitive OOD determination optimization: pass all already known to be OOD targets to redoing targets. @end itemize @anchor{Release 1_2_0} @section Release 1.2.0 @itemize @item Dependency files @file{.dep} extension changed to @file{.rec}, to reflect its recfile format nature and editors file type better determination. @item Reduce number of file descriptors kept open (1 instead of 4) while waiting for job slot token. @end itemize @anchor{Release 1_1_0} @section Release 1.1.0 @itemize @item @command{redo-cleanup} has @option{-dry-run} option. @end itemize @anchor{Release 1_0_0} @section Release 1.0.0 @itemize @item @code{Size} is stored in the state, for faster OOD detection. Previous @command{goredo} state files won't work. @item Setting of @env{$REDO_INODE_NO_TRUST} environment variable brings no trust to file inode's information (except for its size), forcing its checksum checking. @item @command{redo-whichdo} resembles @code{apenwarr/redo}'s one behaviour more. @end itemize @anchor{Release 0_12_3} @section Release 0.12.3 @itemize @item Use an updated @code{lukechampine.com/blake3} with possibly working arm64 macOS fix. @end itemize @anchor{Release 0_12_2} @section Release 0.12.2 @itemize @item Try to fix failing @code{lukechampine.com/blake3} on arm64 macOS. @item Fixed tests permissions in the tarball. @end itemize @anchor{Release 0_12_1} @section Release 0.12.1 @itemize @item Tarball uses @file{vendor} directory without @env{$GOPATH} overriding. @command{goredo} and its dependencies anyway uses Go 1.12+ versions, that have @file{vendor}-ing support. @end itemize @anchor{Release 0_12_0} @section Release 0.12.0 @itemize @item Do not forget to save even output-less target as a dependency. @item @option{-debug} option renamed to shorter @option{-d}. @end itemize @anchor{Release 0_11_0} @section Release 0.11.0 @itemize @item Previously @env{$REDO_JOBS} overrided even explicitly specified @option{-j} option. Fix that behaviour -- command line options must precede environment variables. @item @url{https://github.com/BLAKE3-team/BLAKE3, BLAKE3} replaces BLAKE2b hashing algorithm for even better performance. @end itemize @anchor{Release 0_10_0} @section Release 0.10.0 @itemize @item Initial tarballed release. @end itemize