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 | Partial | Partial | Yes | No | GPL-3 | Supported up to 3.14.[3][4] |
C | GTK | Yes | Yes | N/A | Yes | LGPL-2.1 | Native, no binding needed. |
C++ | gtkmm | Yes | Yes | No | Yes | LGPL-2.1 | |
C# and other CLI languages | Gtk# | Partial | No | No | Yes | LGPL-2.1 | Support for GTK 2 is available up to 2.12. [5] |
GtkSharp | No | Yes | No | No | LGPL-2.1 | Support for GTK 3 is available up to 3.22. | |
Crystal | crystal-gobject | ‹See Tfd›? | ‹See Tfd›? | Yes | No | Apache-2.0 | |
D | GtkD | Yes | Yes | Yes | No | LGPL-3 with exceptions[6] | Supported since 2.12 |
Erlang | gtknode | Partial | No | No | No | MIT[7] | No, partially supported up to 2.16 |
Fortran | gtk-fortran | Partial | Partial | No | No | GPL-3 | Partially supported since 2.24. GTK 4 support in development. |
FreeBASIC | FreeBASIC GTK+ bindings | Yes | Partial | No | No | LGPL-3 with exception | Supported up to 3.4 and since 2.8, integrated into the core distribution. |
Gambas | Gambas gb.gtk component | Partial | No | No | No | GPL-2 | GTK+ 3 support is in development |
Genie | Genie | Yes | Yes | Yes | Yes | LGPL-2.1 | language written for GObject system |
Go | go-gir-generator | ‹See Tfd›? | ‹See Tfd›? | Yes | No | GPL-3 | |
gotk3 | No | Partial | No | No | ISC[8] | ||
Guile | guile-gnome | Partial | No | No | No | GPL-2 | supported up to 2.12, partially supported on 2.14 |
Haskell | Gtk2Hs | Yes | Partial | No | No | LGPL-2.1 | Gtk2Hs is a set of Haskell bindings to many of the libraries included in the GTK+/GNOME platform. |
haskell-gi | No | Yes | Yes | No | LGPL-2.1 | Generate Haskell bindings for GObject Introspection capable libraries | |
J | J GTK addon | Partial | No | No | No | GPL-3 | |
Java and other JVM languages | java-gnome | Yes | Yes | No | Yes | GPL-2 with exception | Unavailable on Microsoft Windows |
Julia | Gtk.jl | Yes | Yes | No | No | MIT | Includes Glib support |
JavaScript | Gjs | Yes | Yes | Yes | Yes | MIT | GNOME wiki, based on Mozilla's SpiderMonkey |
Seed | Yes | Yes | Yes | Yes | LGPL-2.1 | GNOME wiki, based on WebKit's JavaScriptCore | |
Lua | LGI | Partial | Yes | Yes | No | MIT[9] | Dynamic Lua binding to GObject libraries using GObject-Introspection. |
lgob | No | Yes | Yes | No | LGPL-3 | lgob provides bindings of GObject-based libraries for Lua 5.1. | |
Nim | gintro | No | Yes | Yes | No | MIT | High level GObject-Introspection based GTK3/GTK4 bindings for Nim language |
OCaml | LablGtk | Partial | No | No | No | LGPL-2.1 with exception | No, supported up to 2.16 |
ooRexx | RexxGTK | Partial | No | No | No | CPL | Yes, 2.0 or later |
Objective-C | CoreGTK | No | Partial | No | No | LGPL-2.1 | |
ObGTK | Partial | No | No | No | LGPL-2.1 | ||
Objective-C GTK | Partial | No | No | No | LGPL-2.1 | ||
Pascal | Free Pascal gtk package | Yes | Yes | No | No | 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.[10] |
Perl | Gtk2-Perl | Yes | Yes | Yes | Yes | LGPL-2.1 | |
PHP | PHP-GTK | Partial | Partial[11] | No | No | LGPL-2.1 | PHP until 5.2, GTK is GTK2 |
Prolog | PLGI | Partial | Yes | Yes | No | LGPL-2.1 | Dynamic Prolog binding to GObject libraries using GObject-Introspection. |
Python | pgi | Partial | Partial | Yes | No | LGPL-2.1 | GObject Introspection Bindings for PyPy. |
pygir-ctypes | Partial | Partial | Yes | No | BSD | Pure Python GObject Introspection Repository (GIR) wrapper using ctypes. | |
PyGObject | Yes | Yes | Yes | Yes | LGPL-2.1 | since 2.22[12] | |
PyGTK | Yes | No | No | Yes | LGPL-2.1 | static bindings, use PyGObject | |
R | RGtk2 | Partial | No | No | No | GPL-2 | RGtk2.pdf |
Ruby | GirFFI-Gtk | Partial | Partial | Yes | No | LGPL-2.1 | GirFFI-based bindings for Gtk+. Supports both Gtk+ 2 and Gtk+ 3. |
Ruby-GNOME2 | Partial | Yes | No | No | MIT License | Partial, supported up to 2.12, partially supported since 2.14[13] | |
Rust | gtk-rs | No | Yes | Yes | No | MIT[14] | |
gi-rust | No | Yes | Yes | No | LGPL-2.1 | ||
Smalltalk | GNU Smalltalk GTK+ bindings | Yes | No | No | No | GPL-2 | |
Smalltalk YX GTK+ plugin | Yes | No | No | No | MIT | ||
SqueakGtk | Partial | No | No | No | MIT | ||
Tcl | Gnocl | Yes | No | No | No | BSD | |
Vala | Vala | Yes | Yes | Yes | Yes | LGPL-2.1 | language written for GObject system |
Wrapl | Wrapl GTK+ module | Partial | No | No | No | GPL-3 | No, but almost full up to 2.22 |
See also
References
- "Language Bindings". The GTK Project. Archived from the original on 2011-07-13. Retrieved 2013-05-18.
- "GObject Introspection".
- http://docs.adacore.com/gtkada-docs/gtkada_ug/_build/html/intro.html
- https://docs.adacore.com/gtkada-docs/gtkada_ug/_build/html/object_oriented.html
- https://www.mono-project.com/docs/gui/gtksharp/
- "GtkD License LGPL-3 with additional exceptions".
- "gtknode license".
- "gotk3 license".
- "LGI license".
- http://wiki.freepascal.org/Gtk%2B3
- Alexandre Pereira Bühler (2015-06-22). "Attention: created branch dev-php-gtk3". PHP-GTK General Mailing List.
- "PyGObject History". Retrieved 2013-08-29.
- Ruby-GNOME2 Project Team. "gtk3 / Rubygems". Retrieved 2013-05-07.
- "GTK-rs license".
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.