Realm はこれまで、Cocoa 関連の開発用に Realm Objective-C と Realm Swift の 2 つのバインディングを提供しています。後者は前者に基づいており、Objective-C API の浅いラッパーであり、Swift 標準ライブラリから型とプロトコルを採用し、より便利な API を公開しています。純粋な Swift バインディングの代わりにそのアーキテクチャを使用する理由は、Swift が C++ コードとのインターフェイスを許可していないためですが、Realm の基盤となるストレージ エンジンはそれに基づいています。これは、Realm Swift を使用しても、Foundation を推移的な依存関係として持つことを意味します。たとえばRLMObject
、Key-Value コーディング、KVO との相互運用、Foundation の値の型 ( NSNumber
、NSArray
、…) の使用に依存しています。
そのため、Swift の Linux バージョンを同梱する Linux 互換の Foundation ディストリビューションが出荷されないと仮定すると、Linux で Realm を使用するには Realm の「純粋な」Swift バインディングが必要になりますが、これはまだ不可能であり、代替の Objective-C バインディングです。 、Foundation、またはGNUstepが候補になる可能性のあるFoundationの成熟した代替実装を回避しますが、これは私たちの側では完全にテストされていません.
更新 #1
Swift は、OS API のシムとして Foundation の API の Swift 実装スタブと共にオープンソース化されたため、Apple の Foundation が利用できない Linux やその他のプラットフォームで移植可能に使用できます。このスタブはそれ以来、プロジェクトへの貢献者による実際の実装で満たされ、Swift 3 リリースの一部であるため、純粋な Swift プロジェクトに使用できます。
ただし、Realm Swift は純粋な Swift ではなく、Realm Objective-C に基づいているという一般的な問題は解決されません。そのため、Objective-C ランタイムと Foundation の可用性に依存しています。
アップデート #2
最近、オンプレミスまたはパブリック クラウドで実行できるRealm Mobile Platformを発表しました。これにより、Linux で Realm を使用できるようになります。ただし、サーバー側のアクセスは、これまでのところ、Node.js バインディングを使用する Enterprise Edition でのみサポートされています。