]> Cypherpunks.ru repositories - goredo.git/blob - doc/news.texi
Fix whichdo regressions
[goredo.git] / doc / news.texi
1 @node News
2 @cindex news
3 @unnumbered News
4
5 @anchor{Release 2_3_0}
6 @section Release 2.3.0
7 @itemize
8 @item
9     Fix regressions in @command{redo-whichdo} happened after huge refactoring.
10 @end itemize
11
12 @anchor{Release 2_2_0}
13 @section Release 2.2.0
14 @itemize
15 @item
16     Prefix target's output lines with the name of the target.
17 @end itemize
18
19 @anchor{Release 2_1_0}
20 @section Release 2.1.0
21 @itemize
22 @item
23     Mistakenly path to @file{.do} file was not absolute and OS can
24     refuse to run it because it is not in @env{$PATH}.
25 @end itemize
26
27 @anchor{Release 2_0_0}
28 @section Release 2.0.0
29 @itemize
30 @item
31     Huge quantity of performance optimisations.
32
33 @item
34     Fixed possible unexpected lock file closing.
35
36 @item
37     When resulting target has the same contents, it does not replace
38     already existing one. That was done previously. But now it also
39     copies the file's mode flags to the target (for example making it
40     executable).
41
42 @item
43     If @command{redo-*} command runs under control of another
44     (top-level) redo, then it does not parse the flags as options and
45     treat each argument as a target, allowing passing the targets with
46     dashes in the beginning.
47
48 @item
49     Prevented possible concurrent stderr writing by multiple running targets.
50
51 @item
52     @command{redo-depfix} command now always rewrites dependency files
53     and calculates checksums of the files.
54
55 @item
56     Own binary format is used for dependency files (@file{.dep}),
57     instead of recfile (@file{.rec}) one. It is several times smaller
58     and much faster to parse. You must run @command{redo-depfix} to
59     convert all existing @file{.redo/*.rec} files to that binary format.
60
61 @item
62     @command{redo-dep2rec} command appeared, that can convert
63     @file{.dep} to recfile on stdout.
64
65 @end itemize
66
67 @anchor{Release 1_32_0}
68 @section Release 1.32.0
69 @itemize
70 @item
71     Omit printing of the @code{resource deadlock avoided} warning when
72     trying to take the lock.
73 @end itemize
74
75 @anchor{Release 1_31_0}
76 @section Release 1.31.0
77 @itemize
78 @item
79     Fixed possible race when target can be built more than once.
80 @item
81     Print out finished targets much more quickly.
82 @end itemize
83
84 @anchor{Release 1_30_0}
85 @section Release 1.30.0
86 @itemize
87 @item
88     Fixed wrong OOD-cache value of source file dependency.
89     Targets could be rebuilt without any reason.
90 @end itemize
91
92 @anchor{Release 1_29_0}
93 @section Release 1.29.0
94 @itemize
95 @item
96     Fix possible error when two always-ed targets are run simultaneously.
97 @item
98     Updated dependant libraries.
99 @end itemize
100
101 @anchor{Release 1_28_0}
102 @section Release 1.28.0
103 @itemize
104 @item
105     Do not remove @file{.lock} files, that leads to possible races
106     between running targets. Although @command{nncp-cleanup lock}
107     can be used to cleanup.
108 @item
109     Updated dependant libraries.
110 @end itemize
111
112 @anchor{Release 1_27_1}
113 @section Release 1.27.1
114 @itemize
115 @item
116     Fixed lack of @file{.redo.}-prefix in temporary file names.
117 @end itemize
118
119 @anchor{Release 1_27_0}
120 @section Release 1.27.0
121 @itemize
122 @item
123     Improved out-of-date check and @file{.do} files search performance,
124     because of caching their results.
125 @end itemize
126
127 @anchor{Release 1_26_0}
128 @section Release 1.26.0
129 @itemize
130 @item
131     Debug output contained colour-related attribute even if
132     @env{$NO_COLOR=1} was set.
133 @item
134     Updated dependant libraries.
135 @end itemize
136
137 @anchor{Release 1_25_0}
138 @section Release 1.25.0
139 @itemize
140 @item
141     Target's lock file requires a token from the jobserver now. So
142     amount of simultaneously opened lock files depends on job slots
143     available.
144 @end itemize
145
146 @anchor{Release 1_24_0}
147 @section Release 1.24.0
148 @itemize
149 @item
150     @command{redo-cleanup tmp} also removes temporarily (@code{$3})
151     created directories.
152 @end itemize
153
154 @anchor{Release 1_23_0}
155 @section Release 1.23.0
156 @itemize
157 @item
158     @command{redo-ifchange}'s @option{-f} option forces each target
159     rebuilding. Comparing to @command{redo}, it will parallelize the
160     process.
161 @item
162     Inode's number is also stored as dependency information, just to
163     prevent possible @code{ctime} collision of two files.
164 @item
165     Performance optimization: do not use target's temporary output file
166     at all, if its hash equals to already existing target's one. Just
167     touch existing target file instead.
168 @end itemize
169
170 @anchor{Release 1_22_0}
171 @section Release 1.22.0
172 @itemize
173 @item
174     @code{flock} locks replaced with POSIX @code{fcntl} ones.
175     They could be more portable.
176 @item
177     @command{redo-depfix} command appeared, that traverses through all
178     @file{.redo} directories and their dependency files, checks if
179     corresponding targets has the same content but different
180     @code{ctime}/@code{mtime} values and rewrites dependencies with that
181     updated inode information.
182 @item
183     With @env{$REDO_STOP_IF_MODIFIED=1} environment variable redo will
184     stop and fail if it meet externally modified file. By default user
185     is only warned about it, but building continues for convenience.
186 @end itemize
187
188 @anchor{Release 1_21_0}
189 @section Release 1.21.0
190 @itemize
191 @item
192     @env{$REDO_INODE_NO_TRUST} is replaced with @env{$REDO_INODE_TRUST}
193     environment variable, that takes either @code{none}, or @code{ctime}
194     (the default one), or @code{mtime} (new one). Check documentation's
195     separate page about that option.
196 @end itemize
197
198 @anchor{Release 1_20_0}
199 @section Release 1.20.0
200 @itemize
201 @item
202     Print warning message if both ifcreate and ifchange records were
203     discovered after the target is done.
204 @end itemize
205
206 @anchor{Release 1_19_0}
207 @section Release 1.19.0
208 @itemize
209 @item
210     Skip target itself, when searching for corresponding @file{.do}
211     file. For example @file{default.do} must use @file{../default.do}
212     instead of the self.
213 @end itemize
214
215 @anchor{Release 1_18_0}
216 @section Release 1.18.0
217 @itemize
218 @item
219     Fix regression of known OODs passing since 1.3.0, that leads to
220     rebuilding of already built targets.
221 @end itemize
222
223 @anchor{Release 1_17_0}
224 @section Release 1.17.0
225 @itemize
226 @item
227     If @command{redo*} process is killed, then it sends @code{SIGTERM}
228     to all his children too, properly terminating the whole job queue.
229 @end itemize
230
231 @anchor{Release 1_16_0}
232 @section Release 1.16.0
233 @itemize
234 @item
235     Unexistent targets are considered always out-of-date, as it should be.
236 @item
237     Do not panic if @env{$REDO_LOGS=1} and we were unable to start the command.
238 @end itemize
239
240 @anchor{Release 1_15_0}
241 @section Release 1.15.0
242 @itemize
243 @item
244     Explicitly check if @code{$1} target is touched and then fail.
245     Previously we check if @code{$1} was only altered.
246 @end itemize
247
248 @anchor{Release 1_14_0}
249 @section Release 1.14.0
250 @itemize
251 @item
252     Fixed @command{redo-ifcreate}'s targets proper relative paths to the target.
253 @end itemize
254
255 @anchor{Release 1_13_0}
256 @section Release 1.13.0
257 @itemize
258 @item
259     Use @file{.log-rec} extension, instead of @file{.log.rec}, that
260     won't collide with already existing @file{.log} and @file{.rec} in
261     @file{.redo} directory.
262 @end itemize
263
264 @anchor{Release 1_12_0}
265 @section Release 1.12.0
266 @itemize
267 @item
268     Fix possible lack of success finish message printing if any of
269     targets fail.
270 @end itemize
271
272 @anchor{Release 1_11_0}
273 @section Release 1.11.0
274 @itemize
275 @item
276     Fix nasty bug with incorrect @file{.redo/tgt.rec} files renaming.
277 @end itemize
278
279 @anchor{Release 1_10_0}
280 @section Release 1.10.0
281 @itemize
282 @item
283     @command{redo-cleanup} now also cleans @file{.redo/tgt.log.rec} files.
284 @item
285     Recursive logs do not require @file{.redo/tgt.rec} existence anymore.
286 @end itemize
287
288 @anchor{Release 1_9_0}
289 @section Release 1.9.0
290 @itemize
291 @item
292     Do not enable command line options not applicable to the command.
293     For example @option{-j} option is only applicable to @command{redo}
294     and @command{redo-ifchange} commands.
295 @item
296     @itemize
297     @item @option{-dry-run} option is renamed to @option{-n}
298     @item @option{-logs} option is renamed to @option{-k}
299     @item @option{-silent} option is renamed to @option{-s}
300     @end itemize
301 @item
302     When @code{stderr} logs are kept, all environment variables, working
303     directory, command line arguments, start/finish times, duration,
304     participated PIDs, return codes are saved in corresponding
305     @file{.redo/tgt.log.rec} file. Some of them can be viewed with
306     @option{-c} option to @command{redo-log}.
307 @item
308     @command{redo-log}'s @option{-r} option allows recursive, indented
309     viewing of the whole redo commands invocations for the given target
310     in serialized way.
311 @end itemize
312
313 @anchor{Release 1_8_0}
314 @section Release 1.8.0
315 @itemize
316 @item
317     Fixed possibly wrong relative path record of the dependency, when
318     redo commands are run in different directory from the @file{.do}.
319 @item
320     Fixed possible failing in @command{redo-sources} if no @file{.dep}
321     is found.
322 @end itemize
323
324 @anchor{Release 1_7_0}
325 @section Release 1.7.0
326 @itemize
327 @item
328     Optional compatibility (through @env{$REDO_MAKE=@{bmake|gmake@}})
329     with either NetBSD's bmake or GNU Make jobserver protocols, being
330     able to tightly integrate @command{goredo} with the @command{make}.
331 @end itemize
332
333 @anchor{Release 1_6_0}
334 @section Release 1.6.0
335 @itemize
336 @item
337     @command{redo-affects} command appeared, that shows all targets that
338     will be affected by changing the specified ones.
339 @end itemize
340
341 @anchor{Release 1_5_0}
342 @section Release 1.5.0
343 @itemize
344 @item
345     @command{redo-ood}, @command{redo-sources} and
346     @command{redo-targets} can optionally take list of targets to apply
347     the command on, to narrow the result.
348 @item
349     @command{redo-sources} mistakenly missed @file{.do} files in the output.
350 @item
351     @command{redo-sources} now recursively searches for all source
352     files, not the "first" depth level ones.
353 @end itemize
354
355 @anchor{Release 1_4_1}
356 @section Release 1.4.1
357 @itemize
358 @item
359     Even more simpler statusline cleaning function.
360 @end itemize
361
362 @anchor{Release 1_4_0}
363 @section Release 1.4.0
364 @itemize
365 @item
366     Fixed proper @option{-xx} and @env{$REDO_TRACE} workability, that
367     previously was not applied to all targets.
368 @item
369     Simpler statusline cleaning function, does not leading to whitespace
370     junk after long lines.
371 @item
372     Updated dependant libraries.
373 @end itemize
374
375 @anchor{Release 1_3_0}
376 @section Release 1.3.0
377 @itemize
378 @item
379     Experimental @command{redo-sources}, @command{redo-targets} and
380     @command{redo-ood} commands.
381 @item
382     Repetitive OOD determination optimization: pass all already known to
383     be OOD targets to redoing targets.
384 @end itemize
385
386 @anchor{Release 1_2_0}
387 @section Release 1.2.0
388 @itemize
389 @item
390     Dependency files @file{.dep} extension changed to @file{.rec}, to
391     reflect its recfile format nature and editors file type better
392     determination.
393 @item
394     Reduce number of file descriptors kept open (1 instead of 4) while
395     waiting for job slot token.
396 @end itemize
397
398 @anchor{Release 1_1_0}
399 @section Release 1.1.0
400 @itemize
401 @item
402     @command{redo-cleanup} has @option{-dry-run} option.
403 @end itemize
404
405 @anchor{Release 1_0_0}
406 @section Release 1.0.0
407 @itemize
408 @item
409     @code{Size} is stored in the state, for faster OOD detection.
410     Previous @command{goredo} state files won't work.
411 @item
412     Setting of @env{$REDO_INODE_NO_TRUST} environment variable brings no
413     trust to file inode's information (except for its size), forcing its
414     checksum checking.
415 @item
416     @command{redo-whichdo} resembles @code{apenwarr/redo}'s one behaviour more.
417 @end itemize
418
419 @anchor{Release 0_12_3}
420 @section Release 0.12.3
421 @itemize
422 @item
423     Use an updated @code{lukechampine.com/blake3} with possibly working
424     arm64 macOS fix.
425 @end itemize
426
427 @anchor{Release 0_12_2}
428 @section Release 0.12.2
429 @itemize
430 @item
431     Try to fix failing @code{lukechampine.com/blake3} on arm64 macOS.
432 @item
433     Fixed tests permissions in the tarball.
434 @end itemize
435
436 @anchor{Release 0_12_1}
437 @section Release 0.12.1
438 @itemize
439 @item
440     Tarball uses @file{vendor} directory without @env{$GOPATH}
441     overriding. @command{goredo} and its dependencies anyway uses Go
442     1.12+ versions, that have @file{vendor}-ing support.
443 @end itemize
444
445 @anchor{Release 0_12_0}
446 @section Release 0.12.0
447 @itemize
448 @item
449     Do not forget to save even output-less target as a dependency.
450 @item
451     @option{-debug} option renamed to shorter @option{-d}.
452 @end itemize
453
454 @anchor{Release 0_11_0}
455 @section Release 0.11.0
456 @itemize
457 @item
458     Previously @env{$REDO_JOBS} overrided even explicitly specified
459     @option{-j} option. Fix that behaviour -- command line options must
460     precede environment variables.
461 @item @url{https://github.com/BLAKE3-team/BLAKE3, BLAKE3} replaces
462     BLAKE2b hashing algorithm for even better performance.
463 @end itemize
464
465 @anchor{Release 0_10_0}
466 @section Release 0.10.0
467 @itemize
468 @item Initial tarballed release.
469 @end itemize