Commit Graph

28133 Commits

Author SHA1 Message Date
Philip Withnall
4863561a46 Merge branch 'once-init-annotations' into 'main'
gthread: Fix optional/nullable annotations for g_once_init_*()

See merge request GNOME/glib!3581
2023-10-04 22:43:49 +00:00
Philip Withnall
da278bdd0b Merge branch 'wip/chergert/queue-for-sourcelist' into 'main'
gmain: avoid a GList traversal when removing source

See merge request GNOME/glib!3620
2023-10-04 22:40:58 +00:00
Philip Withnall
57b41b8fec Merge branch 'g-once-enter-ptr' into 'main'
gthread: introduce g_once_init_{enter,leave}_pointer

See merge request GNOME/glib!3577
2023-10-04 22:22:54 +00:00
Christian Hergert
de79831e3c wakeup: do single read when using eventfd()
Previously, this would loop as long as read() got the expected number of
bytes back, which is 8. That means every successful read() of the eventfd
would perform an additional syscall() as a followup.

This is not ideal because eventfd (unless used as an EFD_SEMAPHORE) will
reset the counter as part of the read(). So that means that we either do
an additional throw-away syscall() or potentially race against a producer
generating new events before this change.
2023-10-04 14:01:23 -07:00
Christian Hergert
5e96ed64c9 gmain: avoid a GList traversal when removing source
Currently the GSourceList has it's own allocation plus a secondary
allocation for the GList which contains it (from GMainContext). Not only
are these a pointer chase, but they are on separate cachelines too. Without
changing the code much we can at least keep things on the same cacheline
so that the pointer chase matters less.

Since the GList becomes embedded in the GSourceList you can use a
g_queue_unlink() directly removing the link without traversing the GList
like was done before.

Furthermore, we can simplify some code with g_queue_push_tail_link()
instead of some extra branching.
2023-10-04 13:37:06 -07:00
Philip Withnall
bd13ec30a9 Merge branch 'mcatanzaro/null' into 'main'
Document NULL pointer pitfall in toolchain requirements

See merge request GNOME/glib!3598
2023-10-04 14:13:43 +00:00
Alex Richardson
5ecd3cbe52 gobject: use g_once_init_enter_pointer for GType initializers
GType is either an integer or a pointer, so we have to use the _pointer
version here to support architectures such as Morello.

Helps: https://gitlab.gnome.org/GNOME/glib/-/issues/2842
See also: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3578
2023-10-04 14:50:54 +01:00
Michael Catanzaro
77d1093108 Merge branch '3111-drop-unnecessary-include' into 'main'
tests: Drop unnecessary include from gsubprocess-testprog.c

Closes #3111

See merge request GNOME/glib!3617
2023-10-04 13:22:08 +00:00
Michael Catanzaro
2b0c17f458 Document NULL pointer pitfall in toolchain requirements
I'm not aware of any platforms where this is a problem in practice, but
it's definitely nonportable and doesn't hurt to document it.
I wonder about CHERI....
2023-10-04 14:04:08 +01:00
Philip Withnall
a66cc62f56 Merge branch 'fix-constructor-test-warning-clang' into 'main'
tests/constructor: Fix "unknown pragma ignored" warning on clang

See merge request GNOME/glib!3611
2023-10-04 13:00:26 +00:00
Alex Richardson
a1dfecf11f Use g_once_init_{enter,leave}_pointer where appropriate
This should not result in any functional changes, but will eventually
allow glib to be functional on CHERI-enabled systems such as Morello.

Helps: https://gitlab.gnome.org/GNOME/glib/-/issues/2842
2023-10-04 13:57:16 +01:00
Alex Richardson
726eca7c89 gthread: introduce g_once_init_{enter,leave}_pointer
These functions can be used to initalize pointer-type variables rather
than a gsize. This is required to support CHERI-enabled platforms where
gsize cannot be used to store pointers. Follow-up changes will migrate
the uses of g_once_init that store pointers to the new API

Helps: https://gitlab.gnome.org/GNOME/glib/-/issues/2842
2023-10-04 13:57:16 +01:00
Luca Bacci
c287e69c0a tests/constructor: Fix "unknown pragma ignored" warning on clang 2023-10-04 13:43:05 +01:00
Philip Withnall
9c81ff46a2 Merge branch 'fix-z-format-tests' into 'main'
tests: Fix gdatetime test on non-UTC systems

See merge request GNOME/glib!3613
2023-10-04 12:41:30 +00:00
Philip Withnall
ef28253e57 tests: Separate invalid escaping tests for GKeyFile
One test key was serving two purposes, which meant tests for it couldn’t
be separated out. It was testing escape-at-end-of-line and also
invalid-escape.

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

