Skip to content

Releases: firebuild/firebuild

v0.8.6.1

01 Mar 22:29

Choose a tag to compare

What's Changed

Full Changelog: v0.8.6...v0.8.6.1

v0.8.6

10 Feb 11:40

Choose a tag to compare

Highlights

  • Support zstd cache compression
  • Shortcut touch -r and similar operations

What's Changed

  • readme: Stop saying that firebuild can't intercept static binaries because it can now! \o/ :-) by @rbalint in #1363
  • ci: Use [email protected] by @rbalint in #1364
  • copilot: Update instructions by @rbalint in #1365
  • Shortcut touch -r and similar operations by @rbalint in #1366
  • build: Add vscode settings by @rbalint in #1367
  • supervisor: Don't silently ignore touch -r edge cases by @rbalint in #1368
  • Add zstd compression for cache objects and blobs with configurable level by @Copilot in #1341
  • Add _codeql to .gitignore by @rbalint in #1372
  • Add support for openat2() syscall by @Copilot in #1371
  • Register PATH entries as NOTEXIST during exec*p() resolution by @Copilot in #1370
  • config: Skip shortcutting unlikely shortcutting points by @rbalint in #1373
  • ci: Bump firebuild-action to v4.2 by @rbalint in #1374
  • interceptor: Add support for GLibc 2.43's openat2() by @rbalint in #1375

Full Changelog: v0.8.5.1...v0.8.6

v0.8.5.1

19 Nov 21:05

Choose a tag to compare

What's Changed

  • supervisor: Add sphinx's -E option later if -M is set by @rbalint in #1353
  • supervisor: Extend error with output of qemu-user binary by @rbalint in #1354
  • interceptor: Mark utimensat() and futimens() as safe to intercept remapped by @rbalint in #1355
  • readme: Update README.md that qemu-packages are available from firebuild/stable by @rbalint in #1356
  • supervisor: Properly shortcut chmod command when it did not create file by @rbalint in #1357
  • interceptor: Allow intercepting close() when already intercepting fclose() by @rbalint in #1358
  • macos: Don't workaround recursively intercepting close() in fclose() on macOS by @rbalint in #1360
  • supervisor: Pass static binaries to qemu with full path as argument by @rbalint in #1359

Full Changelog: v0.8.5...v0.8.5.1

v0.8.5

16 Nov 20:19

Choose a tag to compare

Highlights

  • Support intercepting and shortcutting static programs, too, by using qemu-user
  • Shortcut Sphinx documentation generator
  • Support rewriting build commands to enable better caching

What's Changed

  • Add bash completion rules by @rbalint in #1306
  • ci: Use firebuild/apt-eatmydata-action instead of prefixing apt with eatmydata by @rbalint in #1307
  • tests: Wrap valgrind command directly with close_fds_exec by @rbalint in #1309
  • ci: Don't test on Ubuntu 20.04 by @rbalint in #1308
  • Portuguese debconf templates translation by @rbalint in #1310
  • ci: Update Bitrise's Brew step to version 1 by @rbalint in #1311
  • macos: Pass -DCMAKE_OSX_SYSROOT=macosx to cmake on macOS by @rbalint in #1312
  • debian: Lintian fixes by @rbalint in #1313
  • bitrise: Drop cache restoring and saving steps by @rbalint in #1317
  • tests: Clean up in "file operations" more thoroughly by @rbalint in #1316
  • macos: Handle "compatibility-version" in TBD parsing by @rbalint in #1320
  • Add RPM packaging and test it in CI by @rbalint in #1318
  • Handle truncate() by @rbalint in #1321
  • Added po-debconf Catalan translation by @rbalint in #1322
  • Fix bash rebuild autopkgtest on Ubuntu by @rbalint in #1323
  • ci: Run CI every Monday at 4:10 AM by @rbalint in #1325
  • test: Wait for each cloned process in test_cmd_clone by @rbalint in #1324
  • interceptor: Refactor receiving full fbb messages from the supervisor by @rbalint in #1326
  • macos: Stop intercepting deprecated posix_spawn_file_actions_add(f)chdir_np by @rbalint in #1328
  • Improvements to make code editing more pleasant with VS Code by @rbalint in #1327
  • supervisor: Fix intercepting qemu-user running dynamically linked executables by @rbalint in #1329
  • Allow rewriting executed intercepted commands and arguments in the supervisor by @rbalint in #1330
  • interceptor: Rewrite posix_spawn()'s path parameter, too, not just argv by @rbalint in #1331
  • Intercept getrlimit(), setrlimit() and prlimit() calls by @rbalint in #1332
  • macos: Decrease parallel sleep's parallelism to fix connect() error by @rbalint in #1333
  • Support shortcutting sphinx-build by @rbalint in #1335
  • Various small fixes by @rbalint in #1336
  • Use qemu-user to intercept static binaries by @rbalint in #1334
  • Inline small blobs in object cache to reduce indirection overhead by @Copilot in #1337
  • debian: Suggest the out-of-archive qemu-user-interposable package by @rbalint in #1340
  • supervisor: Pass -fno-pch-timestamp to clang when -emit-pch is passed by @rbalint in #1339
  • github: Add instructions for Copilot to make working with it more efficient by @rbalint in #1344
  • ci: Configure and build with Xcode without firebuild temporarily by @rbalint in #1346
  • Add magic "FBB\0" header to cache object files and bump cache format version by @Copilot in #1343
  • supervisor: Write the magic header and the cache entry in a single call by @rbalint in #1349
  • supervisor: Factor out common parts of PipeRecorder::add_data_from_*() by @rbalint in #1350

