Contribute to WeaveC
WeaveC is developed in the weavefoundry/weavec repository. Contributions can improve the guards and the runtime, drop-in compatibility, test coverage, performance, or the documentation itself.
Set up the compiler
Section titled “Set up the compiler”Follow the developer guide to install LLVM, configure the dev preset, and run unit and integration tests.
cmake --preset devcmake --build --preset devctest --preset devThe architecture guide explains the compiler and the runtime: Core holds the library table, Frontend the guard passes, unsafe regions, the enforcement ledger and the compiler driver, and runtime/ is the C runtime every enforcing link carries.
Read the design before changing it
Section titled “Read the design before changing it”What is guarded and the rules that remove a guard, the shadow encoding, frames and globals, the runtime and its reports, the library table, weavec.h, the ledger format and the driver’s flags are specified by RFCs. Read the relevant accepted RFC before changing those areas. Propose a new RFC for a new design decision; a bug fix that restores the specified behavior does not need one.
Start with the RFC process and RFC library. Core must remain independent of Clang and LLVM headers, and a rule that removes a guard must be local to a function and monitored by verify mode.
Make a reviewable change
Section titled “Make a reviewable change”- Add meaningful unit and integration coverage for changed behavior. Name new tests by feature (
test/cases/<area>/…,test/Guards/<feature>.c); existingrfcNNNN-names may stay. - A new or changed run-time report needs a lit test in
test/Guards/pinning its exact text, and an entry in the command-line reference’s list of report kinds. - Use Conventional Commit titles and update the relevant user guide.
- Run formatting and required checks. Generated build outputs are not source files.
- Leave
CHANGELOG.mdto semantic-release; do not edit it manually.
Improve these docs
Section titled “Improve these docs”Use the edit link on any page to find its maintained source. Some reference pages are generated from existing repository guides, so their edit link points to that guide. The website guide covers local preview, content generation, tests, and GitHub Pages deployment.
For larger changes, open an issue describing the problem and proposed scope before investing in the implementation.