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