New Contributors

  • @Copilot made their first contribution in #1337

Full Changelog: v0.8.4...v0.8.5

v0.8.4

17 Dec 16:51

Choose a tag to compare

Highlights

  • Support GNU Make 4.4
  • Use Viz.js for generating call graph in the browser

What's Changed

  • interceptor: Allow intercepting some orignal 64bit time and offset related remapped functions by @rbalint in #1288
  • report: Use Viz.js for generating call graph in the browser by @rbalint in #1291
  • Bitrise: Save built firebuild as a build artifact by @rbalint in #1293
  • Load libfirebuild from full path on macOS and when testing on Linux by @rbalint in #1290
  • interceptor: Sort environment variables if they were fixed up by the interceptor by @rbalint in #1292
  • ci: Build the package on Ubuntu 24.04, too by @rbalint in #1294
  • tests: Work around xcodebuild ... -find gcc preventing caching by @rbalint in #1295
  • ci: Stop testing on macos-12 runners by @rbalint in #1298
  • ci: Close fds up to 200 in close_fds_exec by @rbalint in #1302
  • interceptor: Intercept posix_spawn_file_actions_addtcsetpgrp_np() by @rbalint in #1299
  • Support GNU Make 4.4 by @rbalint in #1300
  • interceptor: Drop obsolete, commented out CMakeList part by @rbalint in #1303

Full Changelog: v0.8.3...v0.8.4

v0.8.3

21 Jul 12:48

Choose a tag to compare

Highlights

  • Support GLibc 2.39
  • Experimental OS X support
  • Fixed and nicer report in Chrome and other WebKit based browsers
  • Even faster Rust build acceleration
  • Support time64-enabled 32 bit systems
  • Allow selecting passed through environment variables with regular expressions
  • Over 100 fixes and improvements

