Blame README.in

Packit 84794d
General Information
Packit 84794d
===================
Packit 84794d
Packit 84794d
This is GLib version @GLIB_VERSION@. GLib is the low-level core
Packit 84794d
library that forms the basis for projects such as GTK+ and GNOME. It
Packit 84794d
provides data structure handling for C, portability wrappers, and
Packit 84794d
interfaces for such runtime functionality as an event loop, threads,
Packit 84794d
dynamic loading, and an object system.
Packit 84794d
Packit 84794d
The official download locations are:
Packit 84794d
  ftp://ftp.gtk.org/pub/glib
Packit 84794d
  http://download.gnome.org/sources/glib
Packit 84794d
Packit 84794d
The official web site is:
Packit 84794d
  http://www.gtk.org/
Packit 84794d
Packit 84794d
Information about mailing lists can be found at
Packit 84794d
  http://www.gtk.org/mailing-lists.php
Packit 84794d
Packit 84794d
To subscribe, send mail to gtk-list-request@gnome.org
Packit 84794d
with the subject "subscribe".
Packit 84794d
Packit 84794d
Installation
Packit 84794d
============
Packit 84794d
Packit 84794d
See the file 'INSTALL'
Packit 84794d
Packit 84794d
How to report bugs
Packit 84794d
==================
Packit 84794d
Packit 84794d
Bugs should be reported to the GNOME bug tracking system.
Packit 84794d
(http://bugzilla.gnome.org, product glib.) You will need
Packit 84794d
to create an account for yourself.
Packit 84794d
Packit 84794d
In the bug report please include:
Packit 84794d
Packit 84794d
* Information about your system. For instance:
Packit 84794d
Packit 84794d
   - What operating system and version
Packit 84794d
   - For Linux, what version of the C library
Packit 84794d
Packit 84794d
  And anything else you think is relevant.
Packit 84794d
Packit 84794d
* How to reproduce the bug.
Packit 84794d
Packit 84794d
  If you can reproduce it with one of the test programs that are built
Packit 84794d
  in the tests/ subdirectory, that will be most convenient.  Otherwise,
Packit 84794d
  please include a short test program that exhibits the behavior.
Packit 84794d
  As a last resort, you can also provide a pointer to a larger piece
Packit 84794d
  of software that can be downloaded.
Packit 84794d
Packit 84794d
* If the bug was a crash, the exact text that was printed out
Packit 84794d
  when the crash occured.
Packit 84794d
Packit 84794d
* Further information such as stack traces may be useful, but
Packit 84794d
  is not necessary.
Packit 84794d
Packit 84794d
Patches
Packit 84794d
=======
Packit 84794d
Packit 84794d
Patches should also be submitted to bugzilla.gnome.org. If the
Packit 84794d
patch fixes an existing bug, add the patch as an attachment
Packit 84794d
to that bug report.
Packit 84794d
Packit 84794d
Otherwise, enter a new bug report that describes the patch,
Packit 84794d
and attach the patch to that bug report.
Packit 84794d
Packit 84794d
Patches should be in unified diff form. (The -up option to GNU diff.)
Packit 84794d
Packit 84794d
Notes about GLib 2.48
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* The system copy of PCRE is now used by default to implement GRegex.
Packit 84794d
  Configure with --with-pcre=internal if a system PCRE version
Packit 84794d
  is unavailable or undesired.
Packit 84794d
Packit 84794d
Notes about GLib 2.46
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* GTask no longer imposes a fixed limit on the number of tasks that
Packit 84794d
  can be run_in_thread() simultaneously, since doing this inevitably
Packit 84794d
  results in deadlocks in some use cases. Instead, it now has a base
Packit 84794d
  number of threads that can be used "for free", but will gradually
Packit 84794d
  add more threads to the pool if too much time passes without any
Packit 84794d
  tasks completing.
Packit 84794d
Packit 84794d
  The exact behavior may continue to change in the future, and it's
Packit 84794d
  possible that some future version of GLib may not do any
Packit 84794d
  rate-limiting at all. As a result, you should no longer assume that
Packit 84794d
  GTask will rate-limit tasks itself (or, by extension, that calls to
Packit 84794d
  certain async gio methods will automatically be rate-limited for
Packit 84794d
  you). If you have a very large number of tasks to run, and don't
Packit 84794d
  want them to all run at once, you should rate-limit them yourself.
Packit 84794d
Packit 84794d
Notes about GLib 2.40
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* g_test_run() no longer runs tests in exactly the order they are
Packit 84794d
  registered; instead, it groups them according to test suites (ie,
Packit 84794d
  path components) like the documentation always claimed it did. In
Packit 84794d
  some cases, this can result in a sub-optimal ordering of tests,
Packit 84794d
  relative to the old behavior. The fix is to change the test paths to
Packit 84794d
  properly group together the tests that should run together. (eg, if
Packit 84794d
  you want to run test_foo_simple(), test_bar_simple(), and
Packit 84794d
  test_foo_using_bar() in that order, they should have test paths like
Packit 84794d
  "/simple/foo", "/simple/bar", "/complex/foo-using-bar", not
Packit 84794d
  "/foo/simple", "/bar/simple", "/foo/using-bar" (which would result
Packit 84794d
  in test_foo_using_bar() running before test_bar_simple()).
Packit 84794d
Packit 84794d
  (The behavior actually changed in GLib 2.36, but it was not
Packit 84794d
  documented at the time, since we didn't realize it mattered.)
Packit 84794d
Packit 84794d
Notes about GLib 2.36
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* It is no longer necessary to call g_type_init().  If you are
Packit 84794d
  loading GLib as a dynamic module, you should be careful to avoid
Packit 84794d
  unloading it, then subsequently loading it again.  This never
Packit 84794d
  really worked before, but it is now explicitly undefined behavior.
Packit 84794d
  Note that if g_type_init() was the only explicit use of a GObject
Packit 84794d
  API and you are using linker flags such as --no-add-needed, then
Packit 84794d
  you may have to artificially use some GObject call to keep the
Packit 84794d
  linker from optimizing away -lgobject. We recommend to use
Packit 84794d
  g_type_ensure (G_TYPE_OBJECT) for this purpose.
Packit 84794d
Packit 84794d
* This release contains an incompatible change to the g_get_home_dir()
Packit 84794d
  function.  Previously, this function would effectively ignore the HOME
Packit 84794d
  environment variable and always return the value from /etc/password.
Packit 84794d
  As of this version, the HOME variable is used if it is set and the
Packit 84794d
  value from /etc/passwd is only used as a fallback.
Packit 84794d
Packit 84794d
* The 'flowinfo' and 'scope_id' fields of GInetSocketAddress
Packit 84794d
  (introduced in GLib 2.32) have been fixed to be in host byte order
Packit 84794d
  rather than network byte order. This is an incompatible change, but
Packit 84794d
  the previous behavior was clearly broken, so it seems unlikely that
Packit 84794d
  anyone was using it.
Packit 84794d
Packit 84794d
Notes about GLib 2.34
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* GIO now looks for thumbnails in XDG_CACHE_HOME, following a
Packit 84794d
  recent alignment of the thumbnail spec with the basedir spec.
Packit 84794d
Packit 84794d
* The default values for GThreadPools max_unused_threads and
Packit 84794d
  max_idle_time settings have been changed to 2 and 15*1000,
Packit 84794d
  respectively.
Packit 84794d
Packit 84794d
Notes about GLib 2.32
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* It is no longer necessary to use g_thread_init() or to link against
Packit 84794d
  libgthread.  libglib is now always thread-enabled. Custom thread
Packit 84794d
  system implementations are no longer supported (including errorcheck
Packit 84794d
  mutexes).
Packit 84794d
Packit 84794d
* The thread and synchronisation APIs have been updated.
Packit 84794d
  GMutex and GCond can be statically allocated without explicit
Packit 84794d
  initialisation, as can new types GRWLock and GRecMutex.  The
Packit 84794d
  GStatic_______ variants of these types have been deprecated.  GPrivate
Packit 84794d
  can also be statically allocated and has a nicer API (deprecating
Packit 84794d
  GStaticPrivate).  Finally, g_thread_create() has been replaced with a
Packit 84794d
  substantially simplified g_thread_new().
Packit 84794d
Packit 84794d
* The g_once_init_enter()/_leave() functions have been replaced with
Packit 84794d
  macros that allow for a pointer to any gsize-sized object, not just a
Packit 84794d
  gsize*.  The assertions to ensure that a pointer to a correctly-sized
Packit 84794d
  object is being used will not work with generic pointers (ie: (void*)
Packit 84794d
  and (gpointer) casts) which would have worked with the old version.
Packit 84794d
Packit 84794d
* It is now mandatory to include glib.h instead of individual headers.
Packit 84794d
Packit 84794d
* The -uninstalled variants of the pkg-config files have been dropped.
Packit 84794d
Packit 84794d
* For a long time, gobject-2.0.pc mistakenly declared a public
Packit 84794d
  dependency on gthread-2.0.pc (when the dependency should have been
Packit 84794d
  private).  This means that programs got away with calling
Packit 84794d
  g_thread_init() without explicitly listing gthread-2.0.pc among their
Packit 84794d
  dependencies.
Packit 84794d
Packit 84794d
  gthread has now been removed as a gobject dependency, which will cause
Packit 84794d
  such programs to break.
Packit 84794d
Packit 84794d
  The fix for this problem is either to declare an explicit dependency
Packit 84794d
  on gthread-2.0.pc (if you care about compatibility with older GLib
Packit 84794d
  versions) or to stop calling g_thread_init().
Packit 84794d
Packit 84794d
* g_debug() output is no longer enabled by default.  It can be enabled
Packit 84794d
  on a per-domain basis with the G_MESSAGES_DEBUG environment variable
Packit 84794d
  like
Packit 84794d
    G_MESSAGES_DEBUG=domain1,domain2
Packit 84794d
  or
Packit 84794d
    G_MESSAGES_DEBUG=all
Packit 84794d
Packit 84794d
Notes about GLib 2.30
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* GObject includes a generic marshaller, g_cclosure_marshal_generic.
Packit 84794d
  To use it, simply specify NULL as the marshaller in g_signal_new().
Packit 84794d
  The generic marshaller is implemented with libffi, and consequently
Packit 84794d
  GObject depends on libffi now.
Packit 84794d
Packit 84794d
Notes about GLib 2.28
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* The GApplication API has changed compared to the version that was
Packit 84794d
  included in the 2.25 development snapshots. Existing users will need
Packit 84794d
  adjustments.
Packit 84794d
Packit 84794d
Notes about GLib 2.26
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* Nothing noteworthy.
Packit 84794d
Packit 84794d
Notes about GLib 2.24
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* It is now allowed to call g_thread_init(NULL) multiple times, and
Packit 84794d
  to call glib functions before g_thread_init(NULL) is called
Packit 84794d
  (although the later is mainly a change in docs as this worked before
Packit 84794d
  too). See the GThread reference documentation for the details.
Packit 84794d
Packit 84794d
* GObject now links to GThread and threads are enabled automatically
Packit 84794d
  when g_type_init() is called.
Packit 84794d
Packit 84794d
* GObject no longer allows to call g_object_set() on construct-only properties
Packit 84794d
  while an object is being initialized. If this behavior is needed, setting a
Packit 84794d
  custom constructor that just chains up will re-enable this functionality.
Packit 84794d
Packit 84794d
* GMappedFile on an empty file now returns NULL for the contents instead of
Packit 84794d
  returning an empty string. The documentation specifically states that code
Packit 84794d
  may not rely on nul-termination here so any breakage caused by this change
Packit 84794d
  is a bug in application code.
Packit 84794d
Packit 84794d
Notes about GLib 2.22
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* Repeated calls to g_simple_async_result_set_op_res_gpointer used
Packit 84794d
  to leak the data. This has been fixed to always call the provided
Packit 84794d
  destroy notify.
Packit 84794d
Packit 84794d
Notes about GLib 2.20
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* The functions for launching applications (e.g. g_app_info_launch() +
Packit 84794d
  friends) now passes a FUSE file:// URI if possible (requires gvfs
Packit 84794d
  with the FUSE daemon to be running and operational). With gvfs 2.26,
Packit 84794d
  FUSE file:// URIs will be mapped back to gio URIs in the GFile
Packit 84794d
  constructors. The intent of this change is to better integrate
Packit 84794d
  POSIX-only applications, see bug #528670 for the rationale.  The
Packit 84794d
  only user-visible change is when an application needs to examine an
Packit 84794d
  URI passed to it (e.g. as a positional parameter). Instead of
Packit 84794d
  looking at the given URI, the application will now need to look at
Packit 84794d
  the result of g_file_get_uri() after having constructed a GFile
Packit 84794d
  object with the given URI.
Packit 84794d
Packit 84794d
Notes about GLib 2.18
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* The recommended way of using GLib has always been to only include the
Packit 84794d
  toplevel headers glib.h, glib-object.h and gio.h. GLib enforces this by
Packit 84794d
  generating an error when individual headers are directly included.
Packit 84794d
  To help with the transition, the enforcement is not turned on by
Packit 84794d
  default for GLib headers (it is turned on for GObject and GIO).
Packit 84794d
  To turn it on, define the preprocessor symbol G_DISABLE_SINGLE_INCLUDES.
Packit 84794d
Packit 84794d
Notes about GLib 2.16
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* GLib now includes GIO, which adds optional dependencies against libattr
Packit 84794d
  and libselinux for extended attribute and SELinux support. Use
Packit 84794d
  --disable-xattr and --disable-selinux to build without these.
Packit 84794d
Packit 84794d
Notes about GLib 2.10
Packit 84794d
=====================
Packit 84794d
Packit 84794d
* The functions g_snprintf() and g_vsnprintf() have been removed from
Packit 84794d
  the gprintf.h header, since they are already declared in glib.h. This
Packit 84794d
  doesn't break documented use of gprintf.h, but people have been known
Packit 84794d
  to include gprintf.h without including glib.h.
Packit 84794d
Packit 84794d
* The Unicode support has been updated to Unicode 4.1. This adds several
Packit 84794d
  new members to the GUnicodeBreakType enumeration.
Packit 84794d
Packit 84794d
* The support for Solaris threads has been retired. Solaris has provided
Packit 84794d
  POSIX threads for long enough now to have them available on every
Packit 84794d
  Solaris platform.
Packit 84794d
Packit 84794d
* 'make check' has been changed to validate translations by calling
Packit 84794d
  msgfmt with the -c option. As a result, it may fail on systems with
Packit 84794d
  older gettext implementations (GNU gettext < 0.14.1, or Solaris gettext).
Packit 84794d
  'make check' will also fail on systems where the C compiler does not
Packit 84794d
  support ELF visibility attributes.
Packit 84794d
Packit 84794d
* The GMemChunk API has been deprecated in favour of a new 'slice
Packit 84794d
  allocator'. See the g_slice documentation for more details.
Packit 84794d
Packit 84794d
* A new type, GInitiallyUnowned, has been introduced, which is
Packit 84794d
  intended to serve as a common implementation of the 'floating reference'
Packit 84794d
  concept that is e.g. used by GtkObject. Note that changing the
Packit 84794d
  inheritance hierarchy of a type can cause problems for language
Packit 84794d
  bindings and other code which needs to work closely with the type
Packit 84794d
  system. Therefore, switching to GInitiallyUnowned should be done
Packit 84794d
  carefully. g_object_compat_control() has been added to GLib 2.8.5
Packit 84794d
  to help with the transition.
Packit 84794d
Packit 84794d
Notes about GLib 2.6.0
Packit 84794d
======================
Packit 84794d
Packit 84794d
* GLib 2.6 introduces the concept of 'GLib filename encoding', which is the
Packit 84794d
  on-disk encoding on Unix, but UTF-8 on Windows. All GLib functions
Packit 84794d
  returning or accepting pathnames have been changed to expect
Packit 84794d
  filenames in this encoding, and the common POSIX functions dealing
Packit 84794d
  with pathnames have been wrapped. These wrappers are declared in the
Packit 84794d
  header <glib/gstdio.h> which must be included explicitly; it is not
Packit 84794d
  included through <glib.h>.
Packit 84794d
Packit 84794d
  On current (NT-based) Windows versions, where the on-disk file names
Packit 84794d
  are Unicode, these wrappers use the wide-character API in the C
Packit 84794d
  library. Thus applications can handle file names containing any
Packit 84794d
  Unicode characters through GLib's own API and its POSIX wrappers,
Packit 84794d
  not just file names restricted to characters in the system codepage.
Packit 84794d
Packit 84794d
  To keep binary compatibility with applications compiled against
Packit 84794d
  older versions of GLib, the Windows DLL still provides entry points
Packit 84794d
  with the old semantics using the old names, and applications
Packit 84794d
  compiled against GLib 2.6 will actually use new names for the
Packit 84794d
  functions. This is transparent to the programmer.
Packit 84794d
Packit 84794d
  When compiling against GLib 2.6, applications intended to be
Packit 84794d
  portable to Windows must take the UTF-8 file name encoding into
Packit 84794d
  consideration, and use the gstdio wrappers to access files whose
Packit 84794d
  names have been constructed from strings returned from GLib.
Packit 84794d
Packit 84794d
* Likewise, g_get_user_name() and g_get_real_name() have been changed
Packit 84794d
  to return UTF-8 on Windows, while keeping the old semantics for
Packit 84794d
  applications compiled against older versions of GLib.
Packit 84794d
Packit 84794d
* The GLib uses an '_' prefix to indicate private symbols that
Packit 84794d
  must not be used by applications. On some platforms, symbols beginning
Packit 84794d
  with prefixes such as _g will be exported from the library, on others not.
Packit 84794d
  In no case can applications use these private symbols. In addition to that,
Packit 84794d
  GLib+ 2.6 makes several symbols private which were not in any installed
Packit 84794d
  header files and were never intended to be exported.
Packit 84794d
Packit 84794d
* To reduce code size and improve efficiency, GLib, when compiled
Packit 84794d
  with the GNU toolchain, has separate internal and external entry
Packit 84794d
  points for exported functions. The internal names, which begin with
Packit 84794d
  IA__, may be seen when debugging a GLib program.
Packit 84794d
Packit 84794d
* On Windows, GLib no longer opens a console window when printing
Packit 84794d
  warning messages if stdout or stderr are invalid, as they are in
Packit 84794d
  "Windows subsystem" (GUI) applications. Simply redirect stdout or
Packit 84794d
  stderr if you need to see them.
Packit 84794d
Packit 84794d
* The child watch functionality tends to reveal a bug in many
Packit 84794d
  thread implementations (in particular the older LinuxThreads
Packit 84794d
  implementation on Linux) where it's not possible to call waitpid()
Packit 84794d
  for a child created in a different thread. For this reason, for
Packit 84794d
  maximum portability, you should structure your code to fork all
Packit 84794d
  child processes that you want to wait for from the main thread.
Packit 84794d
Packit 84794d
* A problem was recently discovered with g_signal_connect_object();
Packit 84794d
  it doesn't actually disconnect the signal handler once the object being
Packit 84794d
  connected to dies, just disables it. See the API docs for the function
Packit 84794d
  for further details and the correct workaround that will continue to
Packit 84794d
  work with future versions of GLib.