Version 7.0 marks a major new release for our compiler and toolchain, with the most significant addition being the introduction of RemObjects C# (previously codenamed Hydrogene) as brand new language now sharing the spotlight, and the same infrastructure, with Oxygene.
RemObjects C# is a separate product, available standalone, or bundled together with Oxygene, and it brings all the benefits and all the non-language features and technology to developers who prefer using C# as their development language of choice – including of course support for Cocoa and Java/Android.
But that’s not all. Version 7 has a lot to offer on the Oxygene front as well:
With this version, we’re bringing LINQ support to the Cocoa and Java platforms. That means you can now use the same intuitive query syntax you are already used to from .NET to work with arrays and sequences in your iOS, Mac and Android apps.
LINQ support brings with it these features:
There are also a lot of under-the-hood fixes and improvements to make LINQ work. More on the wiki
Multi-part method names were originally introduced in Oxygene 6.0 for Cocoa, mainly driven by the way Objective-C APIs are designed. But they have become such a well-received syntax that we decided to bring them across to all platforms and make them a true Oxygene (and RemObjects C#) language feature.
This makes it easier to share code between all platforms without having to worry to limit yourself to classic method signatures. But more than that, Multi-part method names are just a great way to design readable APIs and write methods that are intuitive to call. More on the wiki
We’ve also further improved the compiler to make it even easier to share code between platforms, with a new compatibility mode option. Once turned on (project wide, or per file via the {$CROSSPLATFORM ON} or #pragma crossplatform on directives), it makes the compiler less strict about using platform-specific language syntaxes, and also emits helpful hints and warnings that give you heads up about things that will not port well.
The idea is to turn Cross-Platform Compatibility Mode on for shared code, while staying platform-pristine for platform-specific code. More on the wiki
The time has come, and this release also finally ships with Version 1.0 of Sugar, our long-awaited cross-platform base library.
Largely built upon the Mapped Types feature, Sugar provides a wide range of types that can be used – with a unified API – across all platforms. This goes from simple types such as String, over network and disc access to XML parsing.
Sugar is an open source project, and between our own continued work and community contributions, it will grow over time to include more and more useful classes.
With Sugar (and the other cross-platform enhancements we have made), it is becoming easier than ever to write backend business code that can be shared – with few or no IFDEFs – between applications for different platforms. More on the wiki
Another long-requested feature has been Oxidizer support for importing Objective-C code. While still marked as ”experimental” in this release, the feature is now available – and can convert to either Oxygene or RemObjects C#.
All of this is rounded off by a good dozen of other smaller features and improvements, as well as over two hundred bug fixes.
As always, the full Change Logs will have all the details.