20 March 2009

ReSharper 4.5 -- From Beta to Release

It's been a while since we released ReSharper 4.5 Beta and it went pretty cool. Those who like fresh bits posted some feedback about Beta already, and they like it!

Of course, Beta is not Release and it has its own problems, which we are working on all days long. Nightly Builds are published and quality constantly improves. You can see community-based build rating improving from "Works" to "Stable", and we aim at five stars "No problems at all" for final version!

There is only one issue with achieving best quality for everyone:

Every combination of
project, environment and developer
is unique

We thoroughly test lots of cases: various packages and extensions installed into Visual Studio, operating system versions, types and sizes of projects, configurations of the environment. But there are thousands other unique combinations of those things, and of course your unique way of working with code.

In our course from ReSharper 4.5 beta to release, we welcome you to participate in the process of making ReSharper best productivity tool for you. Please, do not hide in shadows waiting for release. Tell us anything and everything you feel wrong about latests builds. Don't wait for someone else to report the problem, it can very well happen there is no someone else. Write in comments, post to Twitter, submit requests to our issue tracker, or send email to support at JetBrains. We are in hunger for your feedback! And we promise to do our best to improve your experience with ReSharper.

Thank you for your participation in the Early Access Program!

PS: Try Scott's Nightly Builds Updater, it will help you run the most recent bits of ReSharper.

12 March 2009

ReSharper 4.5 -- What Were We Doing?

Recently we looked at ReSharper's past. You probably noticed that we often have x.5 releases, aimed at performance and stabilization. After the big marathon run for C# 3.0 and VS2008, we finally got some time to perform housekeeping, clean out and sweeping tasks. Not just for beautiful code, but for improvements in speed and memory that require architecture changes.

Since ReSharper 4.1 release in September, we spent lots of time with dotTrace, running hundreds of use cases and analyzing results. We identified several major bottlenecks that hindered performance, and hundreds of smaller problems. We also analyzed managed and unmanaged memory usage in many types of solutions of different sizes. For many issues, small changes here and there just weren’t enough. We had to change data structures, algorithms, dependencies, ownership of objects, and sometimes even basic principles of our code.

Tough decision, but we decided that performance, memory usage and building a foundation for further improvements were of a higher priority than API compatibility. Without that massive code cleanup we would have been spending more and more resources to make our product better for you, and without much success. Please accept our apologies, plug-in developers! We really had to do that to gain 30% speed improvement overall, up to 60% in many cases if you use multicore processor. We‘re hoping to extend parallel processing capabilities in ReSharper 5 and improve speed even more, but we had to lay a foundation for this.

Another big part of our work was dedicated to Visual Studio integration. It is too early to speak about Visual Studio 2010 integration at the moment, but even earlier versions required substantial efforts. We improved integration with various packages, provided fixes or workarounds for a good deal of problems. We spent lots of time doing low level debugging in mixed (managed/unmanaged) environment and I must admit -- it was fun but also very hard. Microsoft Development Tools Division did a great job helping us solve issues and answering our questions (which were far from being trivial, as you might guess). In fact, during the past year we got much more assistance from Microsoft than ever! Thank you guys, I hope you don't have my picture attached to your dartboards :)

Developing new features and improving existing ones was the last, but not the least piece of our work. We reworked ReSharper naming system and, finally, you can configure a style for virtually any identifier . We added more functionality to Solution Wide Analysis -- it is now able to highlight globally unused symbols for you, redundant virtual keyword, parameters that are not used in any overrides, and much more. My favorite global inspection detects potential problems in cross-casts, like when you cast a variable of type IFoo to IBar, but there is no class in solution that implements both interfaces! New Go to Implementation feature allows you to jump straight to the code that might run, skipping all interfaces and abstract classes. Find Referenced Code can now run on any selection in Solution Explorer, quickly showing you dependencies of a particular part of your solution. MSTest is now built into ReSharper, Visual Basic .NET support has been greatly improved, and many reworked refactorings are now particularly rock solid.

These days we are preparing to publish ReSharper 4.5 Beta. As more and more people download ReSharper 4.5 nightly builds, we get invaluable feedback to make this release really shiny. It is currently very stable, with several known glitches that we are fixing. Each new build is better than previous ones.

Don’t hesitate to download it, try it yourself and tell us how it works for you!
We mean it: we really, really need to know how it behaves in your unique environment with your unique solution, and it’s only you who can let us know about it!

ReSharper 4.5 -- Looking in the Past

I didn't post anything for 4 months and I want to fix that. Where is my light bulb I wonder? Not that I had nothing to say, more like I was wearing developer's hat. Anyway, I thought I could explain what's been going on and what we've been doing for the upcoming release, ReSharper 4.5.

But before I start talking about the new release, I'd like to look back at ReSharper history.

2004, July: ReSharper 1.0
First release of JetBrains ReSharper, productivity add-in for Visual Studio 2003 and C# 1.1. Code analysis, quick fixes and context actions, refactorings and templates, all in JetBrains' intelligent style.

System.Console.Out.WriteLine("Hello .NET world");

2005, March: ReSharper 1.5
Added 8 new refactorings. Performance was significantly improved.

2006, May: ReSharper 2.0
With this new release, ReSharper makes a step up from a simple add-in to a real development environment. Support for Visual Studio 2005 and C# 2.0, more refactorings, ASP.NET support, Unit Testing, build script support, additional navigation commands and more.

2006, December: ReSharper 2.5
Focus on the performance improvements and usability to improve developers' experience. Of course we couldn't resist a few new features as well: null-reference analysis, Navigate from Here and Go to File Member.

2007, June: ReSharper 3.0
Major feature-loaded release, bringing many productivity enhancements to the table. Many of them are now perceived as if they've been there forever. Go to Symbol, find referenced and dependent code, automatic member reordering, rearranging statements and members, to-do browser. Code analysis got suggestions, VB got many of the features previously available only for C#, and XAML made it to the list of supported technologies.

2008, June: ReSharper 4.0
This release introduced support for Visual Studio 2008 and C# 3.0 with vars, extension methods, lambdas, LINQ, object & collection initializers, anonymous types, and partial methods. This alone would be sufficient for a new major release. However, we did more: Solution-Wide Analysis, Code Cleanup, Complete Statement, more refactorings, improved IntelliSense, recent edits and other tools to simplify everyday development tasks.

That is how ReSharper have been evolving in the past. What's next?

2009, March-April: ReSharper 4.5

To be continued...