Bu proje, Swift programlama dili kullanarak GNUStep'in AppKit sürümü için bir arayüz sunmayı hedefliyor. Temel amacı, Swift uygulamalarının GNUStep masaüstü ortamında AppKit benzeri bir grafik kullanıcı arayüzü (GUI) deneyimi sağlamasıdır. Proje, OnFlapp'in GNUStep Desktop projesi üzerinde çalışacak şekilde tasarlanmıştır ve Debian üzerinde GNUStep Desktop ile Swift 5.8.1 kurulumunu gerektirir. Geliştirici, dosya sistemi düzeni ve kaynak dosyalarının derlenmiş Swift yürütülebilir dosyasıyla aynı klasöre kopyalanması gibi kurulum adımlarına dikkat çekiyor.
Proje, Swift'ten GNUStep'in Objective-C sınıflarını örneklemek için özel bir Swift sınıfı kullanır. Yeni bir NSObject örneklendiğinde retain çağrısı yapılırken, mevcut bir işaretçiyi sarmalarken bu işlem şu an için yapılmamaktadır. Mevcut bir NSObject'in alt sınıfını sarmalamak isteyen geliştiricilerin GNUStepNSObjectSubclassConstructor'ı uygulaması gerekmektedir. Oluşturulan her yeni Objective-C nesnesine, sarıldığı Swift nesnesine işaret eden ___swiftPtr adında ek bir Ivar (instance variable) eklenir. GNUStepNSObjectWrapper sınıfı, GNUStep Objective-C çalışma zamanındaki NSObject'lere referans tutar ve oluşturduğu nesneleri yönetir.
Geliştirme sürecinde karşılaşılan önemli zorluklardan biri, objc_msgSend ve objc_msgSend_stret fonksiyonlarının Swift ile uyumlu çalışmasını sağlamaktı. Bu fonksiyonlar Objective-C nesnelerine mesaj göndermek (metot çağırmak) için kullanılır. Geliştirici, bu sorunu aşmak için class_getMethodImplementation'ı çağıran ve daha "Swiftvari" bir yaklaşım sunan objc_smart_getIMP adında özel bir fonksiyon geliştirmiştir. Bu fonksiyon, metot aramalarını ve tür dönüşümlerini kolaylaştırır. Proje, bellek yönetimi (retain/release) ve nesnelerin bir tablosunu depolamanın en iyi yolu gibi konular üzerinde hala çözümler aramaktadır.
Swift uygulamalarının GNUStep ortamında AppKit benzeri bir GUI deneyimi sunmasını sağlayarak platformlar arası geliştirme potansiyelini genişletiyor.