Contributing to TAPA
Pull Request Process
- Fork the TAPA repository and create a new branch for your feature or bug fix.
- Ensure all tests pass and pre-commit hooks run successfully.
- Write a clear and concise description of your changes in the pull request.
- Request a review from the TAPA maintainers.
Continuous Integration
TAPA uses GitHub Actions for continuous integration. The CI pipeline:
- Builds binary distributions on Ubuntu 18.04 self-hosted runners.
- Performs code quality checks using pre-commit hooks on every commit.
- Runs functional and integration tests via staging workflows across a matrix of platforms and Vitis versions for every main branch push.
Documentation
-
Update the documentation in the
docs/src/directory for any new features or changes. -
Use Markdown format for documentation files.
-
Preview your changes locally with a live-reloading server. Bazel fetches mdBook for you, so nothing needs to be installed first:
bazel run //docs:serve -
To produce the static HTML site instead (output:
bazel-bin/docs/book.tar.gz):bazel build //docs:build
Testing
-
Add appropriate unit tests for new features or bug fixes.
-
Ensure all existing tests pass before submitting your changes.
-
Run the full test suite using the following command:
bazel test //... -
If you change the task-graph schema, note that it has two implementations that must agree:
tapacc/tapacc.cppemits the JSON, and thetapa-irRust crate parses it withdeny_unknown_fields. The fixtures undertapa-core/testdata/are hand-written and cannot catch the two drifting apart.//tapa-core:tapacc_conformance_testis what does: it runs the realtapaccontests/apps/vadd/vadd.cppand strict-parses its verbatim stdout.tapaccis a Clang tool that only builds on Linux, so the test is gated on@platforms//os:linuxand is skipped everywhere else:bazel test //tapa-core:tapacc_conformance_test # Linux only
Reporting Issues
- Use the GitHub issue tracker to report bugs or suggest new features.
- Provide a clear and concise description of the issue or feature request.
- Include steps to reproduce the issue, if applicable.
- Attach relevant log files or screenshots, if available.
Community Guidelines
- Be respectful and considerate in all interactions with other contributors.
- Provide constructive feedback on pull requests and issues.