9 Integration tests do not depend on non-portal @command{stat} command.
12 @anchor{Release 2_6_1}
13 @section Release 2.6.1
16 Integration tests do not depend on Python or Git.
19 @anchor{Release 2_6_0}
20 @section Release 2.6.0
23 Omit possible obtrusive error of non-existent @file{.dep} file
24 opening of the failed target.
27 @anchor{Release 2_5_0}
28 @section Release 2.5.0
31 Prevent rare race in the code, where externally modified target may
35 @anchor{Release 2_4_0}
36 @section Release 2.4.0
39 Continue regression fixing of @command{redo-whichdo}.
42 @anchor{Release 2_3_0}
43 @section Release 2.3.0
46 Fix regressions in @command{redo-whichdo} happened after huge refactoring.
49 @anchor{Release 2_2_0}
50 @section Release 2.2.0
53 Prefix target's output lines with the name of the target.
56 @anchor{Release 2_1_0}
57 @section Release 2.1.0
60 Mistakenly path to @file{.do} file was not absolute and OS can
61 refuse to run it because it is not in @env{$PATH}.
64 @anchor{Release 2_0_0}
65 @section Release 2.0.0
68 Huge quantity of performance optimisations.
71 Fixed possible unexpected lock file closing.
74 When resulting target has the same contents, it does not replace
75 already existing one. That was done previously. But now it also
76 copies the file's mode flags to the target (for example making it
80 If @command{redo-*} command runs under control of another
81 (top-level) redo, then it does not parse the flags as options and
82 treat each argument as a target, allowing passing the targets with
83 dashes in the beginning.
86 Prevented possible concurrent stderr writing by multiple running targets.
89 @command{redo-depfix} command now always rewrites dependency files
90 and calculates checksums of the files.
93 Own binary format is used for dependency files (@file{.dep}),
94 instead of recfile (@file{.rec}) one. It is several times smaller
95 and much faster to parse. You must run @command{redo-depfix} to
96 convert all existing @file{.redo/*.rec} files to that binary format.
99 @command{redo-dep2rec} command appeared, that can convert
100 @file{.dep} to recfile on stdout.
104 @anchor{Release 1_32_0}
105 @section Release 1.32.0
108 Omit printing of the @code{resource deadlock avoided} warning when
109 trying to take the lock.
112 @anchor{Release 1_31_0}
113 @section Release 1.31.0
116 Fixed possible race when target can be built more than once.
118 Print out finished targets much more quickly.
121 @anchor{Release 1_30_0}
122 @section Release 1.30.0
125 Fixed wrong OOD-cache value of source file dependency.
126 Targets could be rebuilt without any reason.
129 @anchor{Release 1_29_0}
130 @section Release 1.29.0
133 Fix possible error when two always-ed targets are run simultaneously.
135 Updated dependant libraries.
138 @anchor{Release 1_28_0}
139 @section Release 1.28.0
142 Do not remove @file{.lock} files, that leads to possible races
143 between running targets. Although @command{nncp-cleanup lock}
144 can be used to cleanup.
146 Updated dependant libraries.
149 @anchor{Release 1_27_1}
150 @section Release 1.27.1
153 Fixed lack of @file{.redo.}-prefix in temporary file names.
156 @anchor{Release 1_27_0}
157 @section Release 1.27.0
160 Improved out-of-date check and @file{.do} files search performance,
161 because of caching their results.
164 @anchor{Release 1_26_0}
165 @section Release 1.26.0
168 Debug output contained colour-related attribute even if
169 @env{$NO_COLOR=1} was set.
171 Updated dependant libraries.
174 @anchor{Release 1_25_0}
175 @section Release 1.25.0
178 Target's lock file requires a token from the jobserver now. So
179 amount of simultaneously opened lock files depends on job slots
183 @anchor{Release 1_24_0}
184 @section Release 1.24.0
187 @command{redo-cleanup tmp} also removes temporarily (@code{$3})
191 @anchor{Release 1_23_0}
192 @section Release 1.23.0
195 @command{redo-ifchange}'s @option{-f} option forces each target
196 rebuilding. Comparing to @command{redo}, it will parallelize the
199 Inode's number is also stored as dependency information, just to
200 prevent possible @code{ctime} collision of two files.
202 Performance optimization: do not use target's temporary output file
203 at all, if its hash equals to already existing target's one. Just
204 touch existing target file instead.
207 @anchor{Release 1_22_0}
208 @section Release 1.22.0
211 @code{flock} locks replaced with POSIX @code{fcntl} ones.
212 They could be more portable.
214 @command{redo-depfix} command appeared, that traverses through all
215 @file{.redo} directories and their dependency files, checks if
216 corresponding targets has the same content but different
217 @code{ctime}/@code{mtime} values and rewrites dependencies with that
218 updated inode information.
220 With @env{$REDO_STOP_IF_MODIFIED=1} environment variable redo will
221 stop and fail if it meet externally modified file. By default user
222 is only warned about it, but building continues for convenience.
225 @anchor{Release 1_21_0}
226 @section Release 1.21.0
229 @env{$REDO_INODE_NO_TRUST} is replaced with @env{$REDO_INODE_TRUST}
230 environment variable, that takes either @code{none}, or @code{ctime}
231 (the default one), or @code{mtime} (new one). Check documentation's
232 separate page about that option.
235 @anchor{Release 1_20_0}
236 @section Release 1.20.0
239 Print warning message if both ifcreate and ifchange records were
240 discovered after the target is done.
243 @anchor{Release 1_19_0}
244 @section Release 1.19.0
247 Skip target itself, when searching for corresponding @file{.do}
248 file. For example @file{default.do} must use @file{../default.do}
252 @anchor{Release 1_18_0}
253 @section Release 1.18.0
256 Fix regression of known OODs passing since 1.3.0, that leads to
257 rebuilding of already built targets.
260 @anchor{Release 1_17_0}
261 @section Release 1.17.0
264 If @command{redo*} process is killed, then it sends @code{SIGTERM}
265 to all his children too, properly terminating the whole job queue.
268 @anchor{Release 1_16_0}
269 @section Release 1.16.0
272 Unexistent targets are considered always out-of-date, as it should be.
274 Do not panic if @env{$REDO_LOGS=1} and we were unable to start the command.
277 @anchor{Release 1_15_0}
278 @section Release 1.15.0
281 Explicitly check if @code{$1} target is touched and then fail.
282 Previously we check if @code{$1} was only altered.
285 @anchor{Release 1_14_0}
286 @section Release 1.14.0
289 Fixed @command{redo-ifcreate}'s targets proper relative paths to the target.
292 @anchor{Release 1_13_0}
293 @section Release 1.13.0
296 Use @file{.log-rec} extension, instead of @file{.log.rec}, that
297 won't collide with already existing @file{.log} and @file{.rec} in
298 @file{.redo} directory.
301 @anchor{Release 1_12_0}
302 @section Release 1.12.0
305 Fix possible lack of success finish message printing if any of
309 @anchor{Release 1_11_0}
310 @section Release 1.11.0
313 Fix nasty bug with incorrect @file{.redo/tgt.rec} files renaming.
316 @anchor{Release 1_10_0}
317 @section Release 1.10.0
320 @command{redo-cleanup} now also cleans @file{.redo/tgt.log.rec} files.
322 Recursive logs do not require @file{.redo/tgt.rec} existence anymore.
325 @anchor{Release 1_9_0}
326 @section Release 1.9.0
329 Do not enable command line options not applicable to the command.
330 For example @option{-j} option is only applicable to @command{redo}
331 and @command{redo-ifchange} commands.
334 @item @option{-dry-run} option is renamed to @option{-n}
335 @item @option{-logs} option is renamed to @option{-k}
336 @item @option{-silent} option is renamed to @option{-s}
339 When @code{stderr} logs are kept, all environment variables, working
340 directory, command line arguments, start/finish times, duration,
341 participated PIDs, return codes are saved in corresponding
342 @file{.redo/tgt.log.rec} file. Some of them can be viewed with
343 @option{-c} option to @command{redo-log}.
345 @command{redo-log}'s @option{-r} option allows recursive, indented
346 viewing of the whole redo commands invocations for the given target
350 @anchor{Release 1_8_0}
351 @section Release 1.8.0
354 Fixed possibly wrong relative path record of the dependency, when
355 redo commands are run in different directory from the @file{.do}.
357 Fixed possible failing in @command{redo-sources} if no @file{.dep}
361 @anchor{Release 1_7_0}
362 @section Release 1.7.0
365 Optional compatibility (through @env{$REDO_MAKE=@{bmake|gmake@}})
366 with either NetBSD's bmake or GNU Make jobserver protocols, being
367 able to tightly integrate @command{goredo} with the @command{make}.
370 @anchor{Release 1_6_0}
371 @section Release 1.6.0
374 @command{redo-affects} command appeared, that shows all targets that
375 will be affected by changing the specified ones.
378 @anchor{Release 1_5_0}
379 @section Release 1.5.0
382 @command{redo-ood}, @command{redo-sources} and
383 @command{redo-targets} can optionally take list of targets to apply
384 the command on, to narrow the result.
386 @command{redo-sources} mistakenly missed @file{.do} files in the output.
388 @command{redo-sources} now recursively searches for all source
389 files, not the "first" depth level ones.
392 @anchor{Release 1_4_1}
393 @section Release 1.4.1
396 Even more simpler statusline cleaning function.
399 @anchor{Release 1_4_0}
400 @section Release 1.4.0
403 Fixed proper @option{-xx} and @env{$REDO_TRACE} workability, that
404 previously was not applied to all targets.
406 Simpler statusline cleaning function, does not leading to whitespace
407 junk after long lines.
409 Updated dependant libraries.
412 @anchor{Release 1_3_0}
413 @section Release 1.3.0
416 Experimental @command{redo-sources}, @command{redo-targets} and
417 @command{redo-ood} commands.
419 Repetitive OOD determination optimization: pass all already known to
420 be OOD targets to redoing targets.
423 @anchor{Release 1_2_0}
424 @section Release 1.2.0
427 Dependency files @file{.dep} extension changed to @file{.rec}, to
428 reflect its recfile format nature and editors file type better
431 Reduce number of file descriptors kept open (1 instead of 4) while
432 waiting for job slot token.
435 @anchor{Release 1_1_0}
436 @section Release 1.1.0
439 @command{redo-cleanup} has @option{-dry-run} option.
442 @anchor{Release 1_0_0}
443 @section Release 1.0.0
446 @code{Size} is stored in the state, for faster OOD detection.
447 Previous @command{goredo} state files won't work.
449 Setting of @env{$REDO_INODE_NO_TRUST} environment variable brings no
450 trust to file inode's information (except for its size), forcing its
453 @command{redo-whichdo} resembles @code{apenwarr/redo}'s one behaviour more.
456 @anchor{Release 0_12_3}
457 @section Release 0.12.3
460 Use an updated @code{lukechampine.com/blake3} with possibly working
464 @anchor{Release 0_12_2}
465 @section Release 0.12.2
468 Try to fix failing @code{lukechampine.com/blake3} on arm64 macOS.
470 Fixed tests permissions in the tarball.
473 @anchor{Release 0_12_1}
474 @section Release 0.12.1
477 Tarball uses @file{vendor} directory without @env{$GOPATH}
478 overriding. @command{goredo} and its dependencies anyway uses Go
479 1.12+ versions, that have @file{vendor}-ing support.
482 @anchor{Release 0_12_0}
483 @section Release 0.12.0
486 Do not forget to save even output-less target as a dependency.
488 @option{-debug} option renamed to shorter @option{-d}.
491 @anchor{Release 0_11_0}
492 @section Release 0.11.0
495 Previously @env{$REDO_JOBS} overrided even explicitly specified
496 @option{-j} option. Fix that behaviour -- command line options must
497 precede environment variables.
498 @item @url{https://github.com/BLAKE3-team/BLAKE3, BLAKE3} replaces
499 BLAKE2b hashing algorithm for even better performance.
502 @anchor{Release 0_10_0}
503 @section Release 0.10.0
505 @item Initial tarballed release.