This page will give you an overview of what's new in Oxygene 6.0.
The biggest and most significant addition to version 6.0 is the introduction of our new and third platform for the Oxygene language: the Cocoa platform (and the Objective-C) runtime.
Oxygene for Cocoa introduces an all new compiler back-end that lets you create fully native applications for Mac and iOS, compiled straight to x64 (Mac) and ARM (iOS) instructions, fully leveraging the Objective-C runtime, the Cocoa classes, and the native UI widgets on Mac and iOS.
Features and benefits of the new Oxygene for Cocoa edition include:
Aside from Cocoa support, a variety of (smaller) enhancements have been made to the language.
"unit" level visibility has been introduced for all three platforms, giving you even more control over what parts of your code can access the classes and members you define, even within the same project and executable. unit visibility is available for types and members, and unit and protected and unit or protected visibilities are available on members, additionally.
Support for low-overhead and precise comparisons between signed and unsigned integers of the same size has been added. Most languages will either fail to compile such comparisons, or will perform a binary comparison that will have wrong results for negative values. Starting with Oxygene 6, it is now valid and safe to compare, say, an Int32 and a UInt32 (all platforms).
Two Pascal classics, the write() and writeLn() compiler magic functions have been added to Oxygene for all three platforms, making it easier to write information to the console from code shared between .NET, Cocoa and Java.
Another enhancement for sharing command-line application code across platforms is the introduction of a unified entry point signature for all three platforms. Despite different requirements by the underlying environments, Oxygene will now accept a Main() method with optional array of String parameter and Int32 result, in all three editions, and take care of the rest for you.
Block (a.k.a. "delegate", on .NET) types can now be defined inline, for example in method or property declarations, without requiring an explicit named type declaration (on .NET and Cocoa). In addition, the new block keyword has been introduced to replace the (now deprecated) delegate keyword, for more consistent terminology across all three platforms.
Support for futures has been expanded, allowing the assignment of "async anonymous methods" to future types. Futures also work consistently across all three platforms now, including Cocoa.
A new Compiler Directive $GLOBALS (or $G for short) has been added to turn support for global functions (off by default) on or off more granularly, on a per-file level (before, Globals would only be turned on project-wide).
New standard conditional defines GC (on .NET and Java) and ARC (on Cocoa) are provided, to conditionally compile for ARC vs. GC. Also, new ECHOES, TOFFEE and COOPER defines have been added to mark the three editions, as well as the more official COCOA (which joins the existing DOTNET and JAVA defines).
The "July 2013" update added support for unsigned integer types on Java, a feature not available in the Java language or the core Java runtime itself.
A new Prefer 32-bits flag option is provided for .NET executables, in order to mark them to run as 32-bit (on 64-bit systems) by default, without requiring to explicitly mark the executable as being "x86-specific", which would preclude execution on ARM devices, such as on Windows RT.
The Android toolchain has been improved to more reliably detect various Android SDK variations and with support for the new ATD Bundle version of the Android SDK download and updates for toolchain changes in the 4.2.2 SDK.
The .target files that drive the Oxygene build process have been streamlined, improved and renamed more consistently. In addition, brand new cross-platform-capable (i.e. friendly to Mac command-line builds) infrastructure has been put in place for resolving references, in all three editions.
The code editor has been improved to optionally support different color coding for local types versus external types.
Finally, starting with Oxygene 6, we are focusing our IDE integration development solely onto Visual Studio 2012 and later/future versions of the IDE. Support for Visual Studio 2010 has been phased out for the May 2013 release.
The "July 2013" update added support for unsigned integer types on Java, a feature not available in the Java language or the core Java runtime itself.