ReSharper 2020.1 Roadmap
We recently posted our roadmap for ReSharper C++ 2020.1, as well as our roadmap for Rider 2020.1. Since we’ll be starting our Early Access Previews very soon, we’d also like to share our roadmap for ReSharper 2020.1. We’ll also be talking about where we are with moving ReSharper out of process (although see this post for more details).
Here are the top priorities that we’re currently working on. Some of these are themes for work that will see us through 2020, and not just for the 2020.1 release. So some of the things mentioned here won’t necessarily make it into ReSharper 2020.1.
- Modern C# – a major part of the work we’ve got planned for this release, and this year, is support for modern C# – not just C# 8, but also looking forward to C# 9. There are a lot of new, big features coming to the language, and we’ll be updating ReSharper to take full advantage of these. Features such as default interface implementations, nullable reference types and pattern matching are welcome additions to C# 8, and C# 9 will potentially introduce record types and discriminated unions. As usual, ReSharper will have a ton of inspections and quick fixes to help you learn new features and migrate.We also need to teach existing ReSharper features about these new language features. For example, nullable reference types need to interact correctly with all our existing inspections and quick fixes, as well as the heuristics that ReSharper Build uses to speed up your compile times. We’ll also be updating the dotPeek decompiler, built into ReSharper, to understand nullable reference types and named tuples, and much more.
- Distributed caches – not for the first time, we’re going to be adding a feature to ReSharper that started life as an internal hackathon project. ReSharper builds a number of caches based on the code in your solution, which it can use to speed up navigation or analysis. Once created, the caches are cheaply and incrementally kept up to date, but we’d like to reduce the initial creation time by downloading pre-built caches from a server, or from colleagues. This won’t be complete for 2020.1, as it requires a number of changes that we’ll be working on throughout 2020, such as updating the file format to make the data more easily shared on a file by file basis.
- Out of process – if you haven’t already heard, we’ve been working on a long term plan to move the majority of ReSharper’s language processing – analysis, inspections, quick fixes, refactorings, etc. – to run outside of the Visual Studio process. We won’t have anything visible as part of ReSharper 2020.1, but there has been a lot of work done under the covers.We’ve got a separate post which goes into more depth on where we are right now, but the short answer is that we’re now able to run ReSharper’s language parsing, analysis and quick fixes out of process. This still leaves a lot to do (e.g. refactorings and all menu item actions!), but this is a significant milestone. Read the post for more details.
Of course, this isn’t everything we’re working on. There are lots of other features and fixes that don’t fit neatly into the themes above, such as removing “suspicious” web files from analysis – files that we can heuristically identify as generated, output or tests that aren’t required to work with your project, e.g. files in a dist folder under node_modules. We’ll also have some updates to code style and the code formatter, as well as more work on support for localisation and inlay hints for XAML. And we’re always working on performance features, from fixes for particular scenarios, to larger architectural updates.
Speaking of which, make sure you click here for the companion post to see where we are with out of process.
Let us know what you think of the plans. If you think we’ve missed anything, please suggest a feature in our issue tracker, or upvote any existing issues. The previews will be starting soon – we’re looking forward to your feedback!