<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
               "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
<refentry id="glib-changes" revision="17 Jan 2002">
<refmeta>
<refentrytitle>Changes to GLib</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>Changes to GLib</refmiscinfo>
</refmeta>

<refnamediv>
<refname>Changes to GLib</refname>
<refpurpose>
Incompatible changes made between successing versions of GLib
</refpurpose>
</refnamediv>


<refsect1>
<title>Incompatible changes from 2.0 to 2.2</title>

<itemizedlist>

<listitem>
<para>
GLib changed the seeding algorithm for the pseudo-random number
generator Mersenne Twister, as used by <structname>GRand</structname>
and <structname>GRandom</structname>. This was necessary, because some
seeds would yield very bad pseudo-random streams. Also the
pseudo-random integers generated by
<function>g_rand*_int_range()</function> will have a
slightly better equal distribution with the new version of GLib.
</para>

<para>
Further information can be found at the website of the Mersenne
Twister random number generator at <ulink
url="http://www.math.keio.ac.jp/~matumoto/emt.html">http://www.math.keio.ac.jp/~matumoto/emt.html</ulink>.
</para> 

<para>
The original seeding and generation algorithms, as found in GLib
2.0.x, can be used instead of the new ones by setting the environment
variable <envar>G_RANDOM_VERSION</envar> to the value of '2.0'. Use
the GLib-2.0 algorithms only if you have sequences of numbers generated
with Glib-2.0 that you need to reproduce exactly.  
</para> 

</listitem>

</itemizedlist>

</refsect1>

<refsect1>
<title>Incompatible changes from 1.2 to 2.0</title>

<itemizedlist>

<listitem>
<para>
The event loop functionality <structname>GMain</structname> has extensively 
been revised to support multiple separate main loops in separate threads. 
All sources (timeouts, idle functions, etc.) are associated with a 
<structname>GMainContext</structname>.
</para>

<para>
Compatibility functions exist so that most application code dealing with
the main loop will continue to work. However, code that creates new custom 
types of sources will require modification.
</para>

<para>
The main changes here are:

  <itemizedlist>

  <listitem>
  <para>
   Sources are now exposed as <type>GSource *</type>, rather than simply as 
   numeric ids.
  </para>
  </listitem>
  
  <listitem>
  <para>
   New types of sources are created by structure "derivation" from 
   <structname>GSource</structname>, so the <literal>source_data</literal> 
   parameter to the <structname>GSource</structname> virtual functions has been
   replaced with a <type>GSource *</type>.
  </para>
  </listitem>
  
  <listitem>
  <para>
   Sources are first created, then later added to a specific 
   <structname>GMainContext</structname>. 
  </para>
  </listitem>
  
  <listitem>
  <para>
   Dispatching has been modified so both the callback and data are passed
   in to the <function>dispatch()</function> virtual function.
  </para>
  </listitem>

  </itemizedlist>
  To go along with this change, the vtable for 
  <structname>GIOChannel</structname> has changed and
  <function>add_watch()</function> has been replaced by 
  <function>create_watch()</function>.
</para>
</listitem>

<listitem>
<para>
<function>g_list_foreach()</function> and 
<function>g_slist_foreach()</function> have been changed so they
are now safe against removal of the current item, not the next item.
</para>

<para>
It's not recommended to mutate the list in the callback to these
functions in any case.
</para>
</listitem>

<listitem>
<para>
<structname>GDate</structname> now works in UTF-8, not in the current locale. 
If you want to use it with the encoding of the locale, you need to convert 
strings using <function>g_locale_to_utf8()</function> first.
</para>
</listitem>

<listitem>
<para>
<function>g_strsplit()</function> has been fixed to:

  <itemizedlist>
  <listitem>
  <para>
   include trailing empty tokens, rather than stripping them
  </para>
  </listitem>
  <listitem>
  <para>
   split into a maximum of <literal>max_tokens</literal> tokens, rather 
   than <literal>max_tokens + 1</literal>
  </para>
  </listitem>
  </itemizedlist>

  Code depending on either of these bugs will need to be fixed.
</para>
</listitem>

<listitem>
<para>
Deprecated functions that got removed:
<function>g_set_error_handler()</function>, 
<function>g_set_warning_handler()</function>,
<function>g_set_message_handler()</function>, use 
<function>g_log_set_handler()</function> instead.
</para>
</listitem>
</itemizedlist>

</refsect1>

</refentry>
