If I remember correctly, MSR worked on a practical implementation of Code-Contracts for C# which incorporated the (all-important) compile-time verification of method preconditions, postconditions, and class invariants (without the need for hand-written refinement-types, which is how we do things today): as I understand it, the
compile-time part of system could support any assertion represented as a pure-function - think of it as C#'s take on Ada's assertions, improved tenfold, and it even shipped for a now-unsupported older version of C# and .NET: https://learn.microsoft.com/en-us/dotnet/framework/debug-tra...
Had Microsoft put more backing behind it, then C# could present itself as a language to supplant Ada in safety-critical applications, and replace C/C++ in other applications.
I have hope the feature will come back one-day - there are whole slews of bugs that can be eliminated (such as when passing EF entity types around with unintentionally null member-properties).
For me a negative:
If I remember correctly, MSR worked on a practical implementation of Code-Contracts for C# which incorporated the (all-important) compile-time verification of method preconditions, postconditions, and class invariants (without the need for hand-written refinement-types, which is how we do things today): as I understand it, the compile-time part of system could support any assertion represented as a pure-function - think of it as C#'s take on Ada's assertions, improved tenfold, and it even shipped for a now-unsupported older version of C# and .NET: https://learn.microsoft.com/en-us/dotnet/framework/debug-tra...
...and it was axed in .NET Core back in 2016 and hasn't been seen since: https://github.com/microsoft/CodeContracts/issues/409
Had Microsoft put more backing behind it, then C# could present itself as a language to supplant Ada in safety-critical applications, and replace C/C++ in other applications.
I have hope the feature will come back one-day - there are whole slews of bugs that can be eliminated (such as when passing EF entity types around with unintentionally null member-properties).
Isn't that replacement called F#?
It's more like the predecessor to Dafny, which is still research-oriented.
No.