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