Contribute a Core change
Prepare an implementation change with a clear expected behavior, appropriate checks, and matching documentation.
Before you begin
Set up the development environment and read AGENTS.md in Core. Identify the owning crate using the component map.
Prepare the change
- Reproduce the problem or define the behavior you want to implement.
- Modify the crate that owns that behavior. Preserve its
no_stdsupport, optional features,default-features = false, and target-specific dependency boundaries. - Account for RAM, flash, stack, peak allocation, and retained buffer lifetimes. Prefer bounded or caller-provided storage where appropriate.
- Pass manager references and contexts explicitly, following the native/browser examples.
- Update generators rather than generated sources. Keep generated assets and build output out of commits unless the change requires them.
- Update tutorials, task guides, reference facts, or explanations when the behavior they describe changes.
Validate the change
Follow Validate a Core change, selecting the targets and tests your changes affect. CI's path selection is a useful guide; a skipped job is not evidence that its target passed.
For the combined format/check/doc/Clippy gate, run from Core's root in its development shell:
bash
cargo make before-commitVerify completion
Review the diff for unintended feature/dependency changes, generated artifacts, and stale examples. Report the checks actually run and any target/toolchain limitations alongside the expected behavior.
Related documentation
- Development command reference.
- Development environments and targets.
- Write or update documentation for this website's workflow.