Helps: #3098
2023-10-04 11:30:02 +01:00
Philip Withnall
76d77cf623 Revert "gkeyfile: Temporarily re-allow invalid escapes when parsing strings"
This reverts commit 4a96727642.

It was a temporary workaround to prevent disruption to apps late on in
the 2.78 cycle. Since we’re now early in the 2.80 cycle, let’s revert
the workaround and allow apps more time to fix their error handling for
`GKeyFile`.

Fixes: #3098
2023-10-04 11:01:35 +01:00
Emmanuele Bassi
ab83d965e8 Merge branch 'version-bump' into 'main'
build: Post-release version bump

See merge request GNOME/glib!3605
2023-10-04 09:33:58 +00:00
Philip Withnall
62c33e653f tests: Fix gdatetime test on non-UTC systems
Commit 0b114b2687 accidentally made the
tests only pass on systems running in a UTC timezone, as it checked the
local timezone `%Z` format against `UTC`.

This happens to pass on all the GLib CI runners except the macOS one,
which is running under CET.

Make the formatting tests timezone-independent by running them with UTC
datetimes. There’s already a separate test for checking that `%Z` works
correctly in a non-UTC timezone (`test_z`).

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

See: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3611#note_1859208
2023-10-04 10:14:20 +01:00
Philip Withnall
e00ca9967f tests: Drop unnecessary include from gsubprocess-testprog.c
It’s not actually needed on any platform, and causes compilation
problems on platforms where it’s not available.

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

Fixes: #3111
2023-10-04 10:06:37 +01:00
Philip Withnall
2046a1b9d2 Merge branch 'mcatanzaro/security' into 'main'
Expand security policy to cover previous stable branch

See merge request GNOME/glib!3597
2023-10-04 08:33:52 +00:00
Philip Withnall
31e96edbdd Merge branch 'glib-2.78.0-g_assert_cmpint' into 'main'
gtestutils.h: Fix warning with -Wsign-conversion caused by g_assert_cmpint

See merge request GNOME/glib!3590
2023-10-04 08:30:43 +00:00
Philip Withnall
9f6b42af6e Merge branch 'vectored-exception-handlers' into 'main'
Small fixes and cleanups for Vectored Exception Handlers

See merge request GNOME/glib!3569
2023-10-04 08:19:57 +00:00
Philip Withnall
fdfaa993e6 Merge branch 'fix-unaligned-dirent64' into 'main'
Buffer needs to be aligned correctly to receive linux_dirent64.

See merge request GNOME/glib!3582
2023-10-03 17:43:13 +00:00
Sebastian Wilhelmi
9a48cbf27b Buffer needs to be aligned correctly to receive linux_dirent64. 2023-10-03 17:43:12 +00:00
Philip Withnall
199fa27321 Merge branch 'update-strv-annotations' into 'main'
Update GStrv annotations

See merge request GNOME/glib!3612
2023-10-03 17:29:28 +00:00
Philip Withnall
f3469858f3 Merge branch 'uncomment' into 'main'
gdesktopappinfo: Do not search Comment field

See merge request GNOME/glib!3610
2023-10-03 17:12:59 +00:00
badcel
85d2a7549d
Update GStrv annotations 2023-10-03 16:09:03 +02:00
Florian Müllner
794b18df34 gdesktopappinfo: Do not search Comment field
The Comment field provides a user-visible description of the app,
which usually contains generic words ("and", "or", "not", "is", ...)
that add noise when used for search.

It made some sense to match against the field as a fallback for
Keywords, before that key was well established. However that key
has been around for years now, so hopefully every app where additional
terms are helpful uses it by now.

With that, the downside of added noise outweighs the benefit, so
it's time to stop matching on comments.
2023-10-03 14:05:27 +02:00
Philip Withnall
2f1f97d58d Merge branch 'wip/paveloom/tcp-connection-leak' into 'main'
Make sure the `GTask` is freed on a graceful disconnect

See merge request GNOME/glib!3607
2023-10-03 10:41:16 +00:00
Philip Withnall
c1528778e6 Merge branch 'fix_3116' into 'main'
glocalfileinfo: Preserve microseconds for access/modify times

Closes #3116

See merge request GNOME/glib!3587
2023-10-03 10:00:55 +00:00
Philip Withnall
b4e6a834a2 Merge branch 'tls-callbacks' into 'main'
Make use of TLS callbacks for static builds on Windows

Closes #3087

See merge request GNOME/glib!3560
2023-10-03 10:00:44 +00:00
Philip Withnall
3d99d02112 Merge branch 'wip/chergert/make-gtype-create-instance-fast' into 'main'
gobject: cache flags needed for g_type_create_instance()

