## 2.01 2018-03-19

Minor Bug Fixes and Improvements

Fix --target-action and --recovery-option options being reported as invalid when restoring with --type=immediate.

Immediately error when a secure option (e.g. repo1-s3-key) is passed on the command line.

Since would not pass secure options on to sub-processes an obscure error was thrown. The new error is much clearer and provides hints about how to fix the problem. Update command documentation to omit secure options that cannot be specified on the command-line.

Fix issue passing --no-config to embedded Perl.

Fix issue where specifying log-level-stderr > warn would cause a local/remote process to error on exit due to output found on stderr when none was expected.

The max value for a local/remote process is now error since there is no reason for these processes to emit warnings.

Fix manifest test in the check command when tablespaces are present.

Error when multiple arguments are set in the config file for an option that does not accept multiple arguments.

Remove extraneous sudo commands from src/Makefile.

Improve Perl configuration. Set config before `Main::main()` call to avoid secrets being exposed in a stack trace. Move logic for setting defaults to C.

Improve logging. Move command begin to C except when it must be called after another command in Perl (e.g. expire after backup). Command begin logs correctly for complex data types like hash and list. Specify which commands will log to file immediately and set the default log level for log messages that are common to all commands. File logging is initiated from C.

Port most of `Config::Config::configLoad()` from Perl to C.

Fix incorrect enum types in config.c that throw warnings under clang.

Enable -Wswitch-enum, -Wconversion, -Wformat=2, -Wformat-nonliteral, and -Wformat-signedness and silence new warnings.

Improve code documentation in `config` module.

Improve debugging. Add `ASSERT_DEBUG()` macro for debugging and replace all current `assert()` calls except in tests that can't use the debug code. Replace remaining NDEBUG blocks with the more granular DEBUG_UNIT. Remove some debug `memset()` calls in `MemContext` since valgrind is more useful for these checks.

Add `cfgOptionTest()` and update `cfgOption()` calls that are better implemented as `cfgOptionTest()`.

Build with -DNDEBUG by default but disable for testing.

Check `int` size in `common/type.h`. This ensures that integers are at least 32-bits without having to run the test suite.

Improve conversion of C exceptions to `Exception` objects. Colons in the message would prevent all of the message from being loaded into the `Exception` object.

Show index in examples for indexed options, i.e. repo-*, pg-*.

Simplify table of contents on command page by only listing commands.

Remove references to the C library being optional.

Add CentOS/RHEL package builds.

Use clang for static code analysis.

Nothing found initially except for some functions that should have been marked `__noreturn__`.

Build performance improvements. Improve bin and libc build performance. Improve code generation performance.

Config test code writes secure options to a file instead of passing on the command-line.

Disable console display of coverage for C files since `Devel::Cover` does not handle it well.

Add new test for `Common::Io::Process` to show that output on stderr will raise an exception on `close()` even if the exit code is 0.

Update pip before installing awscli.

Remove --smart from --expect tests. This ensures that new binaries are built before running the tests.

Remove Debian package patch now that it has been merged upstream.