Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 0c569a7

Browse files
committedApr 29, 2025·
Merge remote-tracking branch 'origin/main' into alloc-rs-contracts
2 parents 8fef60f + f804a33 commit 0c569a7

File tree

211 files changed

+3833
-2202
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

211 files changed

+3833
-2202
lines changed
 

‎.github/workflows/kani-metrics.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
python-version: '3.x'
2727

2828
- name: Compute Kani Metrics
29-
run: ./scripts/run-kani.sh --run metrics --path ${{github.workspace}}
29+
run: ./scripts/run-kani.sh --run metrics --with-autoharness --path ${{github.workspace}}
3030

3131
- name: Create Pull Request
3232
uses: peter-evans/create-pull-request@v7

‎.github/workflows/kani.yml

Lines changed: 84 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,58 @@ jobs:
7373
with:
7474
submodules: true
7575

76-
# Step 2: Run Kani on the std library for selected functions
76+
# Step 2: Run Kani autoharness on the std library for selected functions.
77+
# Uses "--include-pattern" to make sure we do not try to run across all
78+
# possible functions as that may take a lot longer than expected. Instead,
79+
# explicitly list all functions (or prefixes thereof) the proofs of which
80+
# are known to pass.
7781
- name: Run Kani Verification
7882
run: |
79-
scripts/run-kani.sh --kani-args \
83+
scripts/run-kani.sh --run autoharness --kani-args \
8084
--include-pattern alloc::__default_lib_allocator:: \
85+
--include-pattern alloc::layout::Layout::from_size_align \
86+
--include-pattern ascii::ascii_char::AsciiChar::from_u8 \
87+
--include-pattern char::convert::from_u32_unchecked \
88+
--include-pattern "num::nonzero::NonZero::<i8>::count_ones" \
89+
--include-pattern "num::nonzero::NonZero::<i16>::count_ones" \
90+
--include-pattern "num::nonzero::NonZero::<i32>::count_ones" \
91+
--include-pattern "num::nonzero::NonZero::<i64>::count_ones" \
92+
--include-pattern "num::nonzero::NonZero::<i128>::count_ones" \
93+
--include-pattern "num::nonzero::NonZero::<isize>::count_ones" \
94+
--include-pattern "num::nonzero::NonZero::<u8>::count_ones" \
95+
--include-pattern "num::nonzero::NonZero::<u16>::count_ones" \
96+
--include-pattern "num::nonzero::NonZero::<u32>::count_ones" \
97+
--include-pattern "num::nonzero::NonZero::<u64>::count_ones" \
98+
--include-pattern "num::nonzero::NonZero::<u128>::count_ones" \
99+
--include-pattern "num::nonzero::NonZero::<usize>::count_ones" \
100+
--include-pattern "num::nonzero::NonZero::<i8>::rotate_" \
101+
--include-pattern "num::nonzero::NonZero::<i16>::rotate_" \
102+
--include-pattern "num::nonzero::NonZero::<i32>::rotate_" \
103+
--include-pattern "num::nonzero::NonZero::<i64>::rotate_" \
104+
--include-pattern "num::nonzero::NonZero::<i128>::rotate_" \
105+
--include-pattern "num::nonzero::NonZero::<isize>::rotate_" \
106+
--include-pattern "num::nonzero::NonZero::<u8>::rotate_" \
107+
--include-pattern "num::nonzero::NonZero::<u16>::rotate_" \
108+
--include-pattern "num::nonzero::NonZero::<u32>::rotate_" \
109+
--include-pattern "num::nonzero::NonZero::<u64>::rotate_" \
110+
--include-pattern "num::nonzero::NonZero::<u128>::rotate_" \
111+
--include-pattern "num::nonzero::NonZero::<usize>::rotate_" \
112+
--include-pattern ptr::align_offset::mod_inv \
113+
--include-pattern ptr::alignment::Alignment::as_nonzero \
114+
--include-pattern ptr::alignment::Alignment::as_usize \
115+
--include-pattern ptr::alignment::Alignment::log2 \
116+
--include-pattern ptr::alignment::Alignment::mask \
117+
--include-pattern ptr::alignment::Alignment::new \
118+
--include-pattern ptr::alignment::Alignment::new_unchecked \
119+
--include-pattern time::Duration::from_micros \
120+
--include-pattern time::Duration::from_millis \
121+
--include-pattern time::Duration::from_nanos \
122+
--include-pattern time::Duration::from_secs \
123+
--exclude-pattern time::Duration::from_secs_f \
124+
--include-pattern unicode::unicode_data::conversions::to_ \
125+
--exclude-pattern ::precondition_check \
126+
--harness-timeout 5m \
127+
--default-unwind 1000 \
81128
--jobs=3 --output-format=terse
82129
83130
run-kani-list:
@@ -93,8 +140,14 @@ jobs:
93140

94141
# Step 2: Run list on the std library
95142
- name: Run Kani List
96-
run: head/scripts/run-kani.sh --run list --path ${{github.workspace}}/head
97-
143+
run: |
144+
head/scripts/run-kani.sh --run list --with-autoharness --path ${{github.workspace}}/head
145+
# remove duplicate white space to reduce file size (GitHub permits at
146+
# most one 1MB)
147+
ls -l ${{github.workspace}}/head/kani-list.md
148+
perl -p -i -e 's/ +/ /g' ${{github.workspace}}/head/kani-list.md
149+
ls -l ${{github.workspace}}/head/kani-list.md
150+
98151
# Step 3: Add output to job summary
99152
- name: Add Kani List output to job summary
100153
uses: actions/github-script@v6
@@ -106,3 +159,30 @@ jobs:
106159
.addHeading('Kani List Output', 2)
107160
.addRaw(kaniOutput, false)
108161
.write();
162+
163+
run-autoharness-analyzer:
164+
name: Kani Autoharness Analyzer
165+
runs-on: ubuntu-latest
166+
steps:
167+
# Step 1: Check out the repository
168+
- name: Checkout Repository
169+
uses: actions/checkout@v4
170+
with:
171+
submodules: true
172+
173+
# Step 2: Run autoharness analyzer on the std library
174+
- name: Run Autoharness Analyzer
175+
run: scripts/run-kani.sh --run autoharness-analyzer
176+
177+
# Step 3: Add output to job summary
178+
- name: Add Autoharness Analyzer output to job summary
179+
run: |
180+
echo "# Autoharness Failure Summary" >> "$GITHUB_STEP_SUMMARY"
181+
echo "## Crate core, all functions" >> "$GITHUB_STEP_SUMMARY"
182+
cat autoharness_analyzer/core_autoharness_data.md >> "$GITHUB_STEP_SUMMARY"
183+
echo "## Crate core, unsafe functions" >> "$GITHUB_STEP_SUMMARY"
184+
cat autoharness_analyzer/core_autoharness_data.md >> "$GITHUB_STEP_SUMMARY"
185+
echo "## Crate std, all functions" >> "$GITHUB_STEP_SUMMARY"
186+
cat autoharness_analyzer/std_autoharness_data.md >> "$GITHUB_STEP_SUMMARY"
187+
echo "## Crate std, unsafe functions" >> "$GITHUB_STEP_SUMMARY"
188+
cat autoharness_analyzer/std_unsafe_autoharness_data.md >> "$GITHUB_STEP_SUMMARY"

0 commit comments

Comments
 (0)
Please sign in to comment.