GLib 2.31.0

At long last, GLib 2.31.0 has been released.

  46fcaec884be7ce1b780feffb0da987b55e23850a870d94ed84356870532fe8c  glib-2.31.0.tar.xz

Most people reading this announcement know that there have been a huge
number of changes in this release.  There were some breaks involved in
that, but I've been running it on my system (in /usr) for the past few
days now without detecting any issues.

Special thanks to Rico Tzschichholz who has been doing the same and
found two rather serious issues by doing so (both of which have been

On to the NEWS...

(ps: the 500 commits are a lie[1])

Overview of changes from GLib 2.29/2.30 to 2.31.0

This release contains a huge number of changes (500 commits worth).  The
list below attempts to summarise, but not every change is listed.

* Major changes to threading and synchronisation
 - threading is now always enabled in GLib
 - support for custom thread implementations (including our own internal
   support for errorcheck mutexes) has been removed
 - a whole lot of dead code (to deal with the non-threaded case) has
   been ripped out.  This includes the racy path of GMainContext that
   caused deadlocks with respect to child process exits in
   single-threaded programs (such as gtester).
 - libgthread is now an empty shell and g_thread_init() is no longer
   required (and has been deprecated)
 - GMutex and GCond can now be statically allocated without explicit
   initialisation.  Dynamic allocation for these types is deprecated.
 - new types GRecMutex and GRWLock can also be statically allocated
   without explicit initialisation.
 - GPrivate can now be statically allocated and has an improved API.
   Dynamic allocation of GPrivate is deprecated.
 - GStaticMutex, GStaticRecMutex, GStaticRwLock, GStaticPrivate are
 - GCond now uses monotonic time internally and a new API takes
   monotonic time for timed waits, deprecating the wallclock API
 - removal of the insane macro indirection used in the previous
   implementation of threading and synchronisation APIs
 - use SRWLock and CONDITION_VARIABLE APIs when available on Windows
   (Vista and later) and emulate them on XP
 - leaks of G(Static)Private-allocated data on some cases of thread exit
   have been fixed
 - simplified new thread creation API with the old API deprecated.  The
   concept of joinability has disappeared (all threads are joinable) as
   have priority levels, 'bound'ness (ie: kernel vs. userspace threads)
   and ability to manipulate the stack size.
 - GThread is now a refcounted type
 - other implementation details changed

* Move headers for some deprecated functionality to a separate
  deprecated/ directory.

* New support for attribute-based deprecations to issue compiler
  warnings instead of breaking the build and/or giving warnings about
  implicit declarations (and possibly miscompiling).

* GCache has been deprecated (after its last use was removed from our
  platform over a year ago).

* It is no longer possible to include individual headers (like
  "ghash.h") -- you must #include <glib.h>.

* The misguided experiment of allowing the program to stumble along with
  missing GSettings schemas is now over -- the abort is back.

* Clarify that fork() is not valid while using GMainContext.  This is
  because the internal resources of the GMainContext end up being shared
  by both processes.  We had an assert here but it was breaking existing
  (valid) use cases as well, so it has been removed for now.

* GApplication
  - add ::shutdown signal as logical dual to ::startup
  - don't use a GMainLoop: iterate the GMainContext directly (improves
    quit logic)

* Several portability fixes for Windows, OpenBSD, Solaris

* Add new GValue API to specifically deal in signed chars (in case the
  platform defines 'char' as unsigned)

* some new API to mitigate the problems associated with calling setenv()
  in a multi-threaded program

* Use CLOCK_MONOTONIC unconditionally if the libc has support at compile
  time (ie: stop checking for kernel support at runtime).

* pkg-config files:
  - drop -uninstalled variants
  - remove gobject dependency on gthread

* New macro G_ATOMIC_LOCK_FREE is defined if the atomic operations are
  implemented without use of a mutex.  Cleaned up atomic-related
  compilation issues with mingw compilers on win32 systems.

* SOCKS proxy and resolver improvements

* Fix the spelling of G_IO_FLAG_IS_WRITABLE (was WRITEABLE) and
  introduce a macro for backwards compatibility.

* GDBus:
  - many code generation updates and improvements
  - some race condition fixes, including testcase hangs

* GVariant:
  - new g_variant_new_from_fixed_array() API
  - substantial docs improvements/clarifications

* GKeyFile is now refcounted and boxed

* mount monitoring is now based on /proc/mounts (where available)
  instead of mtab