See merge request GNOME/glib!3595
2023-10-03 09:45:27 +00:00
Philip Withnall
d8be7a9a41 Merge branch 'update-grand-annotations' into 'main'
Update GRand annotations

See merge request GNOME/glib!3572
2023-10-03 09:27:37 +00:00
Philip Withnall
83218add7d Merge branch 'upate-gstringchunk-annotations' into 'main'
Update GStringChunk annotations

See merge request GNOME/glib!3571
2023-10-03 09:26:30 +00:00
Philip Withnall
3a1e53b80d docs: Add 2.80 release series documentation pages to the build
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-10-03 10:24:19 +01:00
Philip Withnall
260b5003c6 build: Post-release version bump
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2023-10-03 10:21:56 +01:00
Philip Withnall
2f7b20538f Merge branch 'update-hmac-annotations' into 'main'
Update annotations for GHmac

See merge request GNOME/glib!3567
2023-10-03 09:16:54 +00:00
Philip Withnall
ee56c7697b Merge branch 'update-annotations' into 'main'
Update annotations for GAsyncQueue and GDir

See merge request GNOME/glib!3566
2023-10-03 09:11:42 +00:00
Luca Bacci
c4c39ea52a tests/constructor: Support systems where dlclose is a no-op
POSIX allows dlclose() implementations that are no-ops,
and in such case library destructors run at application
exit rather than dlclose().

That's the case, for example, of UNIX systems with the
Musl LibC.
2023-10-03 11:07:16 +02:00
Luca Bacci
85e21ff757 tests/constructor: Test all destructors
Previously we were only testing destructors that run on
dlclose, now we also test destructors running at application
exit.
2023-10-03 11:07:11 +02:00
Philip Withnall
57169dd92f Merge branch 'update-gtimer-annotations' into 'main'
Update GTimer annotations

See merge request GNOME/glib!3573
2023-10-03 08:46:20 +00:00
Christian Hergert
ab2fe494a4 gobject: inline G_TYPE_IS() macros within gtype.c
If you take a release build (--buildtype=release) previously of GLib,
functions such as g_type_create_instance() would call out to
g_type_test_flags() which you can see by disassembling and looking for the
call instruction to <g_type_test_flags> via the library ABI.

Now that the previous commit allows checking abstract and deprecated flags
it makes sense to let the compiler optimize those checks into a single
pass. This is only possible if the functions themselves are inlined.

Additionally, any time we have the same TypeNode we would want to be able
to reuse that node rather than re-locate it.
2023-10-03 09:44:32 +01:00
Christian Hergert
5de7dd5a4b gobject: cache flags needed for g_type_create_instance()
Every call to g_type_create_instance() currently will incur a RWLock at
least once, but usually twice to test for both G_TYPE_FLAG_ABSTRACT and
G_TYPE_FLAG_DEPRECATED.

Additionally, each call to g_type_instance_free() also checks for these.
That results in a synchronization of GTypeInstance creation across all
threads as well as being a huge amount of overhead when creating instances
like GskRenderNode.

With this patch in place, the next two biggest issues are
g_type_class_ref() and g_type_test_flags() not getting inlined within
gtype.c in release builds. We can address that separately though.

Sysprof shows that the RWLock, with this patch in place, falls off the
profiles.
2023-10-03 09:44:32 +01:00
Philip Withnall
8adc39a870 Merge branch 'update-goption-annotations' into 'main'
Update GOptionContext annotations

See merge request GNOME/glib!3568
2023-10-03 08:43:54 +00:00
Philip Withnall
83eb8fc359 Merge branch 'wip/chergert/separate-gweakref-from-gweaknotify-gdata' into 'main'
gobject: Separate GWeakRef from GWeakNotify

See merge request GNOME/glib!3316
2023-10-03 08:43:37 +00:00
Luca Bacci
f23a31ee26 Use helper shared library for the constructor test 2023-10-03 10:43:34 +02:00
Philip Withnall
a9f2ffe788 Merge branch 'new_datetime_mods' into 'main'
Add support for case modifiers to DateTime

Closes #3115

See merge request GNOME/glib!3584
2023-10-03 08:43:03 +00:00
Rick Calixte
0b114b2687 Add support for case modifiers to DateTime 2023-10-03 08:43:03 +00:00
Philip Withnall
74d2586d7c Merge branch 'prefix_match_more_prominence' into 'main'
GDesktopAppInfo: prioritize match_type over match_category when searching apps

Closes #3082

See merge request GNOME/glib!3592
2023-10-03 08:40:14 +00:00
Luca Bacci
683991d836 Add test for module constructors, destructors and TLS callbacks 2023-10-03 10:33:42 +02:00