ReSharper 2022.3 Roadmap
It’s been a few weeks since ReSharper 2022.2 was released, bringing you extended support for C# 11 features, memory-optimized solution-wide analysis, and a brand-new Virtual Formatter, among other exciting additions and improvements.
While we’re unpacking your feedback in preparation for the next Early Access Program (EAP) cycle, we thought it would be the perfect time to share our plans for ReSharper 2022.3.
The following is only a preliminary plan and may be adjusted depending on our priorities and resources, as well as changes in the .NET space. Some features and fixes may have to be postponed to a later release.
With this disclaimer in mind, let’s talk about the future of ReSharper.
With our next major release, we plan to finish implementing support for raw strings. In particular, we’re working on supporting language injections in such strings, as well as adding actions to convert regular strings to raw ones.
We also plan to add support for Default Interface Methods (DIM) of static members. ReSharper does already support static abstract members in interfaces. However recently this language feature was extended to allow virtual static members with the default implementation, so naturally we have to keep up.
C# 11 includes many other features, such as list patterns, UTF-8 strings, ref-fields, and file-local types. As always, we’re committed to delivering full support for all of them.
We want you to know that the righteous rumbling from our Razor community did not go unheard. A reworked version of the Razor formatter with improved performance is coming. We’re looking forward to hearing your feedback.
We’ve got a couple of major improvements lined up for ReSharper’s text editor. First of all, you may be pleased to hear that highlights and squiggles are getting an overhaul.
Due to a difference in internal logic, ReSharper often comes into conflict with Microsoft Roslyn’s code style analyzers, causing it to display overlapping highlighting, draw the same highlight in different spots, or double the squiggles. We’re going to resolve the differences in logic behind the majority of such instances, and for the rare outlier cases, there will be errors with clear suggestions on how to resolve the conflict.
Getting ReSharper to run out of process has been a major goal and a massive undertaking of ours since 2018. To get up to speed on why it’s taking us such a long time to get there, you may want to check out this article as well as an update on our progress from 2020.
The out-of-process migration continues to be a significant focus of our ReSharper performance improvement efforts. As of right now, we don’t feel comfortable committing to an exact delivery timeline, but we’d like to bring you into the loop about our most recent progress. Stay tuned for an article detailing how asynchronous typing will change the game when it comes to interprocess synchronization once ReSharper goes OOP.
Some major unit testing refactoring is underway to reduce memory consumption and the memory footprint for unit-test sessions and explorer trees.
Previously, all nodes would be created automatically along with the tree. The goal for the ReSharper 2022.3 release is to make the tree “lazy”, meaning only the nodes belonging to the expanded parts of the tree will be created, which should improve performance noticeably.
Entity Framework and EF Core
We’re continuing to work on the N + 1 problem. With our next release, we’re aiming for ReSharper to be able to use information present in classes inherited from DbContext and entity classes to detect queries in Entity Framework and EF Core projects that may result in the N + 1 problem or lead to potentially returning incomplete data.
The next version of ReSharper is also set to inherit dotPeek 2022.2’s option to view decompiled high-level and low-level C# code in the IL Viewer tool window.
Having laid the groundwork with our previous release, we’re now on track to provide support for C++ 20 modules and typename rules.
And last but certainly not least, we’re continuing to improve our ClangFormat support within ReSharper.
Since ReSharper is a part of the dotUltimate family, it’s only appropriate to talk about our plans for the other tools in the kit. Most of the improvements planned for the 2022.3 release will be focused on dotTrace – our performance profiler.
We’re working towards phasing out the Performance Viewer in favor of the Timeline Viewer inside the profiler. For this transition to happen, we’ll be moving the Plain list and Quick info features to the Timeline Viewer and adding the ability to compare sampling, tracing, and line-by-line snapshots there as well.
This blog post only covers a portion of improvements we’re working on for ReSharper. A number of other, smaller features and bug fixes will likely be implemented along the way. However, if you think something is missing, please add your suggestion to our issue tracker.
Another excellent way to provide early feedback and help us build a better product is to join the Early Access Program (EAP). The previews are about to start, so keep an eye on our social channels or subscribe to the newsletter for the latest updates.