fix: cpp rules now properly respect the language attribute #212
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #211
Summary
This PR resolves the issue where C/C++ component rules were ignoring the
languageattribute and always generating C bindings regardless of user configuration.Root Cause
The
cpp_componentandcpp_wit_bindgenrules had hardcoded"c"values in their binding generation code, completely ignoring thectx.attr.languageattribute.Changes
Core Fixes
cpp_componentto usectx.attr.languageinstead of hardcoded"c"cpp_wit_bindgento usectx.attr.languageinstead of hardcoded"c".cvs.cpp)--string-encodingto only apply to C bindingscxx_stdandoptimizationto WasmComponentInfo metadataTest Framework Improvements
Example Updates
auth_service_cppto uselanguage="c"data_structures_componentto uselanguage="c"language="c"andoptimize=TrueArchitecture Patterns
This PR establishes three clear patterns:
language="c"- auto-detection enables C++ compilation, generates C-style APIlanguage="cpp"- generates namespace-based C++ APIlanguage="c"- standard C compilation and bindingsTest Results
✅ All 19 C/C++ tests passing
✅ All C/C++ examples building successfully
Verification
Breaking Changes
None - this fix makes the rules work as originally intended. Users who were relying on the buggy behavior (hardcoded C bindings) may need to add explicit
language="c"to their targets if not already specified.