Overview of Changes in GLib 1.2.1:

* g_realloc() fix for SunOS (please report further problems).
* Continued the never ending fix vendetta regarding getpwuid(),
  this time AIX has been the culprit.
* Upgrade to libtool 1.2f
* Miscellaneous other buglets fixed.

What's new in GLib 1.2.0 (since GLib 1.0.x):

* GLib is distributed seperatedly from Gtk+
* Win32 Portability
* Threading support
* GModule mechanism (implemented in an extra library) which wraps dynamic
  object code loading facilities in a portable manner
* GIOChannel structure to encapsulate the IPC mechanism
* GQuarks and datasets
* GRelations for n-way mapping of certain data
* An n-way tree implementation
* GDate functionality for calendar date manipulations
* GAllocator type and associated functions
* Added generic callback maintenance functions (ghook)
* Generic functions for TAB completions
* Endian defines (G_*_ENDIAN)
* g_log() mechanism for logging of messages at different log levels
* Generic main-loop mechanism
* New glib-config helper script
* Many more API extensions

Overview of Changes in GLib 1.1.16:

* Allocate smaller pools of memory for glists, gslists, gnodes
* Bug Fixes

Overview of Changes in GLib 1.1.15:

* HPUX 11 thread system detection should now work
* Release the main loop lock around calls to prepare() and
  check() so it is not held over user code
* A few Win32 fixups

Overview of Changes in GLib 1.1.14:

* Check for dlsym() in system libraries and -dl
* FreeBSD portability fixes
* Random bug fixes and autoconf/automake changes

Overview of Changes in GLib 1.1.13:

* Removed alloca() based function and macro variants again.
* Improved thread related configure tests.
* GSource destruction fixups.
* Fixed up idle function removal based on user_data pointer.
* Advanced Win32 portability.
* Enforced GSource's check(), prepare() and dispatch() constrains,
  loop recursions may only happen from dispatch(), and check() as well
  as prepare() are called while the main_loop lock is being held.
* GLib development now requires GNU autoconf 2.13, GNU automake 1.4
  and GNU libtool 1.2d.
* Lots of random portability and bug fixes.

Overview of Changes in GLib 1.1.12:

* Added alloca functions/macros: g_strdup_a, g_strconcat3_a, g_alloca,
  g_new_a, g_new0_a
* New tests structure.  Type 'make check' on your system to run them.
* Avoid unnecessary extra hook referencing in g_hook_list_marshal

Overview of Changes in GLib 1.1.11:

* provide defaults for POLL sysdefs
* g_main_is_running: new function to check whether a main loop has been quitted
* a few other enhancement/fixes

Overview of Changes in GLib 1.1.9:

* Check for pthread_attr_init in all cases, Digital Unix 4 requires this
* For G_LOCK_DECLARE_*, if !G_THREADS_ENABLED, eat trailing semicolon better
* Changed g_main_poll_(add|remove) to g_main_(add|remove)_poll

Overview of Changes in GLib 1.1.8:

* Added threading support
  - The ability to specify a set of functions to be used for
    locking at runtime.
  - Default implementations of locking functions for pthreads,
    Solaris threads, and (experimentally) NSPR.
  - All static variables should now properly locked.
  - Enhancements to the generic main-loop mechanism to be thread-safe.
    (It is used for the main-loop in GTK+ as of GTK+-1.1.8)
* Portability fixes.

Overview of Changes in GLib 1.1.7:

* Removed multiple define from glibconfig.h

Overview of Changes in GLib 1.1.6:

* New GDate functionality for calendar date manipulations (g_date_*)
* New GAllocator type and associated functions
* New functions g_slist_copy and g_list_copy to duplicate a list with all
  its data pointers.
* New function g_array_insert_vals and new macro g_array_insert_val to
  insert elements at an arbitrary index
* GAllocators used for glist, gslist, gnode node allocations
* Incremental freezing in ghash
* New function g_hook_list_marshal_check to eventually destroy hooks after
  they got marshalled
* Revised GIOChannel to provide generic virtual-function based interface
* Added generic main-loop abstraction
* Removed GListAllocator type and its g_*_allocator_*() function variants
* Bug fixes

Overview of Changes in GLib 1.1.5:

