New Language Features
- C# 7.0: Deconstruction
- C# 8.0:
await foreach
- C# 8.0: Disposable
ref struct
s - C# 8.0: Enhanced
using
statements - C# 8.0:
switch
expressions - C# 9.0:
init
accessors - C# 9.0: function pointers (see #2150)
- C# 9.0: foreach with GetEnumerator extension methods
- C# 9.0: Lambda parameter discards
General
- Add an option to enable aggressive inlining of expressions
- Add option for
string.Concat
decompilation - Add an option to always qualify member references (by @Pathoschild, see #2114)
- ReadyToRun: Variable tracking in output (by @edkazcarlson, see #2067)
- ReadyToRun: Optimized debug info output (by @cshung, see #2113)
- Work on unifying the code formatting (see #2128)
- Tests upgraded to Roslyn 3.8.0-3.final
UI Improvements
- Improve performance of Metadata DataGridCell (see #2151)
- Fix #2107: Add ScrollViewer around DisplaySettingsPanel
- Metadata: Improvements/fixes by @srutzky, see #2134, #2135, #2145, #2147 and #2153
- Updated Chinese translation
Bug fixes
- Fix #2129: be more flexible about the initialization order for the async state machine
- Fix #2140: ILSpy 6.2p1 no longer respects "use discards" setting
- Fix #2139: ArgumentOutOfRangeException for some xmldoc
- Fix #2039: Code generated by VB's On Error Resume Next causes "unassigned variable" compile errors
- Fix #2156: range syntax not being detected correctly in some cases
- BAML decompiler: #2109 and #2106
- Fix #2086: Check that window belongs to ILSpy before sending it a WM_COPYDATA message.
- Fix #2090: ignore mscorlib references without public key token, when trying to resolve mscorlib. This will automatically fallback to .NET 4.0's mscorlib.dll.
- #1292: Fix some more problems with pinned locals.
- Fix #1555: Eliminate value-type temporaries emitted by mcs on field reads.
- Fix #2056: "remove branch into body" must be executed before the clone cleanup
- Fix #2101: reset removeExtraLoad flag if keepAssignmentBefore is set; implement simple case-de-duplication: abort if there are any duplicate cases.
- Fix #2100: 'value'-named auto property could not be recognized correctly.
- Fix #1441: Decompose flags enum values starting from the value with the highest Hamming Weight (popcount).