LWN.net Logo

Advertisement

Our team patches and enhances the Linux kernel and promotes the adoption of Linux at Oracle. mark.wilkerson @oracle.com

Advertise here

GTK+ 3.8.0 released

From:  Matthias Clasen <matthias.clasen-AT-gmail.com>
To:  gnome-announce-list-AT-gnome.org, gtk-list-AT-gnome.org, gtk-app-devel-list-AT-gnome.org, gtk-devel-list-AT-gnome.org
Subject:  GTK+ 3.8.0 released
Date:  Mon, 25 Mar 2013 19:10:08 -0400
Message-ID:  <CAFwd_vAsXgH0BJ1MVDvTUfWdHfFADem5Ru41ZUKXj8azHVrn6w@mail.gmail.com>
Archive-link:  Article, Thread

GTK+ 3.8.0 is now available for download at:

 http://download.gnome.org/sources/gtk+/3.8/
 ftp://ftp.gtk.org/pub/gtk/3.8/

sha256 sum: db1345d89d6b5f5bad411b4b2a3b1a18a2a8f98d2ab1b40d43a0197a6e6c252e
 gtk+-3.8.0.tar.xz


What is GTK+
============

GTK+ is a multi-platform toolkit for creating graphical user
interfaces. Offering a complete set of widgets, GTK+ is suitable for
projects ranging from small one-off tools to complete application
suites.

GTK+ has been designed from the ground up to support a range of
languages, not only C/C++. Using GTK+ from languages such as Perl and
Python (especially in combination with the Glade GUI builder) provides
an effective method of rapid application development.

GTK+ is free software and part of the GNU Project. However, the
licensing terms for GTK+, the GNU LGPL, allow it to be used by all
developers, including those developing proprietary software, without
any license fees or royalties.

Since its origins as the toolkit for the GNU Image Manipulation
Program (GIMP), GTK+ has been used in a wide range of software.
Notably, GTK+ is the foundation of the GNOME desktop.


What's new in 3.8
=================

Major new features include:

* Wayland:
 - we support Wayland 1.0 now

* Broadway:
- we install a separate server: broadwayd

* Theming:
 - Improve touch text handle theming
 - Always draw background of menuitems
 - The default font is no longer handled like a custom style sheet
   that overrides everything, but as the initial value. This is the
   same behavior as in web browsers.
 - It is now possible to set font-family and font-size like other
   CSS properties, and relative font sizes are supported. Font
   sizes in CSS can be specified as numbers or with keywords
   like xx-small, medium, smaller, larger,...
 - GtkFrame now draws a background
 - Opacity can be set on any GtkWidget, not just toplevels

* Geometry management
 - Size groups now handle height-for-width
 - Fix corner cases in label size allocation
 - Invisible widgets now return a size of 0x0. This is an experimental
   change that makes GtkWidget::visible essentially behave the same way
   that "display: none" does in CSS. If you want the effect of CSS's
   "visibility: hidden", you can use a GtkNotebook with an empty page

* Accessibility
 - Entry icons are now accessible
 - We install headers for accessible implementations of GTK+ widgets.
   This makes it possible to implement accessibility for third-party
   widgets by subclassing the proper GTK+ implementation. To do so,
   include gtk/gtk-a11y.h

* Touch
 - We support touch friendly popups on entries and text views
   in place of context menus, on touch devices

* Printing
 - The print dialog now shows printers that are discovered
   using avahi, if configured with --enable-avahi-browsing

* GtkTreeView and GtkIconView allow single-click activation

* We now support the Window Manager frame synchronization protocol
  draft (when running under a WM that supports it). This means
  applications will throttle their drawing cycle to what the compositor
  is drawing, and the compositor will never render half-updated windows,
  for seamless resizing and improves smoothness in drawing.
  See https://mail.gnome.org/archives/wm-spec-list/2013-January...
  and the articles at http://blog.fishsoup.net/ for more details.

* Performance improvements
 - Size allocation has been optimized, by avoiding excessive
   resizing in various situations.
 - The performance of size groups has been improved.
 - Text rendering in GtkLabel and other widgets has been optimized
   to avoid excessive recreation of Pango layouts.
 - Icon loading overhead was reduced by caching of GtkIconInfo.
 - The CSS is now keeping a tree of selectors to speed up matchinh.

* Deprecations and removals:
 - Custom CSS properties have been deprecated
 - Support for color schemes has been removed
 - gtk_style_provider_get_style, gtk_style_provider_get_icon_factory
 - GtkGradient and GtkSymbolicColor
 - All the padding style properties in menus
 - gtk_style_context_set_direction() has been deprecated in favour
   of state flags for text direction: GTK_STATE_FLAG_LTR/RTL
 - gtk_window_set_opacity has been deprecated in favor of
   gtk_widget_set_opacity

