]> Cypherpunks.ru repositories - goredo.git/blob - doc/news.texi
Download link for 2.6.2 release
[goredo.git] / doc / news.texi
1 @node News
2 @cindex news
3 @unnumbered News
4
5 @anchor{Release 2_6_2}
6 @section Release 2.6.2
7 @itemize
8 @item
9     Integration tests do not depend on non-portal @command{stat} command.
10 @end itemize
11
12 @anchor{Release 2_6_1}
13 @section Release 2.6.1
14 @itemize
15 @item
16     Integration tests do not depend on Python or Git.
17 @end itemize
18
19 @anchor{Release 2_6_0}
20 @section Release 2.6.0
21 @itemize
22 @item
23     Omit possible obtrusive error of non-existent @file{.dep} file
24     opening of the failed target.
25 @end itemize
26
27 @anchor{Release 2_5_0}
28 @section Release 2.5.0
29 @itemize
30 @item
31     Prevent rare race in the code, where externally modified target may
32     panic the program.
33 @end itemize
34
35 @anchor{Release 2_4_0}
36 @section Release 2.4.0
37 @itemize
38 @item
39     Continue regression fixing of @command{redo-whichdo}.
40 @end itemize
41
42 @anchor{Release 2_3_0}
43 @section Release 2.3.0
44 @itemize
45 @item
46     Fix regressions in @command{redo-whichdo} happened after huge refactoring.
47 @end itemize
48
49 @anchor{Release 2_2_0}
50 @section Release 2.2.0
51 @itemize
52 @item
53     Prefix target's output lines with the name of the target.
54 @end itemize
55
56 @anchor{Release 2_1_0}
57 @section Release 2.1.0
58 @itemize
59 @item
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}.
62 @end itemize
63
64 @anchor{Release 2_0_0}
65 @section Release 2.0.0
66 @itemize
67 @item
68     Huge quantity of performance optimisations.
69
70 @item
71     Fixed possible unexpected lock file closing.
72
73 @item
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
77     executable).
78
79 @item
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.
84
85 @item
86     Prevented possible concurrent stderr writing by multiple running targets.
87
88 @item
89     @command{redo-depfix} command now always rewrites dependency files
90     and calculates checksums of the files.
91
92 @item
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.
97
98 @item
99     @command{redo-dep2rec} command appeared, that can convert
100     @file{.dep} to recfile on stdout.
101
102 @end itemize
103
104 @anchor{Release 1_32_0}
105 @section Release 1.32.0
106 @itemize
107 @item
108     Omit printing of the @code{resource deadlock avoided} warning when
109     trying to take the lock.
110 @end itemize
111
112 @anchor{Release 1_31_0}
113 @section Release 1.31.0
114 @itemize
115 @item
116     Fixed possible race when target can be built more than once.
117 @item
118     Print out finished targets much more quickly.
119 @end itemize
120
121 @anchor{Release 1_30_0}
122 @section Release 1.30.0
123 @itemize
124 @item
125     Fixed wrong OOD-cache value of source file dependency.
126     Targets could be rebuilt without any reason.
127 @end itemize
128
129 @anchor{Release 1_29_0}
130 @section Release 1.29.0
131 @itemize
132 @item
133     Fix possible error when two always-ed targets are run simultaneously.
134 @item
135     Updated dependant libraries.
136 @end itemize
137
138 @anchor{Release 1_28_0}
139 @section Release 1.28.0
140 @itemize
141 @item
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.
145 @item
146     Updated dependant libraries.
147 @end itemize
148
149 @anchor{Release 1_27_1}
150 @section Release 1.27.1
151 @itemize
152 @item
153     Fixed lack of @file{.redo.}-prefix in temporary file names.
154 @end itemize
155
156 @anchor{Release 1_27_0}
157 @section Release 1.27.0
158 @itemize
159 @item
160     Improved out-of-date check and @file{.do} files search performance,
161     because of caching their results.
162 @end itemize
163
164 @anchor{Release 1_26_0}
165 @section Release 1.26.0
166 @itemize
167 @item
168     Debug output contained colour-related attribute even if
169     @env{$NO_COLOR=1} was set.
170 @item
171     Updated dependant libraries.
172 @end itemize
173
174 @anchor{Release 1_25_0}
175 @section Release 1.25.0
176 @itemize
177 @item
178     Target's lock file requires a token from the jobserver now. So
179     amount of simultaneously opened lock files depends on job slots
180     available.
181 @end itemize
182
183 @anchor{Release 1_24_0}
184 @section Release 1.24.0
185 @itemize
186 @item
187     @command{redo-cleanup tmp} also removes temporarily (@code{$3})
188     created directories.
189 @end itemize
190
191 @anchor{Release 1_23_0}
192 @section Release 1.23.0
193 @itemize
194 @item
195     @command{redo-ifchange}'s @option{-f} option forces each target
196     rebuilding. Comparing to @command{redo}, it will parallelize the
197     process.
198 @item
199     Inode's number is also stored as dependency information, just to
200     prevent possible @code{ctime} collision of two files.
201 @item
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.
205 @end itemize
206
207 @anchor{Release 1_22_0}
208 @section Release 1.22.0
209 @itemize
210 @item
211     @code{flock} locks replaced with POSIX @code{fcntl} ones.
212     They could be more portable.
213 @item
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.
219 @item
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.
223 @end itemize
224
225 @anchor{Release 1_21_0}
226 @section Release 1.21.0
227 @itemize
228 @item
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.
233 @end itemize
234
235 @anchor{Release 1_20_0}
236 @section Release 1.20.0
237 @itemize
238 @item
239     Print warning message if both ifcreate and ifchange records were
240     discovered after the target is done.
241 @end itemize
242
243 @anchor{Release 1_19_0}
244 @section Release 1.19.0
245 @itemize
246 @item
247     Skip target itself, when searching for corresponding @file{.do}
248     file. For example @file{default.do} must use @file{../default.do}
249     instead of the self.
250 @end itemize
251
252 @anchor{Release 1_18_0}
253 @section Release 1.18.0
254 @itemize
255 @item
256     Fix regression of known OODs passing since 1.3.0, that leads to
257     rebuilding of already built targets.
258 @end itemize
259
260 @anchor{Release 1_17_0}
261 @section Release 1.17.0
262 @itemize
263 @item
264     If @command{redo*} process is killed, then it sends @code{SIGTERM}
265     to all his children too, properly terminating the whole job queue.
266 @end itemize
267
268 @anchor{Release 1_16_0}
269 @section Release 1.16.0
270 @itemize
271 @item
272     Unexistent targets are considered always out-of-date, as it should be.
273 @item
274     Do not panic if @env{$REDO_LOGS=1} and we were unable to start the command.
275 @end itemize
276
277 @anchor{Release 1_15_0}
278 @section Release 1.15.0
279 @itemize
280 @item
281     Explicitly check if @code{$1} target is touched and then fail.
282     Previously we check if @code{$1} was only altered.
283 @end itemize
284
285 @anchor{Release 1_14_0}
286 @section Release 1.14.0
287 @itemize
288 @item
289     Fixed @command{redo-ifcreate}'s targets proper relative paths to the target.
290 @end itemize
291
292 @anchor{Release 1_13_0}
293 @section Release 1.13.0
294 @itemize
295 @item
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.
299 @end itemize
300
301 @anchor{Release 1_12_0}
302 @section Release 1.12.0
303 @itemize
304 @item
305     Fix possible lack of success finish message printing if any of
306     targets fail.
307 @end itemize
308
309 @anchor{Release 1_11_0}
310 @section Release 1.11.0
311 @itemize
312 @item
313     Fix nasty bug with incorrect @file{.redo/tgt.rec} files renaming.
314 @end itemize
315
316 @anchor{Release 1_10_0}
317 @section Release 1.10.0
318 @itemize
319 @item
320     @command{redo-cleanup} now also cleans @file{.redo/tgt.log.rec} files.
321 @item
322     Recursive logs do not require @file{.redo/tgt.rec} existence anymore.
323 @end itemize
324
325 @anchor{Release 1_9_0}
326 @section Release 1.9.0
327 @itemize
328 @item
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.
332 @item
333     @itemize
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}
337     @end itemize
338 @item
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}.
344 @item
345     @command{redo-log}'s @option{-r} option allows recursive, indented
346     viewing of the whole redo commands invocations for the given target
347     in serialized way.
348 @end itemize
349
350 @anchor{Release 1_8_0}
351 @section Release 1.8.0
352 @itemize
353 @item
354     Fixed possibly wrong relative path record of the dependency, when
355     redo commands are run in different directory from the @file{.do}.
356 @item
357     Fixed possible failing in @command{redo-sources} if no @file{.dep}
358     is found.
359 @end itemize
360
361 @anchor{Release 1_7_0}
362 @section Release 1.7.0
363 @itemize
364 @item
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}.
368 @end itemize
369
370 @anchor{Release 1_6_0}
371 @section Release 1.6.0
372 @itemize
373 @item
374     @command{redo-affects} command appeared, that shows all targets that
375     will be affected by changing the specified ones.
376 @end itemize
377
378 @anchor{Release 1_5_0}
379 @section Release 1.5.0
380 @itemize
381 @item
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.
385 @item
386     @command{redo-sources} mistakenly missed @file{.do} files in the output.
387 @item
388     @command{redo-sources} now recursively searches for all source
389     files, not the "first" depth level ones.
390 @end itemize
391
392 @anchor{Release 1_4_1}
393 @section Release 1.4.1
394 @itemize
395 @item
396     Even more simpler statusline cleaning function.
397 @end itemize
398
399 @anchor{Release 1_4_0}
400 @section Release 1.4.0
401 @itemize
402 @item
403     Fixed proper @option{-xx} and @env{$REDO_TRACE} workability, that
404     previously was not applied to all targets.
405 @item
406     Simpler statusline cleaning function, does not leading to whitespace
407     junk after long lines.
408 @item
409     Updated dependant libraries.
410 @end itemize
411
412 @anchor{Release 1_3_0}
413 @section Release 1.3.0
414 @itemize
415 @item
416     Experimental @command{redo-sources}, @command{redo-targets} and
417     @command{redo-ood} commands.
418 @item
419     Repetitive OOD determination optimization: pass all already known to
420     be OOD targets to redoing targets.
421 @end itemize
422
423 @anchor{Release 1_2_0}
424 @section Release 1.2.0
425 @itemize
426 @item
427     Dependency files @file{.dep} extension changed to @file{.rec}, to
428     reflect its recfile format nature and editors file type better
429     determination.
430 @item
431     Reduce number of file descriptors kept open (1 instead of 4) while
432     waiting for job slot token.
433 @end itemize
434
435 @anchor{Release 1_1_0}
436 @section Release 1.1.0
437 @itemize
438 @item
439     @command{redo-cleanup} has @option{-dry-run} option.
440 @end itemize
441
442 @anchor{Release 1_0_0}
443 @section Release 1.0.0
444 @itemize
445 @item
446     @code{Size} is stored in the state, for faster OOD detection.
447     Previous @command{goredo} state files won't work.
448 @item
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
451     checksum checking.
452 @item
453     @command{redo-whichdo} resembles @code{apenwarr/redo}'s one behaviour more.
454 @end itemize
455
456 @anchor{Release 0_12_3}
457 @section Release 0.12.3
458 @itemize
459 @item
460     Use an updated @code{lukechampine.com/blake3} with possibly working
461     arm64 macOS fix.
462 @end itemize
463
464 @anchor{Release 0_12_2}
465 @section Release 0.12.2
466 @itemize
467 @item
468     Try to fix failing @code{lukechampine.com/blake3} on arm64 macOS.
469 @item
470     Fixed tests permissions in the tarball.
471 @end itemize
472
473 @anchor{Release 0_12_1}
474 @section Release 0.12.1
475 @itemize
476 @item
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.
480 @end itemize
481
482 @anchor{Release 0_12_0}
483 @section Release 0.12.0
484 @itemize
485 @item
486     Do not forget to save even output-less target as a dependency.
487 @item
488     @option{-debug} option renamed to shorter @option{-d}.
489 @end itemize
490
491 @anchor{Release 0_11_0}
492 @section Release 0.11.0
493 @itemize
494 @item
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.
500 @end itemize
501
502 @anchor{Release 0_10_0}
503 @section Release 0.10.0
504 @itemize
505 @item Initial tarballed release.
506 @end itemize