Please read the Code of Conduct.
- Do not open a GitHub issue if the bug is a security vulnerability in Radiant, and instead refer to our security policy.
- Ensure the bug was not already reported by searching issues.
- If you're unable to find an open issue addressing the problem, open one.
- Feature requests are welcome. But take a moment to find out whether your idea fits with the scope of the project. Features always deserve discussions before implementation. We strongly encourage opening or joining discussions on existing requests.
- Ensure the feature request ("enhancement") was not already requested by searching issues and does not have an active discussion.
- If you're unable to find an open issue or discussion:
- Consider, starting a discussion (optional).
- Otherwise, open a feature request.
- Fork the repository on GitHub and clone it.
- Radiant uses Bazel as the primary build system. Install Bazel (official instructions). Bazelisk is recommended.
- Python is required for tooling. Install Python (official instructions).
- Radiant uses python package to aid in the remaining setup and subsequent
workflows. Install it into your python environment by running:
python -m pip install -e ./tools/rad
. - Initialize the development environment:
rad init
. - Build the project:
rad build
. - Run the tests:
rad test
. - Check out
rad --help
for more information. 😎 🎉
Run rad coverage
to generate code coverage reports.
How you view coverage is up to you. We recommend using the Visual Studio Code Coverage Gutters extension, which is already recommended by the vscode project configuration. Coverage is gathered during pull requests and from the main branch. Coverage may be viewed on codecov.io or GitHub. We recommend installing the codecov browser extension for viewing coverage on GitHub.
If you're working on ARM64 Windows, there is a bug in bazilisk that ends up using the x64 version of Bazel on ARM64 systems. To work around this, it is recommended to use the ARM64 Bazel binary directly.
Building with a normal Visual Studio install is possible, but Bazel has bugs in their default toolchain resolution that may cause issues when cross-compiling architectures. To work around this, we recommend using the EWDK toolchain instead. It is already configured as a bzlmod developer dependency for the project.
- Download the Windows EWDK and mount the ISO.
- Set the
EWDKDIR
environment variable to the EWDK directory. - You're all set! You might have to
rad clean --expunge
.
To generate code coverage on Windows, Radiant uses OpenCppCoverage.
- Download and install OpenCppCoverage.
- Running
rad coverage
will now generate coverage reports.
- After opening a pull request you will be required to sign the Contributor License Agreement.
- The changes must be tested and covered by unit tests, as appropriate.
- The pull request must pass the required checks.
- Open a new pull request with the patch.
- Ensure the pull request clearly describes the subject/problem and solution.
- Include the relevant issue number if applicable.