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