Differences and Limitations

This page describes differences and caveats in RemObjects Silver 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 Silver adds on top of regular Apple Swift. These are few, and only added with extreme caution where necessary to properly embrace all platforms.

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, protocols cannot be applied to structs