Recently I tweeted this:
The release of Rubberduck 2.0.12, due 5 days ago, is being delayed because we have something awesome cooking up. Give us 2-3 more weeks 🙂
TL;DR: if awesomeness can be cooked, that’s what’s cooking.
The amount of work that went into the upcoming release is tremendous. We’ve been trying to figure out exactly what was blowing up when the VBE dismantled itself and the host was shutting down, causing that pesky crash on exit… ever since we’ve introduced WPF user controls in dockable toolwindows. And at last, solved it.
We’ve been working on improving performance and thread safety of the entire parsing engine, and fixed a few grammar/parser bugs on the way, including a long-standing bug that made redundant parentheses trip a parse exception, another with the slightly weird and surely redundant Case Is =
syntax, and @Magic annotations can now legally be followed by any comment, which is useful when you want to, well, annotate an annotation:
'@Ignore ProcedureNotUsed; called by [DoSomething] button on Sheet12 Public Sub DoSomething() ... End Sub
We’ve enhanced the COM reference collector such that the resolver has every bit of useful information about everything there is to know in a type library referenced by a VBA project. This allows us to enhance other features, like the context-sensitive commandbar that tells you what Rubberduck is your selection as, e.g. a TextBox
control in a UserForm
:
(don’t mind that “Serialize” button – it’s only there in debug builds ;^)
Oh, and then there’s the interactions with the website – we’ll be running the inspections and the indenter on the website, and we’ll have the ability to (optionally) have Rubberduck know when a new version is available!
2.0.12 is going to be epic.
The 2.0 build
And then there’s even more: we’re going to make the inspections a concern of the parser engine, and turn them into parse tree node annotations – which means the code that currently finds the Declaration
that’s currently selected (or one of its references), can also be used to find inspection results associated with that particular Declaration
; this will probably prompt a redesign of how we present inspection results, and will definitely improve performance and memory footprint.
One of the best 2.x features is probably going to be the add/remove references dialog, which is currently merely prototyped. Beefing up unit testing with data-driven tests is also going to be a big one.
And when you see where we want to be for 3.0 (code path analysis & expression resolution, plug-in architecture, a subclassed CodePane
that actually tells us what’s going on, perhaps even with our own enhanced IntelliSense, more host-specific behaviors, TONS of new inspections), …this project is so awesome, I could just keep going on and on.
Not coming soon enough? I know, right!
To be continued…