Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for float_to_int_unchecked #3660

Merged
merged 12 commits into from
Nov 6, 2024

Conversation

zhassan-aws
Copy link
Contributor

@zhassan-aws zhassan-aws commented Oct 30, 2024

This PR adds support for the float_to_int_unchecked intrinsic for f32 and f64.

Towards #3629

Keeping it as draft till I add more tests.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.

@github-actions github-actions bot added the Z-BenchCI Tag a PR to run benchmark CI label Oct 30, 2024
@tautschnig
Copy link
Member

Please don't forget to update docs/src/rust-feature-support/intrinsics.md.

@zhassan-aws zhassan-aws marked this pull request as ready for review October 31, 2024 00:39
@zhassan-aws zhassan-aws requested a review from a team as a code owner October 31, 2024 00:39
@zhassan-aws
Copy link
Contributor Author

Please don't forget to update docs/src/rust-feature-support/intrinsics.md.

Thanks for the reminder. Added.

@zhassan-aws
Copy link
Contributor Author

This PR could use quite a bit of cleanup, especially around hard-coded values and unit tests. In particular, it's probably better to store the hard-coded values using their byte representation as opposed to their decimal one.

Copy link
Contributor

@celinval celinval left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we be worried about the cast using as logic?

@zhassan-aws
Copy link
Contributor Author

zhassan-aws commented Oct 31, 2024

I did a fairly big overhaul of the PR in 08531f6:

  1. I've added all the constants using their byte representation. This is to avoid any questionable casts using as. These constants are now the single source of truth.
  2. I added unit tests that verify that all the values are indeed lower and upper bounds of the corresponding int/uint types. The tests use BigInt to guarantee they work for all int types.
  3. I removed the unit tests that were checking that the decimal value can be represented as f32/f64 because we're no longer using decimal values anywhere.

@celinval This should address some of your comments.

@celinval
Copy link
Contributor

celinval commented Nov 1, 2024

I'm really sorry, I think you might've misunderstood my comment about the as. I think we should be using as in the kani-compiler code since this is getting rustc's values as the source of truth.

My comment about the as is about Kani's implementation of casting float to integer using as. I would expect the same bounds to be used for both, but it sounds like we don't.

@zhassan-aws
Copy link
Contributor Author

zhassan-aws commented Nov 1, 2024

I'm really sorry, I think you might've misunderstood my comment about the as. I think we should be using as in the kani-compiler code since this is getting rustc's values as the source of truth.

Not at all. I was planning to make this change before your comment. The reason is that casting a decimal value into a floating-point value can have surprising behavior. For example, this program:

    println!("{}", u32::MAX);
    let f1: f32 = u32::MAX as f32;
    let f2: f32 = u32::MAX as f32 + 1.0;
    let f3: f32 = (u32::MAX as u128 + 1) as f32;
    
    println!("{:.32}", f1);
    println!("{:.32}", f2);
    println!("{:.32}", f3);

prints:

4294967295
4294967296.00000000000000000000000000000000
4294967296.00000000000000000000000000000000
4294967296.00000000000000000000000000000000

So casting the decimal value u32::MAX (4294967295) to a float results in a different number. This is because the cast operation rounds to the nearest number that can be represented as an f32. In other words, when assigning an f32 a decimal value, the actual value it stores may end up being different (could be smaller or larger). This calculator, which @tautschnig pointed out to me helped me determine the correct bounds:

https://www.h-schmidt.net/FloatConverter/IEEE754.html

One way to specify a floating-point value unambiguously is to use the byte representation. This is the reason I switched to it.

@zhassan-aws
Copy link
Contributor Author

I made a few final touches:

  1. Moved most of the code to a new float_utils module to avoid polluting intrinsics.rs (Thanks @celinval for the suggestion)
  2. I added the code I used to determine the bounds as a unit test. If run with --nocapture, it'll print the constants.
  3. I added a small optimization that skips the comparison if the bound is +/- infinity.

