-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Open
1 / 11 of 1 issue completedDescription
Recent versions of the C# compiler produce unverifiable code (by current spec). All new compiler tests that hit this just disable the verification step, but we'd like to reverse the trend.
Below is a rough plan how we can be back to verifying the compiler output.
- Automate compiling IL tests and running those tests in CI (Enable building and running ILVerification tests by default corert#6307, thanks Jan!)
- Switch to ILVerify in compiler test suite
- Need fully-signed ILVerify
- Solve target framework issue (ILVerify targets
netcoreapp2.0, but compiler emit tests targetnet46) - Work around the signing/strong name issue for local testing
- Hack a primitive integration of Roslyn tests with ILVerify
- Get all Roslyn tests to pass
- Triage remaining observable differences between PEVerify and ILVerify (done at https://github.com/dotnet/corert/issues/4958)
- Performance seems fine
- Add support for multi-module assemblies (dotnet/corert@eec7036)
- Tighten Roslyn tests for expected verification error (currently we skip verification, but should verify and check fails as expected, see Tighten PE verification in CompileAndVerify #23132)
- Tighten Roslyn tests for unsafe code (many of them should still be verifiable, but currently skip verification, see Enable PE verification in tests of unsafe code #23130)
- Need package (Andon) (published at https://dotnet.myget.org/feed/dotnet-core/package/nuget/Microsoft.DotNet.ILVerification )
- Need APIs (see [ILVerify] Define and Implement a public API surface corert#3734, PR Add public API for ILVerify corert#5186)
- Split into exe+dll (PR ILVerify: split into exe and library corert#5258)
- Review verification rules that are not yet implemented and flag which are critical for us (done at: https://github.com/dotnet/corert/issues/4958)
- Add support for ref return
- Draft informal spec
- Review proposal (with Xamarin, Jan/Michal, compiler)
- Update compiler (separate slots by returnability and tag slots per proposal)
- Update ILVerify
- Formalize spec
- Add support for readonliness (after ref return is done)
- Draft informal spec
- Add support for Span (after ref return is done)
- Add support for runtime-async methods ILVerify support for runtime async runtime#118042
- Spec bug around delegate assignment
Tagging @VSadov @gafter and folks who have been contributing to ILVerify (with our thanks): @ArztSamuel @gregkalapos @mmayr-at @discostu105
gregkalapos, dotnetstammtisch, mmayr-at, abelbraaksma, carlreinke and 1 more
Sub-issues
Metadata
Metadata
Assignees
Type
Projects
Status
Requires runtime or BCL work