discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNUstep Live on OSnews


From: David Chisnall
Subject: Re: GNUstep Live on OSnews
Date: Tue, 1 Aug 2017 10:18:06 +0100

On 31 Jul 2017, at 20:43, Liam Proven <lproven@gmail.com> wrote:
> 
> GNUstep apps can _only_ be written in Objective-C?

Kind of.  They can only be written in a language that has good bridging to 
Objective-C[++].  All of the interfaces are exposed as Objective-C objects, but 
there are bridges that allow these to be used from (as far as I am aware):

 - Java (JIGS)
 - Ruby (RIGS)
 - Python (not sure if this has a name, but I think it’s now part of the 
upstream ObjC bridge).
 - Rust

And we have a GSoC student who is working on porting JavaScriptCore, which 
would give us a high-performance JavaScript bridge too (for some workloads, JSC 
will generate faster code than using ObjC).

The most under-appreciated language is probably Objective-C++.  C++11 or later 
is a good language for programming in the small, Objective-C for programming in 
the large, and the two compose surprisingly well.  I’ve recently been writing 
an OmniOutliner replacement[1] in Objective-C++, and finding that I can do a 
lot of things in about half as much code in Objective-C++ than in either 
Objective-C or C++ (for example, Objective-C’s for..in loops are restricted to 
collections that contain objects, but with a tiny adaptor you can use 
NSIndexSet or NSString in C++ range-based for loops).

> OK, if so... are there any other rival foundation classes for writing
> GUI apps in Objective-C on Linux?

There are five implementations of the Foundation framework that I know of:

 - GNUstep Base
 - Microsoft’s WinObjC, which uses a lot of code from Apple’s SwiftFoundation
 - libFoundation (I think this is dead now?)
 - Justin Hibbits’ implementation (lightweight, FreeBSD-only, very clean code, 
but largely unmaintained now).
 - Cocotron (upstream[2] seems to be dead - last commit 2 years ago, though 
there are some moderately active forks).

Of these, only GNUstep and Cocotron also provide an AppKit implementation.  
Microsoft’s WinObjC provides an incomplete UIKit implementation, though 
recently they’ve refocused on providing bridging for their own GUI framework, 
to make it possible to use the same core on Windows and iOS but have native 
GUIs for each.

David

[1] https://github.com/davidchisnall/OpenOutliner/
[2] https://github.com/cjwl/cocotron


reply via email to

[Prev in Thread] Current Thread [Next in Thread]