8781 Commits

Author SHA1 Message Date
Emmanuele Bassi
fe32c3f5c5 Generate introspection data
Currently, the introspection data for GLib and its sub-libraries is
generated by gobject-introspection, to avoid the cyclic dependency
between the two projects.

Since gobject-introspection is generally available on installed systems,
we can check for its presence, and generate the introspection data
directly from GLib.

This does introduce a cyclic dependency, which is why it's possible to
build GLib without introspection, then build gobject-introspection, and
finally rebuild GLib.

By having introspection data available during the GLib build, we can do
things like generating documentation; validating newly added API; and
close the loop between adding new API and it becoming available to non-C
consumers of the C ABI (i.e. language bindings).
2023-10-23 11:26:53 +01:00
Emmanuele Bassi
5e7c512609 docs: Fix various invalid links 2023-10-23 10:25:31 +01:00
Emmanuele Bassi
c86f469c1e Ignore autocleanups when generating introspection data 2023-10-23 10:25:30 +01:00
Emmanuele Bassi
c5eb130175 Fix broken annotation in GIOChannel
Missing separator between annotation and description.
2023-10-23 10:25:30 +01:00
Michael Catanzaro
ceca2dc5bc Merge branch '3144-file-set-contents-truncation' into 'main'
gfileutils: Add a missing ftruncate() call when writing files

Closes #3144

See merge request GNOME/glib!3650
2023-10-22 22:41:56 +00:00
Michael Catanzaro
7a9f8eec35 Merge branch 'alt-digits-locale-change' into 'main'
gdatetime: Fix incorrect alt-digits being used after changing locale

See merge request GNOME/glib!3655
2023-10-22 22:32:34 +00:00
Philip Withnall
afd8dde13f gdatetime: Fix incorrect alt-digits being used after changing locale
The alt-digits are loaded from `nl_langinfo()` in a `GOnce` section,
which means `nl_langinfo()` is not re-queried after the process changes
locale (if that happens).

So, change the `GOnce` to a mutex and store the locale of the alt-digits
alongside them. This will introduce contention when calling
`format_number()` is called, but how often are multiple threads trying
to format dates at the same time?

If this does get highlighted as a performance problem, the other
approach I considered was a `GPrivate` struct containing all the
locale-specific cached data. That comes at the cost of using a
`GPrivate` slot (although that’s only particularly expensive on Windows,
and the locale code is quite different for Windows, so perhaps that
could be avoided entirely). It does mean that all locale printing could
be lock-free and still safely update cached data on a locale change.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-10-22 22:10:07 +01:00
Philip Withnall
3f705ffa12 gfileutils: Add a missing ftruncate() call when writing files
When calling `g_file_set_contents_full()` without
`G_FILE_SET_CONTENTS_CONSISTENT`, the file is written by opening it,
`write()`ing to it, then closing it.

This is fine as long as the file is not longer than the new content you
want to set its contents to. If it is, the last bit of the old content
remains, because `g_file_set_contents_full()` was missing an
`ftruncate()` call.

Fix that, and change the tests to catch truncation failures in future.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Fixes: #3144
2023-10-22 21:37:28 +01:00
Marco Trevisan
ca57acd71b Merge branch '3112-unicode-15.1' into 'main'
gunicode: Update to Unicode 15.1.0

Closes #3112

See merge request GNOME/glib!3651
2023-10-19 17:02:37 +00:00
Philip Withnall
b1ae8fb85f gdatetime: Fix minor leaks from strup/strdown calls
These were accidentally introduced in commit 0b114b2687.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-10-18 15:54:33 +01:00
Philip Withnall
17145fab35 gunicode: Update to Unicode 15.1.0
All changes mechanically generated with:
```
./tools/update-unicode-data.sh ~/Downloads/UCD 15.1.0
```

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Fixes: #3112
2023-10-17 22:59:27 +01:00
Philip Withnall
80aea8e0a6 gen-unicode-tables: Fix indentation at the start of the first row
It was annoying Marco.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Helps: #3112
2023-10-17 22:59:27 +01:00
Philip Withnall
cc350774bf gen-unicode-tables: Strip whitespace off parsed fields
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-10-17 22:45:55 +01:00
Philip Withnall
9770d7ba31 gunicode: Fix a minor typo in a documentation comment
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-10-17 22:45:55 +01:00
Philip Withnall
444a313b1f gunicode: Add new line-break types from Unicode 15.1.0
See https://unicode.org/reports/tr14/

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Helps: #3112
2023-10-17 22:45:55 +01:00
Philip Withnall
fa165204ae Merge branch 'fix-warnings-clang-windows' into 'main'
Fix warnings with Clang on Windows and enable --Werror in CI

See merge request GNOME/glib!3635
2023-10-16 21:29:09 +00:00
Luca Bacci
4aa051cafb valgrind.h: Fix macro definition for Windows x64
The Windows x64 ABI follows the LLP64 model, so unsigned long int is 32 bits