* new macros G_SOURCE_CONTINUE and G_SOURCE_REMOVE for returning from
  GSourceFunc (so you don't have to remember what TRUE and FALSE mean)

* use xlocale functions where available to avoid too much heavy lifting
  in functions like g_ascii_strtod()

* GMappedFile can now be created from an fd

* error message strings grammar/i18n fixes

* many docs updates

* Partial list of bugs closed:
 70598  Unify GStaticMutex and GMutex.
 320888 optimization for g_main_context_wakeup
 398418 GChildWatch race condition?
 527214 g_timer_elapsed() returns random values
 580505 add a way to set/get name for a thread
 583511 race condition means g_main_loop_quit() does not work
 590808 GKeyFile should have a refcount and a boxed type in GObject
 592715 Document that g_str_hash() and g_int_hash() are not NULL safe
 631413 Add macros for GSourceFunc return values
 632049 not immediately clear what g_variant_get_fixed_array expects
 640212 "Error stating file" is not a friendly message
 640293 Use xlocale functions to implement g_ascii_strtod()
 640975 Check that error exists before trying to set it
 643934 GApplication lacking a logical dual for the ::startup signal
 651268 assertion failed in GDBus worker thread
 653987 g_key_file_get_integer cannot interpret trailing spaces
 654412 Documentation for g_variant_get_child_value unclear
 654563 info capplet: Failed to calculate disk space
 655366 missing GSettings schemas lead to obscure crashes
 656621 g_spawn_*() calls executables in current directory
 656679 [gi] Add two annotations to gio
 657992 Add glib__private__() API to share between glib,gio
 658188 _set_as_last_used_for_type generates a broken mimeapps.list
 658206 gsocks5proxy.c has invalid gettext use
 658207 glib-compile-schemas says "can not"
 658558 simpleaction: Fix documentation of :enabled
 658683 clean up charset/language threading issues
 658692 add introspection annotations to g_time_val_from_iso8601()
 658715 Duplicite strings
 658769 Invalid reuse of GError in GThreadedResolver
 658806 sign error in string hash implementation
 658976 gdbus-codegen's C namespace option needs to support Ugly_Case
 659070 gdbus-codegen generated code segfaults when property changes
 659082 gdbus-codegen: Single letter namespaces get dropped from names
 659212 GMappedFile should fail on non-regular files
 659324 _SPLICE_CLOSE_TARGET doesn't mark the output stream as closed
 659423 Use adaptive mutexes when available
 659427 Move deprecated code to a separate directory
 659646 gdbus-codegen produce code that warnings at build
 659690 Possible build warning in code generated by gdbus-codegen
 659699 property name collision when generating code for "Connection"
 659754 Add API to GMappedFile that allows to pass FD
 659838 incorrect types in introspection for g_object_bind_property
 659866 pthread_rwlock_t requires defined __USE_UNIX98
 659870 gvalue: Fix signedness of g_value_get_char()
 659889 glib-2.29.92/ has a wrong line.
 659916 GObject size of 64K is not actively enforced
 659920 Missing setter for read/write property 'closed' of GIOStream
 659923 Add g_variant_new_fixed_array() function
 660013 Remove old g_atomic configure cruft
 660096 glib/rwlock tests failure (tests asserted)
 660130 Possible loss of user data when updating mimeapps.list
 660147 tracker causes g_critical in "gsettings list-recursively"
 660413 Make G_ASSERT_STATIC work with clang
 660498 Generated test code fails when the codegen changes
 660511 Use /proc/mounts for monitoring mounts, not /etc/mtab
 660536 Expose options for /etc/fstab entries
 660635 Deprecate g_thread_foreach
 660637 Pending dbus method calls not canceled on connection loss
 660739 kill off g_{mutex,cond}_{new,free}()
 660740 make GThread more standard
 660741 g_cond_timedwait is a disaster
 660743 macro wrappers for g_once_init_enter/leave
 660744 finish killing g_thread_init()
 660745 GPrivate leaks on Windows
 660791 [gio] Improve doc for g_file_make_directory_with_parents()
 660843 asyncqueue-test is broken
 660849 Remove cruft from g_strerror and g_strsignal
 660886 GDBusProxy: don't drop/complain about unknown props/signals
 660887 g_slice_set_config() is broken
 660994 Add g_main_context_ref_thread_default()
 661255 gio: enable test_peer regression test for OpenBSD
 661257 giomodules.c uses ":" instead of G_SEARCHPATH_SEPARATOR_S
 661318 tests use pthread without appropriate compiler/linker flags
 661421 Applications fail to initialize on GNU Hurd - commit
 661711 Sorting keys for GDrive, GVolume and GMount instances
 661763 desktop-app-info: Add support for X-GNOME-Keywords
 661896 /gdbus/connection/life-cycle is racy
 661914 Gstreamer/Totem locks up
 662100 regression: g_dbus_connection_close() triggers exit-on-close logic

* Translations updates:
 Brazilian Portuguese
 British English
 Catalan (Valencian)
 Norwegian bokmål
 Simplified Chinese

Thanks to the many contributors to this release:
 Alexander Larsson
 Alexander Shopov
 Alexandre Franke
 Algimantas Margevičius
 Antoine Jacoutot
 Aron Xu
 Bastien Nocera
 Behdad Esfahbod
 Brian Koning
 Bruce Cowan
 Carles Ferrando
 Christian Persch
 Chun-wei Fan
 Colin Walters
 Cosimo Cecchi
 Damien Lespiau
 Dan Williams
 Dan Winship
 Daniel Mustieles
 David Schleef
 David Zeuthen
 Edward Sheldrake
 Emmanuele Bassi
 Federico Mena Quintero
 Florian Müllner
 Fran Dieguez
 Gabor Kelemen
 Gil Forcada
 Giovanni Campagna
 I Felix
 Ihar Hrachyshka
 Jasper Lievisse Adriaanse
 Javier Jardón
 Jiro Matsuzawa
 John Ralls
 Jorge González
 Josselin Mouette
 Kean Johnston
 Kenneth Nielsen
 Kjartan Maraas
 Kushal Das
 Luca Ferretti
 Manoj Kumar Giri
 Mario Blättermann
 Martin Pitt
 Matej Urbančič
 Matthew Barnes
 Matthias Clasen
 Murray Cumming
 Nguyễn Thái Ngọc Duy
 OKANO Takayoshi
 Og B. Maciel
 Peter Mráz
 Petr Kovar
 Philip Van Hoof
 Philip Withnall
 Piotr Drąg
 Richard Hughes
 Simon McVittie
 Sjoerd Simons
 Stef Walter
 Sweta Kothari
 Tiffany Antopolski
 Tomas Bzatek
 Torsten Schönfeld
 Tristan Van Berkom
 Xavier Claessens
 Yaron Shahrabani
 Yuri Myasoedov
 Мирослав Николић


[1] it was actually more like 600...

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]