* GtkIconInfo has changed from being a boxed type to a GObject. This
  is technically an ABI change, but basically all existing code
  will keep working if its used as a boxed type, and its not
  possible to instantiate GtkIconInfos outside Gtk, so this is not
  expected to be a big problem.


For more details and lists of fixed bugs, see the NEWS file
that is included in the tarball, or see:

 http://git.gnome.org/browse/gtk+/plain/NEWS?id=3.8.0

For concerns about porting from older GLib release, see the
README file that is included in the tarball, or see:

http://git.gnome.org/browse/gtk+/plain/README.in?id=3.8.0


Where to get more information about GTK+
========================================

Information about GTK+ including links to documentation can be
found at:

 http://www.gtk.org/

An installation guide for GTK+ is found at:

 http://library.gnome.org/devel/gtk3/stable/gtk-building.html

Common questions:

 http://library.gnome.org/devel/gtk3/stable/gtk-question-i...


Contributing
============

GTK+ is a large project and relies on voluntary contributions. We are
actively searching for new contributors in various areas and invite
everyone to help project development. If you are willing to
participate, please subscribe to the project mailing lists to offer
your help and read over our list of vacant project tasks:
    http://live.gnome.org/GtkTasks


Thanks to the many people who contributed to this release in the form
of bug reports, patches and translations.


March 25, 2013
Matthias Clasen
_______________________________________________
gnome-announce-list mailing list
gnome-announce-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gnome-announce-list



(Log in to post comments)

GTK+ 3.8.0 released

Posted Mar 26, 2013 8:45 UTC (Tue) by debacle (subscriber, #7114) [Link]

Any word about the current state of win32 and OS X support?

Not to mention crazy ideas like Android :~)

GTK+ 3.8.0 released

