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

Tracking issue: common unsupported features #2107

Open
3 tasks done
tedinski opened this issue Jan 12, 2023 · 3 comments
Open
3 tasks done

Tracking issue: common unsupported features #2107

tedinski opened this issue Jan 12, 2023 · 3 comments
Labels
[C] Feature / Enhancement A new feature request or enhancement to an existing feature. [E] Unsupported Construct Add support to an unsupported construct

Comments

@tedinski
Copy link
Contributor

tedinski commented Jan 12, 2023

Our current top-100 data set for unsupported features looks like this:

Assessed 82 successfully, with 18 failures.
======================================================
 Unsupported feature           |   Crates | Instances 
                               | impacted |    of use 
-------------------------------+----------+-----------
 caller_location               |       75 |       218 
 simd_bitmask                  |       33 |       111 
 try                           |       26 |       667 
 Projection mismatch           |       20 |        38 
 TerminatorKind::InlineAsm     |        8 |        19 
 PointerCast::ClosureFnPointer |        6 |        31 
 'sqrtf64' intrinsic           |        2 |         2 
 float_to_int_unchecked        |        1 |        24 
 'expf64' intrinsic            |        1 |         1 
 'fmaf32' intrinsic            |        1 |         1 
 'fmaf64' intrinsic            |        1 |         1 
 'log10f32' intrinsic          |        1 |         1 
 'log10f64' intrinsic          |        1 |         1 
 'log2f32' intrinsic           |        1 |         1 
 'log2f64' intrinsic           |        1 |         1 
 'logf64' intrinsic            |        1 |         1 
 'powf64' intrinsic            |        1 |         1 
 'powif32' intrinsic           |        1 |         1 
======================================================

From analyzing some other "real-world" data sets, we see similar data:

======================================================
 Unsupported feature           |   Crates | Instances 
                               | impacted |    of use 
-------------------------------+----------+-----------
 caller_location               |       48 |        58 
 simd_bitmask                  |       24 |        35 
 try                           |       14 |        75 
 Projection mismatch           |       11 |        11 
 TerminatorKind::InlineAsm     |        4 |         7 
 PointerCast::ClosureFnPointer |        2 |        85 
======================================================

This is a tracking issue for the top issues we see above.

caller_location

simd_bitmask

try

Projection mismatch

TerminatorKind::InlineAsm

  • Something of a research project, but cheap hacks (e.g. only supporting a few common instructions) might be hugely beneficial.
  • Add support for inline ASM #2

PointerCast::ClosureFnPointer

@tedinski tedinski added [C] Feature / Enhancement A new feature request or enhancement to an existing feature. [E] Unsupported Construct Add support to an unsupported construct labels Jan 12, 2023
@tedinski
Copy link
Contributor Author

A short summary of these top-6 features:

  1. ClousreFnPointer should be supported in the next release.
  2. InlineAsm and try will not be supported soon: both require pretty extensive work.
  3. simd_bitmask should be relatively easy to support, as soon as we know customers are actually hitting it, we'd prioritize it quickly.
  4. "Projection mismatch" may be more than one issue, and we'll need to investigate them more to decide what to do. If you have a proof harness hitting this, please let us know.
  5. caller_location is unlikely to have any impact.

@celinval
Copy link
Contributor

I did some digging and I have a feeling that the projection mismatch and the simd_bitmask likely have the same cause. I believe they are both triggered by str::contains. I'll post more information in the related issues (#1926).

@celinval
Copy link
Contributor

On a different note, the issue #448 is not related to any of the projection mismatch that we are seeing. This issue is in fact asking to add a new check that could potentially detect further projection mismatch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[C] Feature / Enhancement A new feature request or enhancement to an existing feature. [E] Unsupported Construct Add support to an unsupported construct
Projects
None yet
Development

No branches or pull requests

2 participants