==================
0.8.2 / 2023-08-24
==================
  * Fix the build 32 bit architectures
  * supervisor: Handle inherited fd offset properly
  * ci: Upgrade docker job to run multiple releases on Ubuntu and add Debian
  * test: Fix building and testing test_cmd_clone only on Linux
  * tests: Suppress yes: standard output: Broken pipe error
  * tests: Allow running tests on installed firebuild
  * debian/tests: Add autopkgtest running build time tests on installed firebuild
  * supervisor: Support GLibc 2.38 passing "--" right after "sh -c"
  * debian: Depend on at least the glibc version firebuild is built with

==================
0.8.1 / 2023-08-15
==================
  * artwork: Fix the circle in the logo to be really round
  * interceptor: Factor out some fd read write state handling from templates
  * Report error code when a call reported only once fails
  * interceptor: Treat successful copy_file_range() and sendfile() calls as reads and writes
  * report: Include file name and process potentially writing the file in parallel
  * report: List only directly and not transitively used filed in process details
  * report: Deduplicate used file strings
  * report: Register used files at the shortcut process when generating the report
  * report: Deduplicate process environments
  * supervisor: Run main loop until all interceptor connections and pipes are closed
  * supervisor: Run all cleanup and destructors when FB_EXTRA_DEBUG is defined
  * ci: Run coverage test on Debug build and increase required coverage
  * interceptor: Intercept __vfork for glibc < 2.34
  * supervisor: Show maximum resident set with "-d time"
  * supervisor: Defer clearinf obsolete finalized ExecedProcess data
  * supervisor: Free whole finalized process subtrees when it is safe
  * interceptor: Fix calling handle_exit()
  * supervisor: Track the common ancestor of processes keeping files open for writing
  * supervisor: Track the process exec_point() for files opened for writing
  * interceptor: Perform seccomp() calls in not intercepted processes
  * Use global buffer size for paths
  * supervisor: Don't use alloca() in garbage collection loops

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
