OzCode v2.0 Beta is out!

Wow. We’re finally here.

It’s been a long time coming, since the release of OzCode v1.0 last June, but the OzCode v2.0 beta is finally out! 

First, an announcement: if you already own a license to OzCode v1.0, check your email. You’re going to find a very pleasant surprise 🙂

If you don’t own a license but want to buy OzCode v1.0 now, don’t worry – you will get a free upgrade to v2.0 when it comes out!

Now that that’s out of the way:

Oh, what a long and winding journey it has been. Our development cycle for v2.0 began with a hard choice we had to make. In order to support the upcoming C# 6 language features, we knew we had to either upgrade our existing parsing and semantic analysis facilities (which were based on an old version of the open source NRefactory library), or take the plunge and re-write OzCode to use the new Roslyn compiler-as-a-service platform from Microsoft (which would be a huge undertaking, made even harder by the fact that Roslyn officially only supports VS2015, but we still needed to support VS2010, VS2012 and VS2013).

This wasn’t an easy decision to make. In fact, it was probably the toughest call we’ve made since we started OzCode. On the one hand, we knew the rewrite would take a lot of time, meaning we couldn’t keep up with the regular pace of releases we wanted to (until now, that we’ve finally reached the other end of the tunnel). On the other hand, we knew that ultimately, betting our future on Roslyn will lead to huge wins down the line – in terms of performance, reliability, and extensibility.

We reasoned through every possible alternative, thought about every technical problem we’re going to face, made pros and cons matrices befitting a NASA space exploration mission. Finally, we made a strategic decision to rewrite the internal workings of OzCode to take advantage of Roslyn. The decision has more than paid off. We even had a few surprises along the way – at one point, we found out that some behavior we needed to get out of Roslyn was not there. After a discussion with the Roslyn team, we asked for a not-so-trivial change, and then plunged into the Roslyn codebase and sent them a Pull Request. Our request was accepted, and the experience made it very clear to us that there is indeed a completely new and transformed Microsoft.

So, here we are, and here is a small taste of the new features we’ve added in v2.0:

Heads-Up-Display for the Debugger

Hit the new “Toggle Head Up Display” button to lighten up your Visual Studio code editor with useful information.

For example, you’ll see a HUD visualization on top of method parameters:

PredictSwitch

 

The Foresee feature has also been transformed into a HUD which shows you not only what iteration we are at, but what the current value in the loop is:

Foresee

Predict – Predictive Analysis of Code Execution

With this feature, OzCode has now become a full-fledged fortune teller. “Predict” can tell you what’s about to happen in the debugger.

For example, in this switch statement, the arrow tells us where we’re going to be when we hit F10, and the irrelevant code paths are made semi-transparent:

PredictSwitch

Predict also works on ‘if’ statements, showing us what the condition is going be ahead of time, where possible. This works great with Edit and Continue, creating an awesome experience of instant feedback while you’re fixing buggy code.

Ahead-of-time warning on imminent exceptions

A picture’s worth a thousand words:

PreException

 

After you step over the line, and the exception actually happens, you’ll see this:

PostException

Want to just keep going and ignore this exception for now? Hit the downward-arrow button to revert the exception and skip to the next line!

Simplify, Simplified:

We’ve heard your feedback that Simplify is sometimes hard to navigate, and gone the extra step for you: you can now use the arrow keys to navigate Simplify much more intuitively than you could before.

We’ve also added super-useful red/green color-coding which tells you exactly what expressions returned true/false, respectively:

Simplify

No More Enhanced Mode in VS2013 and upwards

Historically, one of the biggest pain points for OzCode users has been “Enhanced Mode”, which had to be enabled in order to take advantage of Simplify and Foresee, but caused performance degradation in some cases. In v2.0, if you’re using Visual Studio 2013 or higher, Enhanced Mode is no longer required, and it’s gone! From now on, Enhanced Mode is only a legacy mode that exists in VS2010 and VS2012.

Break whenever a value of a property changes (C# ‘Data Breakpoints’)

Ever wanted to tell the debugger, “Break when this value changes?” Now you can! Introducing Setter Breakpoints:

SetterBreakpoint

As you can probably tell from the pictures, Setter Breakpoints work on every property, even auto-properties, and even properties in 3rd-party libraries for which you don’t have the source code! Go to the “Magic Wand”, and choose “When Set… –> Break” to get started!

Dark Theme Support

Yes, we know. OzCode has been kind of a sore sight in Dark Theme in v1.0. That’s no longer an issue in v2.0. Here’s proof:

DarkTheme

Visual Studio 2015 Support is Coming Soon

While not included in this initial beta, Visual Studio 2015 support is coming very soon! We’ll be keeping you updated via the News section on our site, Twitter and Facebook.

So, what are you waiting for? Go and grab the v2.0 Beta bits from our homepage!