Fixes the following warnings when compiling for Windows x64:

  ../glib/gobject/gatomicarray.c:85:3: warning: cast to smaller integer type 'unsigned long' from 'gpointer' (aka 'void *') [-Wvoid-pointer-to-int-cast]
    VALGRIND_MALLOCLIKE_BLOCK (mem, real_size - sizeof (GAtomicArrayMetadata),
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../glib/glib/valgrind.h:6479:5: note: expanded from macro 'VALGRIND_MALLOCLIKE_BLOCK'
      VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK,       \
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../glib/glib/valgrind.h:203:15: note: expanded from macro 'VALGRIND_DO_CLIENT_REQUEST_STMT'
    do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0,                        \
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ../glib/glib/valgrind.h:417:20: note: expanded from macro 'VALGRIND_DO_CLIENT_REQUEST_EXPR'
      _zzq_args[1] = (unsigned long int)(_zzq_arg1);                \
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

See https://bugs.kde.org/show_bug.cgi?id=427146
2023-10-16 15:02:03 +02:00
Philip Withnall
481839c190 Merge branch 'win32-unicode-api' into 'main'
Windows: Compile with the UNICODE / _UNICODE macros

See merge request GNOME/glib!3623
2023-10-16 08:58:41 +00:00
Philip Withnall
b8e805b8c6 Merge branch 'update-bit-symbol' into 'main'
gutils: Use international symbol for bits

See merge request GNOME/glib!3552
2023-10-16 08:25:03 +00:00
getsnoopy
5422d2fdb8 gutils: Use international symbol for bits 2023-10-16 08:25:03 +00:00
Guido Günther
bc4ba05d34 gstrvbuilder: Add g_strv_builder_take
g_strv_builder_take() allows to transfer ownership of the passed in
string.

This can be useful to avoid additional allocations when using functions
that transfer ownership to the caller like g_strdup_printf().

The testcase uses g_strv_builder_take and g_strv_builder_add to demo
that calls can be mixed.
2023-10-15 15:45:58 +02:00
Luca Bacci
dfeb671c36 tests/win32: Initialize DWORD with the right constant
We were initializing a DWORD (unsigned 32 bit) with a constant
of bigger rank (G_MAXSIZE) on 64 bit systems.

Fixes the following warnings on CLang when compiling for x64:

  ../glib/glib/tests/win32.c:47:14: warning: implicit conversion from 'unsigned long long' to 'DWORD' (aka 'unsigned long') changes value from 18446744073709551615 to 4294967295 [-Wconstant-conversion]
    DWORD bp = G_MAXSIZE;
          ~~   ^~~~~~~~~
  glib/glibconfig.h:88:19: note: expanded from macro 'G_MAXSIZE'
  #define G_MAXSIZE       G_MAXUINT64
                          ^~~~~~~~~~~
  ../glib/glib/gtypes.h:107:21: note: expanded from macro 'G_MAXUINT64'
  #define G_MAXUINT64     G_GUINT64_CONSTANT(0xffffffffffffffff)
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  glib/glibconfig.h:69:52: note: expanded from macro 'G_GUINT64_CONSTANT'
  #define G_GUINT64_CONSTANT(val) (G_GNUC_EXTENSION (val##ULL))
                                                     ^~~~~~~~
  <scratch space>:96:1: note: expanded from here
  0xffffffffffffffffULL
  ^~~~~~~~~~~~~~~~~~~~~
2023-10-12 11:45:33 +02:00
Luca Bacci
8264b13737 tests/cxx: Do not assume that NULL is a pointer type starting with C++11
Many toolchain did not change the definition of NULL to avoid introducing
breaking changes in existing codebases. For example, on Windows NULL is
0 (int) regardless of the C++ standard in use.

Fixes the following warnings on CLang when compiling for Windows:

  ../glib/glib/tests/cxx.cpp:539:34: warning: missing sentinel in function call [-Wsentinel]
    g_test_init (&argc, &argv, NULL);
                                   ^
                                   , nullptr
  ../glib/glib/gtestutils.h:298:9: note: function has been explicitly marked sentinel here
  void    g_test_init                     (int            *argc,
          ^

  ../glib/gio/tests/cxx.cpp:62:34: warning: missing sentinel in function call [-Wsentinel]
    g_test_init (&argc, &argv, NULL);
                                   ^
                                   , nullptr
  ../glib/glib/gtestutils.h:298:9: note: function has been explicitly marked sentinel here
  void    g_test_init                     (int            *argc,
          ^
2023-10-12 11:45:03 +02:00
Luca Bacci
107311afce glib/gtimezone.c: Declare Unix-only functions under G_OS_UNIX
Fixes the following warnings on CLang when compiling for Windows:

  ../glib/glib/gtimezone.c:95:22: warning: unused function 'gint64_from_be' [-Wunused-function]
  static inline gint64 gint64_from_be (const gint64_be be) {
                       ^
  ../glib/glib/gtimezone.c:99:22: warning: unused function 'gint32_from_be' [-Wunused-function]
  static inline gint32 gint32_from_be (const gint32_be be) {
                       ^
  ../glib/glib/gtimezone.c:103:23: warning: unused function 'guint32_from_be' [-Wunused-function]
  static inline guint32 guint32_from_be (const guint32_be be) {
                        ^
2023-10-12 11:44:59 +02:00
Luca Bacci
5400f4e128 glib/gmessages.c: Remove unused function
Fixes the follwing warning on CLang:

  ../glib/glib/gmessages.c:433:1: warning: unused function 'dowrite' [-Wunused-function]
  dowrite (int          fd,
  ^
2023-10-12 11:44:56 +02:00
Luca Bacci
f075db637a glib/giowin32.c: Add G_GNUC_FALLTHROUGH annotation
Fixes the following warning on CLang:

  ../glib/glib/giowin32.c:1665:7: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
        default:
        ^
  ../glib/glib/giowin32.c:1665:7: note: insert '__attribute__((fallthrough));' to silence this warning
        default:
        ^
        __attribute__((fallthrough));
  ../glib/glib/giowin32.c:1665:7: note: insert 'break;' to avoid fall-through
        default:
        ^
        break;
2023-10-12 11:44:48 +02:00
Luca Bacci
337912072a Windows: Compile with the UNICODE / _UNICODE macros
It's the recommended way to build C/C++ projects on Windows, see
https://learn.microsoft.com/en-us/windows/win32/intl/conventions-for-function-prototypes
2023-10-12 11:32:03 +02:00
Matthias Clasen
f679a784d2 docs: Drop the GQuark SECTION
Move the content to the struct docs.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
5a2a0aeaf9 docs: Move the GStringChunk SECTION
Move the contents to the struct docs.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
57219c14a0 docs: Move the GTimer SECTION
Move the contents to the struct docs.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
a47bdb2638 docs: Move GRegex SECTION
Move the contents to the struct docs.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
45f6f43fc6 docs: Mark all GWakeup docs as private
This is not public API.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
ccfedf08cb docs: Move the GPatternSpec SECTION
Move the contents to the struct docs.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
f2b1e4d936 docs: Move the GKeyFile SECTION
Move the contents to the struct docs.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
f27af99233 docs: Move the unicode SECTION
Move the content to the new unicode.md file.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
6052639a5c docs: Update Unicode version history
Unicode 14 and 15 were missing from this list.
2023-10-11 17:38:31 +01:00
Matthias Clasen
55a844a465 docs: Move the GDate SECTION
Move the contents to the struct docs.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
1dae4fc618 docs: Move the GPathBuf SECTION
Move the contents to the struct docs.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
be9a463a10 docs: Move the GStrvBuilder SECTION
Move the contents to the struct docs.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
c50f94e41e docs: Move the GScanner SECTION
Not much here to begin with.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
5a415ee93f docs: Move the GTimeZone SECTION
Move the contents to the struct docs.

Helps: #3037
2023-10-11 17:38:31 +01:00
Matthias Clasen
7b4d00e0a4 docs: Move GDateTime SECTION
Move the contents to the struct comment.

Helps: #3037
2023-10-11 17:38:30 +01:00
Matthias Clasen
7fd50be9d0 docs: Move bookmarkfile SECTION
Move the content to the struct docs.

Helps: #3037
2023-10-11 17:38:30 +01:00
Matthias Clasen
d028759903 docs: Drop the threadpool SECTION
Move the contents to the GThreadPool struct docs.

Helps: #3037
2023-10-11 17:38:30 +01:00
Matthias Clasen
2e47610560 docs: Drop the GString SECTION
Move the contents to the GString struct docs.

Helps: #3037
2023-10-11 17:38:30 +01:00
Matthias Clasen
97cb9fa220 docs: Move the refstring SECTION
Move the contents to the data-structures.md file.

Helps: #3037
2023-10-11 17:38:30 +01:00
Matthias Clasen
8164220213 docs: Move the sequence SECTION
Add the contents to the data-structures.md file.

Helps: #3037
2023-10-11 17:38:30 +01:00
Matthias Clasen
c226088028 docs: Move the GNode SECTION
Move the contents to the data-structures.md file.

Helps: #3037
2023-10-11 17:38:30 +01:00
Matthias Clasen
2191c6024a docs: Move the tree SECTION
Move the content to the new data-structures.md file.

Helps: #3037
2023-10-11 17:38:30 +01:00
Matthias Clasen
0ce33a6fee docs: Move the asyncqueue SECTION
Move the contents to the new data-structures.md file.

Helps: #3037
2023-10-11 17:38:30 +01:00