Releases: firebuild/firebuild
Releases · firebuild/firebuild
v0.8.6.1
v0.8.6
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
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
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
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
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
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
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
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
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