У GTK есть множество привязок[англ.] для различных языков[1], которые реализуют все или часть функций GTK.
GObject (GOB) был изначально написан как главный компонент GTK, но в итоге им стал GLib. GObject Introspection — промежуточный слой между библиотеками на Си (которые используют GObject) и языковыми привязками; например PyGObject использует именно его, а PyGTK — нет[2]. Официальные привязки GNOME следуют расписанию выпусков GNOME, что гарантирует стабильность API.
Язык | Название | Поддерживается? | Лицензия | Примечания | |||
---|---|---|---|---|---|---|---|
2.24 | 3.12 | GIR | Официально | ||||
Ада | GtkAda | Частично | Частично | Нет | Нет | GPLv3 | Поддерживается до версии 3.8.[3] |
Си | GTK+ | Да | Да | N/A | Да | LGPL-2.1 | Нативно, привязки не требуются. |
C++ | gtkmm | Да | Да | Нет | Да | LGPL-2.1 | |
C# и другие CLI-языки | Gtk#[англ.] | Частично | Частично | Нет | Да | LGPL-2.1 | Поддерживается до версии 2.12. Поддержка 3.0 в разработке.[4] |
D | GtkD | Да | Да | Нет | Нет | LGPL-3 с исключениями[5] | Поддерживается с версии 2.12 |
Erlang | gtknode | Частично | Нет | Нет | Нет | MIT[6] | Частично поддерживается с версии 2.16 |
Фортран | gtk-fortran | Частично | Частично | Нет | Нет | GPL-3 | Частично поддерживается с версии 2.24. Поддерживался полностью с версии 2.12 до 2.18 |
FreeBASIC | FreeBASIC-привязки к GTK+ | Да | Частично | Нет | Нет | LGPL-3 с исключениями | Поддерживается до версии 3.4 и с версии 2.8 встроен в основную поставку. |
Gambas | Gambas gb.gtk component | Частично | Нет | Нет | Нет | GPL-2 | Поддержка GTK+ 3 в разработке. |
Genie | Genie | Да | Да | Да | Да | LGPL-2.1 | Язык написан для системы GObject |
Go | go-gtk | Частично | Нет | Нет | Нет | BSD/LGPL-2.1 | Частично поддерживался в версии 2.24 |
gotk3 | Нет | Частично | Нет | Нет | ISC[7] | ||
gogobject | Нет | Частично | Да | Нет | MIT | ||
Guile | guile-gnome | Частично | Нет | Нет | Нет | GPL-2 | Поддерживается до версии 2.12, частично поддерживается в 2.14 |
Haskell | Gtk2Hs | Да | Да | Нет | Нет | LGPL-2.1 | Gtk2Hs — набор привязок к различным библиотекам, в том числе GTK+. |
J | J GTK addon | Частично | Нет | Нет | Нет | GPL-3 | |
Java и другие языки JVM | java-gnome | Да | Да | Нет | Да | GPL-2 с исключениями | Недоступна для Microsoft Windows |
Julia | Gtk.jl | Да | Да | Нет | Нет | MIT | Включает поддержку Glib |
JavaScript | Gjs | Да | Да | Да | Да | MIT | Основывается на SpiderMonkey от Mozilla |
Seed | Да | Да | Да | Да | LGPL-2.1 | Основывается на JavaScriptCore от WebKit | |
Lua | LGI | Частично | Да | Да | Нет | MIT[8] | Динамические привязки к GObject, использующие GObject-Introspection. |
lgob | Нет | Да | Да | Нет | LGPL-3 | lgob предоставляет привязки к GObject-based для Lua 5.1. | |
OCaml | LablGtk | Частично | Нет | Нет | Нет | LGPL-2.1 с исключениями | Поддерживается до версии 2.16 |
ooRexx | RexxGTK | Частично | Нет | Нет | Нет | CPL | Поддерживается с версии 2.0 |
Objective-C | CoreGTK | Нет | Частично | Нет | Нет | LGPL-2.1 | |
ObGTK | Частично | Нет | Нет | Нет | LGPL-2.1 | ||
Objective-C GTK | Частично | Нет | Нет | Нет | LGPL-2.1 | ||
Паскаль | Free Pascal gtk package | Да | Да | Нет | Нет | LGPL-3 с исключениями | Поддерижвается до 2.24, встроен в стандартную поставку. Привязки к Gtk+3.0 разрабатываются проектом Lazarus-ccr.[9] |
Perl | Gtk2-Perl | Да | Да | Да | Да | LGPL-2.1 | |
PHP | PHP-GTK | Частично | Частично[10] | Нет | Нет | LGPL-2.1 | |
Пролог | PLGI | Частично | Да | Да | Нет | LGPL-2.1 | Динамические привязки к GObject, использующие GObject-Introspection. |
Python | pgi | Частично | Частично | Да | Нет | LGPL-2.1 | GObject Introspection привязки для PyPy. |
pygir-ctypes | Частично | Частично | Да | Нет | BSD | Обёртка для GObject Introspection Repository (GIR) на чистом Python, использующая ctypes. | |
PyGObject | Да | Да | Да | Да | LGPL-2.1 | С версии 2.22[11] | |
PyGTK | Да | Нет | Нет | Да | LGPL-2.1 | Статические привязки, использующие PyGObject | |
R | RGtk2 | Частично | Нет | Нет | Нет | GPL-2 | [12] |
Ruby | GirFFI-Gtk | Частично | Частично | Да | Нет | LGPL-2.1 | Основанные на GirFFI привязки к Gtk+. Поддерживает как Gtk+ 2, так и Gtk+ 3. |
Ruby-GNOME2 | Частично | Да | Нет | Нет | MIT License | Частично поддерживается до версии 2.12 и после версии 2.14[13] | |
Rust | gtk-rs | Нет | Да | Да | Да | LGPL-2.1 | |
gi-rust | Нет | Да | Да | Нет | LGPL-2.1 | ||
Smalltalk | GNU Smalltalk GTK+ bindings | Да | Нет | Нет | Нет | GPL-2 | |
Smalltalk YX GTK±плагин | Да | Нет | Нет | Нет | MIT | ||
SqueakGtk | Частично | Нет | Нет | Нет | MIT | ||
Tcl | Gnocl | Да | Нет | Нет | Нет | BSD | |
Vala | Vala | Да | Да | Да | Да | LGPL-2.1 | Язык написан для GObject |
Wrapl | Wrapl GTK+ module | Частично | Нет | Нет | Нет | GPL-3 | Почти полностью поддерживается до версии 2.22 |