[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
- Re: GNUstep Live on OSnews,
David Chisnall <=