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