![]() | This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages) (Learn how and when to remove this message)
|
![]() | |
![]() Window Maker and a variety of applications were developed with the GNUstep libraries, including agomoku game,calculator, andTextEdit. | |
Developer(s) | GNUstep Developers |
---|---|
Stable release | make 2.9.2, base 1.30.0, gui 0.31.1, back 0.31.0 / June 6, 2024; 9 months ago (2024-06-06) |
Preview release | on the GitHub software repository |
Repository | |
Written in | Objective-C |
Operating system | Cross-platform |
Type | Widget toolkit |
License | GNU General Public License for the applications GNU Lesser General Public License for the libraries. |
Website | www |
GNUstep is afree software implementation of theCocoa (formerlyOpenStep)Objective-Cframeworks,widget toolkit, and application development tools forUnix-likeoperating systems andMicrosoft Windows. It is part of theGNU Project.
GNUstep features a cross-platform, object-orientedIDE. Apart from the defaultObjective-C interface, GNUstep also hasbindings forJava,Ruby,[1]GNU Guile andScheme.[2] The GNUstep developers track some additions to Apple'sCocoa to remain compatible. The roots of the GNUstep application interface are the same as the roots of Cocoa:NeXTSTEP andOpenStep. GNUstep thus predates Cocoa, which emerged whenApple acquiredNeXT's technology and incorporated it into the development of the originalMac OS X, while GNUstep was initially an effort byGNU developers to replicate the technically ambitious NeXTSTEP's programmer-friendly features.
GNUstep began whenPaul Kunz and others atStanford Linear Accelerator Center wanted to portHippoDraw fromNeXTSTEP to another platform. Instead of rewriting HippoDraw from scratch and reusing only the application design, theydecided to rewrite the NeXTSTEPobject layer on which the application depended. This was the first version oflibobjcX. It enabled them to port HippoDraw to Unix systems running theX Window System without changing a single line of their application source. After the OpenStep specification was released to the public in 1994, they decided to write a newobjcX which would adhere to the new APIs. The software would become known as "GNUstep".[3]
TheFoundation Kit provides basic classes such as wrapper classes and data structure classes. TheApplication Kit provides classes oriented aroundgraphical user interface capabilities. GNUstep contains a set ofgraphical control elements written in the Objective-C programming language.
Thegraphical user interface (GUI) ofGNUMail is composed of graphics control elements. GNUMail has to interact with thewindowing system, e.g.X11 orWayland, and its graphical user interface has to berendered. GNUstep's backend provides a small set of functions used by the user interface library to interface to the actualwindowing system. It also has arendering engine which emulates commonPostscript functions. The package gnustep-back provides the following backends:
GNUstep inherits some design principles proposed in OPENSTEP (GNUstep predates Cocoa, but Cocoa is based on OPENSTEP) as well as theObjective-C language.
In addition to the Objective-C interface, some small projects under the GNUstep umbrella implement other APIs from Apple:
As of February 2020[update], there are no projects that build theSwift programming language against the GNUstep Objective-C environment.
Here are some examples of applications written for or ported to GNUstep.
Note: Microsoft's WinObjC project contains a friendly fork of this library that includes a work around for the incremental linking issue.