@tautschnig @celinval Let me know if you want to take another look. Otherwise, I'll go ahead and merge.

Copy link
Contributor

@celinval celinval left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's fine by me. Thanks!

@zhassan-aws zhassan-aws enabled auto-merge November 6, 2024 05:49
@zhassan-aws zhassan-aws added this pull request to the merge queue Nov 6, 2024
Merged via the queue into model-checking:main with commit 0dc09a7 Nov 6, 2024
27 checks passed
@zhassan-aws zhassan-aws deleted the float-to-int-intrinsic branch November 6, 2024 06:44
zhassan-aws added a commit to model-checking/verify-rust-std that referenced this pull request Dec 4, 2024
Towards / Resolves #59 

(Resolved) Depends on [this Kani
Issue](model-checking/kani#3629) and [this
PR](model-checking/kani#3660), as discussed in
[this
thread](#59 (comment))
in #59

(Resolved) Depends on [this Kani
Issue](model-checking/kani#3711) and [this
PR](model-checking/kani#3742)

(Resolved) Waiting for Kani PR#3742 merged into
`feature/verify-rust-std`

f16 and f128 are in #163 

### Changes
* Added contracts for `f{32,64}::to_int_unchecked` (located in
`library/core/src/num/f{32,64}.rs`)
* Added a macro for generating `to_int_unchecked` harnesses
* Added harnesses for `f{32,64}to_int_unchecked` of each integer type
* `i8`, `i16`, `i32`, `i64`, `i128`, `isize`, `u8`, `u16`, `u32`, `u64`,
`u128`, `usize` --- 12 harnesses in total.

### Verification Results
To compile, we need to add the `-Z float-lib` flag.
```
Checking harness num::verify::checked_f32_to_int_unchecked_usize...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.424911s

Checking harness num::verify::checked_f64_to_int_unchecked_u128...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.8557353s

Checking harness num::verify::checked_f32_to_int_unchecked_u16...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.195041s

Checking harness num::verify::checked_f32_to_int_unchecked_i8...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.2361426s

Checking harness num::verify::checked_f64_to_int_unchecked_i32...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.3952055s

Checking harness num::verify::checked_f64_to_int_unchecked_i128...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 7.5295496s

Checking harness num::verify::checked_f64_to_int_unchecked_u16...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.2897367s

Checking harness num::verify::checked_f32_to_int_unchecked_i64...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.58576s

Checking harness num::verify::checked_f64_to_int_unchecked_i16...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.2046432s

Checking harness num::verify::checked_f32_to_int_unchecked_i128...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.8473463s

Checking harness num::verify::checked_f32_to_int_unchecked_u8...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.131122s

Checking harness num::verify::checked_f32_to_int_unchecked_i16...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.436728s

Checking harness num::verify::checked_f32_to_int_unchecked_u128...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.666422s

Checking harness num::verify::checked_f64_to_int_unchecked_u8...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.17829s

Checking harness num::verify::checked_f32_to_int_unchecked_i32...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.6507607s

Checking harness num::verify::checked_f64_to_int_unchecked_i64...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 7.3081775s

Checking harness num::verify::checked_f64_to_int_unchecked_u64...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 7.0912967s

Checking harness num::verify::checked_f64_to_int_unchecked_i8...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.4602604s

Checking harness num::verify::checked_f64_to_int_unchecked_usize...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.9098988s

Checking harness num::verify::checked_f64_to_int_unchecked_u32...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.557031s

Checking harness num::verify::checked_f64_to_int_unchecked_isize...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 7.1193557s

Checking harness num::verify::checked_f32_to_int_unchecked_u64...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.7919626s

Checking harness num::verify::checked_f32_to_int_unchecked_u32...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.557074s

Checking harness num::verify::checked_f32_to_int_unchecked_isize...

VERIFICATION RESULT:
 ** 0 of 136 failed

VERIFICATION:- SUCCESSFUL
Verification Time: 6.710118s

Complete - 24 successfully verified harnesses, 0 failures, 24 total.
```
By submitting this pull request, I confirm that my contribution is made
under the terms of the Apache 2.0 and MIT licenses.

---------

Co-authored-by: rajathmCMU <rajathkotyal@gmail.com>
Co-authored-by: MWDZ <jinjunfeng721@gmail.com>
Co-authored-by: Zyad Hassan <zyadh@amazon.com>
tautschnig added a commit to tautschnig/kani that referenced this pull request Dec 13, 2024
Updated version in all `Cargo.toml` files (via `find . -name Cargo.toml
-exec sed -i 's/version = "0.56.0"/version = "0.57.0"/' {} \;`) and ran
`cargo build-dev` to have `Cargo.lock` files updated.

GitHub generated release notes:

 ## What's Changed
* Remove the overflow checks for wrapping_offset by @zhassan-aws in model-checking#3589
* `kani-cov`: A coverage tool for Kani by @adpaco-aws in model-checking#3121
* Automatic toolchain upgrade to nightly-2024-10-04 by @github-actions in model-checking#3570
* Automatic toolchain upgrade to nightly-2024-10-05 by @github-actions in model-checking#3591
* Automatic toolchain upgrade to nightly-2024-10-06 by @github-actions in model-checking#3592
* Exclude Charon from workspace by @zhassan-aws in model-checking#3580
* Support fully-qualified --package arguments by @celinval in model-checking#3593
* Automatic toolchain upgrade to nightly-2024-10-07 by @github-actions in model-checking#3595
* Automatic toolchain upgrade to nightly-2024-10-08 by @github-actions in model-checking#3597
* Automatic cargo update to 2024-10-14 by @github-actions in model-checking#3598
* Bump tests/perf/s2n-quic from `17171ec` to `7752afb` by @dependabot in model-checking#3601
* Automatic toolchain upgrade to nightly-2024-10-09 by @github-actions in model-checking#3600
* Automatic toolchain upgrade to nightly-2024-10-10 by @github-actions in model-checking#3602
* Automatic toolchain upgrade to nightly-2024-10-11 by @github-actions in model-checking#3603
* Loop Contracts Annotation for While-Loop by @qinheping in model-checking#3151
* Automatic toolchain upgrade to nightly-2024-10-12 by @github-actions in model-checking#3604
* Update toolchain to 2024-10-15 by @zhassan-aws in model-checking#3605
* Automatic toolchain upgrade to nightly-2024-10-16 by @github-actions in model-checking#3607
* Implement proper function pointer handling for validity checks by @celinval in model-checking#3606
* Update toolchain to 2024-10-17 by @zhassan-aws in model-checking#3610
* Add fn that checks pointers point to same allocation by @celinval in model-checking#3583
* Automatic toolchain upgrade to nightly-2024-10-18 by @github-actions in model-checking#3613
* [aeneas] Preserve variable names by @zhassan-aws in model-checking#3560
* [Breaking change] Make `kani::check` private by @celinval in model-checking#3614
* Emit an error when proof_for_contract function is not found by @zhassan-aws in model-checking#3609
* Automatic toolchain upgrade to nightly-2024-10-19 by @github-actions in model-checking#3617
* Automatic toolchain upgrade to nightly-2024-10-20 by @github-actions in model-checking#3619
* Update test small_slice_eq by @qinheping in model-checking#3618
* Automatic toolchain upgrade to nightly-2024-10-21 by @github-actions in model-checking#3621
* Automatic cargo update to 2024-10-21 by @github-actions in model-checking#3622
* Bump tests/perf/s2n-quic from `7752afb` to `cd0314b` by @dependabot in model-checking#3625
* Update coverage flag in docs by @zhassan-aws in model-checking#3626
* Automatic toolchain upgrade to nightly-2024-10-22 by @github-actions in model-checking#3628
* Automatic toolchain upgrade to nightly-2024-10-23 by @github-actions in model-checking#3635
* Remove dead Option layer from run_piped by @zhassan-aws in model-checking#3634
* Add `free(0)` to codegen of loop contracts by @qinheping in model-checking#3637
* [Lean] Rename user-facing options from Aeneas to Lean by @zhassan-aws in model-checking#3630
* Fix ICE due to mishandling of Aggregate rvalue for raw pointers to trait objects by @carolynzech in model-checking#3636
* Automatic toolchain upgrade to nightly-2024-10-24 by @github-actions in model-checking#3639
* Add regular & fixme tests for function contracts by @celinval in model-checking#3371
* Call `goto-instrument` with `DFCC` only once by @qinheping in model-checking#3642
* Build and include `kani-cov` in the bundle by @adpaco-aws in model-checking#3641
* Fix loop contracts transformation when loops in branching by @qinheping in model-checking#3640
* Update toolchain to 10/25 by @carolynzech in model-checking#3648
* Automatic toolchain upgrade to nightly-2024-10-26 by @github-actions in model-checking#3651
* Automatic toolchain upgrade to nightly-2024-10-27 by @github-actions in model-checking#3652
* Bump tests/perf/s2n-quic from `cd0314b` to `ed9db08` by @dependabot in model-checking#3655
* Automatic cargo update to 2024-10-28 by @github-actions in model-checking#3654
* Automatic toolchain upgrade to nightly-2024-10-28 by @github-actions in model-checking#3653
* Reduce the number of object bits for refcell test by @zhassan-aws in model-checking#3656
* Move any_slice_from_array to kani_core by @qinheping in model-checking#3646
* Upgrade toolchain to 2024-10-29 by @zhassan-aws in model-checking#3658
* Add a timeout option by @zhassan-aws in model-checking#3649
* Upgrade toolchain to 2024-10-30 by @tautschnig in model-checking#3661
* Upgrade Rust toolchain to 2024-10-31 by @zhassan-aws in model-checking#3668
* Upgrade toolchain to 2024-11-01 by @tautschnig in model-checking#3671
* Automatic toolchain upgrade to nightly-2024-11-02 by @github-actions in model-checking#3673
* Implement `Arbitrary` for `Range*` by @c410-f3r in model-checking#3666
* Automatic toolchain upgrade to nightly-2024-11-03 by @github-actions in model-checking#3674
* codegen: Ask the layout if it is uninhabited, not its impl detail by @workingjubilee in model-checking#3675
* Automatic cargo update to 2024-11-04 by @github-actions in model-checking#3677
* Bump tests/perf/s2n-quic from `192de7d` to `65d55a4` by @dependabot in model-checking#3678
* Update dependencies following Audit workflow failure. by @remi-delmas-3000 in model-checking#3680
* Harness output individual files by @Alexander-Aghili in model-checking#3360
* Update Charon submodule to 2024-11-04 by @zhassan-aws in model-checking#3686
* Add support for float_to_int_unchecked by @zhassan-aws in model-checking#3660
* Change `same_allocation` to accept wide pointers by @celinval in model-checking#3684
* Automatic upgrade of CBMC from 6.3.1 to 6.4.0 by @github-actions in model-checking#3689
* Derive `Arbitrary` for enums with a single variant by @AlgebraicWolf in model-checking#3692
* Update cbmc-viewer to 3.10 by @remi-delmas-3000 in model-checking#3683
* Apply loop contracts only if there exists some usage by @qinheping in model-checking#3694
* Remove symtab json support by @celinval in model-checking#3695
* Remove CBMC viewer and visualize option by @zhassan-aws in model-checking#3699
* Ignore derivative in Cargo deny by @qinheping in model-checking#3708
* Upgrade Rust toolchain to 2024-11-08 by @zhassan-aws in model-checking#3703
* Automatic cargo update to 2024-11-11 by @github-actions in model-checking#3704
* Update verify-std-check workflow to enable loop contracts by @qinheping in model-checking#3705
* Automatic toolchain upgrade to nightly-2024-11-09 by @github-actions in model-checking#3709
* Bump tests/perf/s2n-quic from `65d55a4` to `cb41b35` by @dependabot in model-checking#3706
* Add support for f16 and f128 in float_to_int_unchecked intrinsic by @zhassan-aws in model-checking#3701
* Upgrade toolchain to nightly-2024-11-11 by @qinheping in model-checking#3710
* Automatic toolchain upgrade to nightly-2024-11-12 by @github-actions in model-checking#3713
* Update charon submodule by @zhassan-aws in model-checking#3716
* Revert "Ignore derivative in Cargo deny" by @qinheping in model-checking#3712
* Upgrade toolchain to nightly-2024-11-13 by @qinheping in model-checking#3715
* Automatic toolchain upgrade to nightly-2024-11-14 by @github-actions in model-checking#3719
* Automatic toolchain upgrade to nightly-2024-11-15 by @github-actions in model-checking#3720
* Fix codegen for rvalue aggregate raw pointer to an adt with slice tail by @carolynzech in model-checking#3644
* Improve Kani handling of function markers by @celinval in model-checking#3718
* Automatic toolchain upgrade to nightly-2024-11-16 by @github-actions in model-checking#3722
* Automatic toolchain upgrade to nightly-2024-11-17 by @github-actions in model-checking#3724
* Automatic cargo update to 2024-11-18 by @github-actions in model-checking#3723
* Bump tests/perf/s2n-quic from `cb41b35` to `4c3ba69` by @dependabot in model-checking#3725
* Automatic toolchain upgrade to nightly-2024-11-18 by @github-actions in model-checking#3727
* Enable contracts for const generic functions by @qinheping in model-checking#3726
* List Subcommand Improvements by @carolynzech in model-checking#3729
* Automatic toolchain upgrade to nightly-2024-11-19 by @github-actions in model-checking#3730
* add support for enum, struct, tuple in llbc backend by @thanhnguyen-aws in model-checking#3721
* Fix issues with how we compute DST size by @celinval in model-checking#3687
* Bump tests/perf/s2n-quic from `4c3ba69` to `c84ba19` by @dependabot in model-checking#3736
* Fix size and alignment computation for intrinsics by @celinval in model-checking#3734
* Automatic cargo update to 2024-11-25 by @github-actions in model-checking#3735
* Cleanup a few internal compiler deps by @celinval in model-checking#3739
* Add a Kani function that checks if the range of a float is valid for conversion to int by @zhassan-aws in model-checking#3742
* Dropping support for Ubuntu 18.04 / AL2. by @thanhnguyen-aws in model-checking#3744
* Update toolchain to nightly-2024-11-26 by @celinval in model-checking#3740
* Automatic upgrade of CBMC from 6.4.0 to 6.4.1 by @github-actions in model-checking#3748
* Automatic cargo update to 2024-12-02 by @github-actions in model-checking#3749
* Update download-artifact, upload-artifact and checkout to v4 by @thanhnguyen-aws in model-checking#3745
* Bump tests/perf/s2n-quic from `c84ba19` to `96d2e22` by @dependabot in model-checking#3750
* Upgrade toolchain to 2024-11-27 by @tautschnig in model-checking#3751
* Upgrade toolchain to 2024-11-28 by @tautschnig in model-checking#3753
* Setup/CI: cleanup Ubuntu 18.04 and cbmc-viewer left-overs and enable 24.04 by @tautschnig in model-checking#3758
* Automatic cargo update to 2024-12-09 by @github-actions in model-checking#3766
* Bump tests/perf/s2n-quic from `96d2e22` to `e4a2365` by @dependabot in model-checking#3767
* Upgrade toolchain to 2024-12-09 by @carolynzech in model-checking#3768
* Add out of bounds check for `offset` intrinsics by @celinval in model-checking#3755
* Upgrade toolchain to 2024-12-12 by @carolynzech in model-checking#3774
* Automatic toolchain upgrade to nightly-2024-12-13 by @github-actions in model-checking#3775

 ## New Contributors
* @c410-f3r made their first contribution in model-checking#3666
* @workingjubilee made their first contribution in model-checking#3675
* @Alexander-Aghili made their first contribution in model-checking#3360
* @AlgebraicWolf made their first contribution in model-checking#3692
* @thanhnguyen-aws made their first contribution in model-checking#3721

**Full Changelog**: model-checking/kani@kani-0.56.0...kani-0.57.0
github-merge-queue bot pushed a commit that referenced this pull request Dec 16, 2024
Updated version in all `Cargo.toml` files (via `find . -name Cargo.toml
-exec sed -i 's/version = "0.56.0"/version = "0.57.0"/' {} \;`) and ran
`cargo build-dev` to have `Cargo.lock` files updated.

GitHub generated release notes:

 ## What's Changed
* Remove the overflow checks for wrapping_offset by @zhassan-aws in
#3589
* `kani-cov`: A coverage tool for Kani by @adpaco-aws in
#3121
* Automatic toolchain upgrade to nightly-2024-10-04 by @github-actions
in #3570
* Automatic toolchain upgrade to nightly-2024-10-05 by @github-actions
in #3591
* Automatic toolchain upgrade to nightly-2024-10-06 by @github-actions
in #3592
* Exclude Charon from workspace by @zhassan-aws in
#3580
* Support fully-qualified --package arguments by @celinval in
#3593
* Automatic toolchain upgrade to nightly-2024-10-07 by @github-actions
in #3595
* Automatic toolchain upgrade to nightly-2024-10-08 by @github-actions
in #3597
* Automatic cargo update to 2024-10-14 by @github-actions in
#3598
* Bump tests/perf/s2n-quic from `17171ec` to `7752afb` by @dependabot in
#3601
* Automatic toolchain upgrade to nightly-2024-10-09 by @github-actions
in #3600
* Automatic toolchain upgrade to nightly-2024-10-10 by @github-actions
in #3602
* Automatic toolchain upgrade to nightly-2024-10-11 by @github-actions
in #3603
* Loop Contracts Annotation for While-Loop by @qinheping in
#3151
* Automatic toolchain upgrade to nightly-2024-10-12 by @github-actions
in #3604
* Update toolchain to 2024-10-15 by @zhassan-aws in
#3605
* Automatic toolchain upgrade to nightly-2024-10-16 by @github-actions
in #3607
* Implement proper function pointer handling for validity checks by
@celinval in #3606
* Update toolchain to 2024-10-17 by @zhassan-aws in
#3610
* Add fn that checks pointers point to same allocation by @celinval in
#3583
* Automatic toolchain upgrade to nightly-2024-10-18 by @github-actions
in #3613
* [aeneas] Preserve variable names by @zhassan-aws in
#3560
* [Breaking change] Make `kani::check` private by @celinval in
#3614
* Emit an error when proof_for_contract function is not found by
@zhassan-aws in #3609
* Automatic toolchain upgrade to nightly-2024-10-19 by @github-actions
in #3617
* Automatic toolchain upgrade to nightly-2024-10-20 by @github-actions
in #3619
* Update test small_slice_eq by @qinheping in
#3618
* Automatic toolchain upgrade to nightly-2024-10-21 by @github-actions
in #3621
* Automatic cargo update to 2024-10-21 by @github-actions in
#3622
* Bump tests/perf/s2n-quic from `7752afb` to `cd0314b` by @dependabot in
#3625
* Update coverage flag in docs by @zhassan-aws in
#3626
* Automatic toolchain upgrade to nightly-2024-10-22 by @github-actions
in #3628
* Automatic toolchain upgrade to nightly-2024-10-23 by @github-actions
in #3635
* Remove dead Option layer from run_piped by @zhassan-aws in
#3634
* Add `free(0)` to codegen of loop contracts by @qinheping in
#3637
* [Lean] Rename user-facing options from Aeneas to Lean by @zhassan-aws
in #3630
* Fix ICE due to mishandling of Aggregate rvalue for raw pointers to
trait objects by @carolynzech in
#3636
* Automatic toolchain upgrade to nightly-2024-10-24 by @github-actions
in #3639
* Add regular & fixme tests for function contracts by @celinval in
#3371
* Call `goto-instrument` with `DFCC` only once by @qinheping in
#3642
* Build and include `kani-cov` in the bundle by @adpaco-aws in
#3641
* Fix loop contracts transformation when loops in branching by
@qinheping in #3640
* Update toolchain to 10/25 by @carolynzech in
#3648
* Automatic toolchain upgrade to nightly-2024-10-26 by @github-actions
in #3651
* Automatic toolchain upgrade to nightly-2024-10-27 by @github-actions
in #3652
* Bump tests/perf/s2n-quic from `cd0314b` to `ed9db08` by @dependabot in
#3655
* Automatic cargo update to 2024-10-28 by @github-actions in
#3654
* Automatic toolchain upgrade to nightly-2024-10-28 by @github-actions
in #3653
* Reduce the number of object bits for refcell test by @zhassan-aws in
#3656
* Move any_slice_from_array to kani_core by @qinheping in
#3646
* Upgrade toolchain to 2024-10-29 by @zhassan-aws in
#3658
* Add a timeout option by @zhassan-aws in
#3649
* Upgrade toolchain to 2024-10-30 by @tautschnig in
#3661
* Upgrade Rust toolchain to 2024-10-31 by @zhassan-aws in
#3668
* Upgrade toolchain to 2024-11-01 by @tautschnig in
#3671
* Automatic toolchain upgrade to nightly-2024-11-02 by @github-actions
in #3673
* Implement `Arbitrary` for `Range*` by @c410-f3r in
#3666
* Automatic toolchain upgrade to nightly-2024-11-03 by @github-actions
in #3674
* codegen: Ask the layout if it is uninhabited, not its impl detail by
@workingjubilee in #3675
* Automatic cargo update to 2024-11-04 by @github-actions in
#3677
* Bump tests/perf/s2n-quic from `192de7d` to `65d55a4` by @dependabot in
#3678
* Update dependencies following Audit workflow failure. by
@remi-delmas-3000 in #3680
* Harness output individual files by @Alexander-Aghili in
#3360
* Update Charon submodule to 2024-11-04 by @zhassan-aws in
#3686
* Add support for float_to_int_unchecked by @zhassan-aws in
#3660
* Change `same_allocation` to accept wide pointers by @celinval in
#3684
* Automatic upgrade of CBMC from 6.3.1 to 6.4.0 by @github-actions in
#3689
* Derive `Arbitrary` for enums with a single variant by @AlgebraicWolf
in #3692
* Update cbmc-viewer to 3.10 by @remi-delmas-3000 in
#3683
* Apply loop contracts only if there exists some usage by @qinheping in
#3694
* Remove symtab json support by @celinval in
#3695
* Remove CBMC viewer and visualize option by @zhassan-aws in
#3699
* Ignore derivative in Cargo deny by @qinheping in
#3708
* Upgrade Rust toolchain to 2024-11-08 by @zhassan-aws in
#3703
* Automatic cargo update to 2024-11-11 by @github-actions in
#3704
* Update verify-std-check workflow to enable loop contracts by
@qinheping in #3705
* Automatic toolchain upgrade to nightly-2024-11-09 by @github-actions
in #3709
* Bump tests/perf/s2n-quic from `65d55a4` to `cb41b35` by @dependabot in
#3706
* Add support for f16 and f128 in float_to_int_unchecked intrinsic by
@zhassan-aws in #3701
* Upgrade toolchain to nightly-2024-11-11 by @qinheping in
#3710
* Automatic toolchain upgrade to nightly-2024-11-12 by @github-actions
in #3713
* Update charon submodule by @zhassan-aws in
#3716
* Revert "Ignore derivative in Cargo deny" by @qinheping in
#3712
* Upgrade toolchain to nightly-2024-11-13 by @qinheping in
#3715
* Automatic toolchain upgrade to nightly-2024-11-14 by @github-actions
in #3719
* Automatic toolchain upgrade to nightly-2024-11-15 by @github-actions
in #3720
* Fix codegen for rvalue aggregate raw pointer to an adt with slice tail
by @carolynzech in #3644
* Improve Kani handling of function markers by @celinval in
#3718
* Automatic toolchain upgrade to nightly-2024-11-16 by @github-actions
in #3722
* Automatic toolchain upgrade to nightly-2024-11-17 by @github-actions
in #3724
* Automatic cargo update to 2024-11-18 by @github-actions in
#3723
* Bump tests/perf/s2n-quic from `cb41b35` to `4c3ba69` by @dependabot in
#3725
* Automatic toolchain upgrade to nightly-2024-11-18 by @github-actions
in #3727
* Enable contracts for const generic functions by @qinheping in
#3726
* List Subcommand Improvements by @carolynzech in
#3729
* Automatic toolchain upgrade to nightly-2024-11-19 by @github-actions
in #3730
* add support for enum, struct, tuple in llbc backend by
@thanhnguyen-aws in #3721
* Fix issues with how we compute DST size by @celinval in
#3687
* Bump tests/perf/s2n-quic from `4c3ba69` to `c84ba19` by @dependabot in
#3736
* Fix size and alignment computation for intrinsics by @celinval in
#3734
* Automatic cargo update to 2024-11-25 by @github-actions in
#3735
* Cleanup a few internal compiler deps by @celinval in
#3739
* Add a Kani function that checks if the range of a float is valid for
conversion to int by @zhassan-aws in
#3742
* Dropping support for Ubuntu 18.04 / AL2. by @thanhnguyen-aws in
#3744
* Update toolchain to nightly-2024-11-26 by @celinval in
#3740
* Automatic upgrade of CBMC from 6.4.0 to 6.4.1 by @github-actions in
#3748
* Automatic cargo update to 2024-12-02 by @github-actions in
#3749
* Update download-artifact, upload-artifact and checkout to v4 by
@thanhnguyen-aws in #3745
* Bump tests/perf/s2n-quic from `c84ba19` to `96d2e22` by @dependabot in
#3750
* Upgrade toolchain to 2024-11-27 by @tautschnig in
#3751
* Upgrade toolchain to 2024-11-28 by @tautschnig in
#3753
* Setup/CI: cleanup Ubuntu 18.04 and cbmc-viewer left-overs and enable
24.04 by @tautschnig in #3758
* Automatic cargo update to 2024-12-09 by @github-actions in
#3766
* Bump tests/perf/s2n-quic from `96d2e22` to `e4a2365` by @dependabot in
#3767
* Upgrade toolchain to 2024-12-09 by @carolynzech in
#3768
* Add out of bounds check for `offset` intrinsics by @celinval in
#3755
* Upgrade toolchain to 2024-12-12 by @carolynzech in
#3774
* Automatic toolchain upgrade to nightly-2024-12-13 by @github-actions
in #3775

 ## New Contributors
* @c410-f3r made their first contribution in
#3666
* @workingjubilee made their first contribution in
#3675
* @Alexander-Aghili made their first contribution in
#3360
* @AlgebraicWolf made their first contribution in
#3692
* @thanhnguyen-aws made their first contribution in
#3721

**Full Changelog**:
kani-0.56.0...kani-0.57.0

By submitting this pull request, I confirm that my contribution is made
under the terms of the Apache 2.0 and MIT licenses.

---------

Co-authored-by: Zyad Hassan <88045115+zhassan-aws@users.noreply.github.com>
Co-authored-by: Carolyn Zech <cmzech@amazon.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Z-BenchCI Tag a PR to run benchmark CI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants