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