I was so disappointed last week when I started testing my bytecode interpreter (written in Xojo) and found its performance to be terrible. My default assumption was that my code was poor. On a whim, I thought I’d rewrite just the interpreter in a different language to compare performance.
I’ve been meaning to learn C# for a while so I figured now was as good a time as any. I’d had experience in the past messing around with Visual Studio and Mono but always found it more of a challenge than it should be writing c# on a Mac.
Enter RemObjects.
RemObjects is a small company that make an amazing toolchain. They have a cross-platform (macOS, Win, Linux, Android and iOS) compiler that lets you code in any one of five languages (Swift, C#, Pascal, Java and Go) with a VB-like language in the works (codenamed Mercury). They take your code and compile it either to machine code or (if you prefer) to the Java VM, Mono or Microsoft’s CLR. Yes, for the eagle-eyed amongst you, you can write Swift and run it on Windows!
They have an IDE for macOS (called Fire) and one for Windows (called Water). The cool thing is that you can mix and match languages within the same project. You can write one class in Swift and another in C# and they just work as you’d expect. They also have an open source runtime they call Elements RTL that provides loads of functionality (like Dictionaries, Timers, etc) that you can code against giving you one codebase for all platforms.
The performance of their compiler is insane. I literally ported the Xojo code for my VM to C# (not that hard actually) and performed no optimisations. I am seeing two orders of magnitude speed increase in the performance of Possum’s VM!! It’s now about 2x slower than Python with zero optimisations.
The customer service that RemObjects offer blows Xojo out of the water. Their two chief architects watch the forum like hawks, answering questions incredibly quickly and comprehensively. I found a small bug (converting a DateTime
object to a string) and mentioned it on their forum. I kid you not, within 30 minutes the bug was fixed! They push out a new release every week.
Their IDEs are really good but they do not have any form of UI designer. You can certainly do UI work using their toolchain but it’s not integrated into the IDE like it is with Xojo. Some of you will certainly see this as a negative but I urge you to take a look at it. If you’re doing console application based work then this tool is amazing.
Their licensing is really generous. You can code in Swift on any platform for free, forever. They offer academic and personal pricing plans for non-commercial work. There is a 30-day free trial. I just purchased the personal license ($199 for all languages for 1 year) as I am only currently working on hobby projects but should I try to monetise something then I will have no hesitation in paying the full price.