What's Changed
Features
- New compiler support: MSVC, clang-cl, Intel C/C++ (icx, icpx), NVIDIA HPC SDK (nvc, nvc++, nvfortran), ARM Compiler 6, and IBM Open XL
- Windows improvements: case-insensitive executable matching and slash-prefix flag support (e.g.
/Fo,/Ot) - Environment variable forwarding: data-driven per-compiler environment variable extraction, replacing hardcoded GCC-only handling
- Install script: add
DESTDIRsupport for packaging workflows
Bug Fixes
- fix: canonical path generation on Windows stripping
\\?\prefix (#683) - fix: inconsistent flag inheritance - make all resolution transitive
- fix: replace remaining panics with proper
anyhowerror handling
Performance
- Eliminate temporary
Stringallocations in flag pattern matching - Remove intermediate
Vec<String>fromFlagMatch - Pre-allocate
Veccapacity inparse_argumentsandparse_environment - Replace
Box<dyn Arguments>withArgumentenum (static dispatch)
Code Generation Overhaul
- Extract
bear-codegencrate frombuild.rsflag generation - Add flag dedup and conflict detection during inheritance
- Add colon separator patterns and pass-through flag support
- Add flag terminator support
- Introduce
ResolvedTablewith snapshot, schema validation, and property-based tests
Internal Refactoring
- Decouple intercept layer from semantic compiler recognition
- Extract
EntryFiltertrait andFilteredOutputWriterinto filtering module - Tighten module visibility (
pubtopub(super)and private) - Simplify
CompilerCommandtoCommand, removeOutputCommandwrapper
Documentation
- Updated man page with correct schema version, complete compiler list, and
cc/c++defaults - Cleaned up README
Closed Issues
Full Changelog: 4.1.0...4.1.1