What's Changed

  • Drop references to *_generated.h by @rbalint in #1198
  • ci: Make brew overwrite files by default by @rbalint in #1200
  • Fix sanitizer errors by @rbalint in #1199
  • MacOS fixes by @rbalint in #1201
  • tests: Fix test_symbols script on OS X by @rbalint in #1202
  • ci: Speed up installing test dependencies on MacOS by @rbalint in #1204
  • Further OS X improvements by @rbalint in #1203
  • Intercept missing underscore ( __* ) functions on OS X and related fixes by @rbalint in #1205
  • interceptor: Don't check if *64 variant of already *64 syscalls are intercepted by @rbalint in #1206
  • supervisor: Remove fd_ member from FileFD by @rbalint in #1207
  • Various small fixes by @rbalint in #1208
  • supervisor: Improve debugging output of vectors by @rbalint in #1209
  • Allow recursive interception of signal handlers and some libc calls on macOS, too by @rbalint in #1210
  • firebuild.conf handling improvements by @rbalint in #1212
  • Fix intercepting __mac_syscall() by @rbalint in #1213
  • macos: Install hopscotch-map with Homebrew by @rbalint in #1214
  • Fix finding libfirebuild library on macOS by @rbalint in #1215
  • interceptor: Intercept __opendir2 on macOS by @rbalint in #1216
  • supervisor: Always ACK in handle_dlopen() by @rbalint in #1218
  • Intercept scandir() variants by @rbalint in #1217
  • interceptor: Allow interception inside dlopen() and dlmopen() by @rbalint in #1219
  • supervisor: Update cache size and stats on SIG{INT|QUIT|SEGV|TERM} by @rbalint in #1220
  • supervisor: Use memcmp() instead of strcmp() where the string lengths are known by @rbalint in #1221
  • supervisor: Fix splitting read-only and not read-only locations by @rbalint in #1222
  • build: Don't rebuild firebuild.1 man page in every incremental build by @rbalint in #1223
  • supervisor: Move member initializations to constants to member definitions. by @rbalint in #1224
  • Fix intercepting dlopen() on macOS and handle loading multiple shared libraries by @rbalint in #1225
  • supervisor: Ignore dlopen()-ed shared libs which are not present as files on macOS by @rbalint in #1227
  • Fix performance regression introduced with the dlopen() related changes by @rbalint in #1230
  • When open("foo/bar", O_DIRECTORY) returns -1 with ENOTDIR. assume foo/bar to be regular file by @rbalint in #1229
  • Improve kqueue and posix_spawn interception for macOS by @rbalint in #1228
  • interceptor: Drop unused code left over from simplifying dlopen() interception by @rbalint in #1232
  • Shortcut xcodebuild inside LTO-enabled linking by @rbalint in #1231
  • Handle posix_spawn() with POSIX_SPAWN_SETEXEC attribute on macOS by @rbalint in #1233
  • supervisor: Detect rustc when it is executed with its full path, too by @rbalint in #1234
  • test: Increase integration test coverage a bit by @rbalint in #1236
  • supervisor: Fix unused parameter in handle_kqueue by @rbalint in #1235
  • test: Test posix file actions handling by @rbalint in #1237
  • Extend ENOTDIR handling by @rbalint in #1239
  • Ignore connecting to "/var/run/syslog" UNIX socket on macOS. by @rbalint in #1241
  • build: Declare Homebrew dependencies in Brewfile by @rbalint in #1242
  • interceptor: Intercept GLibc 2.39's pidfd_spawn() and pidfd_spawnp() by @rbalint in #1243
  • ci: Add missing graphviz formula to Brewfile by @rbalint in #1244
  • CI: Faster .deb builds by @rbalint in #1245
  • ci: Really don't build dbgsym packages along with .debs by @rbalint in #1246
  • supervisor: Ignore connect()-ing to the sockets listed in ignore_locations by @rbalint in #1247
  • interceptor: Reset rusage timers when reporting rusage to the supervisor by @rbalint in #1248
  • Add firebuild -q option by @rbalint in #1249
  • Swedish debconf template translation by @rbalint in #1250
  • supervisor: Check on macOS that the system allows interception by @rbalint in #1251
  • interceptor: Sort loaded shared libraries in scproc_query by @rbalint in #1252
  • interceptor: Identify posix_spawn_file_actions_t handles by their full content by @rbalint in #1253
  • CI: Simplify the macos job by @rbalint in #1254
  • build: Configure include and library paths in CMake by @rbalint in #1255
  • ci: Use all avaliable processors on GitHub runners by @rbalint in #1257
  • ci: Add Bitrise CI configuration by @rbalint in #1260
  • ci: Build with xcodebuild, too, on macOS by @rbalint in #1259
  • ci: Build and test Firebuild on macOS 14, too by @rbalint in #1258
  • build: Use jinja2-cli Homebrew formula instead of the just removed python-jinja by @rbalint in #1262
  • Fix posix_spawn pre-open handling by @rbalint in #1261
  • report: Deduplicate used shared libs by @rbalint in #1263
  • supervisor: Don't reopen inherited closed pipe by @rbalint in #1265
  • debian: Switch order of autopkgtest tests by @rbalint in #1266
  • supervisor: Ignore rustc's --out-dir directory's content by @rbalint in #1269
  • interceptor: Fix use-after-free in readlink() interception by @rbalint in #1270
  • supervisor: Fix unhandled case in ENOTDIR handling by @rbalint in #1271
  • Small debuggability fixes by @rbalint in #1272
  • ci: Upgrade to use actions/checkout@v4 to avoid deprecation warnings on GitHub by @rbalint in #1273
  • interceptor: Intercept __send on arm64 Linux by @rbalint in #1274
  • interceptor: Fix casting to the right passed size_t type in count_shared_libs_cb by @rbalint in #1275
  • test: Fix running integration tests under different locales by @rbalint in #1276
  • Fix armhf build with 64 bit time and file offset representation by @rbalint in #1277
  • supervisor: Work around Clang ASan falsely detecting leaking config strings by @rbalint in #1279
  • supervisor: Don't override SIGSEGV handler when dumping core is allowed by @rbalint in #1280
  • Fix closing blob fds by @rbalint in #1281
  • interceptor: Don't intercept __send on arm64 Linux starting with glibc 2.34 by @rbalint in #1282
  • supervisor: Select passed through environment variables with regular expressions by @rbalint in #1283
  • supervisor: Don't intercept sandbox-exec by @rbalint in #1284
  • report: Tidy up the command details by @rbalint in #1285

Full Changelog: v0.8.2...v0.8.3

Release v0.8.2

24 Aug 12:22

Choose a tag to compare

Highlights

  • Support GNU Libc 2.38

What's Changed

  • Fix 32bit builds in #1191
  • ci: Upgrade docker job to run multiple releases on Ubuntu and add Debian #1192
  • Autopkgtest with installed firebuild in #1194
  • supervisor: Support GLibc 2.38 passing "--" right after "sh -c" in #1193

Full Changelog: v0.8.1...v0.8.2

v0.8.1

15 Aug 21:30

Choose a tag to compare

Highlights

  • Much reduced memory footprint
  • Reduced report size
  • Improved acceleration of Rust build scripts

What's Changed

  • 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 clearing 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

Full Changelog: v0.8.0...v0.8.1

v0.8.0

19 Apr 21:34

Choose a tag to compare

Highlights

  • Rust + Cargo builds and Intel Fortran Compiler are now accelerated
  • Javac and Javadoc are accelerated again
  • Maximum cache entry size is now configurable
  • Ccache is disabled by default within Firebuild-accelerated builds

What's Changed

  • 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 "" 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

Full Changelog: v0.2.12...v0.8.0

v0.2.12

23 Feb 16:43

Choose a tag to compare

What's Changed

  • 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

Full Changelog: v0.2.11...v0.2.12