In general, our goal is to keep the Oxygene language as consistent between platforms as possible. Most language and Compiler features discussed in the Oxygene section and elsewhere in these docs will work the same or similar, across all Elements platforms.
That said, due to differences in the underlying platfroms, there will be a few differences. This topic will highlight the most important differences on the Oxygene language side, and you should also check out the Differences topic in the Cross-Platform section of this site, for a more thorough discussion of all differences as they apply to all Elements languages.
- On .NET and Java, the
procedure) keywords work identically to declare a Block. On the other more-native platfroms, only
delegatedeclare a true block, while
proceduredeflare more traditional function pointers w/o a "
self" reference. See here for more details.
- ARC and the
unretainedStorage Modifiers are supported on platforms that use ARC, Cocoa.
lifetimestrategykeyword for Life-Time Strategies is only supported on Island-backed platforms.
optionalkeyword for Interfaces methods is supported only on Cocoa.
unsafecode is not supported on Java, and all code is assumed to be
unsafeon Cocoa and Island, making the keyword ignored/unnecessary on that platform.
- Generic co/contra-variance is supported on .NET only.
- Differences in [Pointer References in Oxygene for Cocoa](Pointer References in Oxygene for Cocoa).
parallel sequences and
queryable sequences are currently only supported for .NET.
- Special Java( Platform)-style exception handling extensions and the
raiseskeyword will be a new platform difference, once implemented.