Blame README.in

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