Overview of changes in GLib 2.75.3, 2023-02-13 ============================================== * Drop the implementation of GSlice, and make the API use the system `malloc()` internally (#1079) (based on investigation work by multiple people) * Use a thread-spawning thread to keep thread scheduler settings consistent; fixes GThreadPool critical warnings due to failing to set scheduler settings in some situations (#2769, work by Sebastian Dröge and others) * GIR annotation improvements for multiple APIs (#2827, #2894, #2895, #2897, !3198, !3234, !3236, !3238, !3245, !3266, work by multiple people) * Optimise printing of nested maybes in `g_variant_print()` (#2862, work by Philip Withnall) * Use `tap` test protocol within GLib, and support TAP 13/14 (!3140, work by Marco Trevisan) * Fix a regression in glib-compile-schemas 2.75.2 causing schemas and override files to be sorted incorrectly (!3188, spotted by John Wudrick, work by Philip Withnall) * Support per-desktop overrides in `GSettingsAction` (!3193, work by Philip Withnall) * Various optimisations to `GString` (!3199, work by Matthias Clasen and Marco Trevisan) * Reduce allocations in message printing functions if there’s nothing to format (!3205, work by Marco Trevisan) * Add inline version of `g_strdup()`, allowing the compiler to do `NULL` folding and constant folding on `strlen()` calls (!3209, work by Marco Trevisan) * Add a `GPathBuf` API for building and manipulating file paths (!3216, work by Emmanuele Bassi) * Add `g_string_free_and_steal()` and use it to warn on unused results from `g_string_free (_, FALSE)` (!3219, !3226, work by Matthias Clasen and Sergey Bugaev) * Add `g_free_sized()` and `g_aligned_free_sized()` to mirror the upcoming `free_sized()` function in C23; use these if porting away from `g_slice_free()` (!3231, work by Philip Withnall) * Fix underspecified dependencies on generated headers in `meson.build`, which should reduce spurious build failures (!3260, work by Eli Schwartz) * Bugs fixed: - #1079 Investigate dropping or deprecating the GSlice allocator (Natanael Copa) - #2769 GThreadPool crashes with: Failed to set scheduler settings: Operation not permitted (Sebastian Dröge) - #2827 Callback parameters get wrong attributes in gir files - #2862 fuzz_variant_text: Timeout in fuzz_variant_text when printing nested maybes - #2876 g_find_program_for_path is public ABI but not declared in a public header (Philip Withnall) - #2877 glib/tests/array- test.c:1828:pointer_array_new_from_null_terminated_array_from_gstrv: 'g_ptr_array_index (gparray, 4)' should be NULL (Simon McVittie) - #2881 Invalid read of size 4 in get_matched_substring_number (Philip Withnall) - #2883 g_file_set_contents fails on mingw64 with "no error" if file size > INT_MAX (CCode) - #2890 g_string_append() macro evaluates arguments multiple times (Marco Trevisan (Treviño)) - #2891 Memory leak in "gio/win32/gwin32fsmonitorutils.c" (Philip Withnall) - #2892 Memory leak in "gio/gwin32mount.c" (Philip Withnall) - #2894 g_value_take_string: wrong ownership transfer info in GIR (Lukáš Tyrychtr) - #2895 g_io_channel_get_line_term: wrong GIR (Bart Jacobs) - #2897 g_time_zone_adjust_time: GIR says gint64 but it's gint64* (Bart Jacobs) - #2898 g_print replaces non-ascii characters with question mark - #2900 msys2-clang64: g_spawn_[a]sync() fails in clang builds when envp is not NULL - #2901 g_app_info_get_executable doesn't work well on latest Ubuntu with Firefox installed as snap - #2908 Crash when creating GtkTextView with G_DEBUG=gc-friendly (Marco Trevisan (Treviño)) - #2914 Should GPathBuf split on both directions of slashes on Windows? (Simon McVittie) - GNOME/gimp#9094 devel: None of the extensions and plugins load in Clang builds - !3140 meson: Use 'tap' test protocol and support TAP 13/14 - !3184 build: Don't overwrite build variables - !3185 Include gobject-visibility.h in glib-types.h - !3187 tests/desktop-app-info: fix stack-use-after-scope - !3188 glib-compile-schemas: Fix typo in comparison function - !3189 docs: Fix return type in cmpint - !3191 tests: Improve error message if setting max processes to 1 fails - !3192 garray: Avoid calling memcpy with no items - !3193 gsettings: Support per-desktop overrides in GSettingsAction - !3196 gio/tests/file.c:Fix expectations when running as root - !3198 Fix a couple of `closure` annotations - !3199 Some GString optimizations - !3203 GTask: Document issues - !3205 gmessages: Avoid strings duplication if there's nothing to format - !3206 tests: Add a test print to spawn-test on Windows - !3207 tests: Fix a minor leak in the GString tests - !3209 gstrfuncs: Add inline version of g_strdup() - !3216 Add GPathBuf - !3219 Add g_string_free_and_steal - !3221 TAP: some further cleanups - !3223 Add a few suppressions to glib.supp and fix a minor bug in gapplication test - !3224 gtestutils: Fix a potential NULL pointer dereference in g_test_log() - !3225 tests: Temporarily disable socket test due to a kernel bug - !3226 Make g_string_free (_, FALSE) warn on unused result - !3231 gmem: Add g_free_sized() and g_aligned_free_sized() - !3234 GMainContext: Use nullable context in docs (and in some missing code) - !3236 g_regex_escape_string: bad GIR: utf8[] -> utf8 - !3238 Fix GIR: gunichar -> gunichar[] - !3242 GAtomicArray: Ensure metadata does not misalign the payload - !3243 Allow using msort_r CHERI-enabled architectures - !3245 gio: converter: Forbid null out arguments - !3246 tests: Fix a few minor leaks in gdbus-example-peer - !3247 tests: Fix a minor leak in the cxx string append tests - !3248 timezone: Fix a compiler warning - !3249 gstring: Avoid warnings from inline functions - !3250 ci: Temporarily only run the FreeBSD 13 CI on a schedule - !3251 Revert "gtype: Use the system allocator on UNIX" and use g_free_sized instead - !3256 Remove n_preallocs field from InstanceData - !3258 Revert "ci: Temporarily only run the FreeBSD 13 CI on a schedule" - !3259 gmessages: use g_atomic_pointer to access handlers for g_print()/g_printerr() - !3260 fix underspecified dependencies on generated headers - !3262 Add a (temporary) assertion that sizeof(gsize) == sizeof(guintptr) - !3263 Revert "glib-init: Add more static assertions for gintptr, guintptr" - !3265 fileutils: Make some sample code detect symlinks as intended - !3266 Avoid some warnings from GObject-Introspection - !3268 po: Add missing header file to POTFILES.in * Translation updates: - Belarusian (Vasil Pupkin) - Galician (Fran Dieguez) - Georgian (Ekaterine Papava) - Hebrew (Yosef Or Boczko) - Indonesian (Kukuh Syafaat) - Portuguese (Hugo Carvalho) - Russian (Aleksandr Melman) - Turkish (Sabri Ünal, Emin Tufan Çetin) - Ukrainian (Yuri Chornoivan)