0.8.0 / 2023-04-19
==================
  * portability: Fixes to build on Mac OS X (interception is not functional yet)
  * readme: Mention packages in the Arch Linux (AUR), Debian and Ubuntu archives
  * interceptor: Intercept seccomp() calls and always return with EINVAL error
    Fixes intercepting and caching man commands
  * supervisor: Add default quirk to ignore successful statfs() and fstatfs() calls
    Fixes shortcutting Doxygen
  * tests: Fix building all binaries for valgrind-check target
  * ci: Split running tests with valgrind to a separate job
  * supervisor: Fall back to pread() when mmap() fails when hashing a file
    Fixes shortcutting Java and javadoc again after their behavior changes
  * ci: Use firebuild to speed up firebuild builds on Linux
  * ci: Use latest Clang and scan-build versions
  * supervisor: Cache "sh" again by default and
  * supervisor: Skip caching command when parent sh -c "<command>" can be cached
  * supervisor: Ignore missing configuration settings instead of crashing
  * supervisor: Rename system_locations configuration entry to read_only_locations
  * interceptor: Make relative or absolute unsuccessfully dlopen()-ed paths absolute
  * supervisor: Treat unsuccessfully dlopen()-ed files using absolute filename as missing
    Fixes shortcutting Intel Fortran Compiler (ifort).
  * supervisor: Fix saved bytes accounting
  * supervisor: Verify stored bytes accounting in Debug builds
  * supervisor: Fix invalid stored cache size
  * supervisor: Don't report missing possible debug files when debugging cache during GC
  * ci: Add CodeQL analysis
  * supervisor: Intercept ccache, but set it to run the original compiler
    This allows relying on firebuild's caching by default even when ccache
    is installed.
  * supervisor: Shortcut only ccache and not child gcc/g++/etc. command
  * tests: Don't disable ccache in test helper scripts
    Ccache is now disabled within firebuild by default.
  * Ignore communication with GNU Make's and Cargo's jobserver
    This lets shortcutting processes that read tokens from the jobserver.
  * interceptor: Ignore getcap syscall
    It is used by Python and Node
  * supervisor: Don't store hash of dependency directory listing for rustc
    This allows shortcutting Rust + Cargo builds
  * interceptor: Report getrandom syscalls
  * interceptor: utimensat syscall accepts NULL pathname
  * supervisor: Allow configuring maximal cache entry size with default of 250MB
  * report: Include why shortcutting attempts failed
  * debian: Update short and long package description

0.2.12 / 2023-02-23
==================

  * Handle system(NULL)
  * Detect inherited file backed fds that are not not seeked to the end in the interceptor
  * report: Don't break line inside a single environment variable
  * interceptor: Wide scanf variants return EOF, too, not WEOF
  * interceptor: Fix syscall template to honor rettype and ifdef_guard
  * supervisor: Prevent adding an fd with epoll_ctl() twice to avoid errors and crashes
  * supervisor: Deduplicate dynamically allocated reasons of not shortcutting
  * report: Include more verbose reasons for not not shortcutting
  * report: Don't escape "/" in JSON strings
  * report: Escape used files to not break the JSON format
  * Dutch translation of debconf messages
  * Spanish translation of the debconf template
  * Brazilian Portuguese debconf templates translation

0.2.11 / 2023-01-21
==================

  * debian: Update copyright
  * debian: Initial German debconf translation
  * supervisor: Pass through HOME environment variable
  * tests: Skip testing orphan process handling on WSL
  * tests: Don't test with fakeroot if fakeroot does not work
  * debian: Build-depend on fakeroot (with <!nocheck>)
  * tests: Ignore ENOSYS error from memfd_create, timerfd_create and eventfd
  * tests: open(..., O_TMPFILE) returns EISDIR on WSL1, ignore that
  * supervisor: Fall back to emulating copy_file_range on ENOSYS error
  * supervisor: Fall back to renameat() if renameat2() return ENOSYS or EINVAL
  * interceptor: __gettimeofday64 is added only in Glibc 2.34
  * debian: Don't require node-d3 for building firebuild
  * interceptor: Add #ifdef guards for a few functions not existing in glibc 2.27
  * supervisor: Add minimal renameat2() wrapper when it is missing
  * interceptor: Define gettimeofday() for Glibc < 2.31, too
  * test: Ignore harmless extra symbols appearing with older toolchains
  * interceptor: Ignore new public symbols appearing on Bionic
  * common: Define CLONE_PIDFD and statx() structs and defines when they are missing
  * debian: Armel autopkgtests are slower
  * interceptor: Check and intercept missing __* variants
  * interceptor: Check if *64 syscall variants are intercepted
  * interceptor: Check the *_time64 bit variants of intercepted functions are also intercepted
  * interceptor: Check if *64 bit variants of intercepted functions are also intercepted
  * debian: Bump standards version No changes were needed
  * supervisor: Handle faccessat() with unknown dirfd
  * interceptor: MIPS has > 64 signals, don't assert() on that
  * common: Don't decode SIGSTKFLT in debugging when it is not defined
  * supervisor: Add --option=key=[] option to clear a configuration array
  * readme: bc is a required test dependency
  * interceptor: Intercept clone() with flags == CLONE_VFORK | SIGCHLD as a fork()
  * interceptor: Intercept _Fork calling pthread_atfork handlers directly
  * interceptor: Enable/disable interception of functions with #ifdef guards
  * supervisor: Add LAUNCH_TYPE_POSIX_SPAWN
  * interceptor: Don't check global intercepting_enabled in env_needs_fixup()
  * interceptor: Factor out fixing up and restoring environment to a macro
  * interceptor: Treat fallocate() and posix_fallocate() as pwrites
  * report: Fix typo in the title
  * debian: Show firebuild stats in autopkgtest
