Add macros core module #64
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow runs checks for unsafe code. In crates that don't have any unsafe code, this can be | |
# removed. Runs: | |
# - miri - detects undefined behavior and memory leaks | |
# - address santizer - detects memory errors | |
# - leak sanitizer - detects memory leaks | |
# See check.yml for information about how the concurrency cancelation and workflow triggering works | |
permissions: | |
contents: read | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
name: safety | |
jobs: | |
sanitizers: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Install the required system libraries | |
run: sudo apt-get -y install libpango1.0-dev libgtk-3-dev | |
- name: Install nightly | |
uses: dtolnay/rust-toolchain@nightly | |
- run: | | |
# to get the symbolizer for debug symbol resolution | |
sudo apt install llvm | |
# to fix buggy leak analyzer: | |
# https://github.com/japaric/rust-san#unrealiable-leaksanitizer | |
# ensure there's a profile.dev section | |
if ! grep -qE '^[ \t]*[profile.dev]' Cargo.toml; then | |
echo >> Cargo.toml | |
echo '[profile.dev]' >> Cargo.toml | |
fi | |
# remove pre-existing opt-levels in profile.dev | |
sed -i '/^\s*\[profile.dev\]/,/^\s*\[/ {/^\s*opt-level/d}' Cargo.toml | |
# now set opt-level to 1 | |
sed -i '/^\s*\[profile.dev\]/a opt-level = 1' Cargo.toml | |
cat Cargo.toml | |
name: Enable debug symbols | |
- name: cargo test -Zsanitizer=address | |
run: cargo test --all-features --target x86_64-unknown-linux-gnu | |
env: | |
ASAN_OPTIONS: "detect_odr_violation=0:detect_leaks=0" | |
RUSTFLAGS: "-Z sanitizer=address" | |
- name: cargo test -Zsanitizer=leak | |
if: always() | |
run: cargo test --all-features --target x86_64-unknown-linux-gnu | |
env: | |
LSAN_OPTIONS: "suppressions=lsan-suppressions.txt" | |
RUSTFLAGS: "-Z sanitizer=leak" | |
miri: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Install the required system libraries | |
run: sudo apt-get -y install libpango1.0-dev libgtk-3-dev | |
- run: | | |
echo "NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)" >> $GITHUB_ENV | |
- name: Install ${{ env.NIGHTLY }} | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ env.NIGHTLY }} | |
components: miri | |
- name: cargo miri test | |
run: cargo miri test | |
env: | |
MIRIFLAGS: "-Zmiri-strict-provenance" |