Overview of changes in GLib 2.70.3
==================================

* Several important fixes to FD handling in gspawn (#2503, #2506, #2580)

* Several important fixes to GDBus message and GVariant parsing of invalid data (#2557, #2572)

* Fix potential data loss due to missing fsync when saving files on btrfs (!2437)

* Bugs fixed:
 - #2503 gspawn.c may clobber target fds
 - #2506 gspawn.c fails to close child_err_report_fd if it is duped to avoid conflation with one of the target_fds
 - #2557 Arrays of zero-element tuples with non-zero length lead to infinite loops in g_dbus_message_new_from_blob
 - #2572 Check for GVariant recursion depth before recursing
 - #2580 gspawn doesn't set CLOEXEC if close_range fails unexpectedly
 - !2394 Backport !1968 “gspawn: Fix file descriptor conflation issues” to glib-2-70
 - !2415 Backport !2412 “paramspec: fix unref annotation” to glib-2-70
 - !2437 Backport !2425 “gfileutils: Remove outdated BTRFS fsync optimization from set_contents” to glib-2-70
 - !2444 Backport !2435 “gspawn: Report errors with closing file descriptors between fork/exec” to glib-2-70
 - !2455 Backport !2454 gdbusmessage and gvariant fixes to glib-2-70

* Translation updates:
 - Czech
 - Indonesian
 - Italian
 - Lithuanian
 - Polish
 - Portuguese
 - Romanian
 - Serbian
 - Slovenian
 - Spanish
 - Swedish
 - Turkish
 - Ukrainian


Overview of changes in GLib 2.70.2
==================================

* Fix use of the default log writer with journald namespaces (diagnosis by Ilya Basin) (#2530)

* Fix hang in `dbus-daemon` under `GTestDBus` when `G_MESSAGES_DEBUG=all` is set (work by Marco Trevisan) (#2537)

* Speed up `g_canonicalize_filename()` to avoid pathogenic cases with `..` (work by Sebastian Wilhelmi) (#2541)

* Fix URI for pcre subproject as it’s moved upstream (work by Albert Astals Cid) (!2324)

* Fix storing GSettings dictionaries on macOS (work by Maurice) (#2527)

* Speed up ‘remove dot segments’ algorithm in `GUri` to avoid pathogenic cases with `..` (work by Sebastian Wilhelmi) (#2526)

* Fix infinite loops in D-Bus message parsing for truncated inputs (work by Sebastian Wilhelmi) (#2528)

* Improve correctness of version information returned by `g_get_os_info()` for Windows 10/Server 2019+ (work by Chun-wei Fan) (#2443)

* Bugs fixed:
 - #2400 Use-after-free in invoke_set_property_in_idle_cb()
 - #2426 GSettings delayed apply generates runtime warnings
 - #2528 g_dbus_message_new_from_blob goes into infinite loop for certain inputs
 - #2530 g_log_writer_is_journald fails if a Journal Namespace is used
 - #2537 GTestDBus dbus daemon causes child process to hang when using verbose output
 - #2541 g_canonicalize_filename should work in linear time complexity
 - !2312 Backport !2265 “gdbusconnection: Fix race between method calls and object unregistration” to glib-2-70
 - !2313 Backport !2260 “GWin32AppInfo: Remove assertion on the opened registry key” to glib-2-70
 - !2314 Backport !2308 “gthread-win32: Remove an unnecessary volatile qualifier” to glib-2-70
 - !2316 Backport !2309 “Rename libpcre.wrap to pcre.wrap” to glib-2-70
 - !2320 Backport !2161 “gdelayedsettingsbackend: Fix applying after calling g_settings_reset()” to glib-2-70
 - !2335 Backport !2324 “Fix link to pcre-8.37.tar.bz2” to glib-2-70
 - !2337 Backport !2325 “Fix GSettings dict error macOS” to glib-2-70
 - !2340 Backport !2338 “gmessages: Support namespaced journals” to glib-2-70
 - !2344 Backport !2327 “guri: Improve performance of remove_dot_segments() algorithm” to glib-2-70
 - !2356 Backport !2355 “gdbusmessage: Add more bounds checking when parsing D-Bus messages” to glib-2-70
 - !2359 gutils.c: Improve g_get_os_info() for Windows 10/Server 2019+
 - !2361 Backport !2354 “gtestdbus: Print the dbus address on a specific FD intead of stdout” to glib-2-70
 - !2363 Backport !2360 “meson: specify when commands need to succeed in run_command” to glib-2-70
 - !2366 Backport !2364 “tests: Allow `objcopy --help` to fail, because it fails on FreeBSD” to glib-2-70
 - !2375 Backport !2374 “gfileutils: Improve performance of g_canonicalize_filename()” to glib-2-70
 - !2383 Backport !2382 “gfileutils: Correctly reset start value when canonicalising paths” to glib-2-70

* Translation updates:
 - Croatian
 - Italian
 - Occitan (post 1500)
 - Polish
 - Portuguese
 - Portuguese (Brazil)
 - Russian
 - Swedish
 - Ukrainian


Overview of changes in GLib 2.70.1
==================================

* Fix network changes not being signalled from NetworkManager (work by
  Julian Andres Klode) (#2505)

* Fix build when building with --fatal-meson-warnings (work by Eli Schwartz) (!2304)

* Bugs fixed:
 - #2505 g_network_monitor_nm never updates on connection change (listens for signal on wrong dbus interface)
 - !2245 gdesktopappinfo: Do not call xterm when it does not exist, inform the caller the launch failed
 - !2253 Backport !2251 “GString: Bump minimum size” to glib-2-70
 - !2256 Backport !2254 “Small optimization for g_object_set” to glib-2-70
 - !2259 Backport !2257 “Fix documentation for g_dbus_object_manager_get_object().” to glib-2-70
 - !2262 Backport !2244 “gutils: Avoid segfault in g_get_user_database_entry” to glib-2-70
 - !2271 Backport !2266 “fix uninitial variable” to glib-2-70
 - !2276 Backport !2274 “Do not try to access errno after calling getpwnam_r.” to glib-2-70
 - !2300 Backport !2285 “fix issues found by svace static code analyzer” to glib-2-70
 - !2301 Backport !2293 “glib-private: Fix MSVC build with AddressSanitizer” to glib-2-70
 - !2302 Backport !2291 “gnetworkmonitornm: Stop using removed PropertiesChanged signal” to glib-2-70
 - !2304 meson: fix warnings for extract_all_objects function


Overview of changes in GLib 2.70.0
==================================

* Bugs fixed:
 - !2248 ci: Replace FreeBSD 11 with FreeBSD 13

* Translation updates:
 - Croatian
 - Danish
 - English (United Kingdom)
 - French
 - German
 - Hungarian
 - Polish
 - Swedish
 - Turkish


Overview of changes in GLib 2.69.3
==================================

* Bugs fixed:
 - #2425 g_settings_schema_key_range_check() misbehaves for int versus bool
 - #2472 Compiling anything with GCC <4.6 spews deprecation warnings
 - #2477 `g_invoke_closure` bindings API break.
 - #2481 GPowerProfileMonitorPortal does not notice initial power-saver-enabled status
 - !2219 doc: Explicitly said, that no null term. is needed
 - !2238 ci: Use C.UTF-8 locale on FreeBSD 12
 - !2240 gio: Fix conditions in memory-monitor test

* Translation updates:
 - Basque
 - Catalan
 - Chinese (China)
 - Galician
 - Kazakh
 - Korean
 - Lithuanian
 - Romanian


Overview of changes in GLib 2.69.2
==================================

* The `DBUS_SESSION_BUS_ADDRESS` environment variable is once more not used if
  the process is `AT_SECURE` (setuid/setgid/setcap); this change was previously
  applied and then reverted because it broke gnome-keyring (#2316)

* Add `g_test_fail_printf()`, `g_test_skip_printf()`,
  `g_test_incomplete_printf()` helper functions for printing messages when tests
  end prematurely (work by Simon McVittie) (!2215)

* Add portal implementation of `GPowerProfileMonitor` (work by
  Bastien Nocera) (!2222)

* Bugs fixed:
 - #2316 Re-harden DBUS_SESSION_BUS_ADDRESS for AT_SECURE processes in GLib 2.70
 - #2343 Document explicitly refcount mgmt of source-object during GAsyncReadyCallbacks
 - #2454 Read past the end of buffer in g_win32_package_parser_enum_packages
 - #2456 Frequent test failure on FreeBSD: glib/tests/thread-pool.c:197:test_thread_pool_full: 'free_func_called' should be TRUE
 - !2157 tests: Add missing wakeup calls to gdbus-names test
 - !2165 docs: Mention the stable/unstable support version in README.md
 - !2211 Improve documentation of various TLS stuff
 - !2215 gtestutils: Add more convenience functions
 - !2216 tests: Fix error handling when testing gtestutils
 - !2222 gio: Add portal version of GPowerProfileMonitor
 - !2224 Docs: Mention that G_VA_COPY() must be followed by `va_end()`
 - !2225 build: Fix implicit declaration of function errors
 - !2226 Annotate the GString constructors

* Translation updates:
 - Czech
 - Hebrew
 - Slovenian
 - Spanish
 - Swedish


Overview of changes in GLib 2.69.1
==================================

* Support categories in desktop notifications (`GNotification`)
  (work by Guido Günther) (#2446)

* Add `GPowerProfileMonitor` for monitoring when to use less power (due to being
  on battery power, electricity being expensive or high-carbon, etc.)
  (work by Patrick Griffis, Bastien Nocera) (#2444)

* Allow static names to be set for `GSource`s to avoid unnecessary string copies
  (work by Matthias Clasen) (!2196)

* Bugs fixed:
 - #203 API: need g_module_open() variant with GError
 - #2058 win32: GPrivate can leak some objects
 - #2321 Add a GTypeFlag for final types
 - #2429 safe_fdwalk/safe_closefrom for Solaris 11.3/11.4
 - #2439 gio trash doesn't recognize existing trash directory in non-fs-root mount
 - #2446 Support `categories` for notifications
 - #2452 g_string_replace() loops 2**32 times when replacing empty string
 - !2177 gio/tests/g-file-info: don't assume million-in-one events don't happen
 - !2178 Clarify GValue documentation
 - !2179 Update GValue doc: How to use GBoxed with GValue
 - !2180 correctly use 3 parameters for close_range
 - !2181 gclosure: Fix the invoke() return_value annotation
 - !2182 glocalfileinfo: Fix usec/nsec confusion with filetimes on Windows
 - !2184 gspawn: Use CLOSE_RANGE_CLOEXEC if available
 - !2188 g_boxed_type_register_static, G_DEFINE_BOXED_TYPE: added correlating information
 - !2192 Fix more warnings
 - !2193 glib.supp: Expand match kinds for g_get_language_names() suppressions
 - !2194 Add GPowerProfileMonitor
 - !2195 Fix some test suite memory leaks
 - !2196 mainloop: Add g_source_set_static_name
 - !2197 GResource compiler: Prefix static [con|de]strutors with c_name
 - !2198 Port internal uses to use g_source_set_static_name()
 - !2200 Fix doc stanzas for GDataInputStream properties
 - !2201 Fix a Unicode typo
 - !2202 Document the stance on ID-based mainloop APIs
 - !2204 tests: Add a test for Unicode normalization
 - !2205 GWin32RegistryKey / GWin32AppInfo registry watch fixes
 - !2206 Adapt documentation to gi-docgen
 - !2210 GWin32AppInfo: Fix missing initialization

* Translation updates:
 - Indonesian
 - Portuguese
 - Portuguese (Brazil)
 - Russian
 - Ukrainian


Overview of changes in GLib 2.69.0
==================================

* Fix a crash in `GKeyFile` when parsing a file which contains translations
  using a `GKeyFile` instance which has loaded another file previously (#2361)

* Pin GIO DLL in memory on Windows (!2016)

* Fix building third-party projects against GLib on CentOS 7 (work by
  Ignacio Casal Quinteiro) (#2387)

* Add `g_thread_pool_new_full()` API to allow queued `GThreadPool` data to be
  freed if the pool is freed early (work by Nitin Wartkar) (#121)

* Ensure `dlerror()` is used with locking as it’s not thread-safe in some libc
  implementations (#399)

* Add `g_dbus_is_error_name()` and `g_dbus_is_interface_name()` convenience
  functions (work by Nitin Wartkar) (#402)

* Drop internal libpcre copy in favour of a subproject from wrapdb (#962, #642)

* Add `g_prefix_error_literal()` helper function (work by Emmanuel Fleury,
  building on work by Dan Williams) (#663)

* Add `g_bytes_get_region()` to get data from a `GBytes` with range checks
  (work by Nitin Wartkar, building on work by Allison Karlitskaya) (#1098)

* Add `g_object_take_ref()` to sink a floating ref (work by Nitin Wartkar,
  building on work by Allison Karlitskaya) (#1112)

* Optimise grefcount atomic operations (work by Nishal Kulkarni) (#1583)

* Fix resolving child GSettings schemas from the parent’s schema source (work
  by Christian Persch) (#1884)

* Fix `g_date_time_format()` return value encoding if `LC_TIME` is not a UTF-8
  locale but other locale settings are (work by Frederic Martinsons) (#2055)

* Set app name in freedesktop.org notifications with `GNotification` (work
  by André Apitzsch) (#2069)

* Significantly improve retrieval of mount data on Windows (work by LRN based
  on initial analysis by Jehan Pagès) (#2096)

* Add `g_file_info_get_(access|creation)_date_time()` accessors (work
  by Abanoub Ghadban) (#2281)

* Always apply the remove_dot_segments algorithm to URIs in `g_uri_parse()`;
  previously it was only applied to relative URIs (work
  by Carlos Garcia Campos) (#2342)

* Rename git `master` branch to `main` (#2348)

* Various macro and version check cleanup (work by Gaël Bonithon,
  Robin Verdenal-Tallieux, Nishal Kulkarni) (#2376, #2388, #2389)

* Add a `GTlsConnectionClass.get_negotiated_protocol` vfunc so that
  `g_tls_connection_get_negotiated_protocol()` can be made thread-safe
  (work by Michael Catanzaro) (#2393)

* Improve guess about whether a Windows process is a console process
  (work by Princeton Ferro with input from LRN) (!1662)

* Add `g_steal_fd()` function (work by Simon McVittie) (!1966)

* Add `g_spawn_check_wait_status()` and distinguish more carefully between
  wait status and exit status in the `GSpawn` API (work by Simon McVittie) (!1967)

* Document GLib’s security policy; see
  https://gitlab.gnome.org/GNOME/glib/-/blob/main/SECURITY.md (!1985)

* Add `g_tree_remove_all()` (work by Lighto-Ku) (!1986)

* Simplify exception handling on Windows to eliminate risk of it failing due
  to prior heap corruption (work by LRN) (!2031)

* Fix handling EOF when reading from SOCKS5 proxy stream (work
  by Benjamin Berg) (!2032)

* Unset the registered state of a `GApplication` after it has shut down (work
  by Marco Trevisan) (!2056)

* Support `GPattern` as a boxed type (work by Marco Trevisan) (!2066)

* Add `g_tls_connection_get_protocol_version()` and
  `g_tls_connection_get_ciphersuite_name()` to get TLS connection information
  (work by Michael Catanzaro) (!2077)

* Make TLS private key properties readable in `GTlsCertificate` (work
  by Michael Catanzaro) (!2087)

* Fix detection of static libintl when building on macOS (work
  by Jonas Hahnfeld) (!2109)

* Add `g_strv_builder_addv()` and `g_strv_builder_add_many()` to the
  `GStrvBuilder` API (work by Alexandros Theodotou) (!2112)

* Add `not-valid-before`, `not-valid-after`, `subject-name`, `issuer-name`,
  `dns-names`, `ip-addresses` properties to `GTlsCertificate`
  (work by Ross Wollman) (!2113, !2142)

* Add PKCS#11 flags to `GTlsPasswordFlags` (work by Patrick Griffis) (!2126)

* Bugs fixed:
 - #121 GThreadPool and the ability to free data waiting to be handled
 - #229 g_match_info_fetch_named not return empty string as expected
 - #310 ref doc doesn't talk about "helper getters" optimization in g_file_info.c
 - #399 dlerror() not thread-safe in all libc, making gmodule-dl.c's fetch_dlerror fail sometimes
 - #402 please consider: #define g_dbus_is_error_name(x) g_dbus_is_interface_name (x)
 - #626 Add documentation example for GArray and g_array_set_clear_func()
 - #642 update to pcre 8.35+
 - #663 [patch] add g_prefix_error_literal()
 - #793 Potentially confusing error message when object doesn't exist
 - #817 gobject: Allow passing %NULL for @data in g_object_remove_toggle_ref
 - #962 drop embedded pcre copy
 - #1036 gdbusproxy stops tracking if dbus service restarts
 - #1098 GBytes: add range-checked pointer getter
 - #1112 GObject: add g_object_take_ref()
 - #1583 Optimise gatomicrefcount operations
 - #1864 Somewhat misleading documentation of GSourceFuncs
 - #1884 `g_settings_get_child` not compatible with `g_settings_schema_source_new_from_directory`
 - #2011 Add additional unit tests for D-Bus name watching
 - #2055 g_date_time_format() does not return UTF-8 if LC_TIME is not UTF8 but other locale settings are UTF-8
 - #2069 FreedesktopNotification fails to set app_name
 - #2096 SHGetFileInfoW() is not reliable (time-wise)
 - #2281 Add g_file_info_get_(access|creation)_date_time()
 - #2300 Crash on Windows MSVC build around gio
 - #2311 testfilemonitor test leaks ip_watched_file_t struct
 - #2340 GIO tests fail to build with clang-cl
 - #2342 g_uri_parse doesn't apply the remove_dot_segments algorithm to the path
 - #2348 Investigate renaming master git branch to main
 - #2352 RUN_FIRST | RUN_CLEANUP signals with a default handler ignore return values from user handlers
 - #2359 GLib 2.68.0: gio-querymodules segfaults on Windows
 - #2361 g_key_file_load_from_file segfaults on "Key[*]="like lines
 - #2363 g_newa() doesn’t check for multiplication overflow
 - #2368 g_task_run_in_thread () limits are not clear
 - #2369 glocalfile: Add native exfat magic number to  filesystem list
 - #2376 GLIB_VERSION_MAX_ALLOWED < 2.60 does not warn when using G_GNUC_FALLTHROUGH
 - #2387 json-glib does not build with glib 2.68.1
 - #2388 Pixman compilation error due to glib
 - #2389 Use G_GNUC_CHECK_VERSION to check the GNUC version
 - #2393 g_tls_connection_get_negotiated_protocol() is not threadsafe
 - #2397 Slow to list device in windows
 - #2399 Change spelling of ‘serialise’ to ‘serialize’ in documentation
 - #2405 Mention that GNotification requires an installed .desktop file to work
 - #2409 Project crashes when executing g_application_mark_busy
 - #2414 Devhelp: Glib Reference Manual/Glib Overview/Running Glib Applications formatting issue.
 - #2416 certificate: g_tls_certificate_new_from_pem invalid read on non null terminated data
 - #2417 GFile: `g_file_replace_contents()` reports `G_IO_ERROR_WRONG_ETAG` when saving from a symlink
 - #2418 gatomic: __atomic functions are called for CV-qualified output variables
 - #2423 resources.c:656:test_resource_binary_linked: 'found' should be TRUE
 - !1514 gbookmarkfile: Don't crash if we're not visited
 - !1662 gspawn-win32: improve guess whether process is console process
 - !1812 docs: Expand documentation about D-Bus GUIDs
 - !1957 Fix more warnings
 - !1965 gversionmacros: Add version macros for GLib 2.70
 - !1966 Add g_steal_fd() to API
 - !1967 Distinguish more clearly between wait status and exit status
 - !1969 glib_typeof: Move definition to its own header
 - !1985 docs: Add a policy for handling security issues
 - !1986 make g_tree_remove_all public
 - !1996 Include glibconfig.h to get the G_OS_UNIX token
 - !1998 gpollableinputstream: Add missing annotation
 - !1999 goption.c: Simplfy parse_short_option()
 - !2004 Some improvements to clang-cl builds
 - !2005 introspection: Remove 'caller-allocates' from POD types
 - !2006 fuzzing: Add fuzz tests for functions which parse paths
 - !2008 tests: Deactivate tls-bindings test suite for windows
 - !2011 docs: Fix example program link
 - !2012 docs: Replace git.gnome.org with gitlab.gnome.org urls
 - !2013 fuzzing: Fix assertion failure in fuzz_paths.c
 - !2016 GIO W32: Pin gio DLL
 - !2023 gtlspassword: Fix g-i annotation of return for g_tls_password_get_value
 - !2025 [th/gdbus-cleanup] two minor cleanup patches for gdbusconnection.c
 - !2026 Split g_test_log() messages that contain multiple lines
 - !2027 Fix a handful of minor leaks found by Coverity
 - !2030 Fix more warnings
 - !2031 Re-simplify exception handling on Windows
 - !2032 gsocks5proxy: Handle EOF when reading from a stream
 - !2033 Fix annotation of count arguments
 - !2036 gmacros.h: use G_GNUC_CHECK_VERSION
 - !2038 Fix more warnings
 - !2039 Implement G_ANALYZER_NORETURN for Coverity
 - !2040 Fix more warnings
 - !2041 refcount: Clarify when the ref count ends up undefined
 - !2042 grefcount: Clarify that the initial reference count is 1
 - !2043 gmacros.h: use g_macro__has_attribute() where possible
 - !2046 gerror: Clarify docs around message requirements
 - !2047 Fix more warnings
 - !2048 Fix more warnings
 - !2049 Fix typo in g_socket_listener_accept_async()'s comment
 - !2050 gdbus: document completion after idle action for g_dbus_connection_signal_unsubscribe()
 - !2051 Add nullable annotations in GUnixMountEntry
 - !2052 g_string_replace(): Fix documentation of 'limit' parameter
 - !2054 docs: Fix formatting of code block
 - !2055 Improve handling of FILENAME_MAX
 - !2056 application: Unset the registered state after shutting down
 - !2063 Fix more warnings
 - !2066 gpattern: Register as Boxed type and support introspection for it
 - !2067 gmacros: missing check if __STDC_VERSION__ is defined
 - !2069 gdbus-tool: Actually use argv[0] basename as program name
 - !2071 gstring: Cleanup documentation of g_string_replace
 - !2074 Fix more warnings
 - !2075 gdtlsconnection: Fix a check for a vfunc being implemented
 - !2077 tls: add functions to get protocol version and ciphersuite name
 - !2078 gthreadedresolver: don't ignore flags in lookup_by_name_with_flags
 - !2080 guuid: fix shift operation to parse hex string in uuid_parse_string()
 - !2081 Fix more warnings
 - !2085 gcredentials.h: Fix comment typo
 - !2087 gtlscertificate: make private key properties readable
 - !2088 Fix more warnings
 - !2090 docs: Standardize spelling of serializ*
 - !2091 Fix more warnings (clang)
 - !2098 grefcount: Optimise g_atomic_ref_count_dec
 - !2099 gmacros.h: G_NORETURN: remove useless checks
 - !2100 tests: Add missing return value check in string test
 - !2101 Fix more warnings
 - !2104 tests: Drop use of g_test_bug_base()
 - !2105 tests: Use a temporary file in the bookmarkfile tests
 - !2106 Fix more warnings
 - !2108 glib spawn-singlethread test only if F_DUPFD_CLOEXEC is defined
 - !2109 meson: Fix detection of static libintl on macOS
 - !2112 gstrvbuilder: add addv and add_many to the API
 - !2113 tls: expose cert details on GTlsCertificate
 - !2119 Fix more warnings
 - !2120 gdbusobjectmanagerclient: Call GetManagedObjects async
 - !2123 gdbus: Add various missing (nullable) or (not nullable) annotations
 - !2126 gtlspassword: Add flags signifying PIN type for PKCS#11
 - !2127 gutils: ensure g_find_program_in_path() return an absolute path
 - !2130 Revert "tests: Deactivate tls-bindings test suite for windows"
 - !2139 gdbus, win32: Fix accidental dllexport in static builds
 - !2142 tls: expose SAN details on GTlsCertificate
 - !2143 compiling.xml: Don't recommend backticks
 - !2144 pcre: Drop internal libpcre copy
 - !2145 gunixmounts: Document NULL return value for g_unix_mount_for()
 - !2152 tests: A few small improvements to GBytes tests
 - !2153 docs: Fix annotations for optional arguments
 - !2155 glocalfilemonitor: Avoid a deadlock on finalization
 - !2162 testgdate: fix -Wmisleading-indentation warning
 - !2166 gtlscertificate: Add more annotations to new properties
 - !2167 g_value_set_string description: clarified (unified), that v_string is a copy.
 - !2173 gasyncqueue: Add missing (nullable) annotation to free function
 - !2174 data-to-c.py: generate new-line at the end of the file

* Translation updates:
 - Chinese (China)
 - English (United Kingdom)
 - Hebrew
 - Nepali
 - Occitan (post 1500)
 - Serbian


Overview of changes in GLib 2.68.0
==================================

* Bugs fixed:
 - !1987 build: Drop gconstructor_as_data_h usage from glib-compile-schemas
 - !1989 glib.supp: Generalize some suppressions
 - !1992 gbytesicon: Fix error in g_bytes_icon_new() documentation
 - !1994 glocalfileoutputstream: Tidy up error handling
 - !1995 tests: Fix copy/paste error in queue test

* Translation updates:
 - Czech
 - Finnish
 - Italian
 - Korean
 - Lithuanian
 - Polish
 - Romanian
 - Slovenian
 - Turkish


Overview of changes in GLib 2.67.6
==================================

* Fix a security issue when using `g_file_replace()` with
  `G_FILE_CREATE_REPLACE_DESTINATION` (#2325)

* Disallow operations on the empty path with `g_file_new_from_path()` (#2328)

* Various fixes for GLib when building with clang-cl on Windows (work by
  Aleksandr Mezin) (#2341, #2344)

* Bugs fixed:
 - #2325 file-roller symlink attack
 - #2327 Teach glib-mkenums about GLIB_AVAILABLE_ENUMERATOR_IN_2_68, and start using it
 - #2328 g_file_new_for_path("") yields CWD, which seems wrong
 - #2341 glib-genmarshal output is sometimes empty because output file is not closed
 - #2344 c_std=c11: gbitlock.c: ‘asm’ undeclared
 - !1962 Validate D-Bus machine ID after loading
 - !1976 Use the right permissions for directory watching on Win32
 - !1977 gio/tests/{meson.build,pollable.c}: Determine libutil SONAME at build time
 - !1980 glib.supp: Add another system thread suppression

* Translation updates:
 - Basque
 - Catalan
 - Czech
 - French
 - Galician
 - German
 - Hungarian
 - Indonesian
 - Korean
 - Latvian
 - Portuguese
 - Portuguese (Brazil)
 - Serbian
 - Spanish
 - Swedish
 - Ukrainian


Overview of changes in GLib 2.67.5
==================================

* Fix more issues with `glib_typeof` macro from 2.67.3–2.67.4 (work by
  Iain Lane, Simon McVittie) (#2331, !1975)

* Fix regression with some FD mappings passed to `g_subprocess_launcher_spawnv()`
  caused by changes for #2097 in GLib 2.67.4 (work by Olivier Fourdan,
  Philip Withnall) (#2332)

* Fix detection of `str[n]casecmp()` when building with `clang-cl` (work by
  Aleksandr Mezin) (#2337)

* Use zlib from subproject if configured with `wrap_mode=forcefallback` (work by
  Seungha Yang) (!1959)

* Bump Visual Studio compilation requirement to VS 2012, and Windows 8 SDK for
  GLib 2.67.x onwards (work by Chun-wei Fan) (!1970)

* Bugs fixed:
 - #832 Some tweaks re: GRWLock
 - #2331 glib 2.67.3: <glib.h> can no longer be included in extern "C" blocks
 - #2332 Glib 2.67.4 causes gnome-shell to exit when spawning Xwayland on demand
 - #2333 Missing relation between g_file_info_get_size() and G_FILE_ATTRIBUTE_STANDARD_SIZE attribute in documentation
 - #2337 Linking fails when building with clang-cl because of str[n]casecmp
 - !1936 tests: Fix leak of dlopened module in pollable test
 - !1954 Change SkipAsyncData fields to be gsize (and not gssize)
 - !1956 The ETag returned by various GFile functions is nullable
 - !1959 meson: Use subproject zlib if "wrap_mode=forcefallback" was specified
 - !1961 gkeyfilesettingsbackend: check for errors when creating file monitors
 - !1970 README.win32.md: Mention about Window 8+ SDK requirement
 - !1971 gio/tests/pollable.c: Fix build on non-Linux UNIX
 - !1975 gatomic.h: Make `glib_typeof` API break opt in.

* Translation updates:
 - Basque
 - Danish
 - English (United Kingdom)
 - Galician
 - German
 - Indonesian
 - Lithuanian
 - Portuguese
 - Portuguese (Brazil)
 - Slovenian


Overview of changes in GLib 2.67.4
==================================

* Add a `g_string_replace()` function (work by Joshua Lee) (#225)

* Add `G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER` flag to simplify
  the common case for writing a D-Bus authentication observer, allowing most
  uses of `GDBusAuthObserver` to be dropped (#1804)

* Add a new `g_spawn_with_pipes_and_fds()` variant which supports renumbering
  FDs (#2097)

* Add new g_memdup2() API to replace g_memdup(), which is vulnerable to a
  silent integer truncation and heap overflow problem if not used carefully
  (discovered by Kevin Backhouse, work by Philip Withnall) (#2319)

* Fix various regressions caused by rushed security fixes in 2.66.6 (work by
  Simon McVittie and Jan Alexander Steffens) (!1932, !1941, #2323)

* Fix a silent integer truncation when calling g_byte_array_new_take() for
  byte arrays bigger than G_MAXUINT (work by Krzesimir Nowak) (!1942)

* Fix `g_utf8_strdown()` to fix some issues in Turkish
  (work by Kjell Ahlstedt) (!1930)

* Bugs fixed:
 - #225 GString doesn't have a g_string_replace() function
 - #587 g_input_stream_skip() out-of-bounds behavior is inconsistent between implementations
 - #1804 Add G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER flag
 - #2097 GSubprocessLauncher with FD assignment can clash with g_spawn_async internal pipe
 - #2315 httpproxy: Need overflow protection when reading response during connection establishment
 - #2319 CVE-2021-27219 (GHSL-2021-045): integer overflow in g_bytes_new/g_memdup
 - #2322 g_test_dbus: double output when piping
 - #2323 [GLIB 2.66.6] g_io_channel_set_line_term() stopped working with null terminated strings and length -1
 - !1917 Adding a missing test on integer overflow within g_http_proxy_connect()
 - !1918 Fix more warnings
 - !1923 Add support for Tilix and Konsole
 - !1930 guniprop: Fix g_utf8_strdown() for Turkish locale
 - !1932 gtlspassword: Fix inverted assertion
 - !1934 gdbus: Reject attempts to set future connection or server flags
 - !1938 Fix more warnings
 - !1939 ci: Temporarily disable macOS CI job as runner is offline
 - !1940 Fix more warnings
 - !1941 gkeyfilesettingsbackend: Fix basename handling when group is unset
 - !1942 CVE-2021-27218: gbytearray: Do not accept too large byte arrays
 - !1947 Revert "Merge branch 'wip/pwithnall/macos-ci-disable' into 'master'"
 - !1948 tests: Use a more realistic language code than sv_SV
 - !1949 gatomic: Make fallback g_atomic_pointer_get type-safe
 - !1951 Add a test for parsing 0 as double
 - !1955 tests: Add missing NULL terminator to spawn-singlethread test

* Translation updates:
 - Catalan
 - Galician
 - Hungarian
 - Portuguese
 - Romanian
 - Slovenian
 - Spanish
 - Swedish
 - Turkish
 - Ukrainian


Overview of changes in GLib 2.67.3
==================================

* Add new `g_memdup2()` API to replace `g_memdup()`, which is vulnerable to a
  silent integer truncation and heap overflow problem if not used carefully
  (discovered by Kevin Backhouse, work by Philip Withnall) (#2319)

* Add new `g_dbus_object_path_escape()` and `g_dbus_object_path_unescape()` APIs
  to provide one way of escaping arbitrary bytestrings for use in D-Bus object
  paths (work by Lars Karlitski and Frederic Martinsons) (#968)

* Use `bash-completion.pc` (if available) to provide the path to install
  completion files into (work by Frederic Martinsons) (#1054)

* Fix support for public/private trigraphs in `glib-mkenums` (work by Matthias Klumpp) (!1870)

* Add `glib_debug` configure option to allow disabling debug infrastructure in
  builds with debug symbols enabled (work by Ole André Vadla Ravnås) (!1889)

* Fix a regression where `PATH` would always be searched when using `g_spawn()`,
  even when it wasn’t supposed to (work by Simon McVittie and Thomas Haller) (!1902)

* Override `gio-querymodules` in Meson when used as a submodule (work by Xavier Claessens) (!1909)

* Bugs fixed:
 - #344 gdbus(1) command-line completion issues
 - #968 gdbus: add g_dbus_object_path_{un,}escape
 - #1054 Use pkg-config to get path for bash-completion file installation
 - #1180 GUnixInputStream and GUnixOutputStream don't consider TTYs pollable
 - #2011 Add additional unit tests for D-Bus name watching
 - #2226 clang++ compilation fails on clusterfuzz
 - #2292 Cannot find a common ancestor when running CI style check jobs
 - #2299 GObject introspection annotation of g_closure_new_object() is wrong
 - #2305 GIO security hardening causing gnome-keyring to regress when session bus is provided by dbus-launch (dbus-x11)
 - #2314 gdatetime: math library link issue
 - #2319 GHSL-2021-045: integer overflow in g_bytes_new/g_memdup
 - !610 Various memory leak cleanups to GSettings tests
 - !1804 Add more GIR annotations to gparam.c and gsignal.c
 - !1823 Fix more warnings
 - !1843 gfile: Add Linux kernel headers compatibility kludge
 - !1847 Port to QNX
 - !1853 ginetaddress: Handle systems without IPv6 support
 - !1859 docs: update g_action_group_activate_action() remote activation semantics
 - !1860 glocalfile: Fix an uninitialized variable
 - !1865 tests: Add more debug information to gdbus-connection-slow
 - !1868 gdesktopappinfo: Fix validation of XDG_CURRENT_DESKTOP
 - !1870 mkenums: Support public/private trigraph again
 - !1873 Fix possible integer overflow of g_socket_send_message()
 - !1876 Fixing g_socket_send_message() documentation to make it clearer
 - !1877 Fix more warnings
 - !1878 Another fix on g_socket_send_message()
 - !1879 Fix more warnings
 - !1880 GError documentation tweaks
 - !1881 docs: Move ‘Notes’ section from README to NEWS
 - !1883 gutils: Document caching of XDG directory variables
 - !1884 gthread-win32: Use SetThreadDescription Win32 API for setting thread name
 - !1887 ci: Fix msys-mingw32 CI builds due to package rename
 - !1888 docs: Add documentation for GLIB_VERSION_CUR_STABLE and PREV_STABLE
 - !1889 build: Add glib_debug option
 - !1890 gtype: Improve formatting of GType documentation
 - !1891 Fix more warnings
 - !1893 gwin32appinfo: Fix printf length sub-specifier
 - !1894 gsocket: Fix SO_NOSIGPIPE regression on Darwin
 - !1898 gtestutils: Add g_test_get_path() API
 - !1899 m4macros: replace obsolete macros AC_TRY_RUN and AC_TRY_LINK in glib-2.0.m4
 - !1900 [th/gsignal-cleanup] minor changes to GSignal related code
 - !1901 Check if the remote already exists before adding it.
 - !1902 spawn: Don't set a search path if we don't want to search PATH
 - !1903 m4macros: Increment serial number of glib-2.0.m4
 - !1905 Start to ignore known leaks under AddressSanitizer
 - !1906 gdbus-serialization: Don't leak string containing first serialization
 - !1908 Fix straightforward memory leaks in tests
 - !1909 Meson: override gio-querymodules program
 - !1910 gio: Add explicit virtual g-i annotations for undiscovered invoker relationship
 - !1911 Fix more warnings
 - !1915 Mark g_key_file_get_comment() key parameter as nullable
 - !1919 atomic: Fix type check of g_atomic_pointer_compare_and_exchange()
 - !1921 guri: Mark g_uri_get_host as nullable
 - !1925 gapplication: Fix a memory leak

* Translation updates:
 - Czech
 - Friulian
 - Galician
 - Hungarian
 - Portuguese
 - Portuguese (Brazil)
 - Romanian
 - Spanish
 - Ukrainian


Overview of changes in GLib 2.67.2
==================================

* Add `gio launch` command to execute programs (work by Frederic Martinsons) (#54)

* Fix unused parameter warnings in code generated by `gdbus-codegen` (work by Frederic Martinsons) (#1105)

* Officially deprecate `to-pixdata` option for `glib-compile-resources`, in favour
  of simply embedding more modern image formats in linked-in `GResource` files (#1281)

* Support querying and running UWP applications on Windows (work by LRN) (#1991)

* Support `gio trash --restore` and `gio trash --list` commands (work by Frederic Martinsons) (#2098)

* No longer read environment variables for GIO module locations when running as setuid (#2168)

* More progress on fixing compiler warnings (work by Emmanuel Fleury) (!1773 and others)

* `GKeyFile` performance improvements (work by Timm Bäder) (!1829, !1832)

* Improve UDP socket behaviour on Windows (work by Marco Mastropaolo and Ole André Vadla Ravnås) (!1827, !1844)

* Add `-Dtests` meson configure option for disabling tests entirely (work by Ole André Vadla Ravnås) (!1850)

* Bugs fixed:
 - #54 Add `gio launch` command to execute .desktop files
 - #513 GSignal: Impossible to have return values in signals which are G_SIGNAL_RUN_FIRST only
 - #514 GSignal: Only limited usage of accumulator function possible
 - #1105 gdbus-codegen: fix some unused parameter warnings
 - #1188 Crash in gapplication.c:1014 when reading error message if dbus_register returns false without setting error
 - #1281 Update glib-compile-resources and GResource docs to deprecate/remove to-pixdata in stable/master resp.
 - #1283 gvfs-trash error message when unable to create trash directory is unhelpful
 - #1568 GObject tutorial does not mention floating references
 - #1991 W32: Glib cannot run UWP applications
 - #2098 gio trash: restore trashed files to their original location
 - #2168 giomodule: Loads GIO modules even if setuid, etc.
 - #2264 GPtrArray might call qsort() with NULL data
 - #2265 2.67.1 regression: assertion failure starting gnome-terminal
 - #2275 gio/completion/gio: Some variables are not localized
 - #2279 g_source_is_destroyed example uses deprecated GDK API
 - !1304 Extended error
 - !1773 Fix more warnings
 - !1783 gtlsdatabase: remove duplicate precondition check
 - !1784 fuzzing: Add more fuzzing tests for various string parsing functions
 - !1785 glocalfile: Add an assertion to help static analysis
 - !1787 Debuggability improvements in gosxappinfo.m
 - !1788 gdate: Validate input as UTF-8 before parsing
 - !1791 gdatetime: Disallow NAN as a number of seconds in a GDateTime
 - !1794 gio-tool-info: Prevent criticals if mount options are not available
 - !1796 gfileutils: Fix typo in docs
 - !1797 gdatetime: Improve ISO 8601 parsing to avoid floating point checks
 - !1801 glib: Add more missing return value annotations
 - !1802 gobject: More missing return value annotations
 - !1806 tests: Add some rounding tolerance in timeout test
 - !1807 python: Reformat some files to keep style-check-diff happy
 - !1808 tests: Be more lenient with timing checks on asyncqueue pops
 - !1810 gfileinfo: Add missing preconditions to g_file_info_get_attribute_data()
 - !1811 Add more missing nullable annotations
 - !1813 gdbus-codegen: Ignore some flake8 warnings
 - !1815 Fix more warnings
 - !1816 fuzzing: Add more GUriFlags to the URI parsing test
 - !1817 fuzzing: Add more parsing flags to the GKeyFile test
 - !1818 Fix more warnings
 - !1819 Fix more warnings
 - !1821 gdate: Limit length of dates which can be parsed as valid
 - !1822 Fix more warnings
 - !1827 Windows: fix FD_READ condition flag still set on recoverable UDP socket errors.
 - !1829 keyfile: Delay calling g_get_language_names() until it's needed
 - !1830 gsocket: Fix credentials error-handling on Apple OSes
 - !1832 More small GKeyFile performance improvements
 - !1834 Update gvdb
 - !1837 gdatetime.c: Fix MSVC builds for lack of NAN items
 - !1838 Minor improvements to GError documentation
 - !1840 Add nullable annotation for g_file_get_uri_scheme
 - !1841 gthread: Fix incorrect cast
 - !1842 gthread: Port native mutex to Clang
 - !1844 gsocket: Improve default UDP behavior on Windows
 - !1845 gsocket: Fix use-after-close
 - !1848 gwin32: Always use unicode APIs
 - !1850 build: Add option for disabling tests
 - !1855 build: Fix ssize_t detection on older versions of glibc
 - !1856 build: Fix Android system checks
 - !1857 gtestutils: Fix g_assert_not_reached() on MSVC
 - !1861 More GError tests
 - !1863 tests: Ignore -Wformat-nonliteral warning in new GError tests

* Translation updates:
 - Catalan
 - Galician
 - German
 - Lithuanian
 - Romanian
 - Spanish
 - Ukrainian


Overview of changes in GLib 2.67.1
==================================

* Deprecate `g_time_zone_new()` in favour of `g_time_zone_new_identifier()`,
  which makes error checking easier (#553)

* Remove `volatile` from various public APIs, including `G_DEFINE_*`. You should
  adjust your code to not use `volatile` for atomic variables, `GOnce`
  variables, or mostly anything else (see
  http://isvolatileusefulwiththreads.in/c/). (#600)

* Support passing file handles to `gdbus` command line tool (work by
  Norbert Pocs and Tim Waugh) (#961)

* Add `g_assert_cmpstrv()` test convenience function (work by Niels De Graef) (#2015)

* Changes to the behaviour of the `G_URI_FLAGS_SCHEME_NORMALIZE` scheme
  normalization flag in `GUri` (work by Carlos Garcia Campos) (#2257, !1716)

* Add new `--run-prefix` and `--skip-prefix` options to GTest, to allow running
  or skipping test suites by prefix (work by Frederic Martinsons) (!1738)

* Fix thread-safety of `GBinding`; see the updated documentation for
  `g_object_bind_property()` for full details — if your code uses `GBinding`
  across threads, you should re-check it against the latest documentation, use
  `g_binding_unbind()` rather than implicitly dropping the binding with your
  last `g_object_unref()` call, and use `g_binding_dup_source()`/`g_binding_dup_target()`
  instead of `g_binding_get_source()`/`g_binding_get_target()`
  (work by Sebastian Dröge) (!1745)

* Bugs fixed:
 - #553 Improved error-handling when timezone lookup fails
 - #600 Remove "volatile" from G_DEFINE_*
 - #961 gdbus tool: file handle passing doesn't work
 - #994 mark g_assert_* as "noreturn" also on MSVC
 - #1560 Can't get data for empty compressed resources
 - #1592 Main loop ignores GPollFD sources when there is at least one source ready with priority higher than default one
 - #1833 meson: reconsider G_DISABLE_CAST_CHECKS handling
 - #1849 Documentation of g_set_object(): can object_ptr be null?
 - #1963 Follow-up from "gdbusmessage: Limit recursion of variants in D-Bus messages"
 - #2015 Add g_assert_cmpstrv() test utility
 - #2046 Add pylint and shellcheck CI checks
 - #2074 Big dbus writes with a FD list fail
 - #2076 g_type_register_fundamental() and g_type_add_interface_static() should not trigger valgrind leak warnings
 - #2150 Add URI parsing tests from GstURI to GUri
 - #2221 GLib-GIO:ERROR:../gio/tests/gsocketclient-slow.c:99:on_event: 'connection' should be NULL
 - #2223 Documentation of g_strrstr_len is misleading; suggested fix
 - #2233 GSocketClient crashes on connection failure
 - #2236 Docs: gdbus-codegen example links broken
 - #2253 In gspawn.c, use sysconf() system call on Mac OS, instead of default maxfiles limit of 4096
 - #2257 GUri: apply scheme normalization flag consistently
 - !1251 Improve support for interface types
 - !1385 gobject: allocate parameter list for g_object_new_valist() entirely on stack
 - !1629 Add some tracing to GTask
 - !1699 Fix signedness warnings
 - !1701 gio: Fix some remaining DocBook syntax in a documentation comment
 - !1708 gio: Add missing nullable annotations
 - !1716 guri: Normalize uri segments if they are encoded and add a flag to do scheme-based normalization
 - !1722 gio: Fix various typos of the name ‘D-Bus’
 - !1724 glib/tests/fileutils: Fix expectations when running as root
 - !1726 gdbus: Document the intended semantics of handles and fdsTim Waugh
 - !1731 Make more use of g_assert_no_errno()
 - !1733 gdbusauthmechanismsha1: Don’t create keyring dir when running as setuid
 - !1734 glocalfileinfo: Use a single timeout source at a time for hidden file cache
 - !1735 gobject: Standardise on the term ‘instantiatable’
 - !1737 gscanner: Avoid undefined behaviour copying between union members
 - !1738 Extend the usage of -p option for glib test framework
 - !1740 Fix more warnings
 - !1745 Make GBinding thread-safe (alternative approach)
 - !1746 gkeyfilesettingsbackend: improve error-checking
 - !1747 Fix broken link syntax in g_vasprintf docs
 - !1748 Fix minor Coverity return value warnings
 - !1750 Fix warnings
 - !1754 GWin32AppInfo: Use a thread pool for async appinfo tree rebuilds
 - !1755 Minor Coverity fixes
 - !1756 shellcheck fixes
 - !1757 Python formatting improvements
 - !1758 Fix warnings
 - !1765 Fix more warnings
 - !1766 Fix some gdatetime annotations
 - !1767 tests: Fix GDateTime tests on FreeBSD
 - !1769 gfileicon: Fix unused-but-set variable with G_DISABLE_ASSERT
 - !1770 Minor scan-build fixes
 - !1771 macos: fix frexpl checks in cross-compilation
 - !1776 gio: ‘security_context_t’ is deprecated
 - !1780 Minor Coverity fixes
 - !1781 gspawn: Handle ENOSYS from close_range()
 - !1782 ghostutils: Abandon hostname conversion early if it’s too long

* Translation updates:
 - Czech
 - Spanish
 - Ukrainian


Overview of changes in GLib 2.67.0
==================================

* Important and time-critical fix to DST transitions which will happen in Europe
  on 2020-10-25 on distributions which use the ‘slim’ tzdata format (which is
  now the default in tzdata/tzcode 2020b) (work by Claudi M., LRN) (#2224)

* Further timezone handling changes to improve performance of `GTimeZone` (work
  by António Fernandes, Sebastian Keller) (#2204)

* Fix deadlock on Windows when `G_SLICE` is set in the environment (diagnosis by
  Christoph Reiter) (#2225)

* Fix UTF-8 validation when escaping URI components (thanks to Marc-André Lureau) (!1680)

* Security fix for incorrect scope/zone ID parsing in URIs (!1669)

* Add `g_log_writer_default_set_use_stderr()` API for printing log messages to stderr (work by Simon McVittie) (#2087)

* Improve connection error reporting when IPv6 is available and disabled (work by Michael Catanzaro, debugging by Konstantin Kharlamov and Milan Crha) (#2211)

* Fix definition of `G_MSVC_SYMBOL_PREFIX` for ARM (work by Wolfgang Stöggl) (!1187)

* Add `GStrvBuilder` convenience API for building `NULL`-terminated string arrays (work by Robert Ancell) (!1417)

* Support appinfo verbs other than ‘open’ on Windows (work by LRN) (!1502)

* Expose node-based `GTree` APIs (work by Maciej S. Szmigiero) (!1509)

* Add `G_DBUS_METHOD_INVOCATION_HANDLED`/`_UNHANDLED` convenience constants (work by Simon McVittie) (!1603)

* Set `IP_BIND_ADDRESS_NO_PORT` on sockets when binding to local addresses (work by Cristian Rodríguez) (!1598)

* Add Meson option for libelf support (work by Niklas Gürtler) (!1650)

* Add support for PKCS #11-backed TLS certificates (work by Patrick Griffis) (!1663)

* Add `g_subprocess_launcher_close()` API to make `GSubprocessLauncher` more usable in bindings (work by Sergio Costas) (!1677)

* Bugs fixed:
 - #1233 GType for GTree
 - #2077 Invalid Pointer Arithmetic in g_path_get_basename
 - #2087 Respecting G_MESSAGES_DEBUG in a custom log writer should be easy to do
 - #2164 GDBus DBUS_COOKIE_SHA1 mechanism may use too old a key