* Win32 portability
* GIOChannel structure to encapsulate the IPC mechanism 
* Reimplemented endian stuff, using inline asm for x86
* New functions:
  - g_strescape: escapes backslashes
  - g_path_is_absolute and g_path_skip_root
  - g_getenv: expands environment variables that contain references 
    to other environment variables
  - g_scanner_sync_file_offset: rewind the filedescriptor to the current
    buffer position and blow the file read ahead buffer
  - g_array_remove_index: remove an entry, preserving the order
  - g_array_remove_index_fast: remove an entry, order might be distorted
  - g_ptr_array_remove: remove an entry, preserving the order 
  - g_ptr_array_remove_fast: remove an entry, order might be distorted
  - g_byte_array_remove_index: wrapper for g_array_remove_index
  - g_byte_array_remove_index_fast: wrapper for g_array_remove_index_fast
  - g_strncasecmp: modeled closely after g_strcasecmp
  - g_list_sort, g_slist_sort: to merge sort GLists and GSLists
* New macros:
  - G_DIR_SEPARATOR, G_DIR_SEPARATOR_S: platform-dependant file name
    syntax elements
  - G_SEARCHPATH_SEPARATOR, G_SEARCHPATH_SEPARATOR_S: platform-dependant
    search path syntax conventions
  - G_STRUCT_OFFSET, G_STRUCT_MEMBER_P, G_STRUCT_MEMBER: for handling
    structure fields through their offsets
* Removed G_ENUM, G_FLAGS, G_NV, and G_SV macros
* Bug fixes

Overview of Changes in GLib 1.1.4:

* Added generic callback maintenance functions (ghook)
* New endian defines (G_*_ENDIAN)
* New string join/split/free routines 
* Fixes

Overview of Changes in GLib 1.1.3:

* New GModule mechanism (implemented in an extra library) which wraps dynamic
  object code loading facilities in a portable manner.
* glib-config features extra "glib" (old behaviour remains) and "gmodule"
  (add libgmodule.so to the --libs output) arguments now. this can also
  be specified as fourth argument to the AM_PATH_GLIB() macro.
* Overhaul of the `inline' autoconfiguration stuff, so inlining should be
  sufficiently supported on all systems that allow inlining now.
* New g_log() mechanism for logging of messages at different log levels,
  associated with certain log domains (define -DG_LOG_DOMAIN for your library).
* New inline functions for bit masks tests.
* GNode macros (and functions) now return the newly allocated node.
* New macro G_VA_COPY() to work around va_list copying oddities on some
  platforms. the non-static g_vsprintf() function vanished in favour of
  a publically exported g_strdup_vprintf().
  People that used the former g_vsprintf() would definitely want to read the
  associated ChangeLog entries (grep for printf).
* New utility functions:
  g_strndup(), g_on_error_query(), g_on_error_stack_trace(), g_strdup_printf(),
  g_strdup_vprintf(), g_printf_string_upper_bound(), g_spaced_primes_closest(),
  g_strnfill(), g_memdup(). 
* Overhaul of the array implementations, this contains some source incompatible
  changes. Again, the ChangeLog is much more informative (grep for garray.c).
* The internals of the g_dataset mechanism are now exported through the
  new g_datalist_* API (this is also the underlying implementation for the
  keyed data of GtkObjects).
* New function g_atexit(), use of the ATEXIT() macro is discouraged.
* Better configure checks for ansi compliance.
* Libtool update to version 1.2b.
* Lotsa bug fixes and cleanups as always ;)

Overview of Changes in GLib 1.1.2:

* Fixed packaging mistake which occured in 1.1.1
* fix 64-bitness in g_prints in glibtest

What is new in GLib 1.1.1:

* An n-way tree implementation is provided now, based on the GNode structure.
* Bugfix for pointer arrays.

What is new in GLib 1.1.0:

* GLib is distributed seperatedly from Gtk+ now and uses a sophisticated
  shared library versioning scheme to deal with interface and binary
  incompatibilities.
* There is a glib-config helper script installed now.
* Fixups all over the place.
* gboolean is now a gint, not a gchar anymore.
* API extensions for GList and GSList.
* New g_str*() functions for simple string handling.
* GScanner extensions for scope, warning and error handling.
* Minor performance improvements for GMemChunks.
* Implementations of GQuarks and datasets (similar to GtkObjects data
  mechansim, but works for generic memory locations).
* More convenience macros for GNU C function arguments.
* Const correction all over the place, including a new pointer type
  gconstpointer.
* Generic functions for TAB completions.
* GRelations for n-way mapping of certain data.
