List of language bindings for GTK

As shown in the table below, GTK has a range of bindings for various languages[1] that implement some or all of its feature set.

  • GObject (GOB) was initially written as a central component of GTK, but outsourced into GLib.
  • GObject Introspection is a middleware layer between C libraries (using GObject) and language bindings, e.g. PyGObject uses this, while PyGTK does not.[2]
  • Official GNOME Bindings follow the GNOME release schedule which guarantees API stability and time-based releases.
  • Glade Interface Designer
Language Name Supported? License Notes
2.24 3.12 GIR Official
Ada GtkAda PartialPartialYesNo GPL-3 Supported up to 3.14.[3][4]
C GTK YesYesN/AYes LGPL-2.1 Native, no binding needed.
C++ gtkmm YesYesNoYes LGPL-2.1
C# and other CLI languages Gtk# PartialYesNoYes LGPL-2.1 Support for GTK 2 is available up to 2.12. [5]

Support for GTK 3 is available up to 3.22. [6]

Crystal crystal-gobject ??YesNo Apache-2.0
D GtkD YesYesYesNo LGPL-3 with exceptions[7] Supported since 2.12
Erlang gtknode PartialNoNoNo MIT[8] No, partially supported up to 2.16
Fortran gtk-fortran PartialPartialNoNo GPL-3 Partially supported since 2.24. GTK 4 support in development.
FreeBASIC FreeBASIC GTK+ bindings YesPartialNoNo LGPL-3 with exception Supported up to 3.4 and since 2.8, integrated into the core distribution.
Gambas Gambas gb.gtk component PartialNoNoNo GPL-2 GTK+ 3 support is in development
Genie Genie YesYesYesYes LGPL-2.1 language written for GObject system
Go go-gir-generator ??YesNo GPL-3
gotk3 NoPartialNoNo ISC[9]
Guile guile-gnome PartialNoNoNo GPL-2 supported up to 2.12, partially supported on 2.14
Haskell Gtk2Hs YesPartialNoNo LGPL-2.1 Gtk2Hs is a set of Haskell bindings to many of the libraries included in the GTK+/GNOME platform.
haskell-gi NoYesYesNo LGPL-2.1 Generate Haskell bindings for GObject Introspection capable libraries
J J GTK addon PartialNoNoNo GPL-3
Java and other JVM languages java-gnome YesYesNoYes GPL-2 with exception Unavailable on Microsoft Windows
Julia Gtk.jl YesYesNoNo MIT Includes Glib support
JavaScript Gjs YesYesYesYes MIT GNOME wiki, based on Mozilla's SpiderMonkey
Seed YesYesYesYes LGPL-2.1 GNOME wiki, based on WebKit's JavaScriptCore
Lua LGI PartialYesYesNo MIT[10] Dynamic Lua binding to GObject libraries using GObject-Introspection.
lgob NoYesYesNo LGPL-3 lgob provides bindings of GObject-based libraries for Lua 5.1.
Nim gintroNoYesYesNo MIT High level GObject-Introspection based GTK3/GTK4 bindings for Nim language
OCaml LablGtk PartialNoNoNo LGPL-2.1 with exception No, supported up to 2.16
ooRexx RexxGTK PartialNoNoNo CPL Yes, 2.0 or later
Objective-C CoreGTK NoPartialNoNo LGPL-2.1
ObGTK PartialNoNoNo LGPL-2.1
Objective-C GTK PartialNoNoNo LGPL-2.1
Pascal Free Pascal gtk package YesYesNoNo LGPL-3 with exception Supported up to 2.24, integrated into the core distribution. Gtk+3.0 bindings are being developed in the Lazarus-ccr project.[11]
Perl Gtk2-Perl YesYesYesYes LGPL-2.1
PHP PHP-GTK PartialPartial[12]NoNo LGPL-2.1 PHP until 5.2, GTK is GTK2
Prolog PLGI PartialYesYesNo LGPL-2.1 Dynamic Prolog binding to GObject libraries using GObject-Introspection.
Python pgi PartialPartialYesNo LGPL-2.1 GObject Introspection Bindings for PyPy.
pygir-ctypes PartialPartialYesNo BSD Pure Python GObject Introspection Repository (GIR) wrapper using ctypes.
PyGObject YesYesYesYes LGPL-2.1 since 2.22[13]
PyGTK YesNoNoYes LGPL-2.1 static bindings, use PyGObject
R RGtk2 PartialNoNoNo GPL-2 RGtk2.pdf
Ruby GirFFI-Gtk PartialPartialYesNo LGPL-2.1 GirFFI-based bindings for Gtk+. Supports both Gtk+ 2 and Gtk+ 3.
Ruby-GNOME2 PartialYesNoNo MIT License Partial, supported up to 2.12, partially supported since 2.14[14]
Rust gtk-rs NoYesYesNo MIT[15]
gi-rust NoYesYesNo LGPL-2.1
Smalltalk GNU Smalltalk GTK+ bindings YesNoNoNo GPL-2
Smalltalk YX GTK+ plugin YesNoNoNo MIT
SqueakGtk PartialNoNoNo MIT
Tcl Gnocl YesNoNoNo BSD
Vala Vala YesYesYesYes LGPL-2.1 language written for GObject system
Wrapl Wrapl GTK+ module PartialNoNoNo GPL-3 No, but almost full up to 2.22

See also

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.