Posted Mar 26, 2013 9:40 UTC (Tue) by talisein (subscriber, #31829) [Link]

There's an ongoing enormous thread on the gtk-devel list (Is GTK+ a cross-platform toolkit ?). The gist is that there is some promising forward movement on the win32 front, with the current focus on improving the build system so that more people become capable of actually testing Glib/Gtk in a timely manner. The most active developer seems to be doing his work here: http://www.tarnyko.net/repo/gtk3_build_system/

GTK+ 3.8.0 released

Posted Mar 27, 2013 2:03 UTC (Wed) by Tarnyko (guest, #90061) [Link]

Win32 : we're basically finished with 3.4, 3.6 only needs a bit a reviewing and a 64-bit build. I'm looking into 3.8 right now, would be nice if I can compile broadwayd.

OSX : guys from Lanedo have recently pushed lots of fixes and enhancements upstream. See corporate link : https://twitter.com/LanedoTweets/status/304561497009434625.

Android : I have some ideas, though nothing ready yet. Pushing some bricks right now.

GTK+ 3.8.0 released

Posted Mar 28, 2013 17:38 UTC (Thu) by debacle (subscriber, #7114) [Link]

Good! Thanks for the upgrade.

There is some useful software out there, like Gimp, Dia, Wireshark, Inkscape, etc. that is popular in win32 world and makes use of Gtk+.

Wayland support

Posted Mar 26, 2013 10:16 UTC (Tue) by HelloWorld (guest, #56129) [Link]

Is that a compile-time or run-time option? I. e. can I just start a GTK+ application on Weston and expect it to work, or do I have to recompile GTK+?

Wayland support

Posted Mar 26, 2013 10:43 UTC (Tue) by wingo (subscriber, #26929) [Link]

Wayland support

Posted Mar 26, 2013 14:29 UTC (Tue) by hp (subscriber, #5220) [Link]

note that a GTK app may choose to use X APIs or X-dependent APIs directly, though, so it isn't guaranteed to work just because the app uses GTK. The app has to *only* use GTK.

Wayland support

Posted Mar 27, 2013 12:43 UTC (Wed) by Company (guest, #57006) [Link]

My goal is to make GTK backend support runtime-switchable. So you can for example move your windows from an X server to a Wayland display.

And once we can do that, we can also switch between X servers or Wayland servers. And at that point you can support something like screen for GUIs, so you don't need to shut down the application when you log off. Or even better, move the application to broadway while logged off, so you can connect to it from a web browser and see if it's still doing what it's supposed to (say a long running rendering in Pitivi) and act on it from your Galaxy phone.

But no, we're not there yet. But it shouldn't be too hard if someone wanted to spend a few weeks on it.

Wayland support

Posted Mar 27, 2013 17:26 UTC (Wed) by dlang (✭ supporter ✭, #313) [Link]

> And at that point you can support something like screen for GUIs, so you don't need to shut down the application when you log off

This is possible today with X, no need to invoke Wayland.

http://xpra.org/

GTK+ 3.8.0 released

Posted Mar 26, 2013 14:30 UTC (Tue) by hp (subscriber, #5220) [Link]

after 11 years (https://mail.gnome.org/archives/gnome-announce-list/2002-...) it might be time to remove the mention of Perl from the GTK+ release boilerplate ;-)

GTK+ 3.8.0 released

Posted Mar 26, 2013 14:48 UTC (Tue) by hummassa (subscriber, #307) [Link]

Why, did it stop working?

GTK+ 3.8.0 released

Posted Mar 26, 2013 14:52 UTC (Tue) by hp (subscriber, #5220) [Link]

I don't think it would be most people's current recommendation for how to write a gtk app

GTK+ 3.8.0 released

Posted Mar 26, 2013 15:09 UTC (Tue) by niner (subscriber, #26151) [Link]

Well, you may also just be wrong.

GTK+ 3.8.0 released

Posted Mar 26, 2013 18:34 UTC (Tue) by robert_s (subscriber, #42402) [Link]

You may find it similarly difficult to find a lot of people who think it's a good idea to write UI code in C, but that doesn't seem to stop the gtk developers.

GTK+ 3.8.0 released

Posted Mar 26, 2013 19:14 UTC (Tue) by rahulsundaram (subscriber, #21946) [Link]

Most GTK apps (not libraries themselves) use Javascript, Python or Vala these days.

GTK+ 3.8.0 released

Posted Mar 26, 2013 19:35 UTC (Tue) by khc (subscriber, #45209) [Link]

maybe you meant most new GTK apps? Many (if not most or close to all) GTK apps I use day to day are written in C.

GTK+ 3.8.0 released

Posted Mar 26, 2013 21:02 UTC (Tue) by rahulsundaram (subscriber, #21946) [Link]

"these days" does mean "new apps", so yes, thats what I meant.

GTK+ 3.8.0 released

Posted Mar 26, 2013 21:28 UTC (Tue) by drag (subscriber, #31333) [Link]

Hey now. Let's be nice to everybody.

GTK+ 3.8.0 released

Posted Mar 27, 2013 9:25 UTC (Wed) by Company (guest, #57006) [Link]

What does one use today according to that lot of people? Because I have a hard time matching your statement with reality...

GTK+ 3.8.0 released

Posted Mar 27, 2013 10:57 UTC (Wed) by HelloWorld (guest, #56129) [Link]

> What does one use today according to that lot of people?
Pretty much anything is better than C for UI code. Vala is fairly suitable as it provides language support for GObject and does automatic refcounting. C is actually among the worst legacy programming languages besides Cobol and Bourne Shell.

GTK+ 3.8.0 released

Posted Mar 27, 2013 11:57 UTC (Wed) by robert_s (subscriber, #42402) [Link]

Geez, anything almost.

C++ can be very pleasant in this field. I hesitate to mention Qt here.

Hell, even javascript (and I am no javascript lover) is better for UI code. And a scary amount of UI code is being written in javascript these days.

GTK+ 3.8.0 released

Posted Mar 27, 2013 12:31 UTC (Wed) by Company (guest, #57006) [Link]

Apps yes, but nobody writes serious applications or toolkits in Javascript or similarly high-level languages. Qt, WebKit, Mozilla and Cocoa just like GTK use some sort of C with classes. And large applications such as Photoshop, Libreoffice or MS Office are the same thing.

The highest level languages you get for large applications and toolkits is Java with Android or Eclipse. But even those frameworks often have a lot of code still written in C-like languages (like SWT). Even large web applications use things like GWT to get away from Javascript onto the Java level.

So I'm not sure your argument holds much ground.

GTK+ 3.8.0 released

Posted Mar 27, 2013 13:16 UTC (Wed) by Cyberax (✭ supporter ✭, #52523) [Link]

Are Google Apps somehow 'unserious'?

GTK+ 3.8.0 released

Posted Mar 27, 2013 16:29 UTC (Wed) by boudewijn (subscriber, #14185) [Link]

Erm... I would hesitate to say that C++ is just some sort of C with classes, just like GTK uses. It's quite a bit more, and makes life quite a bit easier and high-level for the developer. Also, big, professional apps like Mari are written in Python (and use Qt, but that as an aside).

GTK+ 3.8.0 released

Posted Mar 27, 2013 18:05 UTC (Wed) by HelloWorld (guest, #56129) [Link]

> Erm... I would hesitate to say that C++ is just some sort of C with classes, just like GTK uses. It's quite a bit more, and makes life quite a bit easier and high-level for the developer.
It isn't quite as simple. GObject offers quite a few things that the C++ object model doesn't: signals, introspection and an all-encompassing type hierarchy (GType/GValue) that, unlike the C++ object model, includes primitive types.

Of course it's a horrible pain to use all that from C, but that's why Vala exists.

GTK+ 3.8.0 released

Posted Mar 27, 2013 19:41 UTC (Wed) by boudewijn (subscriber, #14185) [Link]

"Some sort of C with classes" is a quote from the original poster. I know that gobject offers stuff that has been available to Java developers from the start and to C++ developers since Qt appeared -- but that doesn't make the original claim that C++ or Objective C is "just some sort of C with classes, comparable to GTK" sensible.

GTK+ 3.8.0 released

Posted Mar 28, 2013 2:27 UTC (Thu) by tetley80 (guest, #88691) [Link]

    It isn't quite as simple. GObject offers quite a few things that the C++ object model doesn't: signals, introspection and an all-encompassing type hierarchy (GType/GValue) that, unlike the C++ object model, includes primitive types. Of course it's a horrible pain to use all that from C, but that's why Vala exists.

On a related note, there seems to be a decent C++ wrapper for GTK+, called gtkmm (which also has signals).

Does anybody have experience with it? How does it compare to using Vala, or Qt ?

GTK+ 3.8.0 released

Posted Mar 28, 2013 4:43 UTC (Thu) by talisein (subscriber, #31829) [Link]

I've made a few toy apps with it. It works very well in my experience. Where Glib or Gtk give something like a GList, Gtkmm transforms it into a standard library object such as a std::vector, and also accepts standard objects where expected. So its much more of a standard C++ experience than you would get with Qt. If some C library, like say libchamplain, isn't wrapped, you can just access it with C functions; you always have access to the underlying C GObject. You can also directly subclass Glib::Object and give it properties and such.

I can't really say how it compares to Vala, other than I suspect it is more straightforward to use a non-GObject C or C++ library in Gtkmm than it is with Vala.

GTK+ 3.8.0 released

Posted Mar 26, 2013 22:21 UTC (Tue) by atai (subscriber, #10977) [Link]

gtk+ is a toolkit and it is not gtk+'s business to recommend (or not to recommend) a language

GTK+ 3.8.0 released

Posted Mar 26, 2013 14:52 UTC (Tue) by guillomovitch (subscriber, #58314) [Link]

Why ? According to http://gtk2-perl.sourceforge.net, the perl bindings seem to be still maintained.

GTK+ 3.8.0 released

Posted Mar 26, 2013 17:55 UTC (Tue) by patrick_g (subscriber, #44470) [Link]

And there is at least one superb application using it.
I really like gmusicbrowser because you can define the look and feel (with just one click) to mimic other applications (Rhythmbox, Exaile, etc).

GTK+ 3.8.0 released

Posted Mar 27, 2013 17:24 UTC (Wed) by Su-Shee (guest, #11056) [Link]

The Gtk3.x bindings with Perl are a nice example of what you get with GObject bindings.

Also, if one compares Gtk2 code in Perl, Ruby and Python, the differences are seriously minor - after all you deal with widgets and callbacks. No reason why Perl couldn't deal with it nicely.

Example in C, ported to Python:

http://mikehearn.wordpress.com/2006/03/26/gtk-windows-wit...

which was the inspiration for a port 1:1 in Ruby:

http://pastie.org/343287

which I ported to Perl:

https://github.com/Su-Shee/perlsnippets/blob/master/alpha...

If you don't like Perl, don't use it.

GTK+ 3.8.0 released

Posted Mar 27, 2013 18:11 UTC (Wed) by HelloWorld (guest, #56129) [Link]

Perl, unlike Ruby or Python, isn't able to collect reference cycles. That's a deal-breaker for me and many others.

GTK+ 3.8.0 released

Posted Mar 28, 2013 16:06 UTC (Thu) by whilteheat (guest, #90114) [Link]

In practise I have found Perl to leak memory far less than Python and especially Ruby VMs. So not a deal breaker :)

GTK+ 3.8.0 released

Posted Mar 29, 2013 15:47 UTC (Fri) by ebassi (subscriber, #54855) [Link]

that's not entirely correct: you can override DESTROY to release cycles. or you can use the 'weaken' function from Scalar::Util.

GTK+ 3.8.0 released

Posted Apr 2, 2013 11:03 UTC (Tue) by whilteheat (guest, #90114) [Link]

It is true in my experience....

- This time last year I had to constantly restart (sometimes daily!) a Ruby background process because it kept memory leaking :(

- While I have multiple Perl background processes I've written that continue to run without a restart for over 5 years :)

So yes you have to be careful and not leave something silly around with Perl (re: DESTROY / weaken) but I've had far more success with Perl compared to Ruby (libs/VM) on this!

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds