@node Features
@unnumbered Features
+Notable features that differentiate @command{goredo} from many other
+implementations.
+
@itemize
@item explicit useful and convenient checks from @command{apenwarr/redo}:
@item check that generated target was not modified "externally" outside
the redo, preventing its overwriting, but continuing the build
@end itemize
+@item recursive, indented and serialized logs display ability, with
+ priority to the depth and bad return codes, like in @command{apenwarr/redo},
+ thanks to @url{https://apenwarr.ca/log/20181106, apenwarr's article}
+@item all environment variables, working directory, command line
+ arguments, start/finish times, duration, participated PIDs, return
+ codes can be saved for later investigation
@item targets, dependency information and their directories are explicitly
synced (can be disabled, should work faster)
-@item file's change is detected by comparing its size, @code{ctime}
- and BLAKE3 hash
+@item file's change is detected by comparing its size, @code{ctime} (if
+ @env{$REDO_INODE_NO_TRUST} environment variable is not set) and
+ @url{https://github.com/BLAKE3-team/BLAKE3, BLAKE3} hash
@item files creation is @code{umask}-friendly (unlike @code{mkstemp()}
used in @command{redo-c})
@item parallel build with jobs limit, optionally in infinite mode
-@item coloured messages (can be disabled)
+@item optional coloured messages
@item verbose debug messages, including out-of-date determination, PIDs,
lock and jobserver acquirings/releases
@item displaying of each target's execution time
@command{tai64nlocal} utility from
@url{http://cr.yp.to/daemontools.html, daemontools}, or similar one:
@code{go get go.cypherpunks.ru/tai64n/cmd/tai64nlocal}
+@item Either GNU Make or bmake @ref{Jobserver, jobserver} compatibility support
@end itemize