Overview of changes in GLib 2.68.4
==================================

* Bugs fixed:
 - #2454 Read past the end of buffer in g_win32_package_parser_enum_packages
 - !2158 Backport !2155 “glocalfilemonitor: Avoid a deadlock on finalization” to glib-2-68
 - !2175 Backport !2174 “data-to-c.py: generate new-line at the end of the file” to glib-2-68
 - !2183 Backport !2180 “correctly use 3 parameters for close_range” to glib-2-68
 - !2186 Backport !2185 “glocalfile: Fix the global trash dir detection” to glib-2-68
 - !2209 Backport !2208 “g_string_replace: Don't replace empty string more than once per location” to glib-2-68
 - !2220 Backport GWin32AppInfo fixes to glib-2-68

* Translation updates:
 - Chinese (China)
 - Chinese (Taiwan)
 - Occitan (post 1500)


Overview of changes in GLib 2.68.3
==================================

* Bugs fixed:
 - #2311 testfilemonitor test leaks ip_watched_file_t struct
 - #2417 GFile: `g_file_replace_contents()` reports `G_IO_ERROR_WRONG_ETAG` when saving from a symlink
 - !2133 Backport !2128 “inotify: Fix a memory leak” to glib-2-68
 - !2137 Backport !2136 “tlscertificate: Avoid possible invalid read” to glib-2-68
 - !2141 Backport !2138 “glocalfileoutputstream: Fix ETag check when replacing through a symlink” to glib-2-68


Overview of changes in GLib 2.68.2
==================================

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

* Bugs fixed:
 - #2387 json-glib does not build with glib 2.68.1
 - !2060 gmacros: check that __cplusplus or _MSC_VER is defined
 - !2068 gmacros: missing check if __STDC_VERSION__ is defined
 - !2079 Backport !2078 “gthreadedresolver: don't ignore flags in lookup_by_name_with_flags” to glib-2-68

* Translation updates:
 - Nepali
 - Serbian


Overview of changes in GLib 2.68.1
==================================

* 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)

* Bugs fixed:
 - #2361 g_key_file_load_from_file segfaults on "Key[*]="like lines
 - !1997 Backport !1996 “Include glibconfig.h to get the G_OS_UNIX token” to glib-2-68
 - !2016 GIO W32: Pin gio DLL
 - !2021 Backport MR !2016 (GIO W32: Pin gio DLL) into glib-2-68
 - !2022 Few fixes and notes for building on Visual Studio 2012 and earlier
 - !2034 Backport MR !2032 (gkeyfile: Drop a redundant check) into glib-2-68
 - !2035 Backport !2026 “Split g_test_log() messages that contain multiple lines” to glib-2-68

* Translation updates:
 - English (United Kingdom)


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
 - #2194 gtk3/glib crash on gimp
 - #2203 fstatat is available only on macOS 10.10+
 - #2204 Time zone cache is constantly invalidated if TZ is NULL
 - #2209 gthreadedresolver: faulty logic in parse_res_txt
 - #2210 g_private_replace ordering issue
 - #2211 "Network is unreachable" error returned when IPv6 is disabled and network is reachable using IPv4
 - #2215 DST incorrectly ends on wrong dates
 - #2224 top bar time is incorrect, timezone map in control center is broken
 - #2225 Setting G_SLICE makes Windows programs hang since 2.66
 - !1187 Define G_MSVC_SYMBOL_PREFIX correctly for ARM
 - !1417 gstrvbuilder: Add a new object to make NULL-terminated string arrays.
 - !1449 gio: Expose g_file_query_info_for_copy()
 - !1502 GWin32AppInfo: Support verbs other than "open"
 - !1509 GTree: add an ability to iterate over a tree and a node-based API
 - !1575 Use C++11 decltype where possible
 - !1598 gsocketclient: set IP_BIND_ADDRESS_NO_PORT if binding to local address
 - !1603 GDBus: Add G_DBUS_METHOD_INVOCATION_HANDLED, _UNHANDLED
 - !1643 Minor Coverity fixes
 - !1645 Fix various signedness warnings
 - !1647 Fix warnings (keep going)
 - !1648 glocalfile: Never require G_LOCAL_FILE_STAT_FIELD_ATIME
 - !1650 Make libelf dependency optional via meson feature
 - !1652 trash portal: Handle portal failures
 - !1654 gio-tool-trash: Prevent recursion to speed up emptying trash
 - !1657 glist: Clarify that g_list_free() and friends only free an entire list
 - !1658 utils: Limit the scope of the variable `max`
 - !1661 Lookup fallback time zones in the cache to improve performance
 - !1663 gtlscertificate: Add support for PKCS #11 backed certificates
 - !1665 Fix g_module_symbol() under Windows sometimes not succeeding
 - !1669 guri: Fix URI scope parsing
 - !1670 GSubprocessLauncher: Move cleanup to dispose()
 - !1671 gdatetime: Avoid integer overflow creating dates too far in the past
 - !1673 CI: Re-enable code coverage reporting for MSYS2 builds
 - !1674 Add version macros for 2.68
 - !1675 Make static assertions about standard types
 - !1677 gsubprocesslauncher: Allow to close FDs
 - !1678 gmessages: Document that using a custom log writer basically disables fatal handling
 - !1679 gmain: Fix minor typo in documentation
 - !1680 guri: Fix UTF-8 validation when escaping URI components
 - !1681 gspawn: Handle error opening /dev/null
 - !1686 Various improvements in GSocketClient
 - !1687 uri: add missing (not)nullable annotations
 - !1688 gspawn: Use close_range() if available to close FDs between fork/exec
 - !1691 gmain: Fix possible locking issue in source unref
 - !1692 gsignal: Plug g_signal_connect_object leak
 - !1695 gfile: Clarify refcount handling for g_file_replace_contents_bytes_async()
 - !1696 Fix various minor scan build warnings
 - !1706 Add various missing nullable annotations
 - !1712 Revert "Use C++11 decltype where possible"
 - !1714 gmacros: Use __typeof__ when compiling with Clang
 - !1718 gtrace: Add G_GNUC_PRINTF annotation

* Translation updates:
 - Chinese (Taiwan)
 - Danish
 - Greek, Modern (1453-)
 - Hebrew
 - Latvian
 - Portuguese
 - Russian
 - Slovak
 - Ukrainian


Overview of changes in GLib 2.66.0
==================================

* Bugs fixed:
 - #2200 missing tab in makefile rule
 - !1639 guri: Fix user passed to g_uri_split_with_user() not being NULL'd

* Translation updates:
 - Croatian
 - Hungarian
 - Italian
 - Serbian
 - Slovak
 - Swedish


Overview of changes in GLib 2.65.3
==================================

* Fixes to the new `statx()` calls — note that since GLib 2.65.2 uses `statx()`
  (if available) instead of `stat()`/`fstat()`/`lstat()`/`fstatat()`, syscall
  sandboxing for third party applications might need to be updated

* Bugs fixed:
 - #2189 g_file_query_info on ro file system: Numerical result out of range
 - #2191 Calling nice(20) can lead to thread related warnings
 - #2197 Segfaulting Integer Overflow in g_option_group_add_entries
 - !1025 Big o notations
 - !1626 gio: Document g_settings_new() missing schema behaviour
 - !1627 gthread: Add a sysprof mark for thread creation
 - !1628 Replace a bunch of fallthrough comments with an attribute
 - !1631 Fix splice behavior on cancellation
 - !1632 Fixing signedness warning in glib/gfileutils.c
 - !1635 gcancellable: Mark a variable as unused if built with G_DISABLE_ASSERT

* Translation updates:
 - Basque
 - Catalan
 - Chinese (China)
 - Czech
 - English (United Kingdom)
 - Friulian
 - German
 - Japanese
 - Kazakh
 - Korean
 - Lithuanian
 - Polish
 - Portuguese (Brazil)
 - Slovenian


Overview of changes in GLib 2.65.2
==================================

* Support `statx()` and `G_FILE_ATTRIBUTE_TIME_CREATED` (work by Andre Miranda) (#1970)

* Fix deadlock in `g_subprocess_communicate_async()` (work by Alexander Larsson) (#2182)

* Add `%f`/microsecond placeholder support to `g_date_time_format()` (work by Johan Bjäreholt) (!1605)

* Bugs fixed:
 - #5 g_new0 performance
 - #1970 Make G_FILE_ATTRIBUTE_TIME_CREATED support stx_btime
 - #2176 Inconsistent introspection annotations for g_input_stream_read and g_socket_receive
 - #2182 g_subprocess_communicate_async() can deadlock when writing
 - !1593 CI support for Coverity Scan
 - !1605 gdatetime: Add %f format specifier and microsecond precision to g_date_time_format_iso8601
 - !1613 gfile: Document TOCTTOU avoidance using g_file_delete()
 - !1615 docs: glib-compile-resources: json-stripblanks
 - !1616 gioerror: Map WSAENETRESET on Windows to G_IO_ERROR_CONNECTION_CLOSED
 - !1619 Minor Coverity fixes
 - !1620 gvariant: Ensure GVS.depth is initialised
 - !1622 gdatetime: Widen a variable before multiplication
 - !1623 gcancellable: Assert that make_pollfd() call succeeds
 - !1624 gdbusaddress: Drop an unnecessary NULL check
 - !1625 gdbusmessage: Drop redundant uint ≥ 0 checks

* Translation updates:
 - French
 - Galician
 - Greek, Modern (1453-)
 - Indonesian
 - Romanian
 - Spanish
 - Turkish
 - Ukrainian


Overview of changes in GLib 2.65.1
==================================

* Add `GUri` API for parsing, building and representing URIs according to
  [RFC 3986](https://tools.ietf.org/html/rfc3986) (work by Marc-André Lureau) (#110)

* Fix handling of xattr data with embedded nuls (#422)

* Add `g_file_set_contents_full()` which gives more control over fsyncs (#1302)

* Fix cross-compilation on iOS (work by Nirbheek Chauhan) (#1868)

* Add a `x-gvfs-notrash` option to disable trash on certain mounts (work by Ondrej Holy) (!1549)

* Support ‘slim’ TZif files generated with `zic -b slim` (work by Paul Eggert) (#2129)

* Support emitting profiling marks from `GMainContext` to sysprof capture files (!1551)

* Accept IPv6 zone IDs in `g_hostname_is_ip_address()` (work by Marc-André Lureau) (!1604)

* Bugs fixed:
 - #4 Include a UTF-8 safe escaping function
 - #110 Basic URI operations
 - #137 display_name should be always available
 - #250 GTestCase's setup/teardown functions appear pointless
 - #272 allow thread pools to adjust the number of threads to the number of cpu's/cores
 - #422 Wrong assumption in libgio GFileInfo on xattr/acl string: it may contain binary data.
 - #858 glib2 @2.40.0 issues a "Got weird mach timebase info" error (Macports, PPC)
 - #1022 g_object_new Should Mention That it Zeroes Out Private Struct
 - #1200 Make g_assert_null/nonnull clang static analyzer friendly
 - #1203 Add a variant of g_file_set_contents() which accepts file mode
 - #1288 gmacros: Introduce non-public G_CLANG_ANALYZER_NORETURN macro
 - #1302 g_file_set_contents() can fill target with NUL bytes if it did not previously exist
 - #1670 ThreadSanitizer data races
 - #1764 cancellable test: on_mock_operation_ready: assertion failed (iterations_requested > iterations_done): (10 > 10)
 - #1868 iOS cross compile impossible due to frexpl check not supporting cross compilation
 - #1869 iOS doesn't have Cocoa, which thankfully isn't a requirement of this code that supposedly requires it
 - #1982 GSocketAddressEnumerator documentation is inconsistent with existing usage
 - #2127 Spurious GIO module initialization on Fedora Silverblue (and other ostree-based systems?)
 - #2129 date_time bugs after 2038, or with today's date and 'zic -b slim' TZif files
 - #2132 Valgrind reports "still reachable" after g_thread_pool_new/free
 - #2136 Valgrind reports "still reachable" after g_option_context_parse
 - #2140 calling malloc in fork child is undefined-behaviour
 - #2141 g_value_copy is was recently broken
 - #2149 Make G_URI_FLAGS_PARSE_STRICT the default
 - #2156 Merge _g_uri_parse_authority() into GUri
 - #2159 Thread-unsafe initialization in gportalsupport.c
 - #2160 More guri regressions
 - #2165 More guri breakage
 - #2166 g_uri_build() functions should accept a NULL scheme
 - !1328 guri: new URI parsing and generating functions
 - !1527 Add g_tls_connection_get_channel_binding_data call and enums
 - !1534 Various GLocalFile fixes related to the filesystem::remote attribute
 - !1546 tree: Fix various ableist language
 - !1549 Add support to ignore trash for certain mounts
 - !1551 Add initial sysprof support
 - !1553 gtestutils: Mark that g_assert_whatever() macros do not normally return
 - !1554 GUri build fixes
 - !1555 Remove c-format from the string that is not c-formatted
 - !1556 fuzzing: Another fix for g_uri_parse() test
 - !1557 A few g_uri_parse_params() improvements
 - !1559 Fix buffer read overflows in GUri
 - !1561 gconvert: Use a pointer array in extract_uris
 - !1563 gdesktopappinfo: Fix unnecessarily copied and leaked URI list
 - !1564 tests: limit number of threads to something reasonable.
 - !1570 Reduce CI bandwidth requirements
 - !1572 Add GUriParamsIter
 - !1576 gtask: Only override g_task_set_source_tag() for GLib ≥ 2.60
 - !1577 uri: add illegal_characters argument to unescape_bytes
 - !1578 tests: Add tests for RFC 8536 v3 parsing of time zones
 - !1579 glib: Use g_getenv everywhere instead of getenv
 - !1582 appinfo: Add properties
 - !1583 gio: Remove broken support for XP
 - !1590 Use CI schedules and DAGs
 - !1591 gfileutils: Fix O_NOFOLLOW handling on BSD systems
 - !1594 GFile: Document that G_FILE_CREATE_REPLACE_DESTINATION can only be used with...
 - !1595 uri: add ENCODED_PATH & ENCODED_FRAGMENT flags
 - !1599 uri: do not add ipv6 brackets on non-ip host
 - !1600 uri: do not encode ':' and ';' from userinfo
 - !1601 timezone: Fix an uninitialized use
 - !1602 Revert "Merge branch 'appinfo-properties' into 'master'"
 - !1604 Make g_hostname_is_ip_address() accept ipv6 zoneid
 - !1609 Fix multiple typos in guri.c
 - !1611 guri: Always prepend `//` to the host when building a URI
 - !1612 guri: Document and check restrictions on path prefixes

* Translation updates:
 - Catalan
 - Kazakh
 - Lithuanian
 - Romanian
 - Slovenian
 - Spanish
 - Ukrainian


Overview of changes in GLib 2.65.0
==================================

* Fix memory monitor tests to only be installed if installed-tests are enabled,
  and to be skipped if GObject-Introspection is too old (!1407)

* Stability improvements for various unit tests

* D-Bus credentials support on macOS (#507)

* MSVC support for the files generated by `glib-compile-resource` and `gdbus-codegen` (#1215, !1452)

* Year 2038 fixes involving new API in `GBookmarkFile` (#1931)

* SOCKS5 proxy authentication fixes (#1986, #1988)

* Support for more than `MAXIMUM_WAIT_OBJECTS` FDs for `g_poll()` on Windows (#2107)

* Add `g_assert_no_errno()` test macro for testing POSIX-style functions (!1204)

* Update Unicode Character Database to version 13.0.0 (!1422)

* Support storing interned strings in `GValue`s efficiently, via `g_value_set_interned_string()` (#2109)

* Bugs fixed:
 - #2 g_filename_from_utf8() should normalize?
 - #176 the behaviour of constructors for GLib data types is not specified if memory allocation fails
 - #480 /gdbus/connection/signals test intermittently fails: assertion failed (count_name_owner_changed == 2): (1 == 2)
 - #507 GDBus credentials don’t work on OS X
 - #602 GLib.Thread not usable from GObject-Introspection
 - #1154 Missing documentation how to set a value in a GArray
 - #1215 MSVC cannot build glib-compile-resource's output resource file
 - #1323 meson, autotools: figure out if mem barrier is needed for arm64 host variant aarch64
 - #1398 gdate: Add error handling for GetDateFormatW calls
 - #1841 Signal handler disconnection race when finalising GCancellableSource
 - #1851 Meson Build Failure on Windows: Undefined Reference to libiconv
 - #1911 Memory leak in g_param_spec_flags and/or g_param_spec_enum
 - #1931 GBookmarkFile API involves time_t
 - #1954 gdbus-server-auth intermittent failure
 - #1957 gdbus-connection test failure on FreeBSD
 - #1986 Socks5 Proxy: Authentication seems broken
 - #1988 Socks5 Proxy: Wrong error returned when using no authentication
 - #2038 Bindings: g_tls_connection_set_database() does not allow None as argument
 - #2051 GUnixOutputStream can block on close()
 - #2057 Call malloc_trim() under memory pressure
 - #2067 Glib uses _Static_assert in C++17 mode
 - #2081 gdbus error messages contains mixed up body and head signatures
 - #2082 AM/PM - specific variation support needed to Hebrew language
 - #2083 Memory monitor tests fail if dbusmock isn't installed
 - #2092 FreeBSD CI timing out in gdbus-connection filter test
 - #2094 Deprecation warnings when compiling with -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_28 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_28
 - #2106 Duplicated if - else if conditions in gtranslit.c
 - #2107 g_poll() implementation on Windows stall when more than MAXIMUM_WAIT_OBJECTS FDs have passed
 - #2109 GValue: Add support for interned string
 - #2124 g_file_info_get_content_type() may return NULL
 - #2132 Valgrind reports "still reachable" after g_thread_pool_new/free
 - #2134 Valgrind reports "still reachable" after `g_uuid_string_random()`.
 - #2135 Valgrind reports "still reachable" after g_key_file_new/free
 - #2136 Valgrind reports "still reachable" after g_option_context_parse
 - !1204 gtestutils: Add a new g_assert_no_errno() test macro
 - !1302 gobject: new g_param_is_valid_property_name() function.
 - !1329 Support nanoseconds in stat timestamps on Windows
 - !1341 MUI capabilities for GWin32RegistryKey
 - !1360 CI: Show execution environment before we start
 - !1395 tests: Move memory_monitor_tests under installed_tests_enabled
 - !1396 macros: Define G_GNUC_FALLTHROUGH for more compilers
 - !1397 tests: Skip MemoryMonitor test if GObject-Introspection is too old
 - !1398 gcontenttype: Fix crash in _get_generic_icon_name()
 - !1402 ci: Update Android Docker image for aarch64 CPU naming change
 - !1405 tests: Disable link-time warning for mem-overflow
 - !1406 Replace fallthrough comments with G_GNUC_FALLTHROUGH
 - !1408 tests: Don't compare strings by pointer
 - !1409 gdummytlsconnection: Add missing overrides for ALPN properties
 - !1413 gapplication: Fix a minor typo in the documentation
 - !1414 gstrutils: Set locale explicitly for search-utils test
 - !1415 meson: Don't use assert in test code
 - !1418 ginetaddress, ginetsocketaddress: Add missing (nullable) annotations
 - !1422 glib: Update Unicode Character Database to version 13.0.0
 - !1423 gobject: Clarify assertion failure on ref-after-finalize
 - !1424 docs: Fix configuration with gtk_doc=true and installed_tests=false
 - !1425 gdbusconnection: GDBusSignalCallback can have a NULL sender_name
 - !1426 gunidecomp: Update and reformat Unicode version support history
 - !1427 gicon: Clarify GVariant refcounting in docs
 - !1428 Add missing 'extern' to the dllexport version of GLIB_VAR/GOBJECT_VAR
 - !1429 Fix arch detection ifdefs in glib/valgrind.h
 - !1430 Use __builtin_trap() on Clang on any platform
 - !1431 glib-unix.c: fix heap corruption in g_unix_get_passwd_entry
 - !1432 docs: Mention new gio tool options
 - !1433 meson: Fix buildtype usage
 - !1434 gdbusconnection: Clarify nullability of SignalInstance.sender
 - !1436 glib: Update internal copy of valgrind.h from Valgrind 3.15 release
 - !1437 gmarkup tests: tab character escape/unescape
 - !1439 Don't misdetect stpcpy on windows platforms on clang
 - !1440 Silence clang errors about -Wformat-nonliteral due to missing intermediate attributes
 - !1441 Meson: Override every dependency glib provides
 - !1442 gfile: Fallback to fast-content-type if content-type is not set
 - !1443 gio: use TAPTestRunner in the memory monitor tests
 - !1444 Meson: Add glib-checks and glib-asserts options
 - !1452 Make symbols generated by gdbus-codegen exportable on Visual Studio-style builds
 - !1455 gdesktopappinfo: Note that search results are not filtered
 - !1456 GCredentials documentation fixes
 - !1458 meson: Exclude gosxutils.m when building for iOS
 - !1459 meson: Fix the gnulib checks for isnan* functions
 - !1460 glib: Sync the local modification to glib/valgrind.h to what was upstreamed
 - !1462 gvariant-core: Add a note about memory safety of children
 - !1463 gdesktopappinfo: Add several nullable annotation to GAppInfo getters
 - !1464 Update Fedora CI
 - !1466 CI: Switch to new Windows runners
 - !1469 goption: Treat an empty option context parameter string as NULL
 - !1475 Improve documentation of g_tls_database_verify_chain()
 - !1476 tests: Fix remaining race in gdbus-connection filter test
 - !1479 Improve documentation of client connection validation flags
 - !1480 CI: Make sure we use meson 0.49.2 in MSYS2
 - !1481 array: fix corrupt state of GPtrArray after g_ptr_array_extend_and_steal()
 - !1482 [th/g-ptr-array-variable-cleanups] minor cleanup of variables for GPtrArray
 - !1487 glib: annotate static inline functions with G_AVAILABLE-type macros
 - !1488 Rebuild Fedora CI image
 - !1491 gdatetime: update annotations
 - !1492 glib-mkenums: allow optional 'since' tag
 - !1493 meson: Remove stray ] in O_DIRECTORY check
 - !1496 Fix GLIB_UNAVAILABLE_STATIC_INLINE declaration
 - !1498 array: add internal ptr_array_new() helper for creating GPtrArray
 - !1503 docs: Add indexes for symbols added in 2.66
 - !1505 gobject: Handle runtime checks as such
 - !1506 tests: Speed up the cancellable test
 - !1508 tests: Speed up the file test and make it more reliable
 - !1512 Various fixes when building for iOS
 - !1513 Initialize the visited time of a new GBookmarkFile
 - !1515 meson: check for stpcpy using cc.links()
 - !1516 gthreadedsocketservice: Mark source_object of run signal as nullable
 - !1517 GWin32RegistryKey: Move assertions
 - !1518 strfuncs: Use a GPtrArray in strsplit()
 - !1522 meson: Fix gnulib printf checks
 - !1524 meson: Fix gnulib build where isnan*() is needed
 - !1525 Normalize C source files to end with exactly one newline
 - !1528 gtlsconnection: Improve documentation of peer-certificate[-errors]
 - !1530 tree: Fix various typos and outdated terminology
 - !1531 gvariant: Fix documentation for g_variant_get_string() to match reality
 - !1532 win32: spelling fix
 - !1535 glib.supp improvements

* Translation updates:
 - Bokmål, Norwegian
 - Catalan
 - Catalan (Valencia)
 - Chinese (Taiwan)
 - Dutch
 - French
 - Galician
 - German
 - Hebrew
 - Indonesian
 - Italian
 - Japanese
 - Latvian
 - Lithuanian
 - Malay
 - Romanian
 - Serbian
 - Slovak
 - Slovenian
 - Spanish
 - Turkish
 - Ukrainian


Overview of changes in GLib 2.64.0
==================================

* Use `posix_spawn()` to speed up launching test D-Bus instances (!1388)

* Bugs fixed:
 - #1783 Document using glib-mkenums with meson
 - #2049 Crash in g_array_copy
 - !1384 Some minor clang warning fixes
 - !1386 docs: Document generated headers caveats for genmarshal
 - !1387 ci: Correctly propagate exit status in run-style-check-diff.sh
 - !1388 gtestdbus: Use posix_spawn() to spawn dbus-daemon
 - !1389 Update GError docs to use G_DEFINE_QUARK

* Translation updates:
 - Czech
 - Danish
