[glib: 1/2] docs: Move ‘Notes’ section from README to NEWS
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 1/2] docs: Move ‘Notes’ section from README to NEWS
- Date: Wed, 13 Jan 2021 14:20:24 +0000 (UTC)
commit 23c868e255b8a510a0bf4e8e35075ab2f83f8df9
Author: Philip Withnall <pwithnall endlessos org>
Date: Wed Jan 13 13:58:57 2021 +0000
docs: Move ‘Notes’ section from README to NEWS
The content of the section was more appropriate to the `NEWS` file, and
no longer helpful for anyone reading the `README`. The `README` is meant
to be a quick introduction to the project and how to contribute to it,
not a set of notes for packagers and distributors. That’s what `NEWS`
is.
Signed-off-by: Philip Withnall <pwithnall endlessos org>
NEWS | 248 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
README.md | 284 --------------------------------------------------------------
2 files changed, 248 insertions(+), 284 deletions(-)
---
diff --git a/NEWS b/NEWS
index d0b82586a..f46fa6675 100644
--- a/NEWS
+++ b/NEWS
@@ -3436,6 +3436,10 @@ Translation updates:
Overview of changes in GLib 2.48.0
==================================
+ * The system copy of PCRE is now used by default to implement GRegex.
+ Configure with --with-pcre=internal if a system PCRE version
+ is unavailable or undesired.
+
* a minor build fix in the name of determinism
* a few coverity fixes
@@ -3709,6 +3713,21 @@ Overview of changes in GLib 2.47.1
Overview of changes in GLib 2.46.0
==================================
+* GTask no longer imposes a fixed limit on the number of tasks that
+ can be run_in_thread() simultaneously, since doing this inevitably
+ results in deadlocks in some use cases. Instead, it now has a base
+ number of threads that can be used "for free", but will gradually
+ add more threads to the pool if too much time passes without any
+ tasks completing.
+
+ The exact behavior may continue to change in the future, and it's
+ possible that some future version of GLib may not do any
+ rate-limiting at all. As a result, you should no longer assume that
+ GTask will rate-limit tasks itself (or, by extension, that calls to
+ certain async gio methods will automatically be rate-limited for
+ you). If you have a very large number of tasks to run, and don't
+ want them to all run at once, you should rate-limit them yourself.
+
* Disable runtime-deprecation warnings
* Fix marshalling of flags on bigendian 64bit architectures
@@ -4624,6 +4643,21 @@ Overview of changes from GLib 2.39.91 to GLib 2.39.92
This is a release candidate for 2.40.0.
+* g_test_run() no longer runs tests in exactly the order they are
+ registered; instead, it groups them according to test suites (ie,
+ path components) like the documentation always claimed it did. In
+ some cases, this can result in a sub-optimal ordering of tests,
+ relative to the old behavior. The fix is to change the test paths to
+ properly group together the tests that should run together. (eg, if
+ you want to run test_foo_simple(), test_bar_simple(), and
+ test_foo_using_bar() in that order, they should have test paths like
+ "/simple/foo", "/simple/bar", "/complex/foo-using-bar", not
+ "/foo/simple", "/bar/simple", "/foo/using-bar" (which would result
+ in test_foo_using_bar() running before test_bar_simple()).
+
+ (The behavior actually changed in GLib 2.36, but it was not
+ documented at the time, since we didn't realize it mattered.)
+
There are no major changes in this release, but a few serious bugs have
been fixed.
@@ -5751,6 +5785,28 @@ Overview of changes fron GLib 2.36.0 to 2.37.0
Overview of changes fron GLib 2.35.9 to 2.36.0
==============================================
+* It is no longer necessary to call g_type_init(). If you are
+ loading GLib as a dynamic module, you should be careful to avoid
+ unloading it, then subsequently loading it again. This never
+ really worked before, but it is now explicitly undefined behavior.
+ Note that if g_type_init() was the only explicit use of a GObject
+ API and you are using linker flags such as --no-add-needed, then
+ you may have to artificially use some GObject call to keep the
+ linker from optimizing away -lgobject. We recommend to use
+ g_type_ensure (G_TYPE_OBJECT) for this purpose.
+
+* This release contains an incompatible change to the g_get_home_dir()
+ function. Previously, this function would effectively ignore the HOME
+ environment variable and always return the value from /etc/password.
+ As of this version, the HOME variable is used if it is set and the
+ value from /etc/passwd is only used as a fallback.
+
+* The 'flowinfo' and 'scope_id' fields of GInetSocketAddress
+ (introduced in GLib 2.32) have been fixed to be in host byte order
+ rather than network byte order. This is an incompatible change, but
+ the previous behavior was clearly broken, so it seems unlikely that
+ anyone was using it.
+
This release contains only small bugfixes and translations updates.
- g_file_copy(): fix bug where attributes were not applied properly to
@@ -6234,6 +6290,13 @@ The remaining changes should not cause problems.
Overview of changes from GLib 2.33.14 to 2.34.0
===============================================
+* GIO now looks for thumbnails in XDG_CACHE_HOME, following a
+ recent alignment of the thumbnail spec with the basedir spec.
+
+* The default values for GThreadPools max_unused_threads and
+ max_idle_time settings have been changed to 2 and 15*1000,
+ respectively.
+
* Bug fixes:
654239 g_type_init()'s docs have no statement about how to...
674620 Update GSettings migration guide for intltool updates
@@ -6754,6 +6817,49 @@ Overview of changes from GLib 2.32.0 to 2.32.1
Overview of changes from GLib 2.31.22 to 2.32.0
===============================================
+* It is no longer necessary to use g_thread_init() or to link against
+ libgthread. libglib is now always thread-enabled. Custom thread
+ system implementations are no longer supported (including errorcheck
+ mutexes).
+
+* The thread and synchronisation APIs have been updated.
+ GMutex and GCond can be statically allocated without explicit
+ initialisation, as can new types GRWLock and GRecMutex. The
+ GStatic_______ variants of these types have been deprecated. GPrivate
+ can also be statically allocated and has a nicer API (deprecating
+ GStaticPrivate). Finally, g_thread_create() has been replaced with a
+ substantially simplified g_thread_new().
+
+* The g_once_init_enter()/_leave() functions have been replaced with
+ macros that allow for a pointer to any gsize-sized object, not just a
+ gsize*. The assertions to ensure that a pointer to a correctly-sized
+ object is being used will not work with generic pointers (ie: (void*)
+ and (gpointer) casts) which would have worked with the old version.
+
+* It is now mandatory to include glib.h instead of individual headers.
+
+* The -uninstalled variants of the pkg-config files have been dropped.
+
+* For a long time, gobject-2.0.pc mistakenly declared a public
+ dependency on gthread-2.0.pc (when the dependency should have been
+ private). This means that programs got away with calling
+ g_thread_init() without explicitly listing gthread-2.0.pc among their
+ dependencies.
+
+ gthread has now been removed as a gobject dependency, which will cause
+ such programs to break.
+
+ The fix for this problem is either to declare an explicit dependency
+ on gthread-2.0.pc (if you care about compatibility with older GLib
+ versions) or to stop calling g_thread_init().
+
+* g_debug() output is no longer enabled by default. It can be enabled
+ on a per-domain basis with the G_MESSAGES_DEBUG environment variable
+ like
+ G_MESSAGES_DEBUG=domain1,domain2
+ or
+ G_MESSAGES_DEBUG=all
+
* Bugs fixed:
671988 Quickly registering / unregistering objects on bus...
672095 glib needs stable sort function
@@ -7431,6 +7537,11 @@ list below attempts to summarise, but not every change is listed.
Overview of changes from GLib 2.29.18 to 2.29.90
================================================
+* GObject includes a generic marshaller, g_cclosure_marshal_generic.
+ To use it, simply specify NULL as the marshaller in g_signal_new().
+ The generic marshaller is implemented with libffi, and consequently
+ GObject depends on libffi now.
+
* API/ABI changes:
- unix signal watches now match the API of all of the other sources
- revert the addition of g_date_time_source_new () from last release
@@ -7996,6 +8107,10 @@ Overview of Changes from GLib 2.28.0 to 2.29.2
Overview of Changes from GLib 2.27.93 to 2.28.0
===============================================
+* The GApplication API has changed compared to the version that was
+ included in the 2.25 development snapshots. Existing users will need
+ adjustments.
+
* Bugs fixed:
641363 GInitable documentation isn't clear about that finalize...
641395 Add more data about the origin application to the "Lau...
@@ -9251,6 +9366,23 @@ Overview of Changes from GLib 2.24.0 to GLib 2.25.0
Overview of Changes from GLib 2.23.6 to GLib 2.24.0
===================================================
+* It is now allowed to call g_thread_init(NULL) multiple times, and
+ to call glib functions before g_thread_init(NULL) is called
+ (although the later is mainly a change in docs as this worked before
+ too). See the GThread reference documentation for the details.
+
+* GObject now links to GThread and threads are enabled automatically
+ when g_type_init() is called.
+
+* GObject no longer allows to call g_object_set() on construct-only properties
+ while an object is being initialized. If this behavior is needed, setting a
+ custom constructor that just chains up will re-enable this functionality.
+
+* GMappedFile on an empty file now returns NULL for the contents instead of
+ returning an empty string. The documentation specifically states that code
+ may not rely on nul-termination here so any breakage caused by this change
+ is a bug in application code.
+
* Bug fixes:
613601 buglet in dup_close_on_exec_fd
584284 g_data_input_stream_read_until_async behaves confusingly
@@ -9612,6 +9744,10 @@ Overview of Changes from GLib 2.22.0 to GLib 2.22.1
Overview of Changes from GLib 2.21.6 to GLib 2.22.0
===================================================
+* Repeated calls to g_simple_async_result_set_op_res_gpointer used
+ to leak the data. This has been fixed to always call the provided
+ destroy notify.
+
* Add gdb python macros to make gobject debugging more pleasant
* Bugs fixed:
@@ -9971,6 +10107,18 @@ Overview of Changes from GLib 2.20.0 to GLib 2.20.1
Overview of Changes from GLib 2.19.9 to GLib 2.20.0
===================================================
+* The functions for launching applications (e.g. g_app_info_launch() +
+ friends) now passes a FUSE file:// URI if possible (requires gvfs
+ with the FUSE daemon to be running and operational). With gvfs 2.26,
+ FUSE file:// URIs will be mapped back to gio URIs in the GFile
+ constructors. The intent of this change is to better integrate
+ POSIX-only applications, see bug #528670 for the rationale. The
+ only user-visible change is when an application needs to examine an
+ URI passed to it (e.g. as a positional parameter). Instead of
+ looking at the given URI, the application will now need to look at
+ the result of g_file_get_uri() after having constructed a GFile
+ object with the given URI.
+
* Base64 support: Avoid integer overflows. CVE-2008-4316
* Bugs fixed:
@@ -10350,6 +10498,13 @@ Overview of Changes from GLib 2.18.0 to GLib 2.18.1
Overview of Changes from GLib 2.17.7 to GLib 2.18.0
===================================================
+* The recommended way of using GLib has always been to only include the
+ toplevel headers glib.h, glib-object.h and gio.h. GLib enforces this by
+ generating an error when individual headers are directly included.
+ To help with the transition, the enforcement is not turned on by
+ default for GLib headers (it is turned on for GObject and GIO).
+ To turn it on, define the preprocessor symbol G_DISABLE_SINGLE_INCLUDES.
+
* Win32:
- rework the g_poll() implementation to match poll() semantics more closely
@@ -10764,6 +10919,10 @@ Overview of Changes from GLib 2.16.0 to GLib 2.16.1
Overview of Changes from GLib 2.15.6 to GLib 2.16.0
===================================================
+* GLib now includes GIO, which adds optional dependencies against libattr
+ and libselinux for extended attribute and SELinux support. Use
+ --disable-xattr and --disable-selinux to build without these.
+
* Fix the definition of G_INLINE_FUNC to work with gcc 4.3.0
* GIO:
@@ -11685,6 +11844,36 @@ Overview of Changes from GLib 2.10.0 to GLib 2.10.1
Overview of Changes from GLib 2.9.6 to GLib 2.10.0
==================================================
+* The functions g_snprintf() and g_vsnprintf() have been removed from
+ the gprintf.h header, since they are already declared in glib.h. This
+ doesn't break documented use of gprintf.h, but people have been known
+ to include gprintf.h without including glib.h.
+
+* The Unicode support has been updated to Unicode 4.1. This adds several
+ new members to the GUnicodeBreakType enumeration.
+
+* The support for Solaris threads has been retired. Solaris has provided
+ POSIX threads for long enough now to have them available on every
+ Solaris platform.
+
+* 'make check' has been changed to validate translations by calling
+ msgfmt with the -c option. As a result, it may fail on systems with
+ older gettext implementations (GNU gettext < 0.14.1, or Solaris gettext).
+ 'make check' will also fail on systems where the C compiler does not
+ support ELF visibility attributes.
+
+* The GMemChunk API has been deprecated in favour of a new 'slice
+ allocator'. See the g_slice documentation for more details.
+
+* A new type, GInitiallyUnowned, has been introduced, which is
+ intended to serve as a common implementation of the 'floating reference'
+ concept that is e.g. used by GtkObject. Note that changing the
+ inheritance hierarchy of a type can cause problems for language
+ bindings and other code which needs to work closely with the type
+ system. Therefore, switching to GInitiallyUnowned should be done
+ carefully. g_object_compat_control() has been added to GLib 2.8.5
+ to help with the transition.
+
* Bugs fixed:
328997 64bit pointer trunction in glib slab-allocator
[Pascal Hofstee]
@@ -12119,6 +12308,65 @@ Overview of Changes from GLib 2.6.0 to GLib 2.6.1
Overview of Changes from GLib 2.4.x to GLib 2.6.0
=================================================
+* GLib 2.6 introduces the concept of 'GLib filename encoding', which is the
+ on-disk encoding on Unix, but UTF-8 on Windows. All GLib functions
+ returning or accepting pathnames have been changed to expect
+ filenames in this encoding, and the common POSIX functions dealing
+ with pathnames have been wrapped. These wrappers are declared in the
+ header <glib/gstdio.h> which must be included explicitly; it is not
+ included through <glib.h>.
+
+ On current (NT-based) Windows versions, where the on-disk file names
+ are Unicode, these wrappers use the wide-character API in the C
+ library. Thus applications can handle file names containing any
+ Unicode characters through GLib's own API and its POSIX wrappers,
+ not just file names restricted to characters in the system codepage.
+
+ To keep binary compatibility with applications compiled against
+ older versions of GLib, the Windows DLL still provides entry points
+ with the old semantics using the old names, and applications
+ compiled against GLib 2.6 will actually use new names for the
+ functions. This is transparent to the programmer.
+
+ When compiling against GLib 2.6, applications intended to be
+ portable to Windows must take the UTF-8 file name encoding into
+ consideration, and use the gstdio wrappers to access files whose
+ names have been constructed from strings returned from GLib.
+
+* Likewise, g_get_user_name() and g_get_real_name() have been changed
+ to return UTF-8 on Windows, while keeping the old semantics for
+ applications compiled against older versions of GLib.
+
+* The GLib uses an '_' prefix to indicate private symbols that
+ must not be used by applications. On some platforms, symbols beginning
+ with prefixes such as _g will be exported from the library, on others not.
+ In no case can applications use these private symbols. In addition to that,
+ GLib+ 2.6 makes several symbols private which were not in any installed
+ header files and were never intended to be exported.
+
+* To reduce code size and improve efficiency, GLib, when compiled
+ with the GNU toolchain, has separate internal and external entry
+ points for exported functions. The internal names, which begin with
+ IA__, may be seen when debugging a GLib program.
+
+* On Windows, GLib no longer opens a console window when printing
+ warning messages if stdout or stderr are invalid, as they are in
+ "Windows subsystem" (GUI) applications. Simply redirect stdout or
+ stderr if you need to see them.
+
+* The child watch functionality tends to reveal a bug in many
+ thread implementations (in particular the older LinuxThreads
+ implementation on Linux) where it's not possible to call waitpid()
+ for a child created in a different thread. For this reason, for
+ maximum portability, you should structure your code to fork all
+ child processes that you want to wait for from the main thread.
+
+* A problem was recently discovered with g_signal_connect_object();
+ it doesn't actually disconnect the signal handler once the object being
+ connected to dies, just disables it. See the API docs for the function
+ for further details and the correct workaround that will continue to
+ work with future versions of GLib.
+
* Major new APIs
- GOption, a commandline option parser
- GKeyFile, a parser/editor for the .ini like files
diff --git a/README.md b/README.md
index 4bc4113ce..9ef3b3d6b 100644
--- a/README.md
+++ b/README.md
@@ -47,287 +47,3 @@ Closes: #123
Otherwise, create a new merge request that introduces the change, filing a
separate issue is not required.
-
-## Notes
-
-### Notes about GLib 2.48
-
-* The system copy of PCRE is now used by default to implement GRegex.
- Configure with --with-pcre=internal if a system PCRE version
- is unavailable or undesired.
-
-### Notes about GLib 2.46
-
-* GTask no longer imposes a fixed limit on the number of tasks that
- can be run_in_thread() simultaneously, since doing this inevitably
- results in deadlocks in some use cases. Instead, it now has a base
- number of threads that can be used "for free", but will gradually
- add more threads to the pool if too much time passes without any
- tasks completing.
-
- The exact behavior may continue to change in the future, and it's
- possible that some future version of GLib may not do any
- rate-limiting at all. As a result, you should no longer assume that
- GTask will rate-limit tasks itself (or, by extension, that calls to
- certain async gio methods will automatically be rate-limited for
- you). If you have a very large number of tasks to run, and don't
- want them to all run at once, you should rate-limit them yourself.
-
-### Notes about GLib 2.40
-
-* g_test_run() no longer runs tests in exactly the order they are
- registered; instead, it groups them according to test suites (ie,
- path components) like the documentation always claimed it did. In
- some cases, this can result in a sub-optimal ordering of tests,
- relative to the old behavior. The fix is to change the test paths to
- properly group together the tests that should run together. (eg, if
- you want to run test_foo_simple(), test_bar_simple(), and
- test_foo_using_bar() in that order, they should have test paths like
- "/simple/foo", "/simple/bar", "/complex/foo-using-bar", not
- "/foo/simple", "/bar/simple", "/foo/using-bar" (which would result
- in test_foo_using_bar() running before test_bar_simple()).
-
- (The behavior actually changed in GLib 2.36, but it was not
- documented at the time, since we didn't realize it mattered.)
-
-### Notes about GLib 2.36
-
-* It is no longer necessary to call g_type_init(). If you are
- loading GLib as a dynamic module, you should be careful to avoid
- unloading it, then subsequently loading it again. This never
- really worked before, but it is now explicitly undefined behavior.
- Note that if g_type_init() was the only explicit use of a GObject
- API and you are using linker flags such as --no-add-needed, then
- you may have to artificially use some GObject call to keep the
- linker from optimizing away -lgobject. We recommend to use
- g_type_ensure (G_TYPE_OBJECT) for this purpose.
-
-* This release contains an incompatible change to the g_get_home_dir()
- function. Previously, this function would effectively ignore the HOME
- environment variable and always return the value from /etc/password.
- As of this version, the HOME variable is used if it is set and the
- value from /etc/passwd is only used as a fallback.
-
-* The 'flowinfo' and 'scope_id' fields of GInetSocketAddress
- (introduced in GLib 2.32) have been fixed to be in host byte order
- rather than network byte order. This is an incompatible change, but
- the previous behavior was clearly broken, so it seems unlikely that
- anyone was using it.
-
-### Notes about GLib 2.34
-
-* GIO now looks for thumbnails in XDG_CACHE_HOME, following a
- recent alignment of the thumbnail spec with the basedir spec.
-
-* The default values for GThreadPools max_unused_threads and
- max_idle_time settings have been changed to 2 and 15*1000,
- respectively.
-
-### Notes about GLib 2.32
-
-* It is no longer necessary to use g_thread_init() or to link against
- libgthread. libglib is now always thread-enabled. Custom thread
- system implementations are no longer supported (including errorcheck
- mutexes).
-
-* The thread and synchronisation APIs have been updated.
- GMutex and GCond can be statically allocated without explicit
- initialisation, as can new types GRWLock and GRecMutex. The
- GStatic_______ variants of these types have been deprecated. GPrivate
- can also be statically allocated and has a nicer API (deprecating
- GStaticPrivate). Finally, g_thread_create() has been replaced with a
- substantially simplified g_thread_new().
-
-* The g_once_init_enter()/_leave() functions have been replaced with
- macros that allow for a pointer to any gsize-sized object, not just a
- gsize*. The assertions to ensure that a pointer to a correctly-sized
- object is being used will not work with generic pointers (ie: (void*)
- and (gpointer) casts) which would have worked with the old version.
-
-* It is now mandatory to include glib.h instead of individual headers.
-
-* The -uninstalled variants of the pkg-config files have been dropped.
-
-* For a long time, gobject-2.0.pc mistakenly declared a public
- dependency on gthread-2.0.pc (when the dependency should have been
- private). This means that programs got away with calling
- g_thread_init() without explicitly listing gthread-2.0.pc among their
- dependencies.
-
- gthread has now been removed as a gobject dependency, which will cause
- such programs to break.
-
- The fix for this problem is either to declare an explicit dependency
- on gthread-2.0.pc (if you care about compatibility with older GLib
- versions) or to stop calling g_thread_init().
-
-* g_debug() output is no longer enabled by default. It can be enabled
- on a per-domain basis with the G_MESSAGES_DEBUG environment variable
- like
- G_MESSAGES_DEBUG=domain1,domain2
- or
- G_MESSAGES_DEBUG=all
-
-### Notes about GLib 2.30
-
-* GObject includes a generic marshaller, g_cclosure_marshal_generic.
- To use it, simply specify NULL as the marshaller in g_signal_new().
- The generic marshaller is implemented with libffi, and consequently
- GObject depends on libffi now.
-
-### Notes about GLib 2.28
-
-* The GApplication API has changed compared to the version that was
- included in the 2.25 development snapshots. Existing users will need
- adjustments.
-
-### Notes about GLib 2.26
-
-* Nothing noteworthy.
-
-### Notes about GLib 2.24
-
-* It is now allowed to call g_thread_init(NULL) multiple times, and
- to call glib functions before g_thread_init(NULL) is called
- (although the later is mainly a change in docs as this worked before
- too). See the GThread reference documentation for the details.
-
-* GObject now links to GThread and threads are enabled automatically
- when g_type_init() is called.
-
-* GObject no longer allows to call g_object_set() on construct-only properties
- while an object is being initialized. If this behavior is needed, setting a
- custom constructor that just chains up will re-enable this functionality.
-
-* GMappedFile on an empty file now returns NULL for the contents instead of
- returning an empty string. The documentation specifically states that code
- may not rely on nul-termination here so any breakage caused by this change
- is a bug in application code.
-
-### Notes about GLib 2.22
-
-* Repeated calls to g_simple_async_result_set_op_res_gpointer used
- to leak the data. This has been fixed to always call the provided
- destroy notify.
-
-### Notes about GLib 2.20
-
-* The functions for launching applications (e.g. g_app_info_launch() +
- friends) now passes a FUSE file:// URI if possible (requires gvfs
- with the FUSE daemon to be running and operational). With gvfs 2.26,
- FUSE file:// URIs will be mapped back to gio URIs in the GFile
- constructors. The intent of this change is to better integrate
- POSIX-only applications, see bug #528670 for the rationale. The
- only user-visible change is when an application needs to examine an
- URI passed to it (e.g. as a positional parameter). Instead of
- looking at the given URI, the application will now need to look at
- the result of g_file_get_uri() after having constructed a GFile
- object with the given URI.
-
-### Notes about GLib 2.18
-
-* The recommended way of using GLib has always been to only include the
- toplevel headers glib.h, glib-object.h and gio.h. GLib enforces this by
- generating an error when individual headers are directly included.
- To help with the transition, the enforcement is not turned on by
- default for GLib headers (it is turned on for GObject and GIO).
- To turn it on, define the preprocessor symbol G_DISABLE_SINGLE_INCLUDES.
-
-### Notes about GLib 2.16
-
-* GLib now includes GIO, which adds optional dependencies against libattr
- and libselinux for extended attribute and SELinux support. Use
- --disable-xattr and --disable-selinux to build without these.
-
-### Notes about GLib 2.10
-
-* The functions g_snprintf() and g_vsnprintf() have been removed from
- the gprintf.h header, since they are already declared in glib.h. This
- doesn't break documented use of gprintf.h, but people have been known
- to include gprintf.h without including glib.h.
-
-* The Unicode support has been updated to Unicode 4.1. This adds several
- new members to the GUnicodeBreakType enumeration.
-
-* The support for Solaris threads has been retired. Solaris has provided
- POSIX threads for long enough now to have them available on every
- Solaris platform.
-
-* 'make check' has been changed to validate translations by calling
- msgfmt with the -c option. As a result, it may fail on systems with
- older gettext implementations (GNU gettext < 0.14.1, or Solaris gettext).
- 'make check' will also fail on systems where the C compiler does not
- support ELF visibility attributes.
-
-* The GMemChunk API has been deprecated in favour of a new 'slice
- allocator'. See the g_slice documentation for more details.
-
-* A new type, GInitiallyUnowned, has been introduced, which is
- intended to serve as a common implementation of the 'floating reference'
- concept that is e.g. used by GtkObject. Note that changing the
- inheritance hierarchy of a type can cause problems for language
- bindings and other code which needs to work closely with the type
- system. Therefore, switching to GInitiallyUnowned should be done
- carefully. g_object_compat_control() has been added to GLib 2.8.5
- to help with the transition.
-
-### Notes about GLib 2.6.0
-
-* GLib 2.6 introduces the concept of 'GLib filename encoding', which is the
- on-disk encoding on Unix, but UTF-8 on Windows. All GLib functions
- returning or accepting pathnames have been changed to expect
- filenames in this encoding, and the common POSIX functions dealing
- with pathnames have been wrapped. These wrappers are declared in the
- header <glib/gstdio.h> which must be included explicitly; it is not
- included through <glib.h>.
-
- On current (NT-based) Windows versions, where the on-disk file names
- are Unicode, these wrappers use the wide-character API in the C
- library. Thus applications can handle file names containing any
- Unicode characters through GLib's own API and its POSIX wrappers,
- not just file names restricted to characters in the system codepage.
-
- To keep binary compatibility with applications compiled against
- older versions of GLib, the Windows DLL still provides entry points
- with the old semantics using the old names, and applications
- compiled against GLib 2.6 will actually use new names for the
- functions. This is transparent to the programmer.
-
- When compiling against GLib 2.6, applications intended to be
- portable to Windows must take the UTF-8 file name encoding into
- consideration, and use the gstdio wrappers to access files whose
- names have been constructed from strings returned from GLib.
-
-* Likewise, g_get_user_name() and g_get_real_name() have been changed
- to return UTF-8 on Windows, while keeping the old semantics for
- applications compiled against older versions of GLib.
-
-* The GLib uses an '_' prefix to indicate private symbols that
- must not be used by applications. On some platforms, symbols beginning
- with prefixes such as _g will be exported from the library, on others not.
- In no case can applications use these private symbols. In addition to that,
- GLib+ 2.6 makes several symbols private which were not in any installed
- header files and were never intended to be exported.
-
-* To reduce code size and improve efficiency, GLib, when compiled
- with the GNU toolchain, has separate internal and external entry
- points for exported functions. The internal names, which begin with
- IA__, may be seen when debugging a GLib program.
-
-* On Windows, GLib no longer opens a console window when printing
- warning messages if stdout or stderr are invalid, as they are in
- "Windows subsystem" (GUI) applications. Simply redirect stdout or
- stderr if you need to see them.
-
-* The child watch functionality tends to reveal a bug in many
- thread implementations (in particular the older LinuxThreads
- implementation on Linux) where it's not possible to call waitpid()
- for a child created in a different thread. For this reason, for
- maximum portability, you should structure your code to fork all
- child processes that you want to wait for from the main thread.
-
-* A problem was recently discovered with g_signal_connect_object();
- it doesn't actually disconnect the signal handler once the object being
- connected to dies, just disables it. See the API docs for the function
- for further details and the correct workaround that will continue to
- work with future versions of GLib.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]