Hi,
I'm very happy to announce the first public release of Gio, a project for writing portable, hardware accelerated, immediate mode GUI programs in Go.
If you have Go 1.12 installed,
$ export GO111MODULE=on
$ go run
gioui.org/apps/helloshould display the proverbial hello world message. If not, please follow the setup guide at
https://gioui.org/The setup guide describes how to run the gio programs on Android an iOS.
The command
$ go run
gioui.org/apps/gophersruns a simple demo displaying Go contributors fetched from Github. Specify a github token with the -token flag if you run out of quota.
Gio programs run on all the major platforms: iOS/tvOS, Android, Linux (Wayland), macOS and Windows. The project is very much experimental; don't expect Gio to produce production ready programs and apps yet.
Gio only depends on the platform libraries for drawing and input and avoids the platform toolkits. Gio has an immediate mode design where no structure is imposed on the program, not even for the layout hierachy. Unlike any other Go project I know of, Gio runs on all the major platforms, mobile and desktop alike: iOS/tvOS, Android, macOS, Linux, Windows.
Gio includes an efficient vector renderer based on the Pathfinder project (
https://github.com/pcwalton/pathfinder). Text and other shapes are rendered without baking them into texture images, to support efficient animations, transformed drawing and pixel resolution independence.
I decided to release Gio a little earlier than planned because of
increasing activity in the Go GUI space. Fyne recently reached 1.0 and
just two days ago Johann Freymuth released his ui library.
It is my ambition to make Go a natural choice for GUI programs everywhere. I hope you will be inspired to help me with Gio, but if you don't, Gio is dual licensed under MIT and the UNLICENSE, anyone is free to use Gio's code as their own, even without attribution. The
gioui.org/ui/app package is particularly interesting; it abstracts window management, input and vector drawing into a simple Go API. The
gioui.org/cmd/gio tool packages Gio programs into iOS/tvOS frameworks or Android AAR files.
The wide platform support is Gio's eye-catcher, but I'm most proud of its design. I've spent more than a year on the project and most of that time went into designing the API. However, this early release contains very little documentation (and no tests!); expect much more documentation in the coming months.
The project is hosted on Sourcehut (
https://git.sr.ht/~eliasnaur/gio). Despite its very young age, I chose Sourcehut because it is strictly open source, its business model is simple and because it supports contributions without registration. The mailing list (
https://lists.sr.ht/~eliasnaur/gio-dev) is open to everyone and patches are sent with git send-email. I expect that even bug reports (
https://todo.sr.ht/~eliasnaur/gio) can be filed with an email in the future.
- elias