HACKING adcli * Website: TODO * Mailing list: TODO * Bugs: TODO PRECONDITIONS and UNEXPECTED SYSTEM ISSUES We don't try to guarantee completely robust and problem free behavior in cases where the caller or process isn't behaving. We consider these to be outside of our control: * Broken input from callers. Although we generally use preconditions to do basic checks on arguments and immediately return. * Out of memory. It is pretty much impossible to handle out of memory errors correctly. Handling them alongside other errors is a broken concept. However we do check the results from all memory allocations. As a nod to the behavior of callers of this library, we don't abort on memory allocation failures. We use preconditions with somewhat sane results. We don't try to guarantee library state (such as locks or memory leaks) when memory allocation fails. Exception: when reading files or allocating potentially unbounded amounts of memory, we should respond robustly to memory allocation failures.