What's Changed
Features
- Vala (
valac) compiler support (#709). Bear now recognizesvalacinvocations and emits one compilation entry per Vala (.vala) or Genie (.gs) source, sovala-language-servercan consume a Bear-generatedcompile_commands.jsonon non-meson builds. - Inline
@fileresponse files (#701, opt-in). Response-file arguments can be expanded inline into each entry, so the recorded command is self-contained instead of pointing at a file the consumer has to resolve. - Configurable environment-derived flags. Flags Bear derives from the build environment are now configurable, giving finer control over what ends up in each entry.
--append: latest compilation wins for rebuilt files. When appending to an existing database, the newest compilation of a rebuilt file supersedes the stale one instead of leaving a duplicate.- Full process-tree teardown with signal fidelity. The supervisor now tears down the entire build tree and forwards the real terminating signal, reaping detached descendants via cgroup v2 so nothing is left running after an interrupted build.
Bug Fixes
- Recognize GCC by its FSF copyright, not the
(GCC)tag (#711). Fixesccrecognition on Alpine Linux, whose GCC banner omits the(GCC)marker Bear previously relied on. - OS-independent output path handling. The
output_from_opath logic no longer assumes a specific platform's path conventions. execthe driver from the install entry script. The installedbearentry script nowexecsbear-driverinstead of spawning it as a child.
Internal Refactoring
- Regroup the workspace crates by role into directory roots, extract the shared interception runtime into an
interceptcrate, split driver-side interception intointercept-supervisor, and splitbear-driver/bear-wrapperinto dedicated binary crates. - Rename the interpreter YAML directory to
compilersand buildCompilerInterpreterin a single pass. - Refresh workspace dependencies:
ctor0.6 -> 1.0 plus a sweep to the latest compatible versions.
Tests
- New
bear-test-toolscdb-comparebinary for comparing compilation databases, with invariants, sampling, and a CMake-oracle comparison mode. - A staged dogfooding harness (containerized golden-regression, CMake-oracle, and determinism self-checks) that validates Bear against real projects at kernel and midsize scale.
Documentation
- Reorganize the docs tree: split requirements and rationale, make requirements contract-only, and repoint the routing tables.
- Turn the release procedure into an invocable skill and capture the shared coding-style and commit conventions.
- Man page fixes, including escaping
--to prevent unintended smartification (#708).
Closed Issues
- #711 - Bear-4.1.4 fails to recognize
ccon Alpine Linux (fixed) - #701 - Allow inlining response files in command line arguments (implemented)
- #702 -
ld.so$LIBpreload warning with 32-bitarm-linux-gcc(documented; not a Bear defect)
Thanks
- @vdualb for requesting Vala support (#709)
- @qaqland for reporting #711
- @jonathanharg for requesting #701
- @CSharperMantle for #708
- @duanjianbo3330 for reporting #702
New Contributors
- @CSharperMantle made their first contribution in #708
Full Changelog: 4.1.4...4.1.5