Differences and Limitations

This page describes differences and caveats in RemObjects Swift vs. Apple's standard Swift implementation. These differences fall into three categories:

Additional Features

Please check out the Language Extensions topic for detailed coverage of the features RemObjects Swift adds on top of regular Apple Swift. These are few, and only added with extreme caution where necessary to properly embrace all platforms.

RemObjects Swift also extends error handling to cover both Swift style errors and platform exceptions. You can read more about that here:

Temporary Limitations

These are temporary limitations or differences in our implementation of Swift. They are due to the beta status or that we simply haven't found proper solutions for them yet on all platforms, and our goal is to resolve these over time.

none currently known

Permanent Differences

The differences listed here are permanent and intrinsic to Silver's implementation of Swift, usually driven by demands of the platforms. We expect these differences to remain indefinitely.

  • Silver uses the platform String types (with some extensions) which are UTF-16 based, implemented as reference types, and immutable.

  • Type Extension are limited when the extended class is declared in a different project/assembly, and they do not support (a) adding new fields or stored properties or (b) implementing additional protocols.

  • On the Cocoa and Island platforms, not every (non-class) type descends from the root Object class. As a result, in Silver types that do not descend from Object are not compatible with the Swift-defined Any type.

  • On the Cocoa platform, protocols cannot be applied to structs when using the Toffee back-end. This limitation is lifted in the upcoming multi-platform Island back-end.