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

Update ICSharpCode.Decompiler to 8.2.0.7535 #71837

Merged
merged 2 commits into from
Jan 28, 2025

Conversation

christophwille
Copy link
Contributor

Version 8.2 has a couple of important performance fixes:

  • TopologicalSort stack overflow when decompiling long method icsharpcode/ILSpy#3075: Avoid processing already-transformed blocks by introducing BlockTransformContext.IndexOfFirstAlreadyTransformedInstruction, which allows us to track already transformed instructions after a block has been merged into another by ConditionDetection.
    • Add NextSetBit operation to BitSet to avoid looking at every store bit individually in ReachingDefinitionsVisitor.GetStores()
    • Fix ILVariableEqualityComparer.GetHashCode
    • Improve performance of CSharpResolver.LookupSimpleNameOrTypeName in cases with a large number of local variables.
    • Eliminate recursion in some parts of the decompiler engine

Aside from that, a lot of language features landed that are relevant:

New Language Features

  • C# 7.1 Pattern matching with generics
  • C# 8.0 Recursive patterns
  • C# 9.0 Relational patterns
  • C# 9.0 not patterns
  • C# 10.0 static abstract members in interfaces
  • C# 11.0 switch on (ReadOnly)Span<char>

The release is now 3 months in production with no showstopers or critical bugs.

@christophwille christophwille requested review from a team as code owners January 27, 2024 11:10
@dotnet-issue-labeler dotnet-issue-labeler bot added Area-IDE untriaged Issues and PRs which have not yet been triaged by a lead labels Jan 27, 2024
@ghost ghost added the Community The pull request was submitted by a contributor who is not a Microsoft employee. label Jan 27, 2024
@jasonmalinowski jasonmalinowski removed the untriaged Issues and PRs which have not yet been triaged by a lead label Jan 29, 2024
@christophwille
Copy link
Contributor Author

@sharwell given that your bug report triggered those performance optimizations, wouldn't that actually be of interest for Roslyn?

@christophwille
Copy link
Contributor Author

We just released 9.0 - is upgrading to newer versions in Roslyn still something someone is interested in?

@dibarbet
Copy link
Member

I can work on getting this in. For now will take the 8.2 update, and can do 9.0 once this one goes in smoothly.

@dibarbet dibarbet self-assigned this Jan 27, 2025
@dibarbet dibarbet merged commit 557c46c into dotnet:main Jan 28, 2025
28 checks passed
@dotnet-policy-service dotnet-policy-service bot added this to the Next milestone Jan 28, 2025
@dibarbet dibarbet modified the milestones: Next, 17.14 P1 Jan 28, 2025
@christophwille christophwille deleted the feature/icsd82 branch January 28, 2025 06:05
@christophwille
Copy link
Contributor Author

I can work on getting this in. For now will take the 8.2 update, and can do 9.0 once this one goes in smoothly.

We usually always waited two or three months to see if anything bad slipped into the engine (but so far at least nothing).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-IDE Community The pull request was submitted by a contributor who is not a Microsoft employee.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants