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)