Something I get asked quite often with regards to FinalBuilder is “why don't I rewrite it in a .NET language, that way anyone could write plugins”. I have to admit it is tempting, because currently only Borland Delphi 7 users can write custom actions, while all those VS.NET users out there are stuck with what's in the box (so to speak!). Before we started on FinalBuilder 2 I spent a few weeks investigating porting to .NET, however it turned out to be a bigger task than I could manage in one product revision. At the time, Delphi 8 for .NET hadn't been released so it wasn't an option, and we had way too much code to rewrite in C#, so in the end we stuck with Win32 and Delphi 7. Delphi and Win32 have have served us well over the last 9 years, in a way that no other win32 development tool could (not looking to start a language/tool war here, just stating my opinion!), but the future is .NET.
We're currently at the planning & R&D phase for FinalBuilder 3. This weekend I found myself with a few hours to spare so I decided to start some R&D. It may not be obivous to every VS.NET or Delphi 8 user, but those IDE's are UnManaged Win32 applications, yet they seem to interop quite well with .NET by hosting the CLR. So that got me thinking about doing the same thing in FinalBuilder. Unfortunately there's not a lot of info out there on how to do this in Delphi, in fact I found nothing of use on Google. So I started poking around in my .NET SDK directory and found enough to get me started.
The good news that I was able to host the CLR in a Delphi win32 application, load assemblies, instantiate .net objects and call methods on them, pass Delphi objects (disguised as com objects) to an assembly written in C# and then call methods on the delphi object from within the C# assembly. So far so good, I have yet to hit a roadblock, in that everything I wanted to do I was able to.
So what does this all mean for the future of FinalBuilder. Well, the plan is to migrate to a fully managed application eventually, but the first step will be to enable custom actions to be written with any .net language, and host those in the unmanaged FinalBuilder IDE. Any new actions we write after that will be managed code. I still have more R&D to do but it looks promising.... stay